diff --git a/bun.lock b/bun.lock
index 7219ac329..b90f2562f 100644
--- a/bun.lock
+++ b/bun.lock
@@ -79,6 +79,38 @@
"typescript": "catalog:",
},
},
+ "packages/app": {
+ "name": "@opencode/app",
+ "version": "0.3.126",
+ "dependencies": {
+ "@kobalte/core": "0.13.11",
+ "@opencode-ai/sdk": "workspace:*",
+ "@shikijs/transformers": "3.9.2",
+ "@solid-primitives/resize-observer": "2.1.3",
+ "@solid-primitives/scroll": "2.1.3",
+ "@solidjs/router": "0.15.3",
+ "@thisbeyond/solid-dnd": "0.7.5",
+ "diff": "8.0.2",
+ "luxon": "3.7.1",
+ "marked": "16.2.0",
+ "marked-shiki": "1.2.1",
+ "remeda": "catalog:",
+ "shiki": "3.9.2",
+ "solid-js": "catalog:",
+ "solid-list": "0.3.0",
+ "tailwindcss": "4.1.11",
+ "virtua": "0.42.3",
+ },
+ "devDependencies": {
+ "@tailwindcss/vite": "4.1.11",
+ "@types/luxon": "3.7.1",
+ "@types/node": "catalog:",
+ "typescript": "catalog:",
+ "vite": "^6.0.0",
+ "vite-plugin-icons-spritesheet": "3.0.1",
+ "vite-plugin-solid": "^2.11.6",
+ },
+ },
"packages/function": {
"name": "@opencode/function",
"version": "0.8.0",
@@ -208,9 +240,6 @@
"web-tree-sitter",
"tree-sitter-bash",
],
- "patchedDependencies": {
- "@solidjs/start@1.1.7": "patches/@solidjs%2Fstart@1.1.7.patch",
- },
"overrides": {
"zod": "4.1.8",
},
@@ -251,7 +280,7 @@
"@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.6.1", "@astrojs/prism": "3.2.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", "shiki": "^3.0.0", "smol-toml": "^1.3.1", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg=="],
- "@astrojs/mdx": ["@astrojs/mdx@4.3.4", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.6", "@mdx-js/mdx": "^3.1.0", "acorn": "^8.14.1", "es-module-lexer": "^1.6.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw=="],
+ "@astrojs/mdx": ["@astrojs/mdx@4.3.5", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.6", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.6", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-YB3Hhsvl1BxyY0ARe1OrnVzLNKDPXAz9epYvmL+MQ8A85duSsSLQaO3GHB6/qZJKNoLmP6PptOtCONCKkbhPeQ=="],
"@astrojs/prism": ["@astrojs/prism@3.2.0", "", { "dependencies": { "prismjs": "^1.29.0" } }, "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw=="],
@@ -319,11 +348,11 @@
"@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.782.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/node-config-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA=="],
- "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
+ "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
- "@babel/compat-data": ["@babel/compat-data@7.28.0", "", {}, "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw=="],
+ "@babel/compat-data": ["@babel/compat-data@7.28.4", "", {}, "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw=="],
- "@babel/core": ["@babel/core@7.28.3", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.3", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ=="],
+ "@babel/core": ["@babel/core@7.28.4", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.4", "@babel/types": "^7.28.4", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA=="],
"@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="],
@@ -355,9 +384,9 @@
"@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="],
- "@babel/helpers": ["@babel/helpers@7.28.3", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.2" } }, "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw=="],
+ "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="],
- "@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="],
+ "@babel/parser": ["@babel/parser@7.28.4", "", { "dependencies": { "@babel/types": "^7.28.4" }, "bin": "./bin/babel-parser.js" }, "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg=="],
"@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="],
@@ -369,13 +398,13 @@
"@babel/preset-typescript": ["@babel/preset-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ=="],
- "@babel/runtime": ["@babel/runtime@7.28.3", "", {}, "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA=="],
+ "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="],
"@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="],
- "@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="],
+ "@babel/traverse": ["@babel/traverse@7.28.4", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", "@babel/types": "^7.28.4", "debug": "^4.3.1" } }, "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ=="],
- "@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="],
+ "@babel/types": ["@babel/types@7.28.4", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q=="],
"@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="],
@@ -385,34 +414,30 @@
"@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="],
- "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.0", "", { "peerDependencies": { "unenv": "2.0.0-rc.19", "workerd": "^1.20250816.0" }, "optionalPeers": ["workerd"] }, "sha512-0JbEj+KTCQ4nTIWg2q8Bou+fPxzG6/zwU5O/w6Cld6WEjLl+716foT+2bjg48h09hMtjTKkJdAh1m4LybBKGCg=="],
+ "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.3", "", { "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250828.1" }, "optionalPeers": ["workerd"] }, "sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw=="],
- "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250823.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-yRLJc1cQNqQYcDViOk7kpTXnR5XuBP7B/Ms5KBdlQ6eTr2Vsg9mfKqWKInjzY8/Cx+p+Sic2Tbld42gcYkiM2A=="],
+ "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250906.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-E+X/YYH9BmX0ew2j/mAWFif2z05NMNuhCTlNYEGLkqMe99K15UewBqajL9pMcMUKxylnlrEoK3VNxl33DkbnPA=="],
- "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250823.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-KJnikUe6J29Ga1QMPKNCc8eHD56DdBlu5XE5LoBH/AYRrbS5UI1d5F844hUWoFKJb8KRaPIH9F849HZWfNa1vw=="],
+ "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250906.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA=="],
- "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250823.0", "", { "os": "linux", "cpu": "x64" }, "sha512-4QFXq4eDWEAK5QjGxRe0XUTBax1Fgarc08HETL6q0y/KPZp2nOTLfjLjklTn/qEiztafNFoJEIwhkiknHeOi/g=="],
+ "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250906.0", "", { "os": "linux", "cpu": "x64" }, "sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q=="],
- "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250823.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-sODSrSVe4W/maoBu76qb0sJGBhxhSM2Q2tg/+G7q1IPgRZSzArMKIPrW6nBnmBrrG1O0X6aoAdID6w5hfuEM4g=="],
+ "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250906.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA=="],
- "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250823.0", "", { "os": "win32", "cpu": "x64" }, "sha512-WaNqUOXUnrcEI+i2NI4+okA9CrJMI9n2XTfVtDg/pLvcA/ZPTz23MEFMZU1splr4SslS1th1NBO38RMPnDB4rA=="],
+ "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250906.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg=="],
"@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250522.0", "", {}, "sha512-9RIffHobc35JWeddzBguGgPa4wLDr5x5F94+0/qy7LiV6pTBQ/M5qGEN9VA16IDT3EUpYI0WKh6VpcmeVEtVtw=="],
- "@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="],
+ "@corvu/utils": ["@corvu/utils@0.4.2", "", { "dependencies": { "@floating-ui/dom": "^1.6.11" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA=="],
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
"@ctrl/tinycolor": ["@ctrl/tinycolor@4.1.0", "", {}, "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ=="],
- "@dabh/diagnostics": ["@dabh/diagnostics@2.0.3", "", { "dependencies": { "colorspace": "1.1.x", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA=="],
-
"@deno/shim-deno": ["@deno/shim-deno@0.19.2", "", { "dependencies": { "@deno/shim-deno-test": "^0.5.0", "which": "^4.0.0" } }, "sha512-q3VTHl44ad8T2Tw2SpeAvghdGOjlnLPDNO2cpOxwMrBE/PVas6geWpbpIgrM+czOCH0yejp0yi8OaTuB+NU40Q=="],
"@deno/shim-deno-test": ["@deno/shim-deno-test@0.5.0", "", {}, "sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w=="],
- "@dependents/detective-less": ["@dependents/detective-less@5.0.1", "", { "dependencies": { "gonzales-pe": "^4.3.0", "node-source-walk": "^7.0.1" } }, "sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ=="],
-
"@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="],
"@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="],
@@ -481,7 +506,11 @@
"@expressive-code/plugin-text-markers": ["@expressive-code/plugin-text-markers@0.41.3", "", { "dependencies": { "@expressive-code/core": "^0.41.3" } }, "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g=="],
- "@fastify/busboy": ["@fastify/busboy@3.2.0", "", {}, "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA=="],
+ "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="],
+
+ "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="],
+
+ "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="],
"@fontsource/ibm-plex-mono": ["@fontsource/ibm-plex-mono@5.2.5", "", {}, "sha512-G09N3GfuT9qj3Ax2FDZvKqZttzM3v+cco2l8uXamhKyXLdmlaUDH5o88/C3vtTHj2oT7yRKsvxz9F+BXbWKMYA=="],
@@ -491,7 +520,7 @@
"@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.0.6", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0", "lodash": "^4.17.21" } }, "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w=="],
- "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="],
+ "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="],
"@hono/standard-validator": ["@hono/standard-validator@0.1.5", "", { "peerDependencies": { "@standard-schema/spec": "1.0.0", "hono": ">=3.9.0" } }, "sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w=="],
@@ -499,7 +528,7 @@
"@ibm/plex": ["@ibm/plex@6.4.1", "", { "dependencies": { "@ibm/telemetry-js": "^1.5.1" } }, "sha512-fnsipQywHt3zWvsnlyYKMikcVI7E2fEwpiPnIHFqlbByXVfQfANAAeJk1IV4mNnxhppUIDlhU0TzwYwL++Rn2g=="],
- "@ibm/telemetry-js": ["@ibm/telemetry-js@1.10.1", "", { "bin": { "ibmtelemetry": "dist/collect.js" } }, "sha512-aQcDq03BKbgNnkHujHbA950wJVHtJnY0PsMHKyxgRvr3XPgInWjDfgxJQmKIp9I8Vy2wpfe0cGmduJfIX0HewQ=="],
+ "@ibm/telemetry-js": ["@ibm/telemetry-js@1.10.2", "", { "bin": { "ibmtelemetry": "dist/collect.js" } }, "sha512-F8+/NNUwtm8BuFz18O9KPvIFTFDo8GUSoyhPxPjEpk7nEyEzWGfhIiEPhL00B2NdHRLDSljh3AiCfSnL/tutiQ=="],
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
@@ -539,7 +568,11 @@
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
- "@ioredis/commands": ["@ioredis/commands@1.3.1", "", {}, "sha512-bYtU8avhGIcje3IhvF9aSjsa5URMZBHnwKtOvXsT4sfYy9gppW11gLPT/9oNqlJZD47yPKveQFTAFWpHjKvUoQ=="],
+ "@internationalized/date": ["@internationalized/date@3.9.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg=="],
+
+ "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="],
+
+ "@ioredis/commands": ["@ioredis/commands@1.4.0", "", {}, "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ=="],
"@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
@@ -561,38 +594,26 @@
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
- "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.30", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q=="],
+ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
"@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="],
"@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="],
+ "@kobalte/core": ["@kobalte/core@0.13.11", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@internationalized/date": "^3.4.0", "@internationalized/number": "^3.2.1", "@kobalte/utils": "^0.9.1", "@solid-primitives/props": "^3.1.8", "@solid-primitives/resize-observer": "^2.0.26", "solid-presence": "^0.1.8", "solid-prevent-scroll": "^0.1.4" }, "peerDependencies": { "solid-js": "^1.8.15" } }, "sha512-hK7TYpdib/XDb/r/4XDBFaO9O+3ZHz4ZWryV4/3BfES+tSQVgg2IJupDnztKXB0BqbSRy/aWlHKw1SPtNPYCFQ=="],
+
+ "@kobalte/utils": ["@kobalte/utils@0.9.1", "", { "dependencies": { "@solid-primitives/event-listener": "^2.2.14", "@solid-primitives/keyed": "^1.2.0", "@solid-primitives/map": "^0.4.7", "@solid-primitives/media": "^2.2.4", "@solid-primitives/props": "^3.1.8", "@solid-primitives/refs": "^1.0.5", "@solid-primitives/utils": "^6.2.1" }, "peerDependencies": { "solid-js": "^1.8.8" } }, "sha512-eeU60A3kprIiBDAfv9gUJX1tXGLuZiKMajUfSQURAF2pk4ZoMYiqIzmrMBvzcxP39xnYttgTyQEVLwiTZnrV4w=="],
+
"@logdna/tail-file": ["@logdna/tail-file@2.2.0", "", {}, "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng=="],
"@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.0", "", { "dependencies": { "consola": "^3.2.3", "detect-libc": "^2.0.0", "https-proxy-agent": "^7.0.5", "node-fetch": "^2.6.7", "nopt": "^8.0.0", "semver": "^7.5.3", "tar": "^7.4.0" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg=="],
- "@mdx-js/mdx": ["@mdx-js/mdx@3.1.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw=="],
+ "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="],
"@mixmark-io/domino": ["@mixmark-io/domino@2.2.0", "", {}, "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="],
"@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.15.1", "", { "dependencies": { "ajv": "^6.12.6", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-W/XlN9c528yYn+9MQkVjxiTPgPxoxt+oczfjHBDsJx0+59+O7B75Zhsp0B16Xbwbz8ANISDajh6+V7nIcPMc5w=="],
- "@netlify/binary-info": ["@netlify/binary-info@1.0.0", "", {}, "sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw=="],
-
- "@netlify/blobs": ["@netlify/blobs@9.1.2", "", { "dependencies": { "@netlify/dev-utils": "2.2.0", "@netlify/runtime-utils": "1.3.1" } }, "sha512-7dMjExSH4zj4ShvLem49mE3mf0K171Tx2pV4WDWhJbRUWW3SJIR2qntz0LvUGS97N5HO1SmnzrgWUhEXCsApiw=="],
-
- "@netlify/dev-utils": ["@netlify/dev-utils@2.2.0", "", { "dependencies": { "@whatwg-node/server": "^0.9.60", "chokidar": "^4.0.1", "decache": "^4.6.2", "dot-prop": "9.0.0", "env-paths": "^3.0.0", "find-up": "7.0.0", "lodash.debounce": "^4.0.8", "netlify": "^13.3.5", "parse-gitignore": "^2.0.0", "uuid": "^11.1.0", "write-file-atomic": "^6.0.0" } }, "sha512-5XUvZuffe3KetyhbWwd4n2ktd7wraocCYw10tlM+/u/95iAz29GjNiuNxbCD1T6Bn1MyGc4QLVNKOWhzJkVFAw=="],
-
- "@netlify/functions": ["@netlify/functions@3.1.10", "", { "dependencies": { "@netlify/blobs": "9.1.2", "@netlify/dev-utils": "2.2.0", "@netlify/serverless-functions-api": "1.41.2", "@netlify/zip-it-and-ship-it": "^12.1.0", "cron-parser": "^4.9.0", "decache": "^4.6.2", "extract-zip": "^2.0.1", "is-stream": "^4.0.1", "jwt-decode": "^4.0.0", "lambda-local": "^2.2.0", "read-package-up": "^11.0.0", "source-map-support": "^0.5.21" } }, "sha512-sI93kcJ2cUoMgDRPnrEm0lZhuiDVDqM6ngS/UbHTApIH3+eg3yZM5p/0SDFQQq9Bad0/srFmgBmTdXushzY5kg=="],
-
- "@netlify/open-api": ["@netlify/open-api@2.37.0", "", {}, "sha512-zXnRFkxgNsalSgU8/vwTWnav3R+8KG8SsqHxqaoJdjjJtnZR7wo3f+qqu4z+WtZ/4V7fly91HFUwZ6Uz2OdW7w=="],
-
- "@netlify/runtime-utils": ["@netlify/runtime-utils@1.3.1", "", {}, "sha512-7/vIJlMYrPJPlEW84V2yeRuG3QBu66dmlv9neTmZ5nXzwylhBEOhy11ai+34A8mHCSZI4mKns25w3HM9kaDdJg=="],
-
- "@netlify/serverless-functions-api": ["@netlify/serverless-functions-api@1.41.2", "", {}, "sha512-pfCkH50JV06SGMNsNPjn8t17hOcId4fA881HeYQgMBOrewjsw4csaYgHEnCxCEu24Y5x75E2ULbFpqm9CvRCqw=="],
-
- "@netlify/zip-it-and-ship-it": ["@netlify/zip-it-and-ship-it@12.2.1", "", { "dependencies": { "@babel/parser": "^7.22.5", "@babel/types": "7.28.0", "@netlify/binary-info": "^1.0.0", "@netlify/serverless-functions-api": "^2.1.3", "@vercel/nft": "0.29.4", "archiver": "^7.0.0", "common-path-prefix": "^3.0.0", "copy-file": "^11.0.0", "es-module-lexer": "^1.0.0", "esbuild": "0.25.5", "execa": "^8.0.0", "fast-glob": "^3.3.3", "filter-obj": "^6.0.0", "find-up": "^7.0.0", "is-builtin-module": "^3.1.0", "is-path-inside": "^4.0.0", "junk": "^4.0.0", "locate-path": "^7.0.0", "merge-options": "^3.0.4", "minimatch": "^9.0.0", "normalize-path": "^3.0.0", "p-map": "^7.0.0", "path-exists": "^5.0.0", "precinct": "^12.0.0", "require-package-name": "^2.0.1", "resolve": "^2.0.0-next.1", "semver": "^7.3.8", "tmp-promise": "^3.0.2", "toml": "^3.0.0", "unixify": "^1.0.0", "urlpattern-polyfill": "8.0.2", "yargs": "^17.0.0", "zod": "^3.23.8" }, "bin": { "zip-it-and-ship-it": "./bin.js" } }, "sha512-zAr+8Tg80y/sUbhdUkZsq4Uy1IMzkSB6H/sKRMrDQ2NJx4uPgf5X5jMdg9g2FljNcxzpfJwc1Gg4OXQrjD0Z4A=="],
-
"@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
"@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
@@ -671,6 +692,8 @@
"@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk/js"],
+ "@opencode/app": ["@opencode/app@workspace:packages/app"],
+
"@opencode/cloud-app": ["@opencode/cloud-app@workspace:cloud/app"],
"@opencode/cloud-core": ["@opencode/cloud-core@workspace:cloud/core"],
@@ -721,17 +744,19 @@
"@oslojs/jwt": ["@oslojs/jwt@0.2.0", "", { "dependencies": { "@oslojs/encoding": "0.4.1" } }, "sha512-bLE7BtHrURedCn4Mco3ma9L4Y1GR2SMBuIvjWr7rmQ4/W/4Jy70TIAgZ+0nIlk0xHz1vNP8x8DCns45Sb2XRbg=="],
- "@pagefind/darwin-arm64": ["@pagefind/darwin-arm64@1.3.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A=="],
+ "@pagefind/darwin-arm64": ["@pagefind/darwin-arm64@1.4.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ=="],
- "@pagefind/darwin-x64": ["@pagefind/darwin-x64@1.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow=="],
+ "@pagefind/darwin-x64": ["@pagefind/darwin-x64@1.4.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A=="],
- "@pagefind/default-ui": ["@pagefind/default-ui@1.3.0", "", {}, "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg=="],
+ "@pagefind/default-ui": ["@pagefind/default-ui@1.4.0", "", {}, "sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ=="],
- "@pagefind/linux-arm64": ["@pagefind/linux-arm64@1.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ=="],
+ "@pagefind/freebsd-x64": ["@pagefind/freebsd-x64@1.4.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q=="],
- "@pagefind/linux-x64": ["@pagefind/linux-x64@1.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ=="],
+ "@pagefind/linux-arm64": ["@pagefind/linux-arm64@1.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw=="],
- "@pagefind/windows-x64": ["@pagefind/windows-x64@1.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ=="],
+ "@pagefind/linux-x64": ["@pagefind/linux-x64@1.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg=="],
+
+ "@pagefind/windows-x64": ["@pagefind/windows-x64@1.4.0", "", { "os": "win32", "cpu": "x64" }, "sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g=="],
"@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="],
@@ -795,7 +820,7 @@
"@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="],
- "@pulumi/pulumi": ["@pulumi/pulumi@3.192.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.0", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "picomatch": "^3.0.1", "pkg-dir": "^7.0.0", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-D6UdSBTP4SeNRdgoAMnpyCOECkM0e6KG9Sw3E7oBWmyK3swgNrFQ6Nygym/mNI8MbsAh+KOw6QtjC298lbwk8Q=="],
+ "@pulumi/pulumi": ["@pulumi/pulumi@3.196.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.0", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "picomatch": "^3.0.1", "pkg-dir": "^7.0.0", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-rsNQEuRCNkJy1yMXzSTAt/8mLM+yoxOcRk3HbyOF7z6HyXPdHRlmzFcVdBXW01MGL5lZaw8QEDjlpqdTFydhvg=="],
"@rollup/plugin-alias": ["@rollup/plugin-alias@5.1.1", "", { "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ=="],
@@ -811,61 +836,63 @@
"@rollup/plugin-terser": ["@rollup/plugin-terser@0.4.4", "", { "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", "terser": "^5.17.4" }, "peerDependencies": { "rollup": "^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A=="],
- "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="],
+ "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="],
- "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.49.0", "", { "os": "android", "cpu": "arm" }, "sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA=="],
+ "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.50.2", "", { "os": "android", "cpu": "arm" }, "sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A=="],
- "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.49.0", "", { "os": "android", "cpu": "arm64" }, "sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w=="],
+ "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.50.2", "", { "os": "android", "cpu": "arm64" }, "sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g=="],
- "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.49.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw=="],
+ "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.50.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q=="],
- "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.49.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg=="],
+ "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.50.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A=="],
- "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.49.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA=="],
+ "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.50.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow=="],
- "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.49.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w=="],
+ "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.50.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog=="],
- "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.49.0", "", { "os": "linux", "cpu": "arm" }, "sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w=="],
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.50.2", "", { "os": "linux", "cpu": "arm" }, "sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w=="],
- "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.49.0", "", { "os": "linux", "cpu": "arm" }, "sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA=="],
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.50.2", "", { "os": "linux", "cpu": "arm" }, "sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw=="],
- "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.49.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg=="],
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.50.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg=="],
- "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.49.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg=="],
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.50.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ=="],
- "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ=="],
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.50.2", "", { "os": "linux", "cpu": "none" }, "sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw=="],
- "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.49.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g=="],
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.50.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag=="],
- "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw=="],
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.50.2", "", { "os": "linux", "cpu": "none" }, "sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ=="],
- "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw=="],
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.50.2", "", { "os": "linux", "cpu": "none" }, "sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw=="],
- "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.49.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A=="],
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.50.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w=="],
- "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.49.0", "", { "os": "linux", "cpu": "x64" }, "sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA=="],
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.50.2", "", { "os": "linux", "cpu": "x64" }, "sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA=="],
- "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.49.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg=="],
+ "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.50.2", "", { "os": "linux", "cpu": "x64" }, "sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw=="],
- "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.49.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA=="],
+ "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.50.2", "", { "os": "none", "cpu": "arm64" }, "sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA=="],
- "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.49.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA=="],
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.50.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA=="],
- "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.49.0", "", { "os": "win32", "cpu": "x64" }, "sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg=="],
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.50.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA=="],
- "@shikijs/core": ["@shikijs/core@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ=="],
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.50.2", "", { "os": "win32", "cpu": "x64" }, "sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA=="],
- "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ=="],
+ "@shikijs/core": ["@shikijs/core@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-3q/mzmw09B2B6PgFNeiaN8pkNOixWS726IHmJEpjDAcneDPMQmUg2cweT9cWXY4XcyQS3i6mOOUgQz9RRUP6HA=="],
- "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q=="],
+ "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-kUTRVKPsB/28H5Ko6qEsyudBiWEDLst+Sfi+hwr59E0GLHV0h8RfgbQU7fdN5Lt9A8R1ulRiZyTvAizkROjwDA=="],
- "@shikijs/langs": ["@shikijs/langs@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2" } }, "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA=="],
+ "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA=="],
- "@shikijs/themes": ["@shikijs/themes@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2" } }, "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg=="],
+ "@shikijs/langs": ["@shikijs/langs@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2" } }, "sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w=="],
- "@shikijs/transformers": ["@shikijs/transformers@3.4.2", "", { "dependencies": { "@shikijs/core": "3.4.2", "@shikijs/types": "3.4.2" } }, "sha512-I5baLVi/ynLEOZoWSAMlACHNnG+yw5HDmse0oe+GW6U1u+ULdEB3UHiVWaHoJSSONV7tlcVxuaMy74sREDkSvg=="],
+ "@shikijs/themes": ["@shikijs/themes@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2" } }, "sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA=="],
- "@shikijs/types": ["@shikijs/types@3.4.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg=="],
+ "@shikijs/transformers": ["@shikijs/transformers@3.9.2", "", { "dependencies": { "@shikijs/core": "3.9.2", "@shikijs/types": "3.9.2" } }, "sha512-MW5hT4TyUp6bNAgTExRYLk1NNasVQMTCw1kgbxHcEC0O5cbepPWaB+1k+JzW9r3SP2/R8kiens8/3E6hGKfgsA=="],
+
+ "@shikijs/types": ["@shikijs/types@3.9.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw=="],
"@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
@@ -885,95 +912,119 @@
"@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@2.3.0", "", {}, "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg=="],
- "@smithy/abort-controller": ["@smithy/abort-controller@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g=="],
+ "@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="],
- "@smithy/config-resolver": ["@smithy/config-resolver@4.1.5", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/types": "^4.3.2", "@smithy/util-config-provider": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw=="],
+ "@smithy/config-resolver": ["@smithy/config-resolver@4.2.1", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FXil8q4QN7mgKwU2hCLm0ltab8NyY/1RiqEf25Jnf6WLS3wmb11zGAoLETqg1nur2Aoibun4w4MjeN9CMJ4G6A=="],
- "@smithy/core": ["@smithy/core@3.9.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.0.9", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "@smithy/util-stream": "^4.2.4", "@smithy/util-utf8": "^4.0.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-B/GknvCfS3llXd/b++hcrwIuqnEozQDnRL4sBmOac5/z/dr0/yG1PURNPOyU4Lsiy1IyTj8scPxVqRs5dYWf6A=="],
+ "@smithy/core": ["@smithy/core@3.11.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-stream": "^4.3.1", "@smithy/util-utf8": "^4.1.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA=="],
- "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.0.7", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/url-parser": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw=="],
+ "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.1", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.1", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-1WdBfM9DwA59pnpIizxnUvBf/de18p4GP+6zP2AqrlFzoW3ERpZaT4QueBR0nS9deDMaQRkBlngpVlnkuuTisQ=="],
- "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.0.5", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA=="],
+ "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.1.1", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw=="],
- "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/querystring-builder": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ=="],
+ "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="],
- "@smithy/hash-node": ["@smithy/hash-node@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ=="],
+ "@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="],
- "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow=="],
+ "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="],
- "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw=="],
+ "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ=="],
- "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.0.5", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ=="],
+ "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="],
- "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.1.19", "", { "dependencies": { "@smithy/core": "^3.9.0", "@smithy/middleware-serde": "^4.0.9", "@smithy/node-config-provider": "^4.1.4", "@smithy/shared-ini-file-loader": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/url-parser": "^4.0.5", "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-EAlEPncqo03siNZJ9Tm6adKCQ+sw5fNU8ncxWwaH0zTCwMPsgmERTi6CEKaermZdgJb+4Yvh0NFm36HeO4PGgQ=="],
+ "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.1", "", { "dependencies": { "@smithy/core": "^3.11.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.1", "@smithy/shared-ini-file-loader": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-fUTMmQvQQZakXOuKizfu7fBLDpwvWZjfH6zUK2OLsoNZRZGbNUdNSdLJHpwk1vS208jtDjpUIskh+JoA8zMzZg=="],
- "@smithy/middleware-retry": ["@smithy/middleware-retry@4.1.20", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/protocol-http": "^5.1.3", "@smithy/service-error-classification": "^4.0.7", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "@smithy/util-middleware": "^4.0.5", "@smithy/util-retry": "^4.0.7", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-T3maNEm3Masae99eFdx1Q7PIqBBEVOvRd5hralqKZNeIivnoGNx5OFtI3DiZ5gCjUkl0mNondlzSXeVxkinh7Q=="],
+ "@smithy/middleware-retry": ["@smithy/middleware-retry@4.2.1", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.1", "@smithy/smithy-client": "^4.6.1", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.1", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-JzfvjwSJXWRl7LkLgIRTUTd2Wj639yr3sQGpViGNEOjtb0AkAuYqRAHs+jSOI/LPC0ZTjmFVVtfrCICMuebexw=="],
- "@smithy/middleware-serde": ["@smithy/middleware-serde@4.0.9", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg=="],
+ "@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="],
- "@smithy/middleware-stack": ["@smithy/middleware-stack@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ=="],
+ "@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="],
- "@smithy/node-config-provider": ["@smithy/node-config-provider@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.0.5", "@smithy/shared-ini-file-loader": "^4.0.5", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w=="],
+ "@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.1", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-AIA0BJZq2h295J5NeCTKhg1WwtdTA/GqBCaVjk30bDgMHwniUETyh5cP9IiE9VrId7Kt8hS7zvREVMTv1VfA6g=="],
- "@smithy/node-http-handler": ["@smithy/node-http-handler@4.1.1", "", { "dependencies": { "@smithy/abort-controller": "^4.0.5", "@smithy/protocol-http": "^5.1.3", "@smithy/querystring-builder": "^4.0.5", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw=="],
+ "@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="],
- "@smithy/property-provider": ["@smithy/property-provider@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ=="],
+ "@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="],
- "@smithy/protocol-http": ["@smithy/protocol-http@5.1.3", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w=="],
+ "@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="],
- "@smithy/querystring-builder": ["@smithy/querystring-builder@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "@smithy/util-uri-escape": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A=="],
+ "@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="],
- "@smithy/querystring-parser": ["@smithy/querystring-parser@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w=="],
+ "@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="],
- "@smithy/service-error-classification": ["@smithy/service-error-classification@4.0.7", "", { "dependencies": { "@smithy/types": "^4.3.2" } }, "sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg=="],
+ "@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw=="],
- "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ=="],
+ "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-YkpikhIqGc4sfXeIbzSj10t2bJI/sSoP5qxLue6zG+tEE3ngOBSm8sO3+djacYvS/R5DfpxN/L9CyZsvwjWOAQ=="],
- "@smithy/signature-v4": ["@smithy/signature-v4@5.1.3", "", { "dependencies": { "@smithy/is-array-buffer": "^4.0.0", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "@smithy/util-uri-escape": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw=="],
+ "@smithy/signature-v4": ["@smithy/signature-v4@5.2.1", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-uri-escape": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA=="],
- "@smithy/smithy-client": ["@smithy/smithy-client@4.5.0", "", { "dependencies": { "@smithy/core": "^3.9.0", "@smithy/middleware-endpoint": "^4.1.19", "@smithy/middleware-stack": "^4.0.5", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" } }, "sha512-ZSdE3vl0MuVbEwJBxSftm0J5nL/gw76xp5WF13zW9cN18MFuFXD5/LV0QD8P+sCU5bSWGyy6CTgUupE1HhOo1A=="],
+ "@smithy/smithy-client": ["@smithy/smithy-client@4.6.1", "", { "dependencies": { "@smithy/core": "^3.11.0", "@smithy/middleware-endpoint": "^4.2.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.1", "tslib": "^2.6.2" } }, "sha512-WolVLDb9UTPMEPPOncrCt6JmAMCSC/V2y5gst2STWJ5r7+8iNac+EFYQnmvDCYMfOLcilOSEpm5yXZXwbLak1Q=="],
- "@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="],
+ "@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="],
- "@smithy/url-parser": ["@smithy/url-parser@4.0.5", "", { "dependencies": { "@smithy/querystring-parser": "^4.0.5", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw=="],
+ "@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="],
- "@smithy/util-base64": ["@smithy/util-base64@4.0.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg=="],
+ "@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="],
- "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA=="],
+ "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="],
- "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg=="],
+ "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="],
- "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.0.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug=="],
+ "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="],
- "@smithy/util-config-provider": ["@smithy/util-config-provider@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w=="],
+ "@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="],
- "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.0.27", "", { "dependencies": { "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-i/Fu6AFT5014VJNgWxKomBJP/GB5uuOsM4iHdcmplLm8B1eAqnRItw4lT2qpdO+mf+6TFmf6dGcggGLAVMZJsQ=="],
+ "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.1", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.1", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-hA1AKIHFUMa9Tl6q6y8p0pJ9aWHCCG8s57flmIyLE0W7HcJeYrYtnqXDcGnftvXEhdQnSexyegXnzzTGk8bKLA=="],
- "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.0.27", "", { "dependencies": { "@smithy/config-resolver": "^4.1.5", "@smithy/credential-provider-imds": "^4.0.7", "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-3W0qClMyxl/ELqTA39aNw1N+pN0IjpXT7lPFvZ8zTxqVFP7XCpACB9QufmN4FQtd39xbgS7/Lekn7LmDa63I5w=="],
+ "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.1", "", { "dependencies": { "@smithy/config-resolver": "^4.2.1", "@smithy/credential-provider-imds": "^4.1.1", "@smithy/node-config-provider": "^4.2.1", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-RGSpmoBrA+5D2WjwtK7tto6Pc2wO9KSXKLpLONhFZ8VyuCbqlLdiDAfuDTNY9AJe4JoE+Cx806cpTQQoQ71zPQ=="],
- "@smithy/util-endpoints": ["@smithy/util-endpoints@3.0.7", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ=="],
+ "@smithy/util-endpoints": ["@smithy/util-endpoints@3.1.1", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qB4R9kO0SetA11Rzu6MVGFIaGYX3p6SGGGfWwsKnC6nXIf0n/0AKVwRTsYsz9ToN8CeNNtNgQRwKFBndGJZdyw=="],
- "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw=="],
+ "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="],
- "@smithy/util-middleware": ["@smithy/util-middleware@4.0.5", "", { "dependencies": { "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ=="],
+ "@smithy/util-middleware": ["@smithy/util-middleware@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg=="],
- "@smithy/util-retry": ["@smithy/util-retry@4.0.7", "", { "dependencies": { "@smithy/service-error-classification": "^4.0.7", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ=="],
+ "@smithy/util-retry": ["@smithy/util-retry@4.1.1", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q=="],
- "@smithy/util-stream": ["@smithy/util-stream@4.2.4", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.1.1", "@smithy/node-http-handler": "^4.1.1", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-hex-encoding": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ=="],
+ "@smithy/util-stream": ["@smithy/util-stream@4.3.1", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA=="],
- "@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg=="],
+ "@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="],
- "@smithy/util-utf8": ["@smithy/util-utf8@4.0.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow=="],
+ "@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="],
+
+ "@solid-primitives/event-listener": ["@solid-primitives/event-listener@2.4.3", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg=="],
+
+ "@solid-primitives/keyed": ["@solid-primitives/keyed@1.5.2", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg=="],
+
+ "@solid-primitives/map": ["@solid-primitives/map@0.4.13", "", { "dependencies": { "@solid-primitives/trigger": "^1.1.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-B1zyFbsiTQvqPr+cuPCXO72sRuczG9Swncqk5P74NCGw1VE8qa/Ry9GlfI1e/VdeQYHjan+XkbE3rO2GW/qKew=="],
+
+ "@solid-primitives/media": ["@solid-primitives/media@2.3.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2", "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA=="],
+
+ "@solid-primitives/props": ["@solid-primitives/props@3.2.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-lZOTwFJajBrshSyg14nBMEP0h8MXzPowGO0s3OeiR3z6nXHTfj0FhzDtJMv+VYoRJKQHG2QRnJTgCzK6erARAw=="],
+
+ "@solid-primitives/refs": ["@solid-primitives/refs@1.1.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg=="],
+
+ "@solid-primitives/resize-observer": ["@solid-primitives/resize-observer@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2", "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ=="],
+
+ "@solid-primitives/rootless": ["@solid-primitives/rootless@1.5.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ=="],
+
+ "@solid-primitives/scroll": ["@solid-primitives/scroll@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-Ejq/Z7zKo/6eIEFr1bFLzXFxiGBCMLuqCM8QB8urr3YdPzjSETFLzYRWUyRiDWaBQN0F7k0SY6S7ig5nWOP7vg=="],
+
+ "@solid-primitives/static-store": ["@solid-primitives/static-store@0.1.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw=="],
+
+ "@solid-primitives/trigger": ["@solid-primitives/trigger@1.2.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-IWoptVc0SWYgmpBPpCMehS5b07+tpFcvw15tOQ3QbXedSYn6KP8zCjPkHNzMxcOvOicTneleeZDP7lqmz+PQ6g=="],
+
+ "@solid-primitives/utils": ["@solid-primitives/utils@6.3.2", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ=="],
"@solidjs/meta": ["@solidjs/meta@0.29.4", "", { "peerDependencies": { "solid-js": ">=1.8.4" } }, "sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g=="],
"@solidjs/router": ["@solidjs/router@0.15.3", "", { "peerDependencies": { "solid-js": "^1.8.6" } }, "sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw=="],
- "@solidjs/start": ["@solidjs/start@1.1.7", "", { "dependencies": { "@tanstack/server-functions-plugin": "1.121.21", "@vinxi/plugin-directives": "^0.5.0", "@vinxi/server-components": "^0.5.0", "defu": "^6.1.2", "error-stack-parser": "^2.1.4", "html-to-image": "^1.11.11", "radix3": "^1.1.0", "seroval": "^1.0.2", "seroval-plugins": "^1.0.2", "shiki": "^1.26.1", "source-map-js": "^1.0.2", "terracotta": "^1.0.4", "tinyglobby": "^0.2.2", "vite-plugin-solid": "^2.11.1" }, "peerDependencies": { "vinxi": "^0.5.7" } }, "sha512-30nUFzCpCVH7ORtHlO4ZE+VLG3g3EP+x+ceLLJBFRXIVuFQ1p203xZvVCXWqUPydtK78O5w3nIkWA/tLtF0Ybg=="],
+ "@solidjs/start": ["@solidjs/start@1.2.0", "", { "dependencies": { "@tanstack/server-functions-plugin": "1.121.21", "@vinxi/plugin-directives": "^0.5.0", "@vinxi/server-components": "^0.5.0", "cookie-es": "^2.0.0", "defu": "^6.1.2", "error-stack-parser": "^2.1.4", "html-to-image": "^1.11.11", "radix3": "^1.1.0", "seroval": "^1.0.2", "seroval-plugins": "^1.0.2", "shiki": "^1.26.1", "source-map-js": "^1.0.2", "terracotta": "^1.0.4", "tinyglobby": "^0.2.2", "vite-plugin-solid": "^2.11.1" }, "peerDependencies": { "vinxi": "^0.5.7" } }, "sha512-SRv1g3R+4sxZnxCBPK1IedtLKsPhPJ7W/Yv4xEHjM4jJGPWi3ed35/yd0D5zhRK0C7zJIkZKbhnR/S3g8JUD5w=="],
"@speed-highlight/core": ["@speed-highlight/core@1.2.7", "", {}, "sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g=="],
- "@standard-community/standard-json": ["@standard-community/standard-json@0.3.1", "", { "peerDependencies": { "@standard-schema/spec": "^1.0.0", "@types/json-schema": "^7.0.15", "@valibot/to-json-schema": "^1.3.0", "arktype": "^2.1.20", "effect": "^3.16.8", "quansync": "^0.2.11", "valibot": "^1.1.0", "zod": "^3.25.0 || ^4.0.0", "zod-to-json-schema": "^3.24.5" }, "optionalPeers": ["@valibot/to-json-schema", "arktype", "effect", "valibot", "zod", "zod-to-json-schema"] }, "sha512-QYW1sZWWheij2CZnUL8LAFK5oECJe7cQUqtao1dY4Pjp/RPidOmpgS4L3pm9rR2gzFoyjpS5Q0MhF3c0Bxzevg=="],
+ "@standard-community/standard-json": ["@standard-community/standard-json@0.3.3", "", { "peerDependencies": { "@standard-schema/spec": "^1.0.0", "@types/json-schema": "^7.0.15", "@valibot/to-json-schema": "^1.3.0", "arktype": "^2.1.20", "effect": "^3.16.8", "quansync": "^0.2.11", "valibot": "^1.1.0", "zod": "^3.25.0 || ^4.0.0", "zod-to-json-schema": "^3.24.5" }, "optionalPeers": ["@valibot/to-json-schema", "arktype", "effect", "valibot", "zod", "zod-to-json-schema"] }, "sha512-oIdzYrYFe5hUxcAgnNcDuaP59dn1LRPHVv16ZNIONPF2OF9r5O8zGGhBHfrNEmldLcljmDBTnGz1gwmaK0iczQ=="],
"@standard-community/standard-openapi": ["@standard-community/standard-openapi@0.2.4", "", { "peerDependencies": { "@standard-community/standard-json": "^0.3.1", "@standard-schema/spec": "^1.0.0", "arktype": "^2.1.20", "openapi-types": "^12.1.3", "valibot": "^1.1.0", "zod": "^3.25.0 || ^4.0.0", "zod-openapi": "^4" }, "optionalPeers": ["arktype", "valibot", "zod", "zod-openapi"] }, "sha512-guPU+9Y+Y9JN0gpBQbZMlIYzRSaRyTe7f+g6JCV3d0rrMQ5JFngLQKRyg3MP07xIts8nGim167Y9ePfdlkJp0Q=="],
@@ -983,12 +1034,44 @@
"@szmarczak/http-timer": ["@szmarczak/http-timer@4.0.6", "", { "dependencies": { "defer-to-connect": "^2.0.0" } }, "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w=="],
+ "@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="],
+
+ "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="],
+
+ "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="],
+
+ "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="],
+
+ "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="],
+
+ "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="],
+
+ "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="],
+
+ "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="],
+
+ "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="],
+
+ "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="],
+
+ "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="],
+
+ "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="],
+
+ "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="],
+
+ "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="],
+
+ "@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
+
"@tanstack/directive-functions-plugin": ["@tanstack/directive-functions-plugin@1.121.21", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/core": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/router-utils": "^1.121.21", "babel-dead-code-elimination": "^1.0.10", "tiny-invariant": "^1.3.3" }, "peerDependencies": { "vite": ">=6.0.0" } }, "sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw=="],
"@tanstack/router-utils": ["@tanstack/router-utils@1.131.2", "", { "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", "@babel/parser": "^7.27.5", "@babel/preset-typescript": "^7.27.1", "ansis": "^4.1.0", "diff": "^8.0.2" } }, "sha512-sr3x0d2sx9YIJoVth0QnfEcAcl+39sQYaNQxThtHmRpyeFYNyM2TTH+Ud3TNEnI3bbzmLYEUD+7YqB987GzhDA=="],
"@tanstack/server-functions-plugin": ["@tanstack/server-functions-plugin@1.121.21", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/core": "^7.26.8", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9", "@babel/template": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/directive-functions-plugin": "1.121.21", "babel-dead-code-elimination": "^1.0.9", "tiny-invariant": "^1.3.3" } }, "sha512-a05fzK+jBGacsSAc1vE8an7lpBh4H0PyIEcivtEyHLomgSeElAJxm9E2It/0nYRZ5Lh23m0okbhzJNaYWZpAOg=="],
+ "@thisbeyond/solid-dnd": ["@thisbeyond/solid-dnd@0.7.5", "", { "peerDependencies": { "solid-js": "^1.5" } }, "sha512-DfI5ff+yYGpK9M21LhYwIPlbP2msKxN2ARwuu6GF8tT1GgNVDTI8VCQvH4TJFoVApP9d44izmAcTh/iTCH2UUw=="],
+
"@tsconfig/bun": ["@tsconfig/bun@1.0.7", "", {}, "sha512-udGrGJBNQdXGVulehc1aWT73wkR9wdaGBtB6yL70RJsqwW/yJhIg6ZbRlPOfIUiFNrnBuYLBi9CSmMKfDC7dvA=="],
"@tsconfig/node22": ["@tsconfig/node22@22.0.2", "", {}, "sha512-Kmwj4u8sDRDrMYRoN9FDEcXD8UpBSaPQQ24Gz+Gamqfm7xxn+GBR7ge/Z7pK8OXNGyUzbSwJj+TH6B+DS/epyA=="],
@@ -1031,7 +1114,7 @@
"@types/keyv": ["@types/keyv@3.1.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg=="],
- "@types/luxon": ["@types/luxon@3.6.2", "", {}, "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw=="],
+ "@types/luxon": ["@types/luxon@3.7.1", "", {}, "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg=="],
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
@@ -1045,9 +1128,7 @@
"@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
- "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="],
-
- "@types/react": ["@types/react@19.1.12", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w=="],
+ "@types/react": ["@types/react@19.1.13", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ=="],
"@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="],
@@ -1055,14 +1136,12 @@
"@types/sax": ["@types/sax@1.2.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A=="],
- "@types/semver": ["@types/semver@7.7.0", "", {}, "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA=="],
+ "@types/semver": ["@types/semver@7.7.1", "", {}, "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA=="],
"@types/shimmer": ["@types/shimmer@1.2.0", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="],
"@types/tmp": ["@types/tmp@0.2.6", "", {}, "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA=="],
- "@types/triple-beam": ["@types/triple-beam@1.3.5", "", {}, "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="],
-
"@types/turndown": ["@types/turndown@5.0.5", "", {}, "sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w=="],
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
@@ -1073,21 +1152,9 @@
"@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="],
- "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
-
- "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.41.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.41.0", "@typescript-eslint/types": "^8.41.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ=="],
-
- "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.41.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw=="],
-
- "@typescript-eslint/types": ["@typescript-eslint/types@8.41.0", "", {}, "sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag=="],
-
- "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.41.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.41.0", "@typescript-eslint/tsconfig-utils": "8.41.0", "@typescript-eslint/types": "8.41.0", "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ=="],
-
- "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.41.0", "", { "dependencies": { "@typescript-eslint/types": "8.41.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg=="],
-
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
- "@vercel/nft": ["@vercel/nft@0.29.4", "", { "dependencies": { "@mapbox/node-pre-gyp": "^2.0.0", "@rollup/pluginutils": "^5.1.3", "acorn": "^8.6.0", "acorn-import-attributes": "^1.9.5", "async-sema": "^3.1.1", "bindings": "^1.4.0", "estree-walker": "2.0.2", "glob": "^10.4.5", "graceful-fs": "^4.2.9", "node-gyp-build": "^4.2.2", "picomatch": "^4.0.2", "resolve-from": "^5.0.0" }, "bin": { "nft": "out/cli.js" } }, "sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA=="],
+ "@vercel/nft": ["@vercel/nft@0.30.1", "", { "dependencies": { "@mapbox/node-pre-gyp": "^2.0.0", "@rollup/pluginutils": "^5.1.3", "acorn": "^8.6.0", "acorn-import-attributes": "^1.9.5", "async-sema": "^3.1.1", "bindings": "^1.4.0", "estree-walker": "2.0.2", "glob": "^10.4.5", "graceful-fs": "^4.2.9", "node-gyp-build": "^4.2.2", "picomatch": "^4.0.2", "resolve-from": "^5.0.0" }, "bin": { "nft": "out/cli.js" } }, "sha512-2mgJZv4AYBFkD/nJ4QmiX5Ymxi+AisPLPcS/KPXVqniyQNqKXX+wjieAbDXQP3HcogfEbpHoRMs49Cd4pfkk8g=="],
"@vinxi/listhen": ["@vinxi/listhen@1.5.6", "", { "dependencies": { "@parcel/watcher": "^2.3.0", "@parcel/watcher-wasm": "2.3.0", "citty": "^0.1.5", "clipboardy": "^4.0.0", "consola": "^3.2.3", "defu": "^6.1.4", "get-port-please": "^3.1.2", "h3": "^1.10.0", "http-shutdown": "^1.2.2", "jiti": "^1.21.0", "mlly": "^1.5.0", "node-forge": "^1.3.1", "pathe": "^1.1.2", "std-env": "^3.7.0", "ufo": "^1.3.2", "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { "listen": "bin/listhen.mjs", "listhen": "bin/listhen.mjs" } }, "sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw=="],
@@ -1095,26 +1162,6 @@
"@vinxi/server-components": ["@vinxi/server-components@0.5.1", "", { "dependencies": { "@vinxi/plugin-directives": "0.5.1", "acorn": "^8.10.0", "acorn-loose": "^8.3.0", "acorn-typescript": "^1.4.3", "astring": "^1.8.6", "magicast": "^0.2.10", "recast": "^0.23.4" }, "peerDependencies": { "vinxi": "^0.5.5" } }, "sha512-0BsG95qac3dkhfdRZxqzqYWJE4NvPL7ILlV43B6K6ho1etXWB2e5b0IxsUAUbyqpqiXM7mSRivojuXjb2G4OsQ=="],
- "@vue/compiler-core": ["@vue/compiler-core@3.5.20", "", { "dependencies": { "@babel/parser": "^7.28.3", "@vue/shared": "3.5.20", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg=="],
-
- "@vue/compiler-dom": ["@vue/compiler-dom@3.5.20", "", { "dependencies": { "@vue/compiler-core": "3.5.20", "@vue/shared": "3.5.20" } }, "sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ=="],
-
- "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.20", "", { "dependencies": { "@babel/parser": "^7.28.3", "@vue/compiler-core": "3.5.20", "@vue/compiler-dom": "3.5.20", "@vue/compiler-ssr": "3.5.20", "@vue/shared": "3.5.20", "estree-walker": "^2.0.2", "magic-string": "^0.30.17", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw=="],
-
- "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.20", "", { "dependencies": { "@vue/compiler-dom": "3.5.20", "@vue/shared": "3.5.20" } }, "sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA=="],
-
- "@vue/shared": ["@vue/shared@3.5.20", "", {}, "sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA=="],
-
- "@whatwg-node/disposablestack": ["@whatwg-node/disposablestack@0.0.6", "", { "dependencies": { "@whatwg-node/promise-helpers": "^1.0.0", "tslib": "^2.6.3" } }, "sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw=="],
-
- "@whatwg-node/fetch": ["@whatwg-node/fetch@0.10.10", "", { "dependencies": { "@whatwg-node/node-fetch": "^0.7.25", "urlpattern-polyfill": "^10.0.0" } }, "sha512-watz4i/Vv4HpoJ+GranJ7HH75Pf+OkPQ63NoVmru6Srgc8VezTArB00i/oQlnn0KWh14gM42F22Qcc9SU9mo/w=="],
-
- "@whatwg-node/node-fetch": ["@whatwg-node/node-fetch@0.7.25", "", { "dependencies": { "@fastify/busboy": "^3.1.1", "@whatwg-node/disposablestack": "^0.0.6", "@whatwg-node/promise-helpers": "^1.3.2", "tslib": "^2.6.3" } }, "sha512-szCTESNJV+Xd56zU6ShOi/JWROxE9IwCic8o5D9z5QECZloas6Ez5tUuKqXTAdu6fHFx1t6C+5gwj8smzOLjtg=="],
-
- "@whatwg-node/promise-helpers": ["@whatwg-node/promise-helpers@1.3.2", "", { "dependencies": { "tslib": "^2.6.3" } }, "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA=="],
-
- "@whatwg-node/server": ["@whatwg-node/server@0.9.71", "", { "dependencies": { "@whatwg-node/disposablestack": "^0.0.6", "@whatwg-node/fetch": "^0.10.5", "@whatwg-node/promise-helpers": "^1.2.2", "tslib": "^2.6.3" } }, "sha512-ueFCcIPaMgtuYDS9u0qlUoEvj6GiSsKrwnOLPp9SshqjtcRaR1IEHRjoReq3sXNydsF5i0ZnmuYgXq9dV53t0g=="],
-
"@zip.js/zip.js": ["@zip.js/zip.js@2.7.62", "", {}, "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA=="],
"abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="],
@@ -1147,9 +1194,9 @@
"ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="],
- "ansi-regex": ["ansi-regex@6.2.0", "", {}, "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg=="],
+ "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
- "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
+ "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
"ansis": ["ansis@4.1.0", "", {}, "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w=="],
@@ -1169,8 +1216,6 @@
"array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="],
- "ast-module-types": ["ast-module-types@6.0.1", "", {}, "sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA=="],
-
"ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="],
"astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
@@ -1193,7 +1238,7 @@
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
- "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="],
+ "b4a": ["b4a@1.7.1", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q=="],
"babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.10", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA=="],
@@ -1207,7 +1252,7 @@
"bare-events": ["bare-events@2.6.1", "", {}, "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g=="],
- "bare-fs": ["bare-fs@4.2.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-mELROzV0IhqilFgsl1gyp48pnZsaV9xhQapHLDsvn4d4ZTfbFhcghQezl7FTEDNBcGqLUnNI3lUlm6ecrLWdFA=="],
+ "bare-fs": ["bare-fs@4.4.4", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw=="],
"bare-os": ["bare-os@3.6.2", "", {}, "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A=="],
@@ -1215,10 +1260,14 @@
"bare-stream": ["bare-stream@2.7.0", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A=="],
+ "bare-url": ["bare-url@2.2.2", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA=="],
+
"base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="],
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
+ "baseline-browser-mapping": ["baseline-browser-mapping@2.8.3", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw=="],
+
"bcp-47": ["bcp-47@2.1.0", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w=="],
"bcp-47-match": ["bcp-47-match@2.0.3", "", {}, "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ=="],
@@ -1249,7 +1298,7 @@
"brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="],
- "browserslist": ["browserslist@4.25.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001737", "electron-to-chromium": "^1.5.211", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg=="],
+ "browserslist": ["browserslist@4.26.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.2", "caniuse-lite": "^1.0.30001741", "electron-to-chromium": "^1.5.218", "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A=="],
"buffer": ["buffer@4.9.2", "", { "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" } }, "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg=="],
@@ -1257,8 +1306,6 @@
"buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="],
- "builtin-modules": ["builtin-modules@3.3.0", "", {}, "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw=="],
-
"bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="],
"bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
@@ -1279,15 +1326,13 @@
"call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
- "callsite": ["callsite@1.0.0", "", {}, "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ=="],
-
"camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="],
- "caniuse-lite": ["caniuse-lite@1.0.30001737", "", {}, "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw=="],
+ "caniuse-lite": ["caniuse-lite@1.0.30001741", "", {}, "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw=="],
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
- "chalk": ["chalk@5.6.0", "", {}, "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ=="],
+ "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
"character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
@@ -1299,7 +1344,7 @@
"chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
- "chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="],
+ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
"ci-info": ["ci-info@4.3.0", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="],
@@ -1337,16 +1382,12 @@
"color-support": ["color-support@1.1.3", "", { "bin": { "color-support": "bin.js" } }, "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="],
- "colorspace": ["colorspace@1.1.4", "", { "dependencies": { "color": "^3.1.3", "text-hex": "1.0.x" } }, "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w=="],
-
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
"commander": ["commander@13.0.0", "", {}, "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ=="],
"common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="],
- "common-path-prefix": ["common-path-prefix@3.0.0", "", {}, "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="],
-
"commondir": ["commondir@1.0.1", "", {}, "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="],
"compatx": ["compatx@0.2.0", "", {}, "sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA=="],
@@ -1365,12 +1406,10 @@
"cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="],
- "cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
+ "cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="],
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
- "copy-file": ["copy-file@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.11", "p-event": "^6.0.0" } }, "sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw=="],
-
"core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="],
"cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
@@ -1379,8 +1418,6 @@
"crc32-stream": ["crc32-stream@6.0.0", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^4.0.0" } }, "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g=="],
- "cron-parser": ["cron-parser@4.9.0", "", { "dependencies": { "luxon": "^3.2.1" } }, "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q=="],
-
"croner": ["croner@9.1.0", "", {}, "sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g=="],
"cross-fetch": ["cross-fetch@3.2.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q=="],
@@ -1389,23 +1426,23 @@
"crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
+ "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
+
"css-selector-parser": ["css-selector-parser@3.1.3", "", {}, "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg=="],
"css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="],
+ "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
+
"cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
"csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
- "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="],
-
"dax-sh": ["dax-sh@0.43.2", "", { "dependencies": { "@deno/shim-deno": "~0.19.0", "undici-types": "^5.26" } }, "sha512-uULa1sSIHgXKGCqJ/pA0zsnzbHlVnuq7g8O2fkHokWFNwEGIhh5lAJlxZa1POG5En5ba7AU4KcBAvGQWMMf8rg=="],
"db0": ["db0@0.3.2", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-xzWNQ6jk/+NtdfLyXEipbX55dmDSeteLFt/ayF+wZUU5bzKgmrDOxmInUTbyVRp46YwnJdkDA1KhB7WIXFofJw=="],
- "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
-
- "decache": ["decache@4.6.2", "", { "dependencies": { "callsite": "^1.0.0" } }, "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw=="],
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
"decimal.js": ["decimal.js@10.5.0", "", {}, "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="],
@@ -1439,25 +1476,7 @@
"destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="],
- "detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="],
-
- "detective-amd": ["detective-amd@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "escodegen": "^2.1.0", "get-amd-module-type": "^6.0.1", "node-source-walk": "^7.0.1" }, "bin": { "detective-amd": "bin/cli.js" } }, "sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g=="],
-
- "detective-cjs": ["detective-cjs@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "node-source-walk": "^7.0.1" } }, "sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw=="],
-
- "detective-es6": ["detective-es6@5.0.1", "", { "dependencies": { "node-source-walk": "^7.0.1" } }, "sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew=="],
-
- "detective-postcss": ["detective-postcss@7.0.1", "", { "dependencies": { "is-url": "^1.2.4", "postcss-values-parser": "^6.0.2" }, "peerDependencies": { "postcss": "^8.4.47" } }, "sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ=="],
-
- "detective-sass": ["detective-sass@6.0.1", "", { "dependencies": { "gonzales-pe": "^4.3.0", "node-source-walk": "^7.0.1" } }, "sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw=="],
-
- "detective-scss": ["detective-scss@5.0.1", "", { "dependencies": { "gonzales-pe": "^4.3.0", "node-source-walk": "^7.0.1" } }, "sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg=="],
-
- "detective-stylus": ["detective-stylus@5.0.1", "", {}, "sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA=="],
-
- "detective-typescript": ["detective-typescript@14.0.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "^8.23.0", "ast-module-types": "^6.0.1", "node-source-walk": "^7.0.1" }, "peerDependencies": { "typescript": "^5.4.4" } }, "sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw=="],
-
- "detective-vue2": ["detective-vue2@2.2.0", "", { "dependencies": { "@dependents/detective-less": "^5.0.1", "@vue/compiler-sfc": "^3.5.13", "detective-es6": "^5.0.1", "detective-sass": "^6.0.1", "detective-scss": "^5.0.1", "detective-stylus": "^5.0.1", "detective-typescript": "^14.0.0" }, "peerDependencies": { "typescript": "^5.4.4" } }, "sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA=="],
+ "detect-libc": ["detect-libc@2.1.0", "", {}, "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg=="],
"deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="],
@@ -1473,6 +1492,14 @@
"dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="],
+ "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
+
+ "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
+
+ "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
+
+ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
+
"dot-prop": ["dot-prop@9.0.0", "", { "dependencies": { "type-fest": "^4.18.2" } }, "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ=="],
"dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="],
@@ -1491,20 +1518,20 @@
"ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
- "electron-to-chromium": ["electron-to-chromium@1.5.211", "", {}, "sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw=="],
+ "electron-to-chromium": ["electron-to-chromium@1.5.218", "", {}, "sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg=="],
"emoji-regex": ["emoji-regex@10.5.0", "", {}, "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg=="],
"emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="],
- "enabled": ["enabled@2.0.0", "", {}, "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="],
-
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
"encoding": ["encoding@0.1.13", "", { "dependencies": { "iconv-lite": "^0.6.2" } }, "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="],
"end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
+ "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="],
+
"entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
"env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="],
@@ -1537,14 +1564,8 @@
"escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
- "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
-
- "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
-
"esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
- "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
-
"estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="],
"estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="],
@@ -1559,8 +1580,6 @@
"estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
- "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
-
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
"event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
@@ -1571,7 +1590,7 @@
"eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="],
- "eventsource-parser": ["eventsource-parser@3.0.5", "", {}, "sha512-bSRG85ZrMdmWtm7qkF9He9TNRzc/Bm99gEJMaQoHJ9E6Kv9QBbsldh2oMj7iXmYNEAVvNgvv5vPorG6W+XtBhQ=="],
+ "eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="],
"execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="],
@@ -1593,8 +1612,6 @@
"extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="],
- "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="],
-
"fast-content-type-parse": ["fast-content-type-parse@3.0.0", "", {}, "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="],
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
@@ -1609,30 +1626,18 @@
"fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
- "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
-
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
- "fecha": ["fecha@4.2.3", "", {}, "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="],
-
- "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="],
-
"file-uri-to-path": ["file-uri-to-path@1.0.0", "", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="],
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
- "filter-obj": ["filter-obj@6.1.0", "", {}, "sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA=="],
-
"finalhandler": ["finalhandler@2.1.0", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q=="],
"find-up": ["find-up@6.3.0", "", { "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" } }, "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw=="],
- "find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="],
-
"flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
- "fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="],
-
"follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="],
"fontace": ["fontace@0.3.0", "", { "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" } }, "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg=="],
@@ -1643,8 +1648,6 @@
"foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
- "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="],
-
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
"fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
@@ -1663,11 +1666,9 @@
"gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
- "get-amd-module-type": ["get-amd-module-type@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "node-source-walk": "^7.0.1" } }, "sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ=="],
-
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
- "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
+ "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="],
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
@@ -1685,7 +1686,7 @@
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
- "glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+ "glob": ["glob@11.0.3", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.0.3", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA=="],
"glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
@@ -1693,8 +1694,6 @@
"globby": ["globby@14.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.3", "ignore": "^7.0.3", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA=="],
- "gonzales-pe": ["gonzales-pe@4.3.0", "", { "dependencies": { "minimist": "^1.2.5" }, "bin": { "gonzales": "bin/gonzales.js" } }, "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ=="],
-
"google-protobuf": ["google-protobuf@3.21.4", "", {}, "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ=="],
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
@@ -1761,6 +1760,8 @@
"hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="],
+ "he": ["he@1.2.0", "", { "bin": { "he": "bin/he" } }, "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="],
+
"hono": ["hono@4.7.10", "", {}, "sha512-QkACju9MiN59CKSY5JsGZCYmPZkA6sIW6OFCUp7qDjZu6S6KHtJHhAc9Uy9mV9F8PJ1/HQ3ybZF2yjCa/73fvQ=="],
"hono-openapi": ["hono-openapi@1.0.7", "", { "peerDependencies": { "@hono/standard-validator": "^0.1.2", "@standard-community/standard-json": "^0.3.1", "@standard-community/standard-openapi": "^0.2.4", "@types/json-schema": "^7.0.15", "hono": "^4.8.3", "openapi-types": "^12.1.3" }, "optionalPeers": ["@hono/standard-validator", "hono"] }, "sha512-rMn+nn4/HMisyi549L3zT7WCmVvmpiKsyt790GcGfqvJf9mJfhq6txw09l0IhSBxpJpA0pXVKxFijcsnGfshUA=="],
@@ -1809,14 +1810,12 @@
"import-in-the-middle": ["import-in-the-middle@1.14.2", "", { "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw=="],
- "import-meta-resolve": ["import-meta-resolve@4.1.0", "", {}, "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw=="],
+ "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="],
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
"indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="],
- "index-to-position": ["index-to-position@1.1.0", "", {}, "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg=="],
-
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
"ini": ["ini@2.0.0", "", {}, "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="],
@@ -1837,9 +1836,7 @@
"is-arguments": ["is-arguments@1.2.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA=="],
- "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="],
-
- "is-builtin-module": ["is-builtin-module@3.2.1", "", { "dependencies": { "builtin-modules": "^3.3.0" } }, "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A=="],
+ "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="],
"is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
@@ -1869,8 +1866,6 @@
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
- "is-path-inside": ["is-path-inside@4.0.0", "", {}, "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA=="],
-
"is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="],
"is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
@@ -1885,10 +1880,6 @@
"is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="],
- "is-url": ["is-url@1.2.4", "", {}, "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="],
-
- "is-url-superb": ["is-url-superb@4.0.0", "", {}, "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA=="],
-
"is-what": ["is-what@4.1.16", "", {}, "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="],
"is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="],
@@ -1899,7 +1890,7 @@
"isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="],
- "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+ "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="],
"jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="],
@@ -1931,14 +1922,10 @@
"jsonparse": ["jsonparse@1.3.1", "", {}, "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="],
- "junk": ["junk@4.0.1", "", {}, "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ=="],
-
"just-diff": ["just-diff@6.0.2", "", {}, "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA=="],
"just-diff-apply": ["just-diff-apply@5.5.0", "", {}, "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw=="],
- "jwt-decode": ["jwt-decode@4.0.0", "", {}, "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA=="],
-
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
@@ -1949,16 +1936,34 @@
"knitwork": ["knitwork@1.2.0", "", {}, "sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg=="],
- "kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="],
-
- "lambda-local": ["lambda-local@2.2.0", "", { "dependencies": { "commander": "^10.0.1", "dotenv": "^16.3.1", "winston": "^3.10.0" }, "bin": { "lambda-local": "build/cli.js" } }, "sha512-bPcgpIXbHnVGfI/omZIlgucDqlf4LrsunwoKue5JdZeGybt8L6KyJz2Zu19ffuZwIwLj2NAI2ZyaqNT6/cetcg=="],
-
"lang-map": ["lang-map@0.4.0", "", { "dependencies": { "language-map": "^1.1.0" } }, "sha512-oiSqZIEUnWdFeDNsp4HId4tAxdFbx5iMBOwA3666Fn2L8Khj8NiD9xRvMsGmKXopPVkaDFtSv3CJOmXFUB0Hcg=="],
"language-map": ["language-map@1.5.0", "", {}, "sha512-n7gFZpe+DwEAX9cXVTw43i3wiudWDDtSn28RmdnS/HCPr284dQI/SztsamWanRr75oSlKSaGbV2nmWCTzGCoVg=="],
"lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="],
+ "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
+
+ "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
+
+ "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
+
+ "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
+
+ "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
+
+ "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
+
+ "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
+
+ "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
+
+ "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
+
+ "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
+
+ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
+
"listhen": ["listhen@1.9.0", "", { "dependencies": { "@parcel/watcher": "^2.4.1", "@parcel/watcher-wasm": "^2.4.1", "citty": "^0.1.6", "clipboardy": "^4.0.0", "consola": "^3.2.3", "crossws": ">=0.2.0 <0.4.0", "defu": "^6.1.4", "get-port-please": "^3.1.2", "h3": "^1.12.0", "http-shutdown": "^1.2.2", "jiti": "^2.1.2", "mlly": "^1.7.1", "node-forge": "^1.3.1", "pathe": "^1.1.2", "std-env": "^3.7.0", "ufo": "^1.5.4", "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { "listen": "bin/listhen.mjs", "listhen": "bin/listhen.mjs" } }, "sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg=="],
"local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="],
@@ -1967,18 +1972,12 @@
"lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
- "lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="],
-
"lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="],
- "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="],
-
"lodash.defaults": ["lodash.defaults@4.2.0", "", {}, "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="],
"lodash.isarguments": ["lodash.isarguments@3.1.0", "", {}, "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="],
- "logform": ["logform@2.7.0", "", { "dependencies": { "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" } }, "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ=="],
-
"long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="],
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
@@ -1989,9 +1988,9 @@
"lru.min": ["lru.min@1.1.2", "", {}, "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg=="],
- "luxon": ["luxon@3.6.1", "", {}, "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ=="],
+ "luxon": ["luxon@3.7.1", "", {}, "sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg=="],
- "magic-string": ["magic-string@0.30.18", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ=="],
+ "magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="],
"magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
@@ -2001,7 +2000,7 @@
"markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
- "marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="],
+ "marked": ["marked@16.2.0", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg=="],
"marked-shiki": ["marked-shiki@1.2.1", "", { "peerDependencies": { "marked": ">=7.0.0", "shiki": ">=1.0.0" } }, "sha512-yHxYQhPY5oYaIRnROn98foKhuClark7M373/VpLxiy5TrDu9Jd/LsMwo8w+U91Up4oDb9IXFrP0N1MFRz8W/DQ=="],
@@ -2051,14 +2050,10 @@
"merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
- "merge-options": ["merge-options@3.0.4", "", { "dependencies": { "is-plain-obj": "^2.1.0" } }, "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ=="],
-
"merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
"merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
- "micro-api-client": ["micro-api-client@3.3.0", "", {}, "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg=="],
-
"micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="],
"micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="],
@@ -2133,7 +2128,7 @@
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
- "mime": ["mime@4.0.7", "", { "bin": { "mime": "bin/cli.js" } }, "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ=="],
+ "mime": ["mime@4.1.0", "", { "bin": { "mime": "bin/cli.js" } }, "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw=="],
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
@@ -2143,7 +2138,7 @@
"mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
- "miniflare": ["miniflare@4.20250823.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "^7.10.0", "workerd": "1.20250823.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-qjbF69XXyHXk4R//q0a9MLraKE9MLKZ/94k6jKcfouJ0g+se7VyMzCBryeWA534+ZAlNM4Ay5gqYr1v3Wk6ctQ=="],
+ "miniflare": ["miniflare@4.20250906.2", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "7.14.0", "workerd": "1.20250906.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-SXGv8Rdd91b6UXZ5eW3rde/gSJM6WVLItMNFV7u9axUVhACvpT4CB5p80OBfi2OOsGfOuFQ6M6s8tMxJbzioVw=="],
"minimatch": ["minimatch@10.0.3", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw=="],
@@ -2161,16 +2156,14 @@
"minipass-sized": ["minipass-sized@1.0.3", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="],
- "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+ "minizlib": ["minizlib@3.0.2", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA=="],
- "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+ "mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="],
"mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="],
"mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="],
- "module-definition": ["module-definition@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "node-source-walk": "^7.0.1" }, "bin": { "module-definition": "bin/cli.js" } }, "sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g=="],
-
"module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="],
"mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="],
@@ -2191,18 +2184,14 @@
"neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
- "netlify": ["netlify@13.3.5", "", { "dependencies": { "@netlify/open-api": "^2.37.0", "lodash-es": "^4.17.21", "micro-api-client": "^3.3.0", "node-fetch": "^3.0.0", "p-wait-for": "^5.0.0", "qs": "^6.9.6" } }, "sha512-Nc3loyVASW59W+8fLDZT1lncpG7llffyZ2o0UQLx/Fr20i7P8oP+lE7+TEcFvXj9IUWU6LjB9P3BH+iFGyp+mg=="],
-
- "nitropack": ["nitropack@2.12.4", "", { "dependencies": { "@cloudflare/kv-asset-handler": "^0.4.0", "@netlify/functions": "^3.1.10", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", "@vercel/nft": "^0.29.4", "archiver": "^7.0.1", "c12": "^3.1.0", "chokidar": "^4.0.3", "citty": "^0.1.6", "compatx": "^0.2.0", "confbox": "^0.2.2", "consola": "^3.4.2", "cookie-es": "^2.0.0", "croner": "^9.1.0", "crossws": "^0.3.5", "db0": "^0.3.2", "defu": "^6.1.4", "destr": "^2.0.5", "dot-prop": "^9.0.0", "esbuild": "^0.25.6", "escape-string-regexp": "^5.0.0", "etag": "^1.8.1", "exsolve": "^1.0.7", "globby": "^14.1.0", "gzip-size": "^7.0.0", "h3": "^1.15.3", "hookable": "^5.5.3", "httpxy": "^0.1.7", "ioredis": "^5.6.1", "jiti": "^2.4.2", "klona": "^2.0.6", "knitwork": "^1.2.0", "listhen": "^1.9.0", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mime": "^4.0.7", "mlly": "^1.7.4", "node-fetch-native": "^1.6.6", "node-mock-http": "^1.0.1", "ofetch": "^1.4.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "pretty-bytes": "^6.1.1", "radix3": "^1.1.2", "rollup": "^4.45.0", "rollup-plugin-visualizer": "^6.0.3", "scule": "^1.3.0", "semver": "^7.7.2", "serve-placeholder": "^2.0.2", "serve-static": "^2.2.0", "source-map": "^0.7.4", "std-env": "^3.9.0", "ufo": "^1.6.1", "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.4.1", "unenv": "^2.0.0-rc.18", "unimport": "^5.1.0", "unplugin-utils": "^0.2.4", "unstorage": "^1.16.1", "untyped": "^2.0.0", "unwasm": "^0.3.9", "youch": "4.1.0-beta.8", "youch-core": "^0.3.3" }, "peerDependencies": { "xml2js": "^0.6.2" }, "optionalPeers": ["xml2js"], "bin": { "nitro": "dist/cli/index.mjs", "nitropack": "dist/cli/index.mjs" } }, "sha512-MPmPRJWTeH03f/NmpN4q3iI3Woik4uaaWIoX34W3gMJiW06Vm1te/lPzuu5EXpXOK7Q2m3FymGMPXcExqih96Q=="],
+ "nitropack": ["nitropack@2.12.6", "", { "dependencies": { "@cloudflare/kv-asset-handler": "^0.4.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", "@vercel/nft": "^0.30.1", "archiver": "^7.0.1", "c12": "^3.2.0", "chokidar": "^4.0.3", "citty": "^0.1.6", "compatx": "^0.2.0", "confbox": "^0.2.2", "consola": "^3.4.2", "cookie-es": "^2.0.0", "croner": "^9.1.0", "crossws": "^0.3.5", "db0": "^0.3.2", "defu": "^6.1.4", "destr": "^2.0.5", "dot-prop": "^9.0.0", "esbuild": "^0.25.9", "escape-string-regexp": "^5.0.0", "etag": "^1.8.1", "exsolve": "^1.0.7", "globby": "^14.1.0", "gzip-size": "^7.0.0", "h3": "^1.15.4", "hookable": "^5.5.3", "httpxy": "^0.1.7", "ioredis": "^5.7.0", "jiti": "^2.5.1", "klona": "^2.0.6", "knitwork": "^1.2.0", "listhen": "^1.9.0", "magic-string": "^0.30.19", "magicast": "^0.3.5", "mime": "^4.0.7", "mlly": "^1.8.0", "node-fetch-native": "^1.6.7", "node-mock-http": "^1.0.3", "ofetch": "^1.4.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "pretty-bytes": "^7.0.1", "radix3": "^1.1.2", "rollup": "^4.50.1", "rollup-plugin-visualizer": "^6.0.3", "scule": "^1.3.0", "semver": "^7.7.2", "serve-placeholder": "^2.0.2", "serve-static": "^2.2.0", "source-map": "^0.7.6", "std-env": "^3.9.0", "ufo": "^1.6.1", "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.4.1", "unenv": "^2.0.0-rc.21", "unimport": "^5.2.0", "unplugin-utils": "^0.3.0", "unstorage": "^1.17.1", "untyped": "^2.0.0", "unwasm": "^0.3.11", "youch": "^4.1.0-beta.11", "youch-core": "^0.3.3" }, "peerDependencies": { "xml2js": "^0.6.2" }, "optionalPeers": ["xml2js"], "bin": { "nitro": "dist/cli/index.mjs", "nitropack": "dist/cli/index.mjs" } }, "sha512-DEq31s0SP4/Z5DIoVBRo9DbWFPWwIoYD4cQMEz7eE+iJMiAP+1k9A3B9kcc6Ihc0jDJmfUcHYyh6h2XlynCx6g=="],
"nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="],
- "node-abi": ["node-abi@3.75.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg=="],
+ "node-abi": ["node-abi@3.77.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ=="],
"node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="],
- "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="],
-
"node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
"node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="],
@@ -2213,11 +2202,11 @@
"node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="],
- "node-mock-http": ["node-mock-http@1.0.2", "", {}, "sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g=="],
+ "node-html-parser": ["node-html-parser@7.0.1", "", { "dependencies": { "css-select": "^5.1.0", "he": "1.2.0" } }, "sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA=="],
- "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="],
+ "node-mock-http": ["node-mock-http@1.0.3", "", {}, "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog=="],
- "node-source-walk": ["node-source-walk@7.0.1", "", { "dependencies": { "@babel/parser": "^7.26.7" } }, "sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg=="],
+ "node-releases": ["node-releases@2.0.21", "", {}, "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw=="],
"nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="],
@@ -2263,8 +2252,6 @@
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
- "one-time": ["one-time@1.0.0", "", { "dependencies": { "fn.name": "1.x.x" } }, "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g=="],
-
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
"oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
@@ -2285,27 +2272,23 @@
"p-cancelable": ["p-cancelable@2.1.1", "", {}, "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="],
- "p-event": ["p-event@6.0.1", "", { "dependencies": { "p-timeout": "^6.1.2" } }, "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w=="],
-
"p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="],
"p-locate": ["p-locate@6.0.0", "", { "dependencies": { "p-limit": "^4.0.0" } }, "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="],
"p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="],
- "p-queue": ["p-queue@8.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw=="],
+ "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="],
"p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="],
- "p-wait-for": ["p-wait-for@5.0.2", "", { "dependencies": { "p-timeout": "^6.0.0" } }, "sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA=="],
-
"package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
"package-manager-detector": ["package-manager-detector@1.3.0", "", {}, "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ=="],
"pacote": ["pacote@18.0.6", "", { "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^17.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "bin/index.js" } }, "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A=="],
- "pagefind": ["pagefind@1.3.0", "", { "optionalDependencies": { "@pagefind/darwin-arm64": "1.3.0", "@pagefind/darwin-x64": "1.3.0", "@pagefind/linux-arm64": "1.3.0", "@pagefind/linux-x64": "1.3.0", "@pagefind/windows-x64": "1.3.0" }, "bin": { "pagefind": "lib/runner/bin.cjs" } }, "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw=="],
+ "pagefind": ["pagefind@1.4.0", "", { "optionalDependencies": { "@pagefind/darwin-arm64": "1.4.0", "@pagefind/darwin-x64": "1.4.0", "@pagefind/freebsd-x64": "1.4.0", "@pagefind/linux-arm64": "1.4.0", "@pagefind/linux-x64": "1.4.0", "@pagefind/windows-x64": "1.4.0" }, "bin": { "pagefind": "lib/runner/bin.cjs" } }, "sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g=="],
"pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="],
@@ -2313,10 +2296,6 @@
"parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
- "parse-gitignore": ["parse-gitignore@2.0.0", "", {}, "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog=="],
-
- "parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="],
-
"parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="],
"parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
@@ -2329,7 +2308,7 @@
"path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
- "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+ "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="],
"path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="],
@@ -2337,8 +2316,6 @@
"pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
- "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
-
"perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
@@ -2359,17 +2336,13 @@
"postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
- "postcss-values-parser": ["postcss-values-parser@6.0.2", "", { "dependencies": { "color-name": "^1.1.4", "is-url-superb": "^4.0.0", "quote-unquote": "^1.0.0" }, "peerDependencies": { "postcss": "^8.2.9" } }, "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw=="],
-
"postgres": ["postgres@3.4.7", "", {}, "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw=="],
"prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="],
- "precinct": ["precinct@12.2.0", "", { "dependencies": { "@dependents/detective-less": "^5.0.1", "commander": "^12.1.0", "detective-amd": "^6.0.1", "detective-cjs": "^6.0.1", "detective-es6": "^5.0.1", "detective-postcss": "^7.0.1", "detective-sass": "^6.0.1", "detective-scss": "^5.0.1", "detective-stylus": "^5.0.1", "detective-typescript": "^14.0.0", "detective-vue2": "^2.2.0", "module-definition": "^6.0.1", "node-source-walk": "^7.0.1", "postcss": "^8.5.1", "typescript": "^5.7.3" }, "bin": { "precinct": "bin/cli.js" } }, "sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w=="],
-
"prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="],
- "pretty-bytes": ["pretty-bytes@6.1.1", "", {}, "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ=="],
+ "pretty-bytes": ["pretty-bytes@7.0.1", "", {}, "sha512-285/jRCYIbMGDciDdrw0KPNC4LKEEwz/bwErcYNxSJOi4CpGUuLpb9gQpg3XJP0XYj9ldSRluXxih4lX2YN8Xw=="],
"prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="],
@@ -2413,15 +2386,13 @@
"quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="],
- "quote-unquote": ["quote-unquote@1.0.0", "", {}, "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg=="],
-
"radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="],
"randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="],
"range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
- "raw-body": ["raw-body@3.0.0", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", "unpipe": "1.0.0" } }, "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g=="],
+ "raw-body": ["raw-body@3.0.1", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.7.0", "unpipe": "1.0.0" } }, "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA=="],
"rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
@@ -2431,10 +2402,6 @@
"read-package-json-fast": ["read-package-json-fast@3.0.2", "", { "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" } }, "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw=="],
- "read-package-up": ["read-package-up@11.0.0", "", { "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", "type-fest": "^4.6.0" } }, "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ=="],
-
- "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="],
-
"readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="],
"readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="],
@@ -2481,7 +2448,7 @@
"remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="],
- "remark-mdx": ["remark-mdx@3.1.0", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="],
+ "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="],
"remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="],
@@ -2493,16 +2460,12 @@
"remeda": ["remeda@2.26.0", "", { "dependencies": { "type-fest": "^4.41.0" } }, "sha512-lmNNwtaC6Co4m0WTTNoZ/JlpjEqAjPZO0+czC9YVRQUpkbS4x8Hmh+Mn9HPfJfiXqUQ5IXXgSXSOB2pBKAytdA=="],
- "remove-trailing-separator": ["remove-trailing-separator@1.1.0", "", {}, "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="],
-
"require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
"require-in-the-middle": ["require-in-the-middle@7.5.2", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", "resolve": "^1.22.8" } }, "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ=="],
- "require-package-name": ["require-package-name@2.0.1", "", {}, "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q=="],
-
"requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="],
"resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="],
@@ -2529,13 +2492,13 @@
"reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
- "rollup": ["rollup@4.49.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.49.0", "@rollup/rollup-android-arm64": "4.49.0", "@rollup/rollup-darwin-arm64": "4.49.0", "@rollup/rollup-darwin-x64": "4.49.0", "@rollup/rollup-freebsd-arm64": "4.49.0", "@rollup/rollup-freebsd-x64": "4.49.0", "@rollup/rollup-linux-arm-gnueabihf": "4.49.0", "@rollup/rollup-linux-arm-musleabihf": "4.49.0", "@rollup/rollup-linux-arm64-gnu": "4.49.0", "@rollup/rollup-linux-arm64-musl": "4.49.0", "@rollup/rollup-linux-loongarch64-gnu": "4.49.0", "@rollup/rollup-linux-ppc64-gnu": "4.49.0", "@rollup/rollup-linux-riscv64-gnu": "4.49.0", "@rollup/rollup-linux-riscv64-musl": "4.49.0", "@rollup/rollup-linux-s390x-gnu": "4.49.0", "@rollup/rollup-linux-x64-gnu": "4.49.0", "@rollup/rollup-linux-x64-musl": "4.49.0", "@rollup/rollup-win32-arm64-msvc": "4.49.0", "@rollup/rollup-win32-ia32-msvc": "4.49.0", "@rollup/rollup-win32-x64-msvc": "4.49.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA=="],
+ "rollup": ["rollup@4.50.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.50.2", "@rollup/rollup-android-arm64": "4.50.2", "@rollup/rollup-darwin-arm64": "4.50.2", "@rollup/rollup-darwin-x64": "4.50.2", "@rollup/rollup-freebsd-arm64": "4.50.2", "@rollup/rollup-freebsd-x64": "4.50.2", "@rollup/rollup-linux-arm-gnueabihf": "4.50.2", "@rollup/rollup-linux-arm-musleabihf": "4.50.2", "@rollup/rollup-linux-arm64-gnu": "4.50.2", "@rollup/rollup-linux-arm64-musl": "4.50.2", "@rollup/rollup-linux-loong64-gnu": "4.50.2", "@rollup/rollup-linux-ppc64-gnu": "4.50.2", "@rollup/rollup-linux-riscv64-gnu": "4.50.2", "@rollup/rollup-linux-riscv64-musl": "4.50.2", "@rollup/rollup-linux-s390x-gnu": "4.50.2", "@rollup/rollup-linux-x64-gnu": "4.50.2", "@rollup/rollup-linux-x64-musl": "4.50.2", "@rollup/rollup-openharmony-arm64": "4.50.2", "@rollup/rollup-win32-arm64-msvc": "4.50.2", "@rollup/rollup-win32-ia32-msvc": "4.50.2", "@rollup/rollup-win32-x64-msvc": "4.50.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w=="],
"rollup-plugin-visualizer": ["rollup-plugin-visualizer@6.0.3", "", { "dependencies": { "open": "^8.0.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" }, "peerDependencies": { "rolldown": "1.x || ^1.0.0-beta", "rollup": "2.x || 3.x || 4.x" }, "optionalPeers": ["rolldown", "rollup"], "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" } }, "sha512-ZU41GwrkDcCpVoffviuM9Clwjy5fcUxlz0oMoTXTYsK+tcIFzbdacnrr2n8TXcHxbGKKXtOdjxM2HUS4HjkwIw=="],
"router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
- "run-applescript": ["run-applescript@7.0.0", "", {}, "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A=="],
+ "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="],
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
@@ -2543,8 +2506,6 @@
"safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="],
- "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="],
-
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
"sax": ["sax@1.2.1", "", {}, "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA=="],
@@ -2565,7 +2526,7 @@
"seroval": ["seroval@1.3.2", "", {}, "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="],
- "seroval-plugins": ["seroval-plugins@1.3.2", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ=="],
+ "seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="],
"serve-placeholder": ["serve-placeholder@2.0.2", "", { "dependencies": { "defu": "^6.1.4" } }, "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ=="],
@@ -2583,7 +2544,7 @@
"shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="],
- "shiki": ["shiki@3.4.2", "", { "dependencies": { "@shikijs/core": "3.4.2", "@shikijs/engine-javascript": "3.4.2", "@shikijs/engine-oniguruma": "3.4.2", "@shikijs/langs": "3.4.2", "@shikijs/themes": "3.4.2", "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ=="],
+ "shiki": ["shiki@3.9.2", "", { "dependencies": { "@shikijs/core": "3.9.2", "@shikijs/engine-javascript": "3.9.2", "@shikijs/engine-oniguruma": "3.9.2", "@shikijs/langs": "3.9.2", "@shikijs/themes": "3.9.2", "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-t6NKl5e/zGTvw/IyftLcumolgOczhuroqwXngDeMqJ3h3EQiTY/7wmfgPlsmloD8oYfqkEDqxiaH37Pjm1zUhQ=="],
"shimmer": ["shimmer@1.2.1", "", {}, "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="],
@@ -2603,7 +2564,7 @@
"simple-get": ["simple-get@4.0.1", "", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="],
- "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
+ "simple-swizzle": ["simple-swizzle@0.2.4", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="],
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
@@ -2623,6 +2584,12 @@
"solid-js": ["solid-js@1.9.9", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA=="],
+ "solid-list": ["solid-list@0.3.0", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-t4hx/F/l8Vmq+ib9HtZYl7Z9F1eKxq3eKJTXlvcm7P7yI4Z8O7QSOOEVHb/K6DD7M0RxzVRobK/BS5aSfLRwKg=="],
+
+ "solid-presence": ["solid-presence@0.1.8", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA=="],
+
+ "solid-prevent-scroll": ["solid-prevent-scroll@0.1.10", "", { "dependencies": { "@corvu/utils": "~0.4.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw=="],
+
"solid-refresh": ["solid-refresh@0.6.3", "", { "dependencies": { "@babel/generator": "^7.23.6", "@babel/helper-module-imports": "^7.22.15", "@babel/types": "^7.23.6" }, "peerDependencies": { "solid-js": "^1.3" } }, "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA=="],
"solid-use": ["solid-use@0.9.1", "", { "peerDependencies": { "solid-js": "^1.7" } }, "sha512-UwvXDVPlrrbj/9ewG9ys5uL2IO4jSiwys2KPzK4zsnAcmEl7iDafZWW1Mo4BSEWOmQCGK6IvpmGHo1aou8iOFw=="],
@@ -2667,13 +2634,11 @@
"sst-win32-x86": ["sst-win32-x86@3.17.13", "", { "os": "win32", "cpu": "none" }, "sha512-AuMDGux+H1kPckKJ7Szgi04EpBoOKh/v5zFNAPjvWSkcWcGZ+hsBUx3h/FO/AkGK3RnlLMRj4CQQLoa10RSSIg=="],
- "stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="],
-
"stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="],
"standard-as-callback": ["standard-as-callback@2.1.0", "", {}, "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="],
- "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="],
+ "statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
"std-env": ["std-env@3.9.0", "", {}, "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw=="],
@@ -2691,7 +2656,7 @@
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
- "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
+ "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
"strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
@@ -2711,13 +2676,17 @@
"style-to-object": ["style-to-object@1.0.9", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw=="],
- "supports-color": ["supports-color@10.2.0", "", {}, "sha512-5eG9FQjEjDbAlI5+kdpdyPIBMRH4GfTVDGREVupaZHmVoppknhM29b/S9BkQz7cathp85BVgRi/As3Siln7e0Q=="],
+ "supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
"system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="],
- "tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
+ "tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
+
+ "tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="],
+
+ "tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="],
"tar-fs": ["tar-fs@3.1.0", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w=="],
@@ -2725,32 +2694,26 @@
"terracotta": ["terracotta@1.0.6", "", { "dependencies": { "solid-use": "^0.9.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-yVrmT/Lg6a3tEbeYEJH8ksb1PYkR5FA9k5gr1TchaSNIiA2ZWs5a+koEbePXwlBP0poaV7xViZ/v50bQFcMgqw=="],
- "terser": ["terser@5.43.1", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg=="],
+ "terser": ["terser@5.44.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w=="],
"text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="],
- "text-hex": ["text-hex@1.0.0", "", {}, "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="],
-
"tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="],
"tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="],
"tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
- "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="],
+ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
"tmp": ["tmp@0.2.5", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="],
- "tmp-promise": ["tmp-promise@3.0.3", "", { "dependencies": { "tmp": "^0.2.0" } }, "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="],
-
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
"toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="],
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
- "toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="],
-
"toolbeam-docs-theme": ["toolbeam-docs-theme@0.4.6", "", { "peerDependencies": { "@astrojs/starlight": "^0.34.3", "astro": "^5.7.13" } }, "sha512-s4yKn3PYnmPCl6MHPkQ2MedSgVh7FMAP64DiXnAfCls/H/RR6iTe0/SFgPTprz+HXXaKvv2iPo3XuvmDRY6cxQ=="],
"tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
@@ -2763,12 +2726,8 @@
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
- "triple-beam": ["triple-beam@1.4.1", "", {}, "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg=="],
-
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
- "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="],
-
"tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="],
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
@@ -2799,7 +2758,7 @@
"unctx": ["unctx@2.4.1", "", { "dependencies": { "acorn": "^8.14.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.17", "unplugin": "^2.1.0" } }, "sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg=="],
- "undici": ["undici@7.15.0", "", {}, "sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ=="],
+ "undici": ["undici@7.14.0", "", {}, "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ=="],
"undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
@@ -2845,15 +2804,13 @@
"universal-user-agent": ["universal-user-agent@7.0.3", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="],
- "unixify": ["unixify@1.0.0", "", { "dependencies": { "normalize-path": "^2.1.1" } }, "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg=="],
-
"unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
- "unplugin": ["unplugin@2.3.9", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-2dcbZq6aprwXTkzptq3k5qm5B8cvpjG9ynPd5fyM2wDJuuF7PeUK64Sxf0d+X1ZyDOeGydbNzMqBSIVlH8GIfA=="],
+ "unplugin": ["unplugin@2.3.10", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw=="],
- "unplugin-utils": ["unplugin-utils@0.2.5", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg=="],
+ "unplugin-utils": ["unplugin-utils@0.3.0", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg=="],
- "unstorage": ["unstorage@1.17.0", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww=="],
+ "unstorage": ["unstorage@1.17.1", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ=="],
"untun": ["untun@0.1.3", "", { "dependencies": { "citty": "^0.1.5", "consola": "^3.2.3", "pathe": "^1.1.1" }, "bin": { "untun": "bin/untun.mjs" } }, "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ=="],
@@ -2871,8 +2828,6 @@
"url": ["url@0.10.3", "", { "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" } }, "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ=="],
- "urlpattern-polyfill": ["urlpattern-polyfill@8.0.2", "", {}, "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ=="],
-
"util": ["util@0.12.5", "", { "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", "which-typed-array": "^1.1.2" } }, "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA=="],
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
@@ -2895,9 +2850,13 @@
"vinxi": ["vinxi@0.5.8", "", { "dependencies": { "@babel/core": "^7.22.11", "@babel/plugin-syntax-jsx": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5", "@types/micromatch": "^4.0.2", "@vinxi/listhen": "^1.5.6", "boxen": "^8.0.1", "chokidar": "^4.0.3", "citty": "^0.1.6", "consola": "^3.4.2", "crossws": "^0.3.4", "dax-sh": "^0.43.0", "defu": "^6.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.3", "get-port-please": "^3.1.2", "h3": "1.15.3", "hookable": "^5.5.3", "http-proxy": "^1.18.1", "micromatch": "^4.0.8", "nitropack": "^2.11.10", "node-fetch-native": "^1.6.6", "path-to-regexp": "^6.2.1", "pathe": "^1.1.1", "radix3": "^1.1.2", "resolve": "^1.22.10", "serve-placeholder": "^2.0.1", "serve-static": "^1.15.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unenv": "^1.10.0", "unstorage": "^1.16.0", "vite": "^6.3.3", "zod": "^3.24.3" }, "bin": { "vinxi": "bin/cli.mjs" } }, "sha512-1pGA+cU1G9feBQ1sd5FMftPuLUT8NSX880AvELhNWqoqWhe2jeSOQxjDPxlA3f1AC+Bbknl4UPKHyVXmfLZQjw=="],
- "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="],
+ "virtua": ["virtua@0.42.3", "", { "peerDependencies": { "react": ">=16.14.0", "react-dom": ">=16.14.0", "solid-js": ">=1.0", "svelte": ">=5.0", "vue": ">=3.2" }, "optionalPeers": ["react", "react-dom", "solid-js", "svelte", "vue"] }, "sha512-5FoAKcEvh05qsUF97Yz42SWJ7bwnPExjUYHGuoxz1EUtfWtaOgXaRwnylJbDpA0QcH1rKvJ2qsGRi9MK1fpQbg=="],
- "vite-plugin-solid": ["vite-plugin-solid@2.11.6", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Sl5CTqJTGyEeOsmdH6BOgalIZlwH3t4/y0RQuFLMGnvWMBvxb4+lq7x3BSiAw6etf0QexfNJW7HSOO/Qf7pigg=="],
+ "vite": ["vite@6.3.6", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA=="],
+
+ "vite-plugin-icons-spritesheet": ["vite-plugin-icons-spritesheet@3.0.1", "", { "dependencies": { "chalk": "^5.4.1", "glob": "^11.0.1", "node-html-parser": "^7.0.1", "tinyexec": "^0.3.2" }, "peerDependencies": { "vite": ">=5.2.0" } }, "sha512-Cr0+Z6wRMwSwKisWW9PHeTjqmQFv0jwRQQMc3YgAhAgZEe03j21el0P/CA31KN/L5eiL1LhR14VTXl96LetonA=="],
+
+ "vite-plugin-solid": ["vite-plugin-solid@2.11.8", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg=="],
"vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="],
@@ -2909,8 +2868,6 @@
"web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="],
- "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
-
"web-tree-sitter": ["web-tree-sitter@0.22.6", "", {}, "sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q=="],
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
@@ -2927,17 +2884,13 @@
"widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="],
- "winston": ["winston@3.17.0", "", { "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", "logform": "^2.7.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.9.0" } }, "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw=="],
-
- "winston-transport": ["winston-transport@4.9.0", "", { "dependencies": { "logform": "^2.7.0", "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" } }, "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A=="],
-
"wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
- "workerd": ["workerd@1.20250823.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250823.0", "@cloudflare/workerd-darwin-arm64": "1.20250823.0", "@cloudflare/workerd-linux-64": "1.20250823.0", "@cloudflare/workerd-linux-arm64": "1.20250823.0", "@cloudflare/workerd-windows-64": "1.20250823.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-95lToK9zeaC7bX5ZmlP/wz6zqoUPBk3hhec1JjEMGZrxsXY9cPRkjWNCcjDctQ17U97vjMcY/ymchgx7w8Cfmg=="],
+ "workerd": ["workerd@1.20250906.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250906.0", "@cloudflare/workerd-darwin-arm64": "1.20250906.0", "@cloudflare/workerd-linux-64": "1.20250906.0", "@cloudflare/workerd-linux-arm64": "1.20250906.0", "@cloudflare/workerd-windows-64": "1.20250906.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw=="],
- "wrangler": ["wrangler@4.33.1", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.0", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20250823.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.19", "workerd": "1.20250823.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250823.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-8x/3Tbt+/raBMm0+vRyAHSGu2kF1QjeiSrx47apgPk/AzSBcXI9YuUUdGrKnozMYZlEbOxdBQOMyuRRDTyNmOg=="],
+ "wrangler": ["wrangler@4.37.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.3", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20250906.2", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.21", "workerd": "1.20250906.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250906.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-W8IbQohQbUHFn4Hz2kh8gi0SdyFV/jyi9Uus+WrTz0F0Dc9W5qKPCjLbxibeE53+YPHyoI25l65O7nSlwX+Z6Q=="],
- "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="],
+ "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="],
"wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
@@ -2959,21 +2912,17 @@
"yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
- "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="],
-
"yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="],
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
- "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
-
"yocto-queue": ["yocto-queue@1.2.1", "", {}, "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg=="],
"yocto-spinner": ["yocto-spinner@0.2.3", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ=="],
"yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="],
- "youch": ["youch@4.1.0-beta.8", "", { "dependencies": { "@poppinss/colors": "^4.1.4", "@poppinss/dumper": "^0.6.3", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.1" } }, "sha512-rY2A2lSF7zC+l7HH9Mq+83D1dLlsPnEvy8jTouzaptDZM6geqZ3aJe/b7ULCwRURPtWV3vbDjA2DDMdoBol0HQ=="],
+ "youch": ["youch@4.1.0-beta.11", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-sQi6PERyO/mT8w564ojOVeAlYTtVQmC2GaktQAf+IdI75/GKIggosBuvyVXvEV+FATAT6RbLdIjFoiIId4ozoQ=="],
"youch-core": ["youch-core@0.3.3", "", { "dependencies": { "@poppinss/exception": "^1.2.2", "error-stack-parser-es": "^1.0.5" } }, "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA=="],
@@ -2981,8 +2930,6 @@
"zod": ["zod@4.1.8", "", {}, "sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ=="],
- "zod-openapi": ["zod-openapi@4.1.0", "", { "peerDependencies": { "zod": "^3.21.4" } }, "sha512-bRCwRYhEO9CmFLyKgJX8h6j1dRtRiwOe+TLzMVPyV0pRW5vRIgb1rLgIGcuRZ5z3MmSVrZqbv3yva4IJrtZK4g=="],
-
"zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
"zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="],
@@ -2997,6 +2944,8 @@
"@ai-sdk/gateway/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.1", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g=="],
+ "@astrojs/cloudflare/@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250913.0", "", {}, "sha512-JjrYEvRn7cyALxwoFTw3XChaQneHSJOXqz2t5iKEpNzAnC2iPQU75rtTK/gw03Jjy4SHY5aEBh/uqQePtonZlA=="],
+
"@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="],
"@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.6", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug=="],
@@ -3007,8 +2956,6 @@
"@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
- "@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
-
"@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
"@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
@@ -3017,13 +2964,9 @@
"@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
- "@babel/template/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
-
- "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
-
"@cloudflare/kv-asset-handler/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
- "@cloudflare/unenv-preset/unenv": ["unenv@2.0.0-rc.19", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA=="],
+ "@cloudflare/unenv-preset/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
"@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
@@ -3037,36 +2980,8 @@
"@mapbox/node-pre-gyp/nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="],
- "@mapbox/node-pre-gyp/tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="],
-
"@mdx-js/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
- "@netlify/dev-utils/find-up": ["find-up@7.0.0", "", { "dependencies": { "locate-path": "^7.2.0", "path-exists": "^5.0.0", "unicorn-magic": "^0.1.0" } }, "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g=="],
-
- "@netlify/dev-utils/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
-
- "@netlify/dev-utils/write-file-atomic": ["write-file-atomic@6.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ=="],
-
- "@netlify/functions/is-stream": ["is-stream@4.0.1", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="],
-
- "@netlify/zip-it-and-ship-it/@babel/types": ["@babel/types@7.28.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg=="],
-
- "@netlify/zip-it-and-ship-it/@netlify/serverless-functions-api": ["@netlify/serverless-functions-api@2.3.0", "", {}, "sha512-eSC+glm4bX+9t+ajNzAs4Bca0Q/xGLgcYYh6M2Z9Dcya/MjVod1UrjPB88b0ANSBAy/aGFpDhVbwLwBokfnppQ=="],
-
- "@netlify/zip-it-and-ship-it/esbuild": ["esbuild@0.25.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.5", "@esbuild/android-arm": "0.25.5", "@esbuild/android-arm64": "0.25.5", "@esbuild/android-x64": "0.25.5", "@esbuild/darwin-arm64": "0.25.5", "@esbuild/darwin-x64": "0.25.5", "@esbuild/freebsd-arm64": "0.25.5", "@esbuild/freebsd-x64": "0.25.5", "@esbuild/linux-arm": "0.25.5", "@esbuild/linux-arm64": "0.25.5", "@esbuild/linux-ia32": "0.25.5", "@esbuild/linux-loong64": "0.25.5", "@esbuild/linux-mips64el": "0.25.5", "@esbuild/linux-ppc64": "0.25.5", "@esbuild/linux-riscv64": "0.25.5", "@esbuild/linux-s390x": "0.25.5", "@esbuild/linux-x64": "0.25.5", "@esbuild/netbsd-arm64": "0.25.5", "@esbuild/netbsd-x64": "0.25.5", "@esbuild/openbsd-arm64": "0.25.5", "@esbuild/openbsd-x64": "0.25.5", "@esbuild/sunos-x64": "0.25.5", "@esbuild/win32-arm64": "0.25.5", "@esbuild/win32-ia32": "0.25.5", "@esbuild/win32-x64": "0.25.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ=="],
-
- "@netlify/zip-it-and-ship-it/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
-
- "@netlify/zip-it-and-ship-it/find-up": ["find-up@7.0.0", "", { "dependencies": { "locate-path": "^7.2.0", "path-exists": "^5.0.0", "unicorn-magic": "^0.1.0" } }, "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g=="],
-
- "@netlify/zip-it-and-ship-it/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
-
- "@netlify/zip-it-and-ship-it/p-map": ["p-map@7.0.3", "", {}, "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA=="],
-
- "@netlify/zip-it-and-ship-it/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="],
-
- "@netlify/zip-it-and-ship-it/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
-
"@npmcli/agent/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
"@npmcli/arborist/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
@@ -3077,15 +2992,31 @@
"@npmcli/git/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+ "@npmcli/map-workspaces/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
"@npmcli/map-workspaces/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+ "@npmcli/package-json/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
"@openauthjs/openauth/@standard-schema/spec": ["@standard-schema/spec@1.0.0-beta.3", "", {}, "sha512-0ifF3BjA1E8SY9C+nUew8RefNOIq0cDlYALPty4rhUm8Rrl6tCM8hBT4bhGhx7I7iXD0uAgt50lgo8dD73ACMw=="],
"@openauthjs/openauth/aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="],
"@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="],
- "@opencode/cloud-resource/@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250830.0", "", {}, "sha512-uAGZFqEBFnCiwIokxMnrrtjIkT8qyGT1LACSScEUyW7nKmtD0Viykp9QZWrIlssyEp/MDB6XsdALF8y6upxpcg=="],
+ "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="],
+
+ "@opencode/cloud-resource/@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250913.0", "", {}, "sha512-JjrYEvRn7cyALxwoFTw3XChaQneHSJOXqz2t5iKEpNzAnC2iPQU75rtTK/gw03Jjy4SHY5aEBh/uqQePtonZlA=="],
+
+ "@opencode/web/@shikijs/transformers": ["@shikijs/transformers@3.4.2", "", { "dependencies": { "@shikijs/core": "3.4.2", "@shikijs/types": "3.4.2" } }, "sha512-I5baLVi/ynLEOZoWSAMlACHNnG+yw5HDmse0oe+GW6U1u+ULdEB3UHiVWaHoJSSONV7tlcVxuaMy74sREDkSvg=="],
+
+ "@opencode/web/@types/luxon": ["@types/luxon@3.6.2", "", {}, "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw=="],
+
+ "@opencode/web/luxon": ["luxon@3.6.1", "", {}, "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ=="],
+
+ "@opencode/web/marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="],
+
+ "@opencode/web/shiki": ["shiki@3.4.2", "", { "dependencies": { "@shikijs/core": "3.4.2", "@shikijs/engine-javascript": "3.4.2", "@shikijs/engine-oniguruma": "3.4.2", "@shikijs/langs": "3.4.2", "@shikijs/themes": "3.4.2", "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ=="],
"@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="],
@@ -3097,7 +3028,7 @@
"@parcel/watcher-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="],
- "@poppinss/dumper/@sindresorhus/is": ["@sindresorhus/is@7.0.2", "", {}, "sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw=="],
+ "@poppinss/dumper/@sindresorhus/is": ["@sindresorhus/is@7.1.0", "", {}, "sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA=="],
"@pulumi/pulumi/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
@@ -3115,12 +3046,28 @@
"@solidjs/start/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="],
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@tanstack/directive-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
+
+ "@tanstack/server-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
+
"@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
- "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
-
"@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
+ "@vercel/nft/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
"@vinxi/listhen/h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="],
"@vinxi/listhen/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="],
@@ -3129,20 +3076,14 @@
"@vinxi/server-components/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="],
- "@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
-
- "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
-
- "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
-
- "@whatwg-node/fetch/urlpattern-polyfill": ["urlpattern-polyfill@10.1.0", "", {}, "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw=="],
-
"ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.1", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g=="],
"ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
"anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+ "archiver-utils/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
"astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="],
"astro/diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="],
@@ -3157,20 +3098,24 @@
"body-parser/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
+ "cacache/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
"cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+ "cacache/tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
+
"cacheable-request/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
"clipboardy/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
"clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],
- "colorspace/color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="],
-
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
"dax-sh/undici-types": ["undici-types@5.28.4", "", {}, "sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww=="],
+ "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
"drizzle-kit/esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="],
"encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
@@ -3183,26 +3128,22 @@
"express/serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="],
- "extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
-
"foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
"giget/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
- "glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+ "giget/tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
"gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
+ "h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
+
"hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="],
"hosted-git-info/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
- "http-errors/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
-
"ignore-walk/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
- "lambda-local/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="],
-
"lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
"listhen/@parcel/watcher-wasm": ["@parcel/watcher-wasm@2.5.1", "", { "dependencies": { "is-glob": "^4.0.3", "micromatch": "^4.0.5", "napi-wasm": "^1.1.0" } }, "sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw=="],
@@ -3213,8 +3154,6 @@
"make-fetch-happen/negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="],
- "merge-options/is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="],
-
"micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
"miniflare/acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="],
@@ -3223,42 +3162,46 @@
"miniflare/youch": ["youch@4.1.0-beta.10", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ=="],
+ "minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
"minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
"minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
"minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
- "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
-
"mlly/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
"named-placeholders/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
- "netlify/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="],
-
"nitropack/c12": ["c12@3.2.0", "", { "dependencies": { "chokidar": "^4.0.3", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^17.2.1", "exsolve": "^1.0.7", "giget": "^2.0.0", "jiti": "^2.5.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "^0.3.5" }, "optionalPeers": ["magicast"] }, "sha512-ixkEtbYafL56E6HiFuonMm1ZjoKtIo7TH68/uiEq4DAwv9NcUX2nJ95F8TrbMeNjqIkZpruo3ojXQJ+MGG5gcQ=="],
"nitropack/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
- "nitropack/cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="],
-
"nitropack/h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="],
"nitropack/ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
"nitropack/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+ "nitropack/perfect-debounce": ["perfect-debounce@2.0.0", "", {}, "sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow=="],
+
"nitropack/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
"nitropack/serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="],
"nitropack/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
- "nitropack/unenv": ["unenv@2.0.0-rc.19", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA=="],
+ "nitropack/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
"node-gyp/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
+ "node-gyp/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
+ "node-gyp/tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
+
+ "npm-registry-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
"nypm/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
"opencode/@openauthjs/openauth": ["@openauthjs/openauth@0.4.3", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-RlnjqvHzqcbFVymEwhlUEuac4utA5h4nhSK/i2szZuQmxTIqbGUxZ+nM+avM+VV4Ing+/ZaNLKILoXS3yrkOOw=="],
@@ -3277,26 +3220,20 @@
"p-queue/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
+ "pacote/tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
+
"parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
- "parse-json/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
-
- "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+ "path-scurry/lru-cache": ["lru-cache@11.2.1", "", {}, "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ=="],
"pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
"prebuild-install/tar-fs": ["tar-fs@2.1.3", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg=="],
- "precinct/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="],
-
"prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
- "raw-body/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
-
"rc/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="],
- "read-pkg/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="],
-
"readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="],
"readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="],
@@ -3309,7 +3246,7 @@
"rollup-plugin-visualizer/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
- "router/path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
+ "router/path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="],
"send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
@@ -3319,8 +3256,6 @@
"send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
- "send/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
-
"sitemap/@types/node": ["@types/node@17.0.45", "", {}, "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="],
"sitemap/sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="],
@@ -3335,11 +3270,7 @@
"strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="],
- "tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
-
- "tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
-
- "tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+ "tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
"terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
@@ -3355,7 +3286,7 @@
"unimport/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
- "unixify/normalize-path": ["normalize-path@2.1.1", "", { "dependencies": { "remove-trailing-separator": "^1.0.1" } }, "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w=="],
+ "unimport/unplugin-utils": ["unplugin-utils@0.2.5", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg=="],
"unplugin-utils/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
@@ -3369,13 +3300,9 @@
"uri-js/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
- "winston/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
-
- "winston-transport/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
-
"wrangler/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
- "wrangler/unenv": ["unenv@2.0.0-rc.19", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA=="],
+ "wrangler/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
"wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
@@ -3387,8 +3314,6 @@
"yargs/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="],
- "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
-
"@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.2", "", {}, "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g=="],
"@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="],
@@ -3455,87 +3380,31 @@
"@mapbox/node-pre-gyp/nopt/abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="],
- "@mapbox/node-pre-gyp/tar/chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
+ "@npmcli/map-workspaces/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
- "@mapbox/node-pre-gyp/tar/minizlib": ["minizlib@3.0.2", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA=="],
+ "@npmcli/map-workspaces/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
- "@mapbox/node-pre-gyp/tar/mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="],
+ "@npmcli/package-json/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
- "@mapbox/node-pre-gyp/tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
+ "@npmcli/package-json/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
- "@netlify/dev-utils/find-up/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="],
+ "@npmcli/package-json/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
- "@netlify/dev-utils/write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
+ "@opencode/web/@shikijs/transformers/@shikijs/core": ["@shikijs/core@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA=="],
+ "@opencode/web/@shikijs/transformers/@shikijs/types": ["@shikijs/types@3.4.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.5", "", { "os": "android", "cpu": "arm" }, "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA=="],
+ "@opencode/web/shiki/@shikijs/core": ["@shikijs/core@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.5", "", { "os": "android", "cpu": "arm64" }, "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg=="],
+ "@opencode/web/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.5", "", { "os": "android", "cpu": "x64" }, "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw=="],
+ "@opencode/web/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ=="],
+ "@opencode/web/shiki/@shikijs/langs": ["@shikijs/langs@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2" } }, "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ=="],
+ "@opencode/web/shiki/@shikijs/themes": ["@shikijs/themes@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2" } }, "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg=="],
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.5", "", { "os": "linux", "cpu": "arm" }, "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.5", "", { "os": "linux", "cpu": "x64" }, "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.5", "", { "os": "none", "cpu": "arm64" }, "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.5", "", { "os": "none", "cpu": "x64" }, "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.5", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ=="],
-
- "@netlify/zip-it-and-ship-it/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.5", "", { "os": "win32", "cpu": "x64" }, "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g=="],
-
- "@netlify/zip-it-and-ship-it/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="],
-
- "@netlify/zip-it-and-ship-it/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="],
-
- "@netlify/zip-it-and-ship-it/execa/is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="],
-
- "@netlify/zip-it-and-ship-it/execa/npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="],
-
- "@netlify/zip-it-and-ship-it/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="],
-
- "@netlify/zip-it-and-ship-it/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
-
- "@netlify/zip-it-and-ship-it/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
-
- "@netlify/zip-it-and-ship-it/find-up/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="],
-
- "@netlify/zip-it-and-ship-it/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
-
- "@netlify/zip-it-and-ship-it/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+ "@opencode/web/shiki/@shikijs/types": ["@shikijs/types@3.4.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg=="],
"@pulumi/pulumi/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
@@ -3551,12 +3420,44 @@
"@solidjs/start/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="],
+ "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
+
+ "@vercel/nft/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "@vercel/nft/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "@vercel/nft/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
+ "@vinxi/listhen/h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
+
"ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
"ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+ "archiver-utils/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "archiver-utils/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "archiver-utils/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
"bl/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
+ "cacache/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "cacache/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "cacache/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
+ "cacache/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+ "cacache/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+ "cacache/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+ "cacache/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+ "cacache/tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
"clipboardy/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="],
"clipboardy/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="],
@@ -3571,8 +3472,6 @@
"clipboardy/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
- "colorspace/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="],
-
"cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
"drizzle-kit/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="],
@@ -3621,6 +3520,16 @@
"drizzle-kit/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.19.12", "", { "os": "win32", "cpu": "x64" }, "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA=="],
+ "giget/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+ "giget/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+ "giget/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+ "giget/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+ "giget/tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
"gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
"lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
@@ -3629,18 +3538,42 @@
"listhen/@parcel/watcher-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="],
+ "listhen/h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
+
"local-pkg/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
"local-pkg/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
- "nitropack/c12/dotenv": ["dotenv@17.2.1", "", {}, "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ=="],
+ "minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "nitropack/c12/dotenv": ["dotenv@17.2.2", "", {}, "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q=="],
"nitropack/c12/giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="],
+ "nitropack/c12/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="],
+
"nitropack/h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
"nitropack/serve-static/send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="],
+ "node-gyp/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "node-gyp/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "node-gyp/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
+ "node-gyp/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+ "node-gyp/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+ "node-gyp/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+ "node-gyp/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+ "node-gyp/tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
+ "npm-registry-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
"opencode/@openauthjs/openauth/@standard-schema/spec": ["@standard-schema/spec@1.0.0-beta.3", "", {}, "sha512-0ifF3BjA1E8SY9C+nUew8RefNOIq0cDlYALPty4rhUm8Rrl6tCM8hBT4bhGhx7I7iXD0uAgt50lgo8dD73ACMw=="],
"opencode/@openauthjs/openauth/aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="],
@@ -3651,6 +3584,18 @@
"opencontrol/@modelcontextprotocol/sdk/zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
+ "pacote/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+ "pacote/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+ "pacote/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+ "pacote/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+ "pacote/tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
+ "prebuild-install/tar-fs/chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="],
+
"prebuild-install/tar-fs/tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="],
"readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
@@ -3669,10 +3614,10 @@
"string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
- "tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
-
"unimport/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
+ "unstorage/h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
+
"unwasm/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
"wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q=="],
@@ -3745,30 +3690,42 @@
"@grpc/proto-loader/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
- "@netlify/zip-it-and-ship-it/execa/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
+ "@npmcli/map-workspaces/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
- "@netlify/zip-it-and-ship-it/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
-
- "@netlify/zip-it-and-ship-it/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
-
- "@netlify/zip-it-and-ship-it/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
-
- "@netlify/zip-it-and-ship-it/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
-
- "@netlify/zip-it-and-ship-it/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+ "@npmcli/package-json/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
"@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="],
+ "@vercel/nft/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
"ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+ "archiver-utils/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
+ "cacache/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "cacache/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
"clipboardy/execa/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
"clipboardy/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
- "colorspace/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
+ "giget/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "giget/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
"nitropack/c12/giget/nypm": ["nypm@0.6.1", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w=="],
+ "node-gyp/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
+ "node-gyp/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "node-gyp/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "pacote/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "pacote/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
"prebuild-install/tar-fs/tar-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
"rollup-plugin-visualizer/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
@@ -3785,12 +3742,6 @@
"@grpc/proto-loader/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
- "@netlify/zip-it-and-ship-it/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
-
- "@netlify/zip-it-and-ship-it/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
-
- "@netlify/zip-it-and-ship-it/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
-
"@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="],
"@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="],
diff --git a/packages/app/AGENTS.md b/packages/app/AGENTS.md
new file mode 100644
index 000000000..3137bddc2
--- /dev/null
+++ b/packages/app/AGENTS.md
@@ -0,0 +1,28 @@
+# Agent Guidelines for @opencode/app
+
+## Build/Test Commands
+
+- **Development**: `bun run dev` (starts Vite dev server on port 3000)
+- **Build**: `bun run build` (production build)
+- **Preview**: `bun run serve` (preview production build)
+- **Validation**: Use `bun run typecheck` only - do not build or run project for validation
+- **Testing**: Do not create or run automated tests
+
+## Code Style
+
+- **Framework**: SolidJS with TypeScript
+- **Imports**: Use `@/` alias for src/ directory (e.g., `import Button from "@/ui/button"`)
+- **Formatting**: Prettier configured with semicolons disabled, 120 character line width
+- **Components**: Use function declarations, splitProps for component props
+- **Types**: Define interfaces for component props, avoid `any` type
+- **CSS**: TailwindCSS with custom CSS variables theme system
+- **Naming**: PascalCase for components, camelCase for variables/functions, snake_case for file names
+- **File Structure**: UI primitives in `/ui/`, higher-level components in `/components/`, pages in `/pages/`, providers in `/providers/`
+
+## Key Dependencies
+
+- SolidJS, @solidjs/router, @kobalte/core (UI primitives)
+- TailwindCSS 4.x with @tailwindcss/vite
+- Custom theme system with CSS variables
+
+No special rules files found.
diff --git a/packages/app/README.md b/packages/app/README.md
new file mode 100644
index 000000000..6a1764536
--- /dev/null
+++ b/packages/app/README.md
@@ -0,0 +1,34 @@
+## Usage
+
+Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.
+
+This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.
+
+```bash
+$ npm install # or pnpm install or yarn install
+```
+
+### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm run dev` or `npm start`
+
+Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+
+The page will reload if you make edits.
+
+### `npm run build`
+
+Builds the app for production to the `dist` folder.
+It correctly bundles Solid in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.
+Your app is ready to be deployed!
+
+## Deployment
+
+You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
diff --git a/packages/app/index.html b/packages/app/index.html
new file mode 100644
index 000000000..24cc56b09
--- /dev/null
+++ b/packages/app/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+ opencode
+
+
+
+
+
+
+
+
diff --git a/packages/app/package.json b/packages/app/package.json
new file mode 100644
index 000000000..08560239c
--- /dev/null
+++ b/packages/app/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@opencode/app",
+ "version": "0.3.126",
+ "description": "",
+ "type": "module",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "vite build",
+ "serve": "vite preview",
+ "typecheck": "tsc --noEmit"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "@tailwindcss/vite": "4.1.11",
+ "@types/luxon": "3.7.1",
+ "@types/node": "catalog:",
+ "typescript": "catalog:",
+ "vite": "^6.0.0",
+ "vite-plugin-icons-spritesheet": "3.0.1",
+ "vite-plugin-solid": "^2.11.6"
+ },
+ "dependencies": {
+ "@kobalte/core": "0.13.11",
+ "@opencode-ai/sdk": "workspace:*",
+ "@shikijs/transformers": "3.9.2",
+ "@solid-primitives/resize-observer": "2.1.3",
+ "@solid-primitives/scroll": "2.1.3",
+ "@solidjs/router": "0.15.3",
+ "@thisbeyond/solid-dnd": "0.7.5",
+ "diff": "8.0.2",
+ "luxon": "3.7.1",
+ "marked": "16.2.0",
+ "marked-shiki": "1.2.1",
+ "remeda": "catalog:",
+ "shiki": "3.9.2",
+ "solid-js": "catalog:",
+ "solid-list": "0.3.0",
+ "tailwindcss": "4.1.11",
+ "virtua": "0.42.3"
+ },
+ "prettier": {
+ "semi": false,
+ "printWidth": 120
+ }
+}
diff --git a/packages/app/scripts/vite-theme-plugin.ts b/packages/app/scripts/vite-theme-plugin.ts
new file mode 100644
index 000000000..31881044e
--- /dev/null
+++ b/packages/app/scripts/vite-theme-plugin.ts
@@ -0,0 +1,160 @@
+import type { Plugin } from "vite"
+import { readdir, readFile, writeFile } from "fs/promises"
+import { join, resolve } from "path"
+
+interface ThemeDefinition {
+ $schema?: string
+ defs?: Record
+ theme: Record
+}
+
+interface ResolvedThemeColor {
+ dark: string
+ light: string
+}
+
+class ColorResolver {
+ private colors: Map = new Map()
+ private visited: Set = new Set()
+
+ constructor(defs: Record = {}, theme: Record = {}) {
+ Object.entries(defs).forEach(([key, value]) => {
+ this.colors.set(key, value)
+ })
+ Object.entries(theme).forEach(([key, value]) => {
+ this.colors.set(key, value)
+ })
+ }
+
+ resolveColor(key: string, value: any): ResolvedThemeColor {
+ if (this.visited.has(key)) {
+ throw new Error(`Circular reference detected for color ${key}`)
+ }
+
+ this.visited.add(key)
+
+ try {
+ if (typeof value === "string") {
+ if (value.startsWith("#") || value === "none") {
+ return { dark: value, light: value }
+ }
+ const resolved = this.resolveReference(value)
+ return { dark: resolved, light: resolved }
+ }
+ if (typeof value === "object" && value !== null) {
+ const dark = this.resolveColorValue(value.dark || value.light || "#000000")
+ const light = this.resolveColorValue(value.light || value.dark || "#ffffff")
+ return { dark, light }
+ }
+ return { dark: "#000000", light: "#ffffff" }
+ } finally {
+ this.visited.delete(key)
+ }
+ }
+
+ private resolveColorValue(value: any): string {
+ if (typeof value === "string") {
+ if (value.startsWith("#") || value === "none") {
+ return value
+ }
+ return this.resolveReference(value)
+ }
+ return value
+ }
+
+ private resolveReference(ref: string): string {
+ const colorValue = this.colors.get(ref)
+ if (colorValue === undefined) {
+ throw new Error(`Color reference '${ref}' not found`)
+ }
+ if (typeof colorValue === "string") {
+ if (colorValue.startsWith("#") || colorValue === "none") {
+ return colorValue
+ }
+ return this.resolveReference(colorValue)
+ }
+ return colorValue
+ }
+}
+
+function kebabCase(str: string): string {
+ return str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()
+}
+
+function parseTheme(themeData: ThemeDefinition): Record {
+ const resolver = new ColorResolver(themeData.defs, themeData.theme)
+ const colors: Record = {}
+ Object.entries(themeData.theme).forEach(([key, value]) => {
+ colors[key] = resolver.resolveColor(key, value)
+ })
+ return colors
+}
+
+async function loadThemes(): Promise>> {
+ const themesDir = resolve(__dirname, "../../tui/internal/theme/themes")
+ const files = await readdir(themesDir)
+ const themes: Record> = {}
+
+ for (const file of files) {
+ if (!file.endsWith(".json")) continue
+
+ const themeName = file.replace(".json", "")
+ const themeData: ThemeDefinition = JSON.parse(await readFile(join(themesDir, file), "utf-8"))
+
+ themes[themeName] = parseTheme(themeData)
+ }
+
+ return themes
+}
+
+function generateCSS(themes: Record>): string {
+ let css = `/* Auto-generated theme CSS - Do not edit manually */\n:root {\n`
+
+ const defaultTheme = themes["opencode"] || Object.values(themes)[0]
+ if (defaultTheme) {
+ Object.entries(defaultTheme).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.light};\n`
+ })
+ }
+ css += `}\n\n`
+
+ Object.entries(themes).forEach(([themeName, colors]) => {
+ css += `[data-theme="${themeName}"][data-dark="false"] {\n`
+ Object.entries(colors).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.light};\n`
+ })
+ css += `}\n\n`
+
+ css += `[data-theme="${themeName}"][data-dark="true"] {\n`
+ Object.entries(colors).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.dark};\n`
+ })
+ css += `}\n\n`
+ })
+
+ return css
+}
+
+export function generateThemeCSS(): Plugin {
+ return {
+ name: "generate-theme-css",
+ async buildStart() {
+ try {
+ console.log("Generating theme CSS...")
+ const themes = await loadThemes()
+ const css = generateCSS(themes)
+
+ const outputPath = resolve(__dirname, "../src/assets/theme.css")
+ await writeFile(outputPath, css)
+
+ console.log(`✅ Generated theme CSS with ${Object.keys(themes).length} themes`)
+ console.log(` Output: ${outputPath}`)
+ } catch (error) {
+ throw new Error(`Theme CSS generation failed: ${error}`)
+ }
+ },
+ }
+}
diff --git a/packages/app/src/assets/favicon.ico b/packages/app/src/assets/favicon.ico
new file mode 100644
index 000000000..b836b2bcc
Binary files /dev/null and b/packages/app/src/assets/favicon.ico differ
diff --git a/packages/app/src/assets/file-icons/3d.svg b/packages/app/src/assets/file-icons/3d.svg
new file mode 100644
index 000000000..0fdb93497
--- /dev/null
+++ b/packages/app/src/assets/file-icons/3d.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/abap.svg b/packages/app/src/assets/file-icons/abap.svg
new file mode 100644
index 000000000..0a9b08390
--- /dev/null
+++ b/packages/app/src/assets/file-icons/abap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/abc.svg b/packages/app/src/assets/file-icons/abc.svg
new file mode 100644
index 000000000..7c7cb534c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/abc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/actionscript.svg b/packages/app/src/assets/file-icons/actionscript.svg
new file mode 100644
index 000000000..31d91f2db
--- /dev/null
+++ b/packages/app/src/assets/file-icons/actionscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ada.svg b/packages/app/src/assets/file-icons/ada.svg
new file mode 100644
index 000000000..613646fa1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ada.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-illustrator.svg b/packages/app/src/assets/file-icons/adobe-illustrator.svg
new file mode 100644
index 000000000..e0a334bb4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adobe-illustrator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-illustrator_light.svg b/packages/app/src/assets/file-icons/adobe-illustrator_light.svg
new file mode 100644
index 000000000..326d2315a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adobe-illustrator_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-photoshop.svg b/packages/app/src/assets/file-icons/adobe-photoshop.svg
new file mode 100644
index 000000000..27033d9af
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adobe-photoshop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-photoshop_light.svg b/packages/app/src/assets/file-icons/adobe-photoshop_light.svg
new file mode 100644
index 000000000..d2bfb4d25
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adobe-photoshop_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-swc.svg b/packages/app/src/assets/file-icons/adobe-swc.svg
new file mode 100644
index 000000000..fda5c181a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adobe-swc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adonis.svg b/packages/app/src/assets/file-icons/adonis.svg
new file mode 100644
index 000000000..f854f018e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/adonis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/advpl.svg b/packages/app/src/assets/file-icons/advpl.svg
new file mode 100644
index 000000000..54e493b0f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/advpl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/amplify.svg b/packages/app/src/assets/file-icons/amplify.svg
new file mode 100644
index 000000000..89f42120b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/amplify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/android.svg b/packages/app/src/assets/file-icons/android.svg
new file mode 100644
index 000000000..c44608d4b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/android.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/angular.svg b/packages/app/src/assets/file-icons/angular.svg
new file mode 100644
index 000000000..a28075e93
--- /dev/null
+++ b/packages/app/src/assets/file-icons/angular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/antlr.svg b/packages/app/src/assets/file-icons/antlr.svg
new file mode 100644
index 000000000..42f43bb30
--- /dev/null
+++ b/packages/app/src/assets/file-icons/antlr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apiblueprint.svg b/packages/app/src/assets/file-icons/apiblueprint.svg
new file mode 100644
index 000000000..08462673a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/apiblueprint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apollo.svg b/packages/app/src/assets/file-icons/apollo.svg
new file mode 100644
index 000000000..6de6aa26b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/apollo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/applescript.svg b/packages/app/src/assets/file-icons/applescript.svg
new file mode 100644
index 000000000..d883e90da
--- /dev/null
+++ b/packages/app/src/assets/file-icons/applescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apps-script.svg b/packages/app/src/assets/file-icons/apps-script.svg
new file mode 100644
index 000000000..ed20f1f13
--- /dev/null
+++ b/packages/app/src/assets/file-icons/apps-script.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/appveyor.svg b/packages/app/src/assets/file-icons/appveyor.svg
new file mode 100644
index 000000000..0dd0a5cb0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/appveyor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/architecture.svg b/packages/app/src/assets/file-icons/architecture.svg
new file mode 100644
index 000000000..ee7de1823
--- /dev/null
+++ b/packages/app/src/assets/file-icons/architecture.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/arduino.svg b/packages/app/src/assets/file-icons/arduino.svg
new file mode 100644
index 000000000..053dc1267
--- /dev/null
+++ b/packages/app/src/assets/file-icons/arduino.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/asciidoc.svg b/packages/app/src/assets/file-icons/asciidoc.svg
new file mode 100644
index 000000000..82215c7d4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/asciidoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/assembly.svg b/packages/app/src/assets/file-icons/assembly.svg
new file mode 100644
index 000000000..33a056643
--- /dev/null
+++ b/packages/app/src/assets/file-icons/assembly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astro-config.svg b/packages/app/src/assets/file-icons/astro-config.svg
new file mode 100644
index 000000000..1c12c5e8b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/astro-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astro.svg b/packages/app/src/assets/file-icons/astro.svg
new file mode 100644
index 000000000..fa67feeff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/astro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astyle.svg b/packages/app/src/assets/file-icons/astyle.svg
new file mode 100644
index 000000000..6643432b5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/astyle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/audio.svg b/packages/app/src/assets/file-icons/audio.svg
new file mode 100644
index 000000000..74f43c461
--- /dev/null
+++ b/packages/app/src/assets/file-icons/audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/aurelia.svg b/packages/app/src/assets/file-icons/aurelia.svg
new file mode 100644
index 000000000..f7b67f023
--- /dev/null
+++ b/packages/app/src/assets/file-icons/aurelia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/authors.svg b/packages/app/src/assets/file-icons/authors.svg
new file mode 100644
index 000000000..88618a701
--- /dev/null
+++ b/packages/app/src/assets/file-icons/authors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/auto.svg b/packages/app/src/assets/file-icons/auto.svg
new file mode 100644
index 000000000..41bd15de4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/auto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/auto_light.svg b/packages/app/src/assets/file-icons/auto_light.svg
new file mode 100644
index 000000000..5f2451b23
--- /dev/null
+++ b/packages/app/src/assets/file-icons/auto_light.svg
@@ -0,0 +1,12 @@
+
diff --git a/packages/app/src/assets/file-icons/autohotkey.svg b/packages/app/src/assets/file-icons/autohotkey.svg
new file mode 100644
index 000000000..4ecd7a3ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/autohotkey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/autoit.svg b/packages/app/src/assets/file-icons/autoit.svg
new file mode 100644
index 000000000..350519f25
--- /dev/null
+++ b/packages/app/src/assets/file-icons/autoit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/azure-pipelines.svg b/packages/app/src/assets/file-icons/azure-pipelines.svg
new file mode 100644
index 000000000..f460d2079
--- /dev/null
+++ b/packages/app/src/assets/file-icons/azure-pipelines.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/azure.svg b/packages/app/src/assets/file-icons/azure.svg
new file mode 100644
index 000000000..2330f87bb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/azure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/babel.svg b/packages/app/src/assets/file-icons/babel.svg
new file mode 100644
index 000000000..244ae36a1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/babel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ballerina.svg b/packages/app/src/assets/file-icons/ballerina.svg
new file mode 100644
index 000000000..3c1341d77
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ballerina.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bazel.svg b/packages/app/src/assets/file-icons/bazel.svg
new file mode 100644
index 000000000..b38a90c59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bazel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bbx.svg b/packages/app/src/assets/file-icons/bbx.svg
new file mode 100644
index 000000000..002d26047
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/beancount.svg b/packages/app/src/assets/file-icons/beancount.svg
new file mode 100644
index 000000000..905ff22b0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/beancount.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-js.svg b/packages/app/src/assets/file-icons/bench-js.svg
new file mode 100644
index 000000000..c2ba0ca6e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bench-js.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-jsx.svg b/packages/app/src/assets/file-icons/bench-jsx.svg
new file mode 100644
index 000000000..ed2b9d434
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bench-jsx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-ts.svg b/packages/app/src/assets/file-icons/bench-ts.svg
new file mode 100644
index 000000000..f9c2af9e0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bench-ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bibliography.svg b/packages/app/src/assets/file-icons/bibliography.svg
new file mode 100644
index 000000000..ad6baa6ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bibliography.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bibtex-style.svg b/packages/app/src/assets/file-icons/bibtex-style.svg
new file mode 100644
index 000000000..24d121d72
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bibtex-style.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bicep.svg b/packages/app/src/assets/file-icons/bicep.svg
new file mode 100644
index 000000000..dc959e7be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bicep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/biome.svg b/packages/app/src/assets/file-icons/biome.svg
new file mode 100644
index 000000000..2f255fc2b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/biome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bitbucket.svg b/packages/app/src/assets/file-icons/bitbucket.svg
new file mode 100644
index 000000000..ba572f09f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bitbucket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bithound.svg b/packages/app/src/assets/file-icons/bithound.svg
new file mode 100644
index 000000000..1eea4deae
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bithound.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blender.svg b/packages/app/src/assets/file-icons/blender.svg
new file mode 100644
index 000000000..f55d6bc7d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/blender.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blink.svg b/packages/app/src/assets/file-icons/blink.svg
new file mode 100644
index 000000000..441228857
--- /dev/null
+++ b/packages/app/src/assets/file-icons/blink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blink_light.svg b/packages/app/src/assets/file-icons/blink_light.svg
new file mode 100644
index 000000000..380d8c762
--- /dev/null
+++ b/packages/app/src/assets/file-icons/blink_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blitz.svg b/packages/app/src/assets/file-icons/blitz.svg
new file mode 100644
index 000000000..147ccc1a7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/blitz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bower.svg b/packages/app/src/assets/file-icons/bower.svg
new file mode 100644
index 000000000..9ffb06acc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bower.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/brainfuck.svg b/packages/app/src/assets/file-icons/brainfuck.svg
new file mode 100644
index 000000000..6a2422c9b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/brainfuck.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/browserlist.svg b/packages/app/src/assets/file-icons/browserlist.svg
new file mode 100644
index 000000000..d2e0d0a38
--- /dev/null
+++ b/packages/app/src/assets/file-icons/browserlist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/browserlist_light.svg b/packages/app/src/assets/file-icons/browserlist_light.svg
new file mode 100644
index 000000000..fa34de6a1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/browserlist_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bruno.svg b/packages/app/src/assets/file-icons/bruno.svg
new file mode 100644
index 000000000..88bebeae4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bruno.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/buck.svg b/packages/app/src/assets/file-icons/buck.svg
new file mode 100644
index 000000000..a5a31bc46
--- /dev/null
+++ b/packages/app/src/assets/file-icons/buck.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bucklescript.svg b/packages/app/src/assets/file-icons/bucklescript.svg
new file mode 100644
index 000000000..d67a7843d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bucklescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/buildkite.svg b/packages/app/src/assets/file-icons/buildkite.svg
new file mode 100644
index 000000000..32a499555
--- /dev/null
+++ b/packages/app/src/assets/file-icons/buildkite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bun.svg b/packages/app/src/assets/file-icons/bun.svg
new file mode 100644
index 000000000..cc3620479
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bun_light.svg b/packages/app/src/assets/file-icons/bun_light.svg
new file mode 100644
index 000000000..d49bac7b2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/bun_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/c.svg b/packages/app/src/assets/file-icons/c.svg
new file mode 100644
index 000000000..5bb84b6a9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/c3.svg b/packages/app/src/assets/file-icons/c3.svg
new file mode 100644
index 000000000..ff30caab2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/c3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cabal.svg b/packages/app/src/assets/file-icons/cabal.svg
new file mode 100644
index 000000000..014335bf7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cabal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/caddy.svg b/packages/app/src/assets/file-icons/caddy.svg
new file mode 100644
index 000000000..997c11962
--- /dev/null
+++ b/packages/app/src/assets/file-icons/caddy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cadence.svg b/packages/app/src/assets/file-icons/cadence.svg
new file mode 100644
index 000000000..25338baae
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cadence.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cairo.svg b/packages/app/src/assets/file-icons/cairo.svg
new file mode 100644
index 000000000..591b2328a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cairo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cake.svg b/packages/app/src/assets/file-icons/cake.svg
new file mode 100644
index 000000000..ed6b09f4d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/capacitor.svg b/packages/app/src/assets/file-icons/capacitor.svg
new file mode 100644
index 000000000..2a48c5843
--- /dev/null
+++ b/packages/app/src/assets/file-icons/capacitor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/capnp.svg b/packages/app/src/assets/file-icons/capnp.svg
new file mode 100644
index 000000000..c74aa9f01
--- /dev/null
+++ b/packages/app/src/assets/file-icons/capnp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cbx.svg b/packages/app/src/assets/file-icons/cbx.svg
new file mode 100644
index 000000000..716426ad7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cds.svg b/packages/app/src/assets/file-icons/cds.svg
new file mode 100644
index 000000000..3c7fed81e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cds.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/certificate.svg b/packages/app/src/assets/file-icons/certificate.svg
new file mode 100644
index 000000000..64ddcf3b6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/certificate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/changelog.svg b/packages/app/src/assets/file-icons/changelog.svg
new file mode 100644
index 000000000..b4b1a0717
--- /dev/null
+++ b/packages/app/src/assets/file-icons/changelog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chess.svg b/packages/app/src/assets/file-icons/chess.svg
new file mode 100644
index 000000000..85bede301
--- /dev/null
+++ b/packages/app/src/assets/file-icons/chess.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chess_light.svg b/packages/app/src/assets/file-icons/chess_light.svg
new file mode 100644
index 000000000..250fb8cbf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/chess_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chrome.svg b/packages/app/src/assets/file-icons/chrome.svg
new file mode 100644
index 000000000..0208e2704
--- /dev/null
+++ b/packages/app/src/assets/file-icons/chrome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/circleci.svg b/packages/app/src/assets/file-icons/circleci.svg
new file mode 100644
index 000000000..464dace08
--- /dev/null
+++ b/packages/app/src/assets/file-icons/circleci.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/circleci_light.svg b/packages/app/src/assets/file-icons/circleci_light.svg
new file mode 100644
index 000000000..cd45d352c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/circleci_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/citation.svg b/packages/app/src/assets/file-icons/citation.svg
new file mode 100644
index 000000000..eb7fcaa92
--- /dev/null
+++ b/packages/app/src/assets/file-icons/citation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/clangd.svg b/packages/app/src/assets/file-icons/clangd.svg
new file mode 100644
index 000000000..f6742e9ae
--- /dev/null
+++ b/packages/app/src/assets/file-icons/clangd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/claude.svg b/packages/app/src/assets/file-icons/claude.svg
new file mode 100644
index 000000000..fa01860fd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/claude.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cline.svg b/packages/app/src/assets/file-icons/cline.svg
new file mode 100644
index 000000000..c41f59d83
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/clojure.svg b/packages/app/src/assets/file-icons/clojure.svg
new file mode 100644
index 000000000..1b22aed22
--- /dev/null
+++ b/packages/app/src/assets/file-icons/clojure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cloudfoundry.svg b/packages/app/src/assets/file-icons/cloudfoundry.svg
new file mode 100644
index 000000000..3251ca469
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cloudfoundry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cmake.svg b/packages/app/src/assets/file-icons/cmake.svg
new file mode 100644
index 000000000..aa217964f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cmake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coala.svg b/packages/app/src/assets/file-icons/coala.svg
new file mode 100644
index 000000000..1e84b8f5e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cobol.svg b/packages/app/src/assets/file-icons/cobol.svg
new file mode 100644
index 000000000..220b0ab48
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cobol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coconut.svg b/packages/app/src/assets/file-icons/coconut.svg
new file mode 100644
index 000000000..98355a662
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coconut.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/code-climate.svg b/packages/app/src/assets/file-icons/code-climate.svg
new file mode 100644
index 000000000..97cbb4e8f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/code-climate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/code-climate_light.svg b/packages/app/src/assets/file-icons/code-climate_light.svg
new file mode 100644
index 000000000..dd18ba52b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/code-climate_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/codecov.svg b/packages/app/src/assets/file-icons/codecov.svg
new file mode 100644
index 000000000..9a8d4eb7b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/codecov.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/codeowners.svg b/packages/app/src/assets/file-icons/codeowners.svg
new file mode 100644
index 000000000..553c60f5a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/codeowners.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coderabbit-ai.svg b/packages/app/src/assets/file-icons/coderabbit-ai.svg
new file mode 100644
index 000000000..5d1b6c9c2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coderabbit-ai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coffee.svg b/packages/app/src/assets/file-icons/coffee.svg
new file mode 100644
index 000000000..f81b65c79
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coffee.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coldfusion.svg b/packages/app/src/assets/file-icons/coldfusion.svg
new file mode 100644
index 000000000..d018b6652
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coldfusion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coloredpetrinets.svg b/packages/app/src/assets/file-icons/coloredpetrinets.svg
new file mode 100644
index 000000000..bd612618e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/coloredpetrinets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/command.svg b/packages/app/src/assets/file-icons/command.svg
new file mode 100644
index 000000000..b5a7913d2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/command.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/commitizen.svg b/packages/app/src/assets/file-icons/commitizen.svg
new file mode 100644
index 000000000..2467d2c71
--- /dev/null
+++ b/packages/app/src/assets/file-icons/commitizen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/commitlint.svg b/packages/app/src/assets/file-icons/commitlint.svg
new file mode 100644
index 000000000..c42144a42
--- /dev/null
+++ b/packages/app/src/assets/file-icons/commitlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/concourse.svg b/packages/app/src/assets/file-icons/concourse.svg
new file mode 100644
index 000000000..c34f23eb8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/concourse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/conduct.svg b/packages/app/src/assets/file-icons/conduct.svg
new file mode 100644
index 000000000..97eb6fc54
--- /dev/null
+++ b/packages/app/src/assets/file-icons/conduct.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/console.svg b/packages/app/src/assets/file-icons/console.svg
new file mode 100644
index 000000000..75f90b733
--- /dev/null
+++ b/packages/app/src/assets/file-icons/console.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/contentlayer.svg b/packages/app/src/assets/file-icons/contentlayer.svg
new file mode 100644
index 000000000..441f6904e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/contentlayer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/context.svg b/packages/app/src/assets/file-icons/context.svg
new file mode 100644
index 000000000..1b8200ed4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/context.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/contributing.svg b/packages/app/src/assets/file-icons/contributing.svg
new file mode 100644
index 000000000..13666a020
--- /dev/null
+++ b/packages/app/src/assets/file-icons/contributing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/controller.svg b/packages/app/src/assets/file-icons/controller.svg
new file mode 100644
index 000000000..9f99264b9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/controller.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/copilot.svg b/packages/app/src/assets/file-icons/copilot.svg
new file mode 100644
index 000000000..24e89af0b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/copilot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/copilot_light.svg b/packages/app/src/assets/file-icons/copilot_light.svg
new file mode 100644
index 000000000..9bc56ea84
--- /dev/null
+++ b/packages/app/src/assets/file-icons/copilot_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cpp.svg b/packages/app/src/assets/file-icons/cpp.svg
new file mode 100644
index 000000000..16534acac
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/craco.svg b/packages/app/src/assets/file-icons/craco.svg
new file mode 100644
index 000000000..96ba45846
--- /dev/null
+++ b/packages/app/src/assets/file-icons/craco.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/credits.svg b/packages/app/src/assets/file-icons/credits.svg
new file mode 100644
index 000000000..b67c55a8c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/credits.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/crystal.svg b/packages/app/src/assets/file-icons/crystal.svg
new file mode 100644
index 000000000..e3796bfa5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/crystal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/crystal_light.svg b/packages/app/src/assets/file-icons/crystal_light.svg
new file mode 100644
index 000000000..ca387f4e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/crystal_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/csharp.svg b/packages/app/src/assets/file-icons/csharp.svg
new file mode 100644
index 000000000..02b1be3e1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/csharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/css-map.svg b/packages/app/src/assets/file-icons/css-map.svg
new file mode 100644
index 000000000..55b74c088
--- /dev/null
+++ b/packages/app/src/assets/file-icons/css-map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/css.svg b/packages/app/src/assets/file-icons/css.svg
new file mode 100644
index 000000000..1acad1be2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/css.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cucumber.svg b/packages/app/src/assets/file-icons/cucumber.svg
new file mode 100644
index 000000000..052fd2955
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cucumber.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cuda.svg b/packages/app/src/assets/file-icons/cuda.svg
new file mode 100644
index 000000000..cc57a60fc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cuda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cursor.svg b/packages/app/src/assets/file-icons/cursor.svg
new file mode 100644
index 000000000..b754147ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cursor.svg
@@ -0,0 +1 @@
+
diff --git a/packages/app/src/assets/file-icons/cursor_light.svg b/packages/app/src/assets/file-icons/cursor_light.svg
new file mode 100644
index 000000000..f65b6461a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cursor_light.svg
@@ -0,0 +1 @@
+
diff --git a/packages/app/src/assets/file-icons/cypress.svg b/packages/app/src/assets/file-icons/cypress.svg
new file mode 100644
index 000000000..35274d3a0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/cypress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/d.svg b/packages/app/src/assets/file-icons/d.svg
new file mode 100644
index 000000000..3207725da
--- /dev/null
+++ b/packages/app/src/assets/file-icons/d.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dart.svg b/packages/app/src/assets/file-icons/dart.svg
new file mode 100644
index 000000000..04b22d09c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dart_generated.svg b/packages/app/src/assets/file-icons/dart_generated.svg
new file mode 100644
index 000000000..8f64f5f02
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dart_generated.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/database.svg b/packages/app/src/assets/file-icons/database.svg
new file mode 100644
index 000000000..b10723460
--- /dev/null
+++ b/packages/app/src/assets/file-icons/database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deepsource.svg b/packages/app/src/assets/file-icons/deepsource.svg
new file mode 100644
index 000000000..d70fd467c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/deepsource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/denizenscript.svg b/packages/app/src/assets/file-icons/denizenscript.svg
new file mode 100644
index 000000000..2debb9da2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/denizenscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deno.svg b/packages/app/src/assets/file-icons/deno.svg
new file mode 100644
index 000000000..344a12e40
--- /dev/null
+++ b/packages/app/src/assets/file-icons/deno.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deno_light.svg b/packages/app/src/assets/file-icons/deno_light.svg
new file mode 100644
index 000000000..ee82ea7c7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/deno_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dependabot.svg b/packages/app/src/assets/file-icons/dependabot.svg
new file mode 100644
index 000000000..3b101a12f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dependabot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dependencies-update.svg b/packages/app/src/assets/file-icons/dependencies-update.svg
new file mode 100644
index 000000000..b85ad9e5f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dependencies-update.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dhall.svg b/packages/app/src/assets/file-icons/dhall.svg
new file mode 100644
index 000000000..0be94119d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dhall.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/diff.svg b/packages/app/src/assets/file-icons/diff.svg
new file mode 100644
index 000000000..ea3068c60
--- /dev/null
+++ b/packages/app/src/assets/file-icons/diff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dinophp.svg b/packages/app/src/assets/file-icons/dinophp.svg
new file mode 100644
index 000000000..8e6ef29af
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dinophp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/disc.svg b/packages/app/src/assets/file-icons/disc.svg
new file mode 100644
index 000000000..b0d74dc25
--- /dev/null
+++ b/packages/app/src/assets/file-icons/disc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/django.svg b/packages/app/src/assets/file-icons/django.svg
new file mode 100644
index 000000000..64c9ee339
--- /dev/null
+++ b/packages/app/src/assets/file-icons/django.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dll.svg b/packages/app/src/assets/file-icons/dll.svg
new file mode 100644
index 000000000..0646cbb03
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/docker.svg b/packages/app/src/assets/file-icons/docker.svg
new file mode 100644
index 000000000..7d6a1a525
--- /dev/null
+++ b/packages/app/src/assets/file-icons/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/doctex-installer.svg b/packages/app/src/assets/file-icons/doctex-installer.svg
new file mode 100644
index 000000000..5bdb4439f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/doctex-installer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/document.svg b/packages/app/src/assets/file-icons/document.svg
new file mode 100644
index 000000000..a717956b7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/document.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dotjs.svg b/packages/app/src/assets/file-icons/dotjs.svg
new file mode 100644
index 000000000..5ac893c6a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dotjs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drawio.svg b/packages/app/src/assets/file-icons/drawio.svg
new file mode 100644
index 000000000..8ef1bcb72
--- /dev/null
+++ b/packages/app/src/assets/file-icons/drawio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drizzle.svg b/packages/app/src/assets/file-icons/drizzle.svg
new file mode 100644
index 000000000..72f1b21aa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/drizzle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drone.svg b/packages/app/src/assets/file-icons/drone.svg
new file mode 100644
index 000000000..5e3082d31
--- /dev/null
+++ b/packages/app/src/assets/file-icons/drone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drone_light.svg b/packages/app/src/assets/file-icons/drone_light.svg
new file mode 100644
index 000000000..ce3ad253b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/drone_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/packages/app/src/assets/file-icons/duc.svg b/packages/app/src/assets/file-icons/duc.svg
new file mode 100644
index 000000000..1d85b34ad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/duc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dune.svg b/packages/app/src/assets/file-icons/dune.svg
new file mode 100644
index 000000000..1a35e7001
--- /dev/null
+++ b/packages/app/src/assets/file-icons/dune.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/edge.svg b/packages/app/src/assets/file-icons/edge.svg
new file mode 100644
index 000000000..298b55890
--- /dev/null
+++ b/packages/app/src/assets/file-icons/edge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/editorconfig.svg b/packages/app/src/assets/file-icons/editorconfig.svg
new file mode 100644
index 000000000..ba528993d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/editorconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ejs.svg b/packages/app/src/assets/file-icons/ejs.svg
new file mode 100644
index 000000000..6ead40eba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/elixir.svg b/packages/app/src/assets/file-icons/elixir.svg
new file mode 100644
index 000000000..d40f90b47
--- /dev/null
+++ b/packages/app/src/assets/file-icons/elixir.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/elm.svg b/packages/app/src/assets/file-icons/elm.svg
new file mode 100644
index 000000000..c17b74d7d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/elm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/email.svg b/packages/app/src/assets/file-icons/email.svg
new file mode 100644
index 000000000..a603e1477
--- /dev/null
+++ b/packages/app/src/assets/file-icons/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ember.svg b/packages/app/src/assets/file-icons/ember.svg
new file mode 100644
index 000000000..c16cef13c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ember.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/epub.svg b/packages/app/src/assets/file-icons/epub.svg
new file mode 100644
index 000000000..98f11d490
--- /dev/null
+++ b/packages/app/src/assets/file-icons/epub.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/erlang.svg b/packages/app/src/assets/file-icons/erlang.svg
new file mode 100644
index 000000000..41025d6dc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/erlang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/esbuild.svg b/packages/app/src/assets/file-icons/esbuild.svg
new file mode 100644
index 000000000..e682d6b10
--- /dev/null
+++ b/packages/app/src/assets/file-icons/esbuild.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/eslint.svg b/packages/app/src/assets/file-icons/eslint.svg
new file mode 100644
index 000000000..54fe8cc22
--- /dev/null
+++ b/packages/app/src/assets/file-icons/eslint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/excalidraw.svg b/packages/app/src/assets/file-icons/excalidraw.svg
new file mode 100644
index 000000000..c1e1bca9c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/excalidraw.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/exe.svg b/packages/app/src/assets/file-icons/exe.svg
new file mode 100644
index 000000000..dde947d80
--- /dev/null
+++ b/packages/app/src/assets/file-icons/exe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fastlane.svg b/packages/app/src/assets/file-icons/fastlane.svg
new file mode 100644
index 000000000..44d042fbd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/fastlane.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/favicon.svg b/packages/app/src/assets/file-icons/favicon.svg
new file mode 100644
index 000000000..21abf661b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/figma.svg b/packages/app/src/assets/file-icons/figma.svg
new file mode 100644
index 000000000..db4522bec
--- /dev/null
+++ b/packages/app/src/assets/file-icons/figma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/firebase.svg b/packages/app/src/assets/file-icons/firebase.svg
new file mode 100644
index 000000000..bb3b63cb8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/firebase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/flash.svg b/packages/app/src/assets/file-icons/flash.svg
new file mode 100644
index 000000000..abd6e01e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/flash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/flow.svg b/packages/app/src/assets/file-icons/flow.svg
new file mode 100644
index 000000000..05919810f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/flow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-admin-open.svg b/packages/app/src/assets/file-icons/folder-admin-open.svg
new file mode 100644
index 000000000..5e77464ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-admin-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-admin.svg b/packages/app/src/assets/file-icons/folder-admin.svg
new file mode 100644
index 000000000..f8d1ea13c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-admin.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-android-open.svg b/packages/app/src/assets/file-icons/folder-android-open.svg
new file mode 100644
index 000000000..cdd8376ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-android-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-android.svg b/packages/app/src/assets/file-icons/folder-android.svg
new file mode 100644
index 000000000..7ee8a4679
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-android.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-angular-open.svg b/packages/app/src/assets/file-icons/folder-angular-open.svg
new file mode 100644
index 000000000..60c604e84
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-angular-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-angular.svg b/packages/app/src/assets/file-icons/folder-angular.svg
new file mode 100644
index 000000000..3d8c87d32
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-angular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-animation-open.svg b/packages/app/src/assets/file-icons/folder-animation-open.svg
new file mode 100644
index 000000000..637a3af6b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-animation-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-animation.svg b/packages/app/src/assets/file-icons/folder-animation.svg
new file mode 100644
index 000000000..6b5bb691f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-animation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ansible-open.svg b/packages/app/src/assets/file-icons/folder-ansible-open.svg
new file mode 100644
index 000000000..96df458dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ansible-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ansible.svg b/packages/app/src/assets/file-icons/folder-ansible.svg
new file mode 100644
index 000000000..f4303155b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ansible.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-api-open.svg b/packages/app/src/assets/file-icons/folder-api-open.svg
new file mode 100644
index 000000000..ac3edb976
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-api-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-api.svg b/packages/app/src/assets/file-icons/folder-api.svg
new file mode 100644
index 000000000..bf1d64c54
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-api.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-apollo-open.svg b/packages/app/src/assets/file-icons/folder-apollo-open.svg
new file mode 100644
index 000000000..f0febaf95
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-apollo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-apollo.svg b/packages/app/src/assets/file-icons/folder-apollo.svg
new file mode 100644
index 000000000..7eb610781
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-apollo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-app-open.svg b/packages/app/src/assets/file-icons/folder-app-open.svg
new file mode 100644
index 000000000..c9da6a7bb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-app-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-app.svg b/packages/app/src/assets/file-icons/folder-app.svg
new file mode 100644
index 000000000..d0e37f19d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-app.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-archive-open.svg b/packages/app/src/assets/file-icons/folder-archive-open.svg
new file mode 100644
index 000000000..6af2a9f0a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-archive-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-archive.svg b/packages/app/src/assets/file-icons/folder-archive.svg
new file mode 100644
index 000000000..b018654b2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-archive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-astro-open.svg b/packages/app/src/assets/file-icons/folder-astro-open.svg
new file mode 100644
index 000000000..282a3ce0a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-astro-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-astro.svg b/packages/app/src/assets/file-icons/folder-astro.svg
new file mode 100644
index 000000000..b324019e7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-astro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-atom-open.svg b/packages/app/src/assets/file-icons/folder-atom-open.svg
new file mode 100644
index 000000000..5558d1841
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-atom-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-atom.svg b/packages/app/src/assets/file-icons/folder-atom.svg
new file mode 100644
index 000000000..c272f6ecd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-atom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-attachment-open.svg b/packages/app/src/assets/file-icons/folder-attachment-open.svg
new file mode 100644
index 000000000..7a9af66f1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-attachment-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-attachment.svg b/packages/app/src/assets/file-icons/folder-attachment.svg
new file mode 100644
index 000000000..3b9992e31
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-attachment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-audio-open.svg b/packages/app/src/assets/file-icons/folder-audio-open.svg
new file mode 100644
index 000000000..6d9b23836
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-audio-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-audio.svg b/packages/app/src/assets/file-icons/folder-audio.svg
new file mode 100644
index 000000000..e3d0db3d0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aurelia-open.svg b/packages/app/src/assets/file-icons/folder-aurelia-open.svg
new file mode 100644
index 000000000..bacae248a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-aurelia-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aurelia.svg b/packages/app/src/assets/file-icons/folder-aurelia.svg
new file mode 100644
index 000000000..61ee59ed3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-aurelia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aws-open.svg b/packages/app/src/assets/file-icons/folder-aws-open.svg
new file mode 100644
index 000000000..9e530d4cf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-aws-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aws.svg b/packages/app/src/assets/file-icons/folder-aws.svg
new file mode 100644
index 000000000..769755d14
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-aws.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg b/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg
new file mode 100644
index 000000000..9253cd5a6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines.svg b/packages/app/src/assets/file-icons/folder-azure-pipelines.svg
new file mode 100644
index 000000000..a0fef25f9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-azure-pipelines.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-backup-open.svg b/packages/app/src/assets/file-icons/folder-backup-open.svg
new file mode 100644
index 000000000..c2914ee22
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-backup-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-backup.svg b/packages/app/src/assets/file-icons/folder-backup.svg
new file mode 100644
index 000000000..aa9a6c942
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-backup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-base-open.svg b/packages/app/src/assets/file-icons/folder-base-open.svg
new file mode 100644
index 000000000..e84bc36c1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-base-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-base.svg b/packages/app/src/assets/file-icons/folder-base.svg
new file mode 100644
index 000000000..194410083
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-base.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-batch-open.svg b/packages/app/src/assets/file-icons/folder-batch-open.svg
new file mode 100644
index 000000000..1db45e181
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-batch-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-batch.svg b/packages/app/src/assets/file-icons/folder-batch.svg
new file mode 100644
index 000000000..c44a66bc2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-batch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-benchmark-open.svg b/packages/app/src/assets/file-icons/folder-benchmark-open.svg
new file mode 100644
index 000000000..fa7b3ea60
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-benchmark-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-benchmark.svg b/packages/app/src/assets/file-icons/folder-benchmark.svg
new file mode 100644
index 000000000..8291d6847
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-benchmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bibliography-open.svg b/packages/app/src/assets/file-icons/folder-bibliography-open.svg
new file mode 100644
index 000000000..81b6cde63
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bibliography-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bibliography.svg b/packages/app/src/assets/file-icons/folder-bibliography.svg
new file mode 100644
index 000000000..aa1e92a91
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bibliography.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bicep-open.svg b/packages/app/src/assets/file-icons/folder-bicep-open.svg
new file mode 100644
index 000000000..72519ce9d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bicep-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bicep.svg b/packages/app/src/assets/file-icons/folder-bicep.svg
new file mode 100644
index 000000000..b336ff5be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bicep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-blender-open.svg b/packages/app/src/assets/file-icons/folder-blender-open.svg
new file mode 100644
index 000000000..1c80d73a6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-blender-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-blender.svg b/packages/app/src/assets/file-icons/folder-blender.svg
new file mode 100644
index 000000000..6f56dce4d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-blender.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bloc-open.svg b/packages/app/src/assets/file-icons/folder-bloc-open.svg
new file mode 100644
index 000000000..8833e5f3c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bloc-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bloc.svg b/packages/app/src/assets/file-icons/folder-bloc.svg
new file mode 100644
index 000000000..cf08363c2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bloc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bower-open.svg b/packages/app/src/assets/file-icons/folder-bower-open.svg
new file mode 100644
index 000000000..659f87c98
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bower-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bower.svg b/packages/app/src/assets/file-icons/folder-bower.svg
new file mode 100644
index 000000000..6bfd65491
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-bower.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-buildkite-open.svg b/packages/app/src/assets/file-icons/folder-buildkite-open.svg
new file mode 100644
index 000000000..872db6445
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-buildkite-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-buildkite.svg b/packages/app/src/assets/file-icons/folder-buildkite.svg
new file mode 100644
index 000000000..9512b40a8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-buildkite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cart-open.svg b/packages/app/src/assets/file-icons/folder-cart-open.svg
new file mode 100644
index 000000000..4471a778e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cart-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cart.svg b/packages/app/src/assets/file-icons/folder-cart.svg
new file mode 100644
index 000000000..d19a62790
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-changesets-open.svg b/packages/app/src/assets/file-icons/folder-changesets-open.svg
new file mode 100644
index 000000000..c38923331
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-changesets-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-changesets.svg b/packages/app/src/assets/file-icons/folder-changesets.svg
new file mode 100644
index 000000000..fc071f48d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-changesets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ci-open.svg b/packages/app/src/assets/file-icons/folder-ci-open.svg
new file mode 100644
index 000000000..57ac1ba8f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ci-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ci.svg b/packages/app/src/assets/file-icons/folder-ci.svg
new file mode 100644
index 000000000..4fdc2edea
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ci.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-circleci-open.svg b/packages/app/src/assets/file-icons/folder-circleci-open.svg
new file mode 100644
index 000000000..9e323ff9c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-circleci-open.svg
@@ -0,0 +1,7 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-circleci.svg b/packages/app/src/assets/file-icons/folder-circleci.svg
new file mode 100644
index 000000000..ef3251857
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-circleci.svg
@@ -0,0 +1,7 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-class-open.svg b/packages/app/src/assets/file-icons/folder-class-open.svg
new file mode 100644
index 000000000..9c5b1017a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-class-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-class.svg b/packages/app/src/assets/file-icons/folder-class.svg
new file mode 100644
index 000000000..8225cf14b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-class.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-claude-open.svg b/packages/app/src/assets/file-icons/folder-claude-open.svg
new file mode 100644
index 000000000..1a52afdcc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-claude-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-claude.svg b/packages/app/src/assets/file-icons/folder-claude.svg
new file mode 100644
index 000000000..0c85a134a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-claude.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-client-open.svg b/packages/app/src/assets/file-icons/folder-client-open.svg
new file mode 100644
index 000000000..ceec8f1e2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-client-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-client.svg b/packages/app/src/assets/file-icons/folder-client.svg
new file mode 100644
index 000000000..fbfaee77b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-client.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cline-open.svg b/packages/app/src/assets/file-icons/folder-cline-open.svg
new file mode 100644
index 000000000..67ef7a261
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cline-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cline.svg b/packages/app/src/assets/file-icons/folder-cline.svg
new file mode 100644
index 000000000..8fec96d74
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg b/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg
new file mode 100644
index 000000000..b3ce0e4c6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions.svg b/packages/app/src/assets/file-icons/folder-cloud-functions.svg
new file mode 100644
index 000000000..8dac84a48
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cloud-functions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloudflare-open.svg b/packages/app/src/assets/file-icons/folder-cloudflare-open.svg
new file mode 100644
index 000000000..d7022abf8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cloudflare-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloudflare.svg b/packages/app/src/assets/file-icons/folder-cloudflare.svg
new file mode 100644
index 000000000..0cc444ea8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cloudflare.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cluster-open.svg b/packages/app/src/assets/file-icons/folder-cluster-open.svg
new file mode 100644
index 000000000..368843309
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cluster-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cluster.svg b/packages/app/src/assets/file-icons/folder-cluster.svg
new file mode 100644
index 000000000..77f5b8a39
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cluster.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cobol-open.svg b/packages/app/src/assets/file-icons/folder-cobol-open.svg
new file mode 100644
index 000000000..0f5e31528
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cobol-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cobol.svg b/packages/app/src/assets/file-icons/folder-cobol.svg
new file mode 100644
index 000000000..ea0f54d13
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cobol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-command-open.svg b/packages/app/src/assets/file-icons/folder-command-open.svg
new file mode 100644
index 000000000..ca9d4dff0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-command-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-command.svg b/packages/app/src/assets/file-icons/folder-command.svg
new file mode 100644
index 000000000..4015207b5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-command.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-components-open.svg b/packages/app/src/assets/file-icons/folder-components-open.svg
new file mode 100644
index 000000000..2f55b72fe
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-components-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-components.svg b/packages/app/src/assets/file-icons/folder-components.svg
new file mode 100644
index 000000000..983833e56
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-config-open.svg b/packages/app/src/assets/file-icons/folder-config-open.svg
new file mode 100644
index 000000000..3b4ec5ae0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-config-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-config.svg b/packages/app/src/assets/file-icons/folder-config.svg
new file mode 100644
index 000000000..8519910c2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-connection-open.svg b/packages/app/src/assets/file-icons/folder-connection-open.svg
new file mode 100644
index 000000000..4d14f0962
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-connection-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-connection.svg b/packages/app/src/assets/file-icons/folder-connection.svg
new file mode 100644
index 000000000..f46d5264c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-connection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-console-open.svg b/packages/app/src/assets/file-icons/folder-console-open.svg
new file mode 100644
index 000000000..99384a809
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-console-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-console.svg b/packages/app/src/assets/file-icons/folder-console.svg
new file mode 100644
index 000000000..301b10d73
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-console.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-constant-open.svg b/packages/app/src/assets/file-icons/folder-constant-open.svg
new file mode 100644
index 000000000..9e8791d45
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-constant-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-constant.svg b/packages/app/src/assets/file-icons/folder-constant.svg
new file mode 100644
index 000000000..99a22917a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-constant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-container-open.svg b/packages/app/src/assets/file-icons/folder-container-open.svg
new file mode 100644
index 000000000..9db833471
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-container-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-container.svg b/packages/app/src/assets/file-icons/folder-container.svg
new file mode 100644
index 000000000..3ea03c165
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-container.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-content-open.svg b/packages/app/src/assets/file-icons/folder-content-open.svg
new file mode 100644
index 000000000..a924b27aa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-content-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-content.svg b/packages/app/src/assets/file-icons/folder-content.svg
new file mode 100644
index 000000000..23f57d243
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-content.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-context-open.svg b/packages/app/src/assets/file-icons/folder-context-open.svg
new file mode 100644
index 000000000..a631e02e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-context-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-context.svg b/packages/app/src/assets/file-icons/folder-context.svg
new file mode 100644
index 000000000..bee74c196
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-context.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-contract-open.svg b/packages/app/src/assets/file-icons/folder-contract-open.svg
new file mode 100644
index 000000000..6878c76f6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-contract-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-contract.svg b/packages/app/src/assets/file-icons/folder-contract.svg
new file mode 100644
index 000000000..2ea0abb11
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-contract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-controller-open.svg b/packages/app/src/assets/file-icons/folder-controller-open.svg
new file mode 100644
index 000000000..a732ed1a0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-controller-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-controller.svg b/packages/app/src/assets/file-icons/folder-controller.svg
new file mode 100644
index 000000000..f98cd6fea
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-controller.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-core-open.svg b/packages/app/src/assets/file-icons/folder-core-open.svg
new file mode 100644
index 000000000..34e7a82d2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-core-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-core.svg b/packages/app/src/assets/file-icons/folder-core.svg
new file mode 100644
index 000000000..f7cfae6ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-core.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-coverage-open.svg b/packages/app/src/assets/file-icons/folder-coverage-open.svg
new file mode 100644
index 000000000..5d47b2f0b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-coverage-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-coverage.svg b/packages/app/src/assets/file-icons/folder-coverage.svg
new file mode 100644
index 000000000..7a75f7166
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-coverage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-css-open.svg b/packages/app/src/assets/file-icons/folder-css-open.svg
new file mode 100644
index 000000000..ef79791fc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-css-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-css.svg b/packages/app/src/assets/file-icons/folder-css.svg
new file mode 100644
index 000000000..4ff433e92
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-css.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor-open.svg b/packages/app/src/assets/file-icons/folder-cursor-open.svg
new file mode 100644
index 000000000..b6e106848
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cursor-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor-open_light.svg b/packages/app/src/assets/file-icons/folder-cursor-open_light.svg
new file mode 100644
index 000000000..c960112de
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cursor-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor.svg b/packages/app/src/assets/file-icons/folder-cursor.svg
new file mode 100644
index 000000000..46726088c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cursor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor_light.svg b/packages/app/src/assets/file-icons/folder-cursor_light.svg
new file mode 100644
index 000000000..391be56af
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cursor_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-custom-open.svg b/packages/app/src/assets/file-icons/folder-custom-open.svg
new file mode 100644
index 000000000..fe747d217
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-custom-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-custom.svg b/packages/app/src/assets/file-icons/folder-custom.svg
new file mode 100644
index 000000000..02ac61100
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-custom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cypress-open.svg b/packages/app/src/assets/file-icons/folder-cypress-open.svg
new file mode 100644
index 000000000..2a18521a2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cypress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cypress.svg b/packages/app/src/assets/file-icons/folder-cypress.svg
new file mode 100644
index 000000000..39460e229
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-cypress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dart-open.svg b/packages/app/src/assets/file-icons/folder-dart-open.svg
new file mode 100644
index 000000000..8eadca02e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dart-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dart.svg b/packages/app/src/assets/file-icons/folder-dart.svg
new file mode 100644
index 000000000..0de15182d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-database-open.svg b/packages/app/src/assets/file-icons/folder-database-open.svg
new file mode 100644
index 000000000..5bde14607
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-database-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-database.svg b/packages/app/src/assets/file-icons/folder-database.svg
new file mode 100644
index 000000000..b256e645c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-debug-open.svg b/packages/app/src/assets/file-icons/folder-debug-open.svg
new file mode 100644
index 000000000..a0c16a741
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-debug-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-debug.svg b/packages/app/src/assets/file-icons/folder-debug.svg
new file mode 100644
index 000000000..1099873ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-debug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-decorators-open.svg b/packages/app/src/assets/file-icons/folder-decorators-open.svg
new file mode 100644
index 000000000..ff42ddeec
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-decorators-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-decorators.svg b/packages/app/src/assets/file-icons/folder-decorators.svg
new file mode 100644
index 000000000..fcc746dc5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-decorators.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-delta-open.svg b/packages/app/src/assets/file-icons/folder-delta-open.svg
new file mode 100644
index 000000000..c2b56636e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-delta-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-delta.svg b/packages/app/src/assets/file-icons/folder-delta.svg
new file mode 100644
index 000000000..cdda479a1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-delta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-desktop-open.svg b/packages/app/src/assets/file-icons/folder-desktop-open.svg
new file mode 100644
index 000000000..880ca769b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-desktop-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-desktop.svg b/packages/app/src/assets/file-icons/folder-desktop.svg
new file mode 100644
index 000000000..5a20b4960
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-desktop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-directive-open.svg b/packages/app/src/assets/file-icons/folder-directive-open.svg
new file mode 100644
index 000000000..71946e510
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-directive-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-directive.svg b/packages/app/src/assets/file-icons/folder-directive.svg
new file mode 100644
index 000000000..4197c6803
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-directive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dist-open.svg b/packages/app/src/assets/file-icons/folder-dist-open.svg
new file mode 100644
index 000000000..553cef1cb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dist-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dist.svg b/packages/app/src/assets/file-icons/folder-dist.svg
new file mode 100644
index 000000000..995580fda
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docker-open.svg b/packages/app/src/assets/file-icons/folder-docker-open.svg
new file mode 100644
index 000000000..a76e97b94
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-docker-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docker.svg b/packages/app/src/assets/file-icons/folder-docker.svg
new file mode 100644
index 000000000..c5b094999
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docs-open.svg b/packages/app/src/assets/file-icons/folder-docs-open.svg
new file mode 100644
index 000000000..357776702
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-docs-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docs.svg b/packages/app/src/assets/file-icons/folder-docs.svg
new file mode 100644
index 000000000..246a05d2e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-docs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-download-open.svg b/packages/app/src/assets/file-icons/folder-download-open.svg
new file mode 100644
index 000000000..ddb9c2416
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-download-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-download.svg b/packages/app/src/assets/file-icons/folder-download.svg
new file mode 100644
index 000000000..34105b932
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-drizzle-open.svg b/packages/app/src/assets/file-icons/folder-drizzle-open.svg
new file mode 100644
index 000000000..5f0cd591a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-drizzle-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-drizzle.svg b/packages/app/src/assets/file-icons/folder-drizzle.svg
new file mode 100644
index 000000000..d01a18618
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-drizzle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dump-open.svg b/packages/app/src/assets/file-icons/folder-dump-open.svg
new file mode 100644
index 000000000..b4de7f861
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dump-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dump.svg b/packages/app/src/assets/file-icons/folder-dump.svg
new file mode 100644
index 000000000..8178fcc03
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-dump.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-element-open.svg b/packages/app/src/assets/file-icons/folder-element-open.svg
new file mode 100644
index 000000000..32dc7cd87
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-element-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-element.svg b/packages/app/src/assets/file-icons/folder-element.svg
new file mode 100644
index 000000000..d67a85ade
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-element.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-enum-open.svg b/packages/app/src/assets/file-icons/folder-enum-open.svg
new file mode 100644
index 000000000..92782b157
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-enum-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-enum.svg b/packages/app/src/assets/file-icons/folder-enum.svg
new file mode 100644
index 000000000..fa852efd8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-enum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-environment-open.svg b/packages/app/src/assets/file-icons/folder-environment-open.svg
new file mode 100644
index 000000000..3b56abb18
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-environment-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-environment.svg b/packages/app/src/assets/file-icons/folder-environment.svg
new file mode 100644
index 000000000..9cc1f2e00
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-environment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-error-open.svg b/packages/app/src/assets/file-icons/folder-error-open.svg
new file mode 100644
index 000000000..81f0ffc20
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-error-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-error.svg b/packages/app/src/assets/file-icons/folder-error.svg
new file mode 100644
index 000000000..3bd1d85d6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-event-open.svg b/packages/app/src/assets/file-icons/folder-event-open.svg
new file mode 100644
index 000000000..28c018d44
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-event-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-event.svg b/packages/app/src/assets/file-icons/folder-event.svg
new file mode 100644
index 000000000..f54dea6d8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-event.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-examples-open.svg b/packages/app/src/assets/file-icons/folder-examples-open.svg
new file mode 100644
index 000000000..78c77a918
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-examples-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-examples.svg b/packages/app/src/assets/file-icons/folder-examples.svg
new file mode 100644
index 000000000..fba8885ab
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-examples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-expo-open.svg b/packages/app/src/assets/file-icons/folder-expo-open.svg
new file mode 100644
index 000000000..614435aba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-expo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-expo.svg b/packages/app/src/assets/file-icons/folder-expo.svg
new file mode 100644
index 000000000..820a998b6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-expo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-export-open.svg b/packages/app/src/assets/file-icons/folder-export-open.svg
new file mode 100644
index 000000000..f03eb1bba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-export-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-export.svg b/packages/app/src/assets/file-icons/folder-export.svg
new file mode 100644
index 000000000..1b3e3abe7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-export.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-fastlane-open.svg b/packages/app/src/assets/file-icons/folder-fastlane-open.svg
new file mode 100644
index 000000000..5efb2acad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-fastlane-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-fastlane.svg b/packages/app/src/assets/file-icons/folder-fastlane.svg
new file mode 100644
index 000000000..eb9056694
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-fastlane.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-favicon-open.svg b/packages/app/src/assets/file-icons/folder-favicon-open.svg
new file mode 100644
index 000000000..b716525ab
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-favicon-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-favicon.svg b/packages/app/src/assets/file-icons/folder-favicon.svg
new file mode 100644
index 000000000..6ef90d91c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firebase-open.svg b/packages/app/src/assets/file-icons/folder-firebase-open.svg
new file mode 100644
index 000000000..7149b48f6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-firebase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firebase.svg b/packages/app/src/assets/file-icons/folder-firebase.svg
new file mode 100644
index 000000000..9eeac86b9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-firebase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firestore-open.svg b/packages/app/src/assets/file-icons/folder-firestore-open.svg
new file mode 100644
index 000000000..a3e6edac7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-firestore-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firestore.svg b/packages/app/src/assets/file-icons/folder-firestore.svg
new file mode 100644
index 000000000..cb1249af0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-firestore.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-flow-open.svg b/packages/app/src/assets/file-icons/folder-flow-open.svg
new file mode 100644
index 000000000..a72dd76b7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-flow-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-flow.svg b/packages/app/src/assets/file-icons/folder-flow.svg
new file mode 100644
index 000000000..015518922
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-flow.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-flutter-open.svg b/packages/app/src/assets/file-icons/folder-flutter-open.svg
new file mode 100644
index 000000000..b95a8cee7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-flutter-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-flutter.svg b/packages/app/src/assets/file-icons/folder-flutter.svg
new file mode 100644
index 000000000..e5ffced14
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-flutter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-font-open.svg b/packages/app/src/assets/file-icons/folder-font-open.svg
new file mode 100644
index 000000000..1a91f0b19
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-font-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-font.svg b/packages/app/src/assets/file-icons/folder-font.svg
new file mode 100644
index 000000000..0115b7301
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-font.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-forgejo-open.svg b/packages/app/src/assets/file-icons/folder-forgejo-open.svg
new file mode 100644
index 000000000..a9762228e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-forgejo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-forgejo.svg b/packages/app/src/assets/file-icons/folder-forgejo.svg
new file mode 100644
index 000000000..0eaccff60
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-forgejo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-functions-open.svg b/packages/app/src/assets/file-icons/folder-functions-open.svg
new file mode 100644
index 000000000..00d6dc442
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-functions-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-functions.svg b/packages/app/src/assets/file-icons/folder-functions.svg
new file mode 100644
index 000000000..01a938514
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-functions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gamemaker-open.svg b/packages/app/src/assets/file-icons/folder-gamemaker-open.svg
new file mode 100644
index 000000000..caf9a82ea
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gamemaker-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gamemaker.svg b/packages/app/src/assets/file-icons/folder-gamemaker.svg
new file mode 100644
index 000000000..625feb382
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gamemaker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-generator-open.svg b/packages/app/src/assets/file-icons/folder-generator-open.svg
new file mode 100644
index 000000000..43b504732
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-generator-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-generator.svg b/packages/app/src/assets/file-icons/folder-generator.svg
new file mode 100644
index 000000000..5446582e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-generator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg b/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg
new file mode 100644
index 000000000..3ae400ed9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows.svg b/packages/app/src/assets/file-icons/folder-gh-workflows.svg
new file mode 100644
index 000000000..3a868cca9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gh-workflows.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-git-open.svg b/packages/app/src/assets/file-icons/folder-git-open.svg
new file mode 100644
index 000000000..90be1c118
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-git-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-git.svg b/packages/app/src/assets/file-icons/folder-git.svg
new file mode 100644
index 000000000..2ca4db551
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitea-open.svg b/packages/app/src/assets/file-icons/folder-gitea-open.svg
new file mode 100644
index 000000000..239800c47
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gitea-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitea.svg b/packages/app/src/assets/file-icons/folder-gitea.svg
new file mode 100644
index 000000000..ac041b325
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gitea.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-github-open.svg b/packages/app/src/assets/file-icons/folder-github-open.svg
new file mode 100644
index 000000000..84e5bee84
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-github-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-github.svg b/packages/app/src/assets/file-icons/folder-github.svg
new file mode 100644
index 000000000..374bcae0b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-github.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-gitlab-open.svg b/packages/app/src/assets/file-icons/folder-gitlab-open.svg
new file mode 100644
index 000000000..fc4deb295
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gitlab-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitlab.svg b/packages/app/src/assets/file-icons/folder-gitlab.svg
new file mode 100644
index 000000000..55db99e0d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-global-open.svg b/packages/app/src/assets/file-icons/folder-global-open.svg
new file mode 100644
index 000000000..13e72e070
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-global-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-global.svg b/packages/app/src/assets/file-icons/folder-global.svg
new file mode 100644
index 000000000..8ada6a6dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-global.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-godot-open.svg b/packages/app/src/assets/file-icons/folder-godot-open.svg
new file mode 100644
index 000000000..fd785504a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-godot-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-godot.svg b/packages/app/src/assets/file-icons/folder-godot.svg
new file mode 100644
index 000000000..dc4b5d10b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-godot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gradle-open.svg b/packages/app/src/assets/file-icons/folder-gradle-open.svg
new file mode 100644
index 000000000..51725e722
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gradle-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gradle.svg b/packages/app/src/assets/file-icons/folder-gradle.svg
new file mode 100644
index 000000000..93e843d2b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gradle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-graphql-open.svg b/packages/app/src/assets/file-icons/folder-graphql-open.svg
new file mode 100644
index 000000000..ac2365092
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-graphql-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-graphql.svg b/packages/app/src/assets/file-icons/folder-graphql.svg
new file mode 100644
index 000000000..1d7b1cc68
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-graphql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-guard-open.svg b/packages/app/src/assets/file-icons/folder-guard-open.svg
new file mode 100644
index 000000000..f7031e257
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-guard-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-guard.svg b/packages/app/src/assets/file-icons/folder-guard.svg
new file mode 100644
index 000000000..b4269ed22
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-guard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gulp-open.svg b/packages/app/src/assets/file-icons/folder-gulp-open.svg
new file mode 100644
index 000000000..556e7399a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gulp-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gulp.svg b/packages/app/src/assets/file-icons/folder-gulp.svg
new file mode 100644
index 000000000..339523138
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-gulp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helm-open.svg b/packages/app/src/assets/file-icons/folder-helm-open.svg
new file mode 100644
index 000000000..6bbf0cc6d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-helm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helm.svg b/packages/app/src/assets/file-icons/folder-helm.svg
new file mode 100644
index 000000000..7b7d7a7a4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-helm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helper-open.svg b/packages/app/src/assets/file-icons/folder-helper-open.svg
new file mode 100644
index 000000000..6fca39118
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-helper-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helper.svg b/packages/app/src/assets/file-icons/folder-helper.svg
new file mode 100644
index 000000000..27a20d43c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-helper.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-home-open.svg b/packages/app/src/assets/file-icons/folder-home-open.svg
new file mode 100644
index 000000000..8b0f0ca01
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-home-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-home.svg b/packages/app/src/assets/file-icons/folder-home.svg
new file mode 100644
index 000000000..a4deeef4a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-home.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-hook-open.svg b/packages/app/src/assets/file-icons/folder-hook-open.svg
new file mode 100644
index 000000000..17d62310d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-hook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-hook.svg b/packages/app/src/assets/file-icons/folder-hook.svg
new file mode 100644
index 000000000..2105709e2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-hook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-husky-open.svg b/packages/app/src/assets/file-icons/folder-husky-open.svg
new file mode 100644
index 000000000..88c19e895
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-husky-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-husky.svg b/packages/app/src/assets/file-icons/folder-husky.svg
new file mode 100644
index 000000000..1bbdc4c37
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-husky.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-i18n-open.svg b/packages/app/src/assets/file-icons/folder-i18n-open.svg
new file mode 100644
index 000000000..bc1a53c0f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-i18n-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-i18n.svg b/packages/app/src/assets/file-icons/folder-i18n.svg
new file mode 100644
index 000000000..6ef028377
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-i18n.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-images-open.svg b/packages/app/src/assets/file-icons/folder-images-open.svg
new file mode 100644
index 000000000..44a673b14
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-images-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-images.svg b/packages/app/src/assets/file-icons/folder-images.svg
new file mode 100644
index 000000000..5b63a6c3a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-images.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-import-open.svg b/packages/app/src/assets/file-icons/folder-import-open.svg
new file mode 100644
index 000000000..a58a7e64f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-import-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-import.svg b/packages/app/src/assets/file-icons/folder-import.svg
new file mode 100644
index 000000000..0c0f42e57
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-import.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-include-open.svg b/packages/app/src/assets/file-icons/folder-include-open.svg
new file mode 100644
index 000000000..fc2c011ba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-include-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-include.svg b/packages/app/src/assets/file-icons/folder-include.svg
new file mode 100644
index 000000000..117b91a2c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-include.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-intellij-open.svg b/packages/app/src/assets/file-icons/folder-intellij-open.svg
new file mode 100644
index 000000000..5839a2b1c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-intellij-open.svg
@@ -0,0 +1,39 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-intellij-open_light.svg b/packages/app/src/assets/file-icons/folder-intellij-open_light.svg
new file mode 100644
index 000000000..ccb6046bb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-intellij-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-intellij.svg b/packages/app/src/assets/file-icons/folder-intellij.svg
new file mode 100644
index 000000000..c655f37ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-intellij.svg
@@ -0,0 +1,39 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-intellij_light.svg b/packages/app/src/assets/file-icons/folder-intellij_light.svg
new file mode 100644
index 000000000..97bc8c7bd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-intellij_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interceptor-open.svg b/packages/app/src/assets/file-icons/folder-interceptor-open.svg
new file mode 100644
index 000000000..c91c42ad9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-interceptor-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interceptor.svg b/packages/app/src/assets/file-icons/folder-interceptor.svg
new file mode 100644
index 000000000..e6cbf9f5c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-interceptor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interface-open.svg b/packages/app/src/assets/file-icons/folder-interface-open.svg
new file mode 100644
index 000000000..ba54b0ec8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-interface-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interface.svg b/packages/app/src/assets/file-icons/folder-interface.svg
new file mode 100644
index 000000000..993ce7258
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-interface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ios-open.svg b/packages/app/src/assets/file-icons/folder-ios-open.svg
new file mode 100644
index 000000000..112fee6a4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ios-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ios.svg b/packages/app/src/assets/file-icons/folder-ios.svg
new file mode 100644
index 000000000..7af3b85da
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ios.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-java-open.svg b/packages/app/src/assets/file-icons/folder-java-open.svg
new file mode 100644
index 000000000..eb59229cd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-java-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-java.svg b/packages/app/src/assets/file-icons/folder-java.svg
new file mode 100644
index 000000000..58fdd3db5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-javascript-open.svg b/packages/app/src/assets/file-icons/folder-javascript-open.svg
new file mode 100644
index 000000000..581f3a273
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-javascript-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-javascript.svg b/packages/app/src/assets/file-icons/folder-javascript.svg
new file mode 100644
index 000000000..97cf04cc2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja-open.svg b/packages/app/src/assets/file-icons/folder-jinja-open.svg
new file mode 100644
index 000000000..9c0b2b6eb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jinja-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja-open_light.svg b/packages/app/src/assets/file-icons/folder-jinja-open_light.svg
new file mode 100644
index 000000000..ffc940faa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jinja-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja.svg b/packages/app/src/assets/file-icons/folder-jinja.svg
new file mode 100644
index 000000000..687efe3d2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jinja.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja_light.svg b/packages/app/src/assets/file-icons/folder-jinja_light.svg
new file mode 100644
index 000000000..c2b08bb7f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jinja_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-job-open.svg b/packages/app/src/assets/file-icons/folder-job-open.svg
new file mode 100644
index 000000000..efd7cdfbf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-job-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-job.svg b/packages/app/src/assets/file-icons/folder-job.svg
new file mode 100644
index 000000000..9135aff33
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-job.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-json-open.svg b/packages/app/src/assets/file-icons/folder-json-open.svg
new file mode 100644
index 000000000..29cdf2f66
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-json-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-json.svg b/packages/app/src/assets/file-icons/folder-json.svg
new file mode 100644
index 000000000..34085f6a9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-json.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jupyter-open.svg b/packages/app/src/assets/file-icons/folder-jupyter-open.svg
new file mode 100644
index 000000000..d431953fc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jupyter-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jupyter.svg b/packages/app/src/assets/file-icons/folder-jupyter.svg
new file mode 100644
index 000000000..d4d3eb35e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-jupyter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-keys-open.svg b/packages/app/src/assets/file-icons/folder-keys-open.svg
new file mode 100644
index 000000000..783b16e98
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-keys-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-keys.svg b/packages/app/src/assets/file-icons/folder-keys.svg
new file mode 100644
index 000000000..3527f6220
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-keys.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kubernetes-open.svg b/packages/app/src/assets/file-icons/folder-kubernetes-open.svg
new file mode 100644
index 000000000..022be4de7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-kubernetes-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kubernetes.svg b/packages/app/src/assets/file-icons/folder-kubernetes.svg
new file mode 100644
index 000000000..b60d83d85
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-kubernetes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kusto-open.svg b/packages/app/src/assets/file-icons/folder-kusto-open.svg
new file mode 100644
index 000000000..4ea80cac0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-kusto-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kusto.svg b/packages/app/src/assets/file-icons/folder-kusto.svg
new file mode 100644
index 000000000..fa71096a4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-kusto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-layout-open.svg b/packages/app/src/assets/file-icons/folder-layout-open.svg
new file mode 100644
index 000000000..f8f1def9c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-layout-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-layout.svg b/packages/app/src/assets/file-icons/folder-layout.svg
new file mode 100644
index 000000000..3d773bc4f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-layout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lefthook-open.svg b/packages/app/src/assets/file-icons/folder-lefthook-open.svg
new file mode 100644
index 000000000..a2694ba69
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lefthook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lefthook.svg b/packages/app/src/assets/file-icons/folder-lefthook.svg
new file mode 100644
index 000000000..0c7eb274c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lefthook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-less-open.svg b/packages/app/src/assets/file-icons/folder-less-open.svg
new file mode 100644
index 000000000..3419b0a9d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-less-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-less.svg b/packages/app/src/assets/file-icons/folder-less.svg
new file mode 100644
index 000000000..b6abc5ecd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-less.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lib-open.svg b/packages/app/src/assets/file-icons/folder-lib-open.svg
new file mode 100644
index 000000000..8c4443168
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lib-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lib.svg b/packages/app/src/assets/file-icons/folder-lib.svg
new file mode 100644
index 000000000..4e752857a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lib.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-link-open.svg b/packages/app/src/assets/file-icons/folder-link-open.svg
new file mode 100644
index 000000000..817d0d588
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-link-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-link.svg b/packages/app/src/assets/file-icons/folder-link.svg
new file mode 100644
index 000000000..48a8bbe84
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-linux-open.svg b/packages/app/src/assets/file-icons/folder-linux-open.svg
new file mode 100644
index 000000000..8517b35df
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-linux-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-linux.svg b/packages/app/src/assets/file-icons/folder-linux.svg
new file mode 100644
index 000000000..df4d2293e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-liquibase-open.svg b/packages/app/src/assets/file-icons/folder-liquibase-open.svg
new file mode 100644
index 000000000..2fe7ba65f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-liquibase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-liquibase.svg b/packages/app/src/assets/file-icons/folder-liquibase.svg
new file mode 100644
index 000000000..aea076ac1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-liquibase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-log-open.svg b/packages/app/src/assets/file-icons/folder-log-open.svg
new file mode 100644
index 000000000..a78771ea1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-log-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-log.svg b/packages/app/src/assets/file-icons/folder-log.svg
new file mode 100644
index 000000000..b2ba6a582
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lottie-open.svg b/packages/app/src/assets/file-icons/folder-lottie-open.svg
new file mode 100644
index 000000000..adca02541
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lottie-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lottie.svg b/packages/app/src/assets/file-icons/folder-lottie.svg
new file mode 100644
index 000000000..4d7fe341d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lottie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lua-open.svg b/packages/app/src/assets/file-icons/folder-lua-open.svg
new file mode 100644
index 000000000..cb2ea6efb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lua-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lua.svg b/packages/app/src/assets/file-icons/folder-lua.svg
new file mode 100644
index 000000000..e32819b9f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-lua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-luau-open.svg b/packages/app/src/assets/file-icons/folder-luau-open.svg
new file mode 100644
index 000000000..2b113b473
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-luau-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-luau.svg b/packages/app/src/assets/file-icons/folder-luau.svg
new file mode 100644
index 000000000..a6b455176
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-luau.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-macos-open.svg b/packages/app/src/assets/file-icons/folder-macos-open.svg
new file mode 100644
index 000000000..8d0280ae9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-macos-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-macos.svg b/packages/app/src/assets/file-icons/folder-macos.svg
new file mode 100644
index 000000000..6afe2ed2a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-macos.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-mail-open.svg b/packages/app/src/assets/file-icons/folder-mail-open.svg
new file mode 100644
index 000000000..27774cf1d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mail-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mail.svg b/packages/app/src/assets/file-icons/folder-mail.svg
new file mode 100644
index 000000000..513e4b1be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mappings-open.svg b/packages/app/src/assets/file-icons/folder-mappings-open.svg
new file mode 100644
index 000000000..510d06b76
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mappings-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mappings.svg b/packages/app/src/assets/file-icons/folder-mappings.svg
new file mode 100644
index 000000000..53b58e05f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mappings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-markdown-open.svg b/packages/app/src/assets/file-icons/folder-markdown-open.svg
new file mode 100644
index 000000000..75ef9044e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-markdown-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-markdown.svg b/packages/app/src/assets/file-icons/folder-markdown.svg
new file mode 100644
index 000000000..5df5d0a59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mercurial-open.svg b/packages/app/src/assets/file-icons/folder-mercurial-open.svg
new file mode 100644
index 000000000..74bbb9da1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mercurial-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mercurial.svg b/packages/app/src/assets/file-icons/folder-mercurial.svg
new file mode 100644
index 000000000..5175b8ea6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mercurial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-messages-open.svg b/packages/app/src/assets/file-icons/folder-messages-open.svg
new file mode 100644
index 000000000..2701529cf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-messages-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-messages.svg b/packages/app/src/assets/file-icons/folder-messages.svg
new file mode 100644
index 000000000..ab3e2f8c1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-messages.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-meta-open.svg b/packages/app/src/assets/file-icons/folder-meta-open.svg
new file mode 100644
index 000000000..de1fd82ad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-meta-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-meta.svg b/packages/app/src/assets/file-icons/folder-meta.svg
new file mode 100644
index 000000000..3a1b90add
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-meta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-middleware-open.svg b/packages/app/src/assets/file-icons/folder-middleware-open.svg
new file mode 100644
index 000000000..346954c3b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-middleware-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-middleware.svg b/packages/app/src/assets/file-icons/folder-middleware.svg
new file mode 100644
index 000000000..f12c99de2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-middleware.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mjml-open.svg b/packages/app/src/assets/file-icons/folder-mjml-open.svg
new file mode 100644
index 000000000..81843f0e5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mjml-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mjml.svg b/packages/app/src/assets/file-icons/folder-mjml.svg
new file mode 100644
index 000000000..8d7f06703
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mjml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mobile-open.svg b/packages/app/src/assets/file-icons/folder-mobile-open.svg
new file mode 100644
index 000000000..6a5a39b6b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mobile-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mobile.svg b/packages/app/src/assets/file-icons/folder-mobile.svg
new file mode 100644
index 000000000..03aab1333
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mobile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mock-open.svg b/packages/app/src/assets/file-icons/folder-mock-open.svg
new file mode 100644
index 000000000..c92929c6a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mock-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mock.svg b/packages/app/src/assets/file-icons/folder-mock.svg
new file mode 100644
index 000000000..22f88e55a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mojo-open.svg b/packages/app/src/assets/file-icons/folder-mojo-open.svg
new file mode 100644
index 000000000..ce5b9be2d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mojo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mojo.svg b/packages/app/src/assets/file-icons/folder-mojo.svg
new file mode 100644
index 000000000..67f753755
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-mojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-molecule-open.svg b/packages/app/src/assets/file-icons/folder-molecule-open.svg
new file mode 100644
index 000000000..846e2f9de
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-molecule-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-molecule.svg b/packages/app/src/assets/file-icons/folder-molecule.svg
new file mode 100644
index 000000000..9c7905eca
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-molecule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-moon-open.svg b/packages/app/src/assets/file-icons/folder-moon-open.svg
new file mode 100644
index 000000000..f2da8ddd0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-moon-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-moon.svg b/packages/app/src/assets/file-icons/folder-moon.svg
new file mode 100644
index 000000000..06613deb5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-moon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-netlify-open.svg b/packages/app/src/assets/file-icons/folder-netlify-open.svg
new file mode 100644
index 000000000..d6f63b776
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-netlify-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-netlify.svg b/packages/app/src/assets/file-icons/folder-netlify.svg
new file mode 100644
index 000000000..5473f42cd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-netlify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-next-open.svg b/packages/app/src/assets/file-icons/folder-next-open.svg
new file mode 100644
index 000000000..c8709cac3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-next-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-next.svg b/packages/app/src/assets/file-icons/folder-next.svg
new file mode 100644
index 000000000..cab1e8fca
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-next.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg b/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg
new file mode 100644
index 000000000..2c8514ef2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store.svg b/packages/app/src/assets/file-icons/folder-ngrx-store.svg
new file mode 100644
index 000000000..1f9cb2d59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ngrx-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-node-open.svg b/packages/app/src/assets/file-icons/folder-node-open.svg
new file mode 100644
index 000000000..a785ed3d6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-node-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-node.svg b/packages/app/src/assets/file-icons/folder-node.svg
new file mode 100644
index 000000000..fb47492b9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-node.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-nuxt-open.svg b/packages/app/src/assets/file-icons/folder-nuxt-open.svg
new file mode 100644
index 000000000..c49ff8d21
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-nuxt-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-nuxt.svg b/packages/app/src/assets/file-icons/folder-nuxt.svg
new file mode 100644
index 000000000..a0a52b06e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-nuxt.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-obsidian-open.svg b/packages/app/src/assets/file-icons/folder-obsidian-open.svg
new file mode 100644
index 000000000..f7d1305ea
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-obsidian-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-obsidian.svg b/packages/app/src/assets/file-icons/folder-obsidian.svg
new file mode 100644
index 000000000..cd16a528a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-obsidian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-open.svg b/packages/app/src/assets/file-icons/folder-open.svg
new file mode 100644
index 000000000..eac89185e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-open.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-organism-open.svg b/packages/app/src/assets/file-icons/folder-organism-open.svg
new file mode 100644
index 000000000..6be44d2b0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-organism-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-organism.svg b/packages/app/src/assets/file-icons/folder-organism.svg
new file mode 100644
index 000000000..50092a098
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-organism.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-other-open.svg b/packages/app/src/assets/file-icons/folder-other-open.svg
new file mode 100644
index 000000000..ea4144f48
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-other-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-other.svg b/packages/app/src/assets/file-icons/folder-other.svg
new file mode 100644
index 000000000..df3d27f26
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-other.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-packages-open.svg b/packages/app/src/assets/file-icons/folder-packages-open.svg
new file mode 100644
index 000000000..7ac6075e6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-packages-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-packages.svg b/packages/app/src/assets/file-icons/folder-packages.svg
new file mode 100644
index 000000000..9ba67cb9a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-packages.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdf-open.svg b/packages/app/src/assets/file-icons/folder-pdf-open.svg
new file mode 100644
index 000000000..fdeccb04b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pdf-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdf.svg b/packages/app/src/assets/file-icons/folder-pdf.svg
new file mode 100644
index 000000000..db0ace7e2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdm-open.svg b/packages/app/src/assets/file-icons/folder-pdm-open.svg
new file mode 100644
index 000000000..6145f798b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pdm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdm.svg b/packages/app/src/assets/file-icons/folder-pdm.svg
new file mode 100644
index 000000000..9508547ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pdm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-php-open.svg b/packages/app/src/assets/file-icons/folder-php-open.svg
new file mode 100644
index 000000000..2059a9b90
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-php-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-php.svg b/packages/app/src/assets/file-icons/folder-php.svg
new file mode 100644
index 000000000..4304e179d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-phpmailer-open.svg b/packages/app/src/assets/file-icons/folder-phpmailer-open.svg
new file mode 100644
index 000000000..26388bb3f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-phpmailer-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-phpmailer.svg b/packages/app/src/assets/file-icons/folder-phpmailer.svg
new file mode 100644
index 000000000..18f696c1c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-phpmailer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pipe-open.svg b/packages/app/src/assets/file-icons/folder-pipe-open.svg
new file mode 100644
index 000000000..8aacef08d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pipe-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pipe.svg b/packages/app/src/assets/file-icons/folder-pipe.svg
new file mode 100644
index 000000000..9ba5d0adb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pipe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plastic-open.svg b/packages/app/src/assets/file-icons/folder-plastic-open.svg
new file mode 100644
index 000000000..b93a541f1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-plastic-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plastic.svg b/packages/app/src/assets/file-icons/folder-plastic.svg
new file mode 100644
index 000000000..5e595f320
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-plastic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plugin-open.svg b/packages/app/src/assets/file-icons/folder-plugin-open.svg
new file mode 100644
index 000000000..5a7f03a4d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-plugin-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plugin.svg b/packages/app/src/assets/file-icons/folder-plugin.svg
new file mode 100644
index 000000000..14a315457
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-plugin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-policy-open.svg b/packages/app/src/assets/file-icons/folder-policy-open.svg
new file mode 100644
index 000000000..c2b51d459
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-policy-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-policy.svg b/packages/app/src/assets/file-icons/folder-policy.svg
new file mode 100644
index 000000000..1b1781d59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-policy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-powershell-open.svg b/packages/app/src/assets/file-icons/folder-powershell-open.svg
new file mode 100644
index 000000000..be4b458be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-powershell-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-powershell.svg b/packages/app/src/assets/file-icons/folder-powershell.svg
new file mode 100644
index 000000000..6f28098de
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prisma-open.svg b/packages/app/src/assets/file-icons/folder-prisma-open.svg
new file mode 100644
index 000000000..95df8ba0e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-prisma-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prisma.svg b/packages/app/src/assets/file-icons/folder-prisma.svg
new file mode 100644
index 000000000..a166ebd1e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-prisma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-private-open.svg b/packages/app/src/assets/file-icons/folder-private-open.svg
new file mode 100644
index 000000000..19094be89
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-private-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-private.svg b/packages/app/src/assets/file-icons/folder-private.svg
new file mode 100644
index 000000000..da95ecec4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-private.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-project-open.svg b/packages/app/src/assets/file-icons/folder-project-open.svg
new file mode 100644
index 000000000..9da28620e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-project-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-project.svg b/packages/app/src/assets/file-icons/folder-project.svg
new file mode 100644
index 000000000..f575aa014
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-project.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prompts-open.svg b/packages/app/src/assets/file-icons/folder-prompts-open.svg
new file mode 100644
index 000000000..5ed3346fb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-prompts-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prompts.svg b/packages/app/src/assets/file-icons/folder-prompts.svg
new file mode 100644
index 000000000..969535bf5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-prompts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-proto-open.svg b/packages/app/src/assets/file-icons/folder-proto-open.svg
new file mode 100644
index 000000000..710de39b5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-proto-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-proto.svg b/packages/app/src/assets/file-icons/folder-proto.svg
new file mode 100644
index 000000000..935fcbc5d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-proto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-public-open.svg b/packages/app/src/assets/file-icons/folder-public-open.svg
new file mode 100644
index 000000000..04449ed55
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-public-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-public.svg b/packages/app/src/assets/file-icons/folder-public.svg
new file mode 100644
index 000000000..ea599391d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-public.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-python-open.svg b/packages/app/src/assets/file-icons/folder-python-open.svg
new file mode 100644
index 000000000..dbfc367aa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-python-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-python.svg b/packages/app/src/assets/file-icons/folder-python.svg
new file mode 100644
index 000000000..aae07362e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-python.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pytorch-open.svg b/packages/app/src/assets/file-icons/folder-pytorch-open.svg
new file mode 100644
index 000000000..46f664f59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pytorch-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pytorch.svg b/packages/app/src/assets/file-icons/folder-pytorch.svg
new file mode 100644
index 000000000..2616b6bc0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-pytorch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-quasar-open.svg b/packages/app/src/assets/file-icons/folder-quasar-open.svg
new file mode 100644
index 000000000..5fb6b9288
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-quasar-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-quasar.svg b/packages/app/src/assets/file-icons/folder-quasar.svg
new file mode 100644
index 000000000..b098014e8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-quasar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-queue-open.svg b/packages/app/src/assets/file-icons/folder-queue-open.svg
new file mode 100644
index 000000000..5afa82181
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-queue-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-queue.svg b/packages/app/src/assets/file-icons/folder-queue.svg
new file mode 100644
index 000000000..244530406
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-queue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-react-components-open.svg b/packages/app/src/assets/file-icons/folder-react-components-open.svg
new file mode 100644
index 000000000..05af544b2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-react-components-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-react-components.svg b/packages/app/src/assets/file-icons/folder-react-components.svg
new file mode 100644
index 000000000..5f117a705
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-react-components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg b/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg
new file mode 100644
index 000000000..838bf52a2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer.svg b/packages/app/src/assets/file-icons/folder-redux-reducer.svg
new file mode 100644
index 000000000..a3b441f01
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-redux-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-repository-open.svg b/packages/app/src/assets/file-icons/folder-repository-open.svg
new file mode 100644
index 000000000..9c6275dbb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-repository-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-repository.svg b/packages/app/src/assets/file-icons/folder-repository.svg
new file mode 100644
index 000000000..4f7520651
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-repository.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resolver-open.svg b/packages/app/src/assets/file-icons/folder-resolver-open.svg
new file mode 100644
index 000000000..5a4b752e0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-resolver-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resolver.svg b/packages/app/src/assets/file-icons/folder-resolver.svg
new file mode 100644
index 000000000..c59a6b41f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-resolver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resource-open.svg b/packages/app/src/assets/file-icons/folder-resource-open.svg
new file mode 100644
index 000000000..0f534e10d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-resource-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resource.svg b/packages/app/src/assets/file-icons/folder-resource.svg
new file mode 100644
index 000000000..24a053af6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-review-open.svg b/packages/app/src/assets/file-icons/folder-review-open.svg
new file mode 100644
index 000000000..2384601dc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-review-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-review.svg b/packages/app/src/assets/file-icons/folder-review.svg
new file mode 100644
index 000000000..c7b138caa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-review.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-robot-open.svg b/packages/app/src/assets/file-icons/folder-robot-open.svg
new file mode 100644
index 000000000..cd501c411
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-robot-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-robot.svg b/packages/app/src/assets/file-icons/folder-robot.svg
new file mode 100644
index 000000000..fa582f494
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-robot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-routes-open.svg b/packages/app/src/assets/file-icons/folder-routes-open.svg
new file mode 100644
index 000000000..c9c875e44
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-routes-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-routes.svg b/packages/app/src/assets/file-icons/folder-routes.svg
new file mode 100644
index 000000000..2fb204dda
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-routes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rules-open.svg b/packages/app/src/assets/file-icons/folder-rules-open.svg
new file mode 100644
index 000000000..1f9c01f25
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-rules-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rules.svg b/packages/app/src/assets/file-icons/folder-rules.svg
new file mode 100644
index 000000000..baa5b615e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-rules.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rust-open.svg b/packages/app/src/assets/file-icons/folder-rust-open.svg
new file mode 100644
index 000000000..65be154ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-rust-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rust.svg b/packages/app/src/assets/file-icons/folder-rust.svg
new file mode 100644
index 000000000..afe65f6c4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-rust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sandbox-open.svg b/packages/app/src/assets/file-icons/folder-sandbox-open.svg
new file mode 100644
index 000000000..e0c7a064f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sandbox-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sandbox.svg b/packages/app/src/assets/file-icons/folder-sandbox.svg
new file mode 100644
index 000000000..4339173ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sandbox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sass-open.svg b/packages/app/src/assets/file-icons/folder-sass-open.svg
new file mode 100644
index 000000000..0a2a82e94
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sass-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sass.svg b/packages/app/src/assets/file-icons/folder-sass.svg
new file mode 100644
index 000000000..6f2873163
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scala-open.svg b/packages/app/src/assets/file-icons/folder-scala-open.svg
new file mode 100644
index 000000000..fb4aee7f6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scala-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scala.svg b/packages/app/src/assets/file-icons/folder-scala.svg
new file mode 100644
index 000000000..d78a07420
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scons-open.svg b/packages/app/src/assets/file-icons/folder-scons-open.svg
new file mode 100644
index 000000000..db8961210
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scons-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scons.svg b/packages/app/src/assets/file-icons/folder-scons.svg
new file mode 100644
index 000000000..aae02b46c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scripts-open.svg b/packages/app/src/assets/file-icons/folder-scripts-open.svg
new file mode 100644
index 000000000..981a43f78
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scripts-open.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-scripts.svg b/packages/app/src/assets/file-icons/folder-scripts.svg
new file mode 100644
index 000000000..4b755acb9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-scripts.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-secure-open.svg b/packages/app/src/assets/file-icons/folder-secure-open.svg
new file mode 100644
index 000000000..163f7da40
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-secure-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-secure.svg b/packages/app/src/assets/file-icons/folder-secure.svg
new file mode 100644
index 000000000..110093fb9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-secure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-seeders-open.svg b/packages/app/src/assets/file-icons/folder-seeders-open.svg
new file mode 100644
index 000000000..b93194091
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-seeders-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-seeders.svg b/packages/app/src/assets/file-icons/folder-seeders.svg
new file mode 100644
index 000000000..cd59776ad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-seeders.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-server-open.svg b/packages/app/src/assets/file-icons/folder-server-open.svg
new file mode 100644
index 000000000..706b8af36
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-server-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-server.svg b/packages/app/src/assets/file-icons/folder-server.svg
new file mode 100644
index 000000000..4f03f4726
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-serverless-open.svg b/packages/app/src/assets/file-icons/folder-serverless-open.svg
new file mode 100644
index 000000000..113f73c9d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-serverless-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-serverless.svg b/packages/app/src/assets/file-icons/folder-serverless.svg
new file mode 100644
index 000000000..226f89d41
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-serverless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shader-open.svg b/packages/app/src/assets/file-icons/folder-shader-open.svg
new file mode 100644
index 000000000..03e00ed5f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-shader-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shader.svg b/packages/app/src/assets/file-icons/folder-shader.svg
new file mode 100644
index 000000000..57772b323
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-shader.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shared-open.svg b/packages/app/src/assets/file-icons/folder-shared-open.svg
new file mode 100644
index 000000000..6542e7fe0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-shared-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shared.svg b/packages/app/src/assets/file-icons/folder-shared.svg
new file mode 100644
index 000000000..01e7a17dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-shared.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snapcraft-open.svg b/packages/app/src/assets/file-icons/folder-snapcraft-open.svg
new file mode 100644
index 000000000..1a0306828
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-snapcraft-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snapcraft.svg b/packages/app/src/assets/file-icons/folder-snapcraft.svg
new file mode 100644
index 000000000..fc77b789a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-snapcraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snippet-open.svg b/packages/app/src/assets/file-icons/folder-snippet-open.svg
new file mode 100644
index 000000000..451c291f8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-snippet-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snippet.svg b/packages/app/src/assets/file-icons/folder-snippet.svg
new file mode 100644
index 000000000..991f5c444
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-snippet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-open.svg b/packages/app/src/assets/file-icons/folder-src-open.svg
new file mode 100644
index 000000000..8cd9ee3c1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-src-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-tauri-open.svg b/packages/app/src/assets/file-icons/folder-src-tauri-open.svg
new file mode 100644
index 000000000..969c5778d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-src-tauri-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-tauri.svg b/packages/app/src/assets/file-icons/folder-src-tauri.svg
new file mode 100644
index 000000000..727790c81
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-src-tauri.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src.svg b/packages/app/src/assets/file-icons/folder-src.svg
new file mode 100644
index 000000000..8d45da992
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-src.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stack-open.svg b/packages/app/src/assets/file-icons/folder-stack-open.svg
new file mode 100644
index 000000000..cfd8bd057
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stack-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stack.svg b/packages/app/src/assets/file-icons/folder-stack.svg
new file mode 100644
index 000000000..9c0b10d52
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stencil-open.svg b/packages/app/src/assets/file-icons/folder-stencil-open.svg
new file mode 100644
index 000000000..6dea078a7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stencil-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stencil.svg b/packages/app/src/assets/file-icons/folder-stencil.svg
new file mode 100644
index 000000000..c0443c98a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-store-open.svg b/packages/app/src/assets/file-icons/folder-store-open.svg
new file mode 100644
index 000000000..13e415bc5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-store.svg b/packages/app/src/assets/file-icons/folder-store.svg
new file mode 100644
index 000000000..ae29c03de
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-storybook-open.svg b/packages/app/src/assets/file-icons/folder-storybook-open.svg
new file mode 100644
index 000000000..9be24b2e1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-storybook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-storybook.svg b/packages/app/src/assets/file-icons/folder-storybook.svg
new file mode 100644
index 000000000..26e6246f0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-storybook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stylus-open.svg b/packages/app/src/assets/file-icons/folder-stylus-open.svg
new file mode 100644
index 000000000..9615173c5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stylus-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stylus.svg b/packages/app/src/assets/file-icons/folder-stylus.svg
new file mode 100644
index 000000000..68ae158fb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-stylus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sublime-open.svg b/packages/app/src/assets/file-icons/folder-sublime-open.svg
new file mode 100644
index 000000000..5066f3a14
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sublime-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sublime.svg b/packages/app/src/assets/file-icons/folder-sublime.svg
new file mode 100644
index 000000000..1361eda5f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-sublime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-supabase-open.svg b/packages/app/src/assets/file-icons/folder-supabase-open.svg
new file mode 100644
index 000000000..d58a6924e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-supabase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-supabase.svg b/packages/app/src/assets/file-icons/folder-supabase.svg
new file mode 100644
index 000000000..c0c8189fe
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-supabase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svelte-open.svg b/packages/app/src/assets/file-icons/folder-svelte-open.svg
new file mode 100644
index 000000000..f72ae2f7e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-svelte-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svelte.svg b/packages/app/src/assets/file-icons/folder-svelte.svg
new file mode 100644
index 000000000..61bf1d4db
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-svelte.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svg-open.svg b/packages/app/src/assets/file-icons/folder-svg-open.svg
new file mode 100644
index 000000000..f8ef72bad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-svg-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svg.svg b/packages/app/src/assets/file-icons/folder-svg.svg
new file mode 100644
index 000000000..320b9eb59
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-svg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-syntax-open.svg b/packages/app/src/assets/file-icons/folder-syntax-open.svg
new file mode 100644
index 000000000..fd9d972b3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-syntax-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-syntax.svg b/packages/app/src/assets/file-icons/folder-syntax.svg
new file mode 100644
index 000000000..be4ab1619
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-syntax.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-target-open.svg b/packages/app/src/assets/file-icons/folder-target-open.svg
new file mode 100644
index 000000000..0004bf866
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-target-open.svg
@@ -0,0 +1,10 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-target.svg b/packages/app/src/assets/file-icons/folder-target.svg
new file mode 100644
index 000000000..5872750bd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-target.svg
@@ -0,0 +1,10 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-taskfile-open.svg b/packages/app/src/assets/file-icons/folder-taskfile-open.svg
new file mode 100644
index 000000000..fc2c50148
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-taskfile-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-taskfile.svg b/packages/app/src/assets/file-icons/folder-taskfile.svg
new file mode 100644
index 000000000..1a3cac7ad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-taskfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tasks-open.svg b/packages/app/src/assets/file-icons/folder-tasks-open.svg
new file mode 100644
index 000000000..ed0e67f26
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-tasks-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tasks.svg b/packages/app/src/assets/file-icons/folder-tasks.svg
new file mode 100644
index 000000000..1a9ef8ad6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-tasks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-television-open.svg b/packages/app/src/assets/file-icons/folder-television-open.svg
new file mode 100644
index 000000000..33c21d8bc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-television-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-television.svg b/packages/app/src/assets/file-icons/folder-television.svg
new file mode 100644
index 000000000..dc1029496
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-television.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-temp-open.svg b/packages/app/src/assets/file-icons/folder-temp-open.svg
new file mode 100644
index 000000000..ec798b1e2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-temp-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-temp.svg b/packages/app/src/assets/file-icons/folder-temp.svg
new file mode 100644
index 000000000..3002a86c2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-temp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-template-open.svg b/packages/app/src/assets/file-icons/folder-template-open.svg
new file mode 100644
index 000000000..e3f822b71
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-template-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-template.svg b/packages/app/src/assets/file-icons/folder-template.svg
new file mode 100644
index 000000000..1d1583704
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-template.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-terraform-open.svg b/packages/app/src/assets/file-icons/folder-terraform-open.svg
new file mode 100644
index 000000000..fff197bb0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-terraform-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-terraform.svg b/packages/app/src/assets/file-icons/folder-terraform.svg
new file mode 100644
index 000000000..e71fba8dc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-terraform.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-test-open.svg b/packages/app/src/assets/file-icons/folder-test-open.svg
new file mode 100644
index 000000000..f3fefb357
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-test-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-test.svg b/packages/app/src/assets/file-icons/folder-test.svg
new file mode 100644
index 000000000..92bee1623
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-test.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-theme-open.svg b/packages/app/src/assets/file-icons/folder-theme-open.svg
new file mode 100644
index 000000000..5e79f991e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-theme-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-theme.svg b/packages/app/src/assets/file-icons/folder-theme.svg
new file mode 100644
index 000000000..88efa9551
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-theme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tools-open.svg b/packages/app/src/assets/file-icons/folder-tools-open.svg
new file mode 100644
index 000000000..77ecaa886
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-tools-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tools.svg b/packages/app/src/assets/file-icons/folder-tools.svg
new file mode 100644
index 000000000..d591a1f38
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-tools.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trash-open.svg b/packages/app/src/assets/file-icons/folder-trash-open.svg
new file mode 100644
index 000000000..add51b82d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-trash-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trash.svg b/packages/app/src/assets/file-icons/folder-trash.svg
new file mode 100644
index 000000000..1e81d28f9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trigger-open.svg b/packages/app/src/assets/file-icons/folder-trigger-open.svg
new file mode 100644
index 000000000..ecd80d37c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-trigger-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trigger.svg b/packages/app/src/assets/file-icons/folder-trigger.svg
new file mode 100644
index 000000000..cfe23c1bf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-trigger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-turborepo-open.svg b/packages/app/src/assets/file-icons/folder-turborepo-open.svg
new file mode 100644
index 000000000..e0d7c35cf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-turborepo-open.svg
@@ -0,0 +1,15 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-turborepo.svg b/packages/app/src/assets/file-icons/folder-turborepo.svg
new file mode 100644
index 000000000..ea203360b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-turborepo.svg
@@ -0,0 +1,15 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-typescript-open.svg b/packages/app/src/assets/file-icons/folder-typescript-open.svg
new file mode 100644
index 000000000..87c8e2fa1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-typescript-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-typescript.svg b/packages/app/src/assets/file-icons/folder-typescript.svg
new file mode 100644
index 000000000..df26f8937
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-typescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ui-open.svg b/packages/app/src/assets/file-icons/folder-ui-open.svg
new file mode 100644
index 000000000..304491698
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ui-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ui.svg b/packages/app/src/assets/file-icons/folder-ui.svg
new file mode 100644
index 000000000..fa320d101
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-ui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-unity-open.svg b/packages/app/src/assets/file-icons/folder-unity-open.svg
new file mode 100644
index 000000000..cb036d5d1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-unity-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-unity.svg b/packages/app/src/assets/file-icons/folder-unity.svg
new file mode 100644
index 000000000..c751de29c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-unity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-update-open.svg b/packages/app/src/assets/file-icons/folder-update-open.svg
new file mode 100644
index 000000000..a6d18a9a7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-update-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-update.svg b/packages/app/src/assets/file-icons/folder-update.svg
new file mode 100644
index 000000000..65eaf57d7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-update.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-upload-open.svg b/packages/app/src/assets/file-icons/folder-upload-open.svg
new file mode 100644
index 000000000..24fc35931
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-upload-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-upload.svg b/packages/app/src/assets/file-icons/folder-upload.svg
new file mode 100644
index 000000000..423c6c117
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-upload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-utils-open.svg b/packages/app/src/assets/file-icons/folder-utils-open.svg
new file mode 100644
index 000000000..b894eff0b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-utils-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-utils.svg b/packages/app/src/assets/file-icons/folder-utils.svg
new file mode 100644
index 000000000..fcc799948
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-utils.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vercel-open.svg b/packages/app/src/assets/file-icons/folder-vercel-open.svg
new file mode 100644
index 000000000..c571c63f3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vercel-open.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-vercel.svg b/packages/app/src/assets/file-icons/folder-vercel.svg
new file mode 100644
index 000000000..513848130
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vercel.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/folder-verdaccio-open.svg b/packages/app/src/assets/file-icons/folder-verdaccio-open.svg
new file mode 100644
index 000000000..24beac52b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-verdaccio-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-verdaccio.svg b/packages/app/src/assets/file-icons/folder-verdaccio.svg
new file mode 100644
index 000000000..8e78ba798
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-verdaccio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-video-open.svg b/packages/app/src/assets/file-icons/folder-video-open.svg
new file mode 100644
index 000000000..ea60cd047
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-video-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-video.svg b/packages/app/src/assets/file-icons/folder-video.svg
new file mode 100644
index 000000000..d1385545a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-views-open.svg b/packages/app/src/assets/file-icons/folder-views-open.svg
new file mode 100644
index 000000000..1c785e4ce
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-views-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-views.svg b/packages/app/src/assets/file-icons/folder-views.svg
new file mode 100644
index 000000000..5d41f10b0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-views.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vm-open.svg b/packages/app/src/assets/file-icons/folder-vm-open.svg
new file mode 100644
index 000000000..e1a2b54cf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vm.svg b/packages/app/src/assets/file-icons/folder-vm.svg
new file mode 100644
index 000000000..1ee3a95dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vscode-open.svg b/packages/app/src/assets/file-icons/folder-vscode-open.svg
new file mode 100644
index 000000000..82e3a21e0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vscode-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vscode.svg b/packages/app/src/assets/file-icons/folder-vscode.svg
new file mode 100644
index 000000000..07ccbd6e7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-directives-open.svg b/packages/app/src/assets/file-icons/folder-vue-directives-open.svg
new file mode 100644
index 000000000..341354bbc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vue-directives-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-directives.svg b/packages/app/src/assets/file-icons/folder-vue-directives.svg
new file mode 100644
index 000000000..fc28ccb85
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vue-directives.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-open.svg b/packages/app/src/assets/file-icons/folder-vue-open.svg
new file mode 100644
index 000000000..03abcafab
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vue-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue.svg b/packages/app/src/assets/file-icons/folder-vue.svg
new file mode 100644
index 000000000..c7cf38e8a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuepress-open.svg b/packages/app/src/assets/file-icons/folder-vuepress-open.svg
new file mode 100644
index 000000000..af2b09b39
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vuepress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuepress.svg b/packages/app/src/assets/file-icons/folder-vuepress.svg
new file mode 100644
index 000000000..42fb0dc4b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vuepress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuex-store-open.svg b/packages/app/src/assets/file-icons/folder-vuex-store-open.svg
new file mode 100644
index 000000000..77c3c4681
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vuex-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuex-store.svg b/packages/app/src/assets/file-icons/folder-vuex-store.svg
new file mode 100644
index 000000000..5c6793e6d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-vuex-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wakatime-open.svg b/packages/app/src/assets/file-icons/folder-wakatime-open.svg
new file mode 100644
index 000000000..d1dbc3845
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-wakatime-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wakatime.svg b/packages/app/src/assets/file-icons/folder-wakatime.svg
new file mode 100644
index 000000000..860a661ee
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-wakatime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-webpack-open.svg b/packages/app/src/assets/file-icons/folder-webpack-open.svg
new file mode 100644
index 000000000..acd1e1919
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-webpack-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-webpack.svg b/packages/app/src/assets/file-icons/folder-webpack.svg
new file mode 100644
index 000000000..3ac887a2a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-webpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-windows-open.svg b/packages/app/src/assets/file-icons/folder-windows-open.svg
new file mode 100644
index 000000000..9173ff9cb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-windows-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-windows.svg b/packages/app/src/assets/file-icons/folder-windows.svg
new file mode 100644
index 000000000..184de3100
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-windows.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wordpress-open.svg b/packages/app/src/assets/file-icons/folder-wordpress-open.svg
new file mode 100644
index 000000000..8cb4006db
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-wordpress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wordpress.svg b/packages/app/src/assets/file-icons/folder-wordpress.svg
new file mode 100644
index 000000000..a954a2b99
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-wordpress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-yarn-open.svg b/packages/app/src/assets/file-icons/folder-yarn-open.svg
new file mode 100644
index 000000000..ddbb98894
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-yarn-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-yarn.svg b/packages/app/src/assets/file-icons/folder-yarn.svg
new file mode 100644
index 000000000..58aee64b8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-yarn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-zeabur-open.svg b/packages/app/src/assets/file-icons/folder-zeabur-open.svg
new file mode 100644
index 000000000..ac2a31a3e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-zeabur-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-zeabur.svg b/packages/app/src/assets/file-icons/folder-zeabur.svg
new file mode 100644
index 000000000..b0b842136
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder-zeabur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder.svg b/packages/app/src/assets/file-icons/folder.svg
new file mode 100644
index 000000000..97ee81ca4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/folder.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/font.svg b/packages/app/src/assets/file-icons/font.svg
new file mode 100644
index 000000000..961586d9d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/font.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/forth.svg b/packages/app/src/assets/file-icons/forth.svg
new file mode 100644
index 000000000..50b66af6e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/forth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fortran.svg b/packages/app/src/assets/file-icons/fortran.svg
new file mode 100644
index 000000000..235db1a06
--- /dev/null
+++ b/packages/app/src/assets/file-icons/fortran.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/foxpro.svg b/packages/app/src/assets/file-icons/foxpro.svg
new file mode 100644
index 000000000..e2d5eb00b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/foxpro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/freemarker.svg b/packages/app/src/assets/file-icons/freemarker.svg
new file mode 100644
index 000000000..edf98f6df
--- /dev/null
+++ b/packages/app/src/assets/file-icons/freemarker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fsharp.svg b/packages/app/src/assets/file-icons/fsharp.svg
new file mode 100644
index 000000000..1e5b7cfdc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/fsharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fusebox.svg b/packages/app/src/assets/file-icons/fusebox.svg
new file mode 100644
index 000000000..a4ad3d666
--- /dev/null
+++ b/packages/app/src/assets/file-icons/fusebox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gamemaker.svg b/packages/app/src/assets/file-icons/gamemaker.svg
new file mode 100644
index 000000000..4097cdd7f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gamemaker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/garden.svg b/packages/app/src/assets/file-icons/garden.svg
new file mode 100644
index 000000000..a96386d60
--- /dev/null
+++ b/packages/app/src/assets/file-icons/garden.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gatsby.svg b/packages/app/src/assets/file-icons/gatsby.svg
new file mode 100644
index 000000000..c2674692e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gatsby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gcp.svg b/packages/app/src/assets/file-icons/gcp.svg
new file mode 100644
index 000000000..62be90414
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gcp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemfile.svg b/packages/app/src/assets/file-icons/gemfile.svg
new file mode 100644
index 000000000..757c89d16
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gemfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemini-ai.svg b/packages/app/src/assets/file-icons/gemini-ai.svg
new file mode 100644
index 000000000..0911694b1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gemini-ai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemini.svg b/packages/app/src/assets/file-icons/gemini.svg
new file mode 100644
index 000000000..79ad4bf5f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gemini.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/git.svg b/packages/app/src/assets/file-icons/git.svg
new file mode 100644
index 000000000..c1e08fd4e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/github-actions-workflow.svg b/packages/app/src/assets/file-icons/github-actions-workflow.svg
new file mode 100644
index 000000000..1c724c5ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/github-actions-workflow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/github-sponsors.svg b/packages/app/src/assets/file-icons/github-sponsors.svg
new file mode 100644
index 000000000..72fb66811
--- /dev/null
+++ b/packages/app/src/assets/file-icons/github-sponsors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gitlab.svg b/packages/app/src/assets/file-icons/gitlab.svg
new file mode 100644
index 000000000..ceeabaf9a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gitpod.svg b/packages/app/src/assets/file-icons/gitpod.svg
new file mode 100644
index 000000000..a992017ec
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gitpod.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gleam.svg b/packages/app/src/assets/file-icons/gleam.svg
new file mode 100644
index 000000000..76e0d0c5e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gleam.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gnuplot.svg b/packages/app/src/assets/file-icons/gnuplot.svg
new file mode 100644
index 000000000..8cc510b53
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gnuplot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go-mod.svg b/packages/app/src/assets/file-icons/go-mod.svg
new file mode 100644
index 000000000..1689116be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/go-mod.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go.svg b/packages/app/src/assets/file-icons/go.svg
new file mode 100644
index 000000000..d874e329e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go_gopher.svg b/packages/app/src/assets/file-icons/go_gopher.svg
new file mode 100644
index 000000000..e465f7456
--- /dev/null
+++ b/packages/app/src/assets/file-icons/go_gopher.svg
@@ -0,0 +1,35 @@
+
diff --git a/packages/app/src/assets/file-icons/godot-assets.svg b/packages/app/src/assets/file-icons/godot-assets.svg
new file mode 100644
index 000000000..19e193da4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/godot-assets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/godot.svg b/packages/app/src/assets/file-icons/godot.svg
new file mode 100644
index 000000000..4b1dd7fc2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/godot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gradle.svg b/packages/app/src/assets/file-icons/gradle.svg
new file mode 100644
index 000000000..72d88fdbb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gradle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grafana-alloy.svg b/packages/app/src/assets/file-icons/grafana-alloy.svg
new file mode 100644
index 000000000..cf0003126
--- /dev/null
+++ b/packages/app/src/assets/file-icons/grafana-alloy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grain.svg b/packages/app/src/assets/file-icons/grain.svg
new file mode 100644
index 000000000..f96d46ba7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/grain.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/graphcool.svg b/packages/app/src/assets/file-icons/graphcool.svg
new file mode 100644
index 000000000..bdaedb9d5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/graphcool.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/graphql.svg b/packages/app/src/assets/file-icons/graphql.svg
new file mode 100644
index 000000000..252b0f734
--- /dev/null
+++ b/packages/app/src/assets/file-icons/graphql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gridsome.svg b/packages/app/src/assets/file-icons/gridsome.svg
new file mode 100644
index 000000000..872774100
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gridsome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/groovy.svg b/packages/app/src/assets/file-icons/groovy.svg
new file mode 100644
index 000000000..9af0c08f4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/groovy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grunt.svg b/packages/app/src/assets/file-icons/grunt.svg
new file mode 100644
index 000000000..2b1499453
--- /dev/null
+++ b/packages/app/src/assets/file-icons/grunt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gulp.svg b/packages/app/src/assets/file-icons/gulp.svg
new file mode 100644
index 000000000..bc6a77ffd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/gulp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/h.svg b/packages/app/src/assets/file-icons/h.svg
new file mode 100644
index 000000000..08db8fe48
--- /dev/null
+++ b/packages/app/src/assets/file-icons/h.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hack.svg b/packages/app/src/assets/file-icons/hack.svg
new file mode 100644
index 000000000..921cd7359
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hadolint.svg b/packages/app/src/assets/file-icons/hadolint.svg
new file mode 100644
index 000000000..26195f506
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hadolint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haml.svg b/packages/app/src/assets/file-icons/haml.svg
new file mode 100644
index 000000000..bf08db53a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/haml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/handlebars.svg b/packages/app/src/assets/file-icons/handlebars.svg
new file mode 100644
index 000000000..cf8993005
--- /dev/null
+++ b/packages/app/src/assets/file-icons/handlebars.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hardhat.svg b/packages/app/src/assets/file-icons/hardhat.svg
new file mode 100644
index 000000000..dad8d4503
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hardhat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/harmonix.svg b/packages/app/src/assets/file-icons/harmonix.svg
new file mode 100644
index 000000000..299fa478c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/harmonix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haskell.svg b/packages/app/src/assets/file-icons/haskell.svg
new file mode 100644
index 000000000..ae44927a9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/haskell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haxe.svg b/packages/app/src/assets/file-icons/haxe.svg
new file mode 100644
index 000000000..cb28364f3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/haxe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hcl.svg b/packages/app/src/assets/file-icons/hcl.svg
new file mode 100644
index 000000000..71edfb4af
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hcl_light.svg b/packages/app/src/assets/file-icons/hcl_light.svg
new file mode 100644
index 000000000..019691460
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hcl_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/helm.svg b/packages/app/src/assets/file-icons/helm.svg
new file mode 100644
index 000000000..58aa4a82d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/helm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/heroku.svg b/packages/app/src/assets/file-icons/heroku.svg
new file mode 100644
index 000000000..d9d1ab03d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/heroku.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hex.svg b/packages/app/src/assets/file-icons/hex.svg
new file mode 100644
index 000000000..e50c6771c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/histoire.svg b/packages/app/src/assets/file-icons/histoire.svg
new file mode 100644
index 000000000..5619c16da
--- /dev/null
+++ b/packages/app/src/assets/file-icons/histoire.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hjson.svg b/packages/app/src/assets/file-icons/hjson.svg
new file mode 100644
index 000000000..7725feb78
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hjson.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/horusec.svg b/packages/app/src/assets/file-icons/horusec.svg
new file mode 100644
index 000000000..9ea1155e4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/horusec.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hosts.svg b/packages/app/src/assets/file-icons/hosts.svg
new file mode 100644
index 000000000..f88e7c6c8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hosts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hosts_light.svg b/packages/app/src/assets/file-icons/hosts_light.svg
new file mode 100644
index 000000000..613a25e39
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hosts_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hpp.svg b/packages/app/src/assets/file-icons/hpp.svg
new file mode 100644
index 000000000..3e6872d2e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/html.svg b/packages/app/src/assets/file-icons/html.svg
new file mode 100644
index 000000000..71caf32b6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/html.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/http.svg b/packages/app/src/assets/file-icons/http.svg
new file mode 100644
index 000000000..94574d4a5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/http.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/huff.svg b/packages/app/src/assets/file-icons/huff.svg
new file mode 100644
index 000000000..223291415
--- /dev/null
+++ b/packages/app/src/assets/file-icons/huff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/huff_light.svg b/packages/app/src/assets/file-icons/huff_light.svg
new file mode 100644
index 000000000..43889e036
--- /dev/null
+++ b/packages/app/src/assets/file-icons/huff_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hurl.svg b/packages/app/src/assets/file-icons/hurl.svg
new file mode 100644
index 000000000..227045b5e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/hurl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/husky.svg b/packages/app/src/assets/file-icons/husky.svg
new file mode 100644
index 000000000..b48f06a69
--- /dev/null
+++ b/packages/app/src/assets/file-icons/husky.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/i18n.svg b/packages/app/src/assets/file-icons/i18n.svg
new file mode 100644
index 000000000..4f678de31
--- /dev/null
+++ b/packages/app/src/assets/file-icons/i18n.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/idris.svg b/packages/app/src/assets/file-icons/idris.svg
new file mode 100644
index 000000000..445745b68
--- /dev/null
+++ b/packages/app/src/assets/file-icons/idris.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ifanr-cloud.svg b/packages/app/src/assets/file-icons/ifanr-cloud.svg
new file mode 100644
index 000000000..c356b1691
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ifanr-cloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/image.svg b/packages/app/src/assets/file-icons/image.svg
new file mode 100644
index 000000000..0ca446bb9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/imba.svg b/packages/app/src/assets/file-icons/imba.svg
new file mode 100644
index 000000000..60b06154c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/imba.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/installation.svg b/packages/app/src/assets/file-icons/installation.svg
new file mode 100644
index 000000000..36fa21cf0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/installation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ionic.svg b/packages/app/src/assets/file-icons/ionic.svg
new file mode 100644
index 000000000..2ce630d01
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ionic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/istanbul.svg b/packages/app/src/assets/file-icons/istanbul.svg
new file mode 100644
index 000000000..9508a981a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/istanbul.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jar.svg b/packages/app/src/assets/file-icons/jar.svg
new file mode 100644
index 000000000..1c81c48c5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/java.svg b/packages/app/src/assets/file-icons/java.svg
new file mode 100644
index 000000000..0950bc402
--- /dev/null
+++ b/packages/app/src/assets/file-icons/java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javaclass.svg b/packages/app/src/assets/file-icons/javaclass.svg
new file mode 100644
index 000000000..9abe7ad80
--- /dev/null
+++ b/packages/app/src/assets/file-icons/javaclass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javascript-map.svg b/packages/app/src/assets/file-icons/javascript-map.svg
new file mode 100644
index 000000000..a1fcc2273
--- /dev/null
+++ b/packages/app/src/assets/file-icons/javascript-map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javascript.svg b/packages/app/src/assets/file-icons/javascript.svg
new file mode 100644
index 000000000..254704ab7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jenkins.svg b/packages/app/src/assets/file-icons/jenkins.svg
new file mode 100644
index 000000000..1517b746e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jenkins.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jest.svg b/packages/app/src/assets/file-icons/jest.svg
new file mode 100644
index 000000000..fb40ecb37
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jinja.svg b/packages/app/src/assets/file-icons/jinja.svg
new file mode 100644
index 000000000..8163f2a1b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jinja.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jinja_light.svg b/packages/app/src/assets/file-icons/jinja_light.svg
new file mode 100644
index 000000000..22333982c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jinja_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsconfig.svg b/packages/app/src/assets/file-icons/jsconfig.svg
new file mode 100644
index 000000000..5aef48128
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jsconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/json.svg b/packages/app/src/assets/file-icons/json.svg
new file mode 100644
index 000000000..2590b943f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/json.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsr.svg b/packages/app/src/assets/file-icons/jsr.svg
new file mode 100644
index 000000000..739f6574e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jsr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsr_light.svg b/packages/app/src/assets/file-icons/jsr_light.svg
new file mode 100644
index 000000000..c93d45224
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jsr_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/julia.svg b/packages/app/src/assets/file-icons/julia.svg
new file mode 100644
index 000000000..39fca6351
--- /dev/null
+++ b/packages/app/src/assets/file-icons/julia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jupyter.svg b/packages/app/src/assets/file-icons/jupyter.svg
new file mode 100644
index 000000000..770bffbc6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/jupyter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/just.svg b/packages/app/src/assets/file-icons/just.svg
new file mode 100644
index 000000000..7fc754314
--- /dev/null
+++ b/packages/app/src/assets/file-icons/just.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/karma.svg b/packages/app/src/assets/file-icons/karma.svg
new file mode 100644
index 000000000..0db4ab60b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/karma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kcl.svg b/packages/app/src/assets/file-icons/kcl.svg
new file mode 100644
index 000000000..4f10c602e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/key.svg b/packages/app/src/assets/file-icons/key.svg
new file mode 100644
index 000000000..08f67af4c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/key.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/keystatic.svg b/packages/app/src/assets/file-icons/keystatic.svg
new file mode 100644
index 000000000..087b65872
--- /dev/null
+++ b/packages/app/src/assets/file-icons/keystatic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kivy.svg b/packages/app/src/assets/file-icons/kivy.svg
new file mode 100644
index 000000000..2a1a35c4a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kivy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kl.svg b/packages/app/src/assets/file-icons/kl.svg
new file mode 100644
index 000000000..967ef09e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/knip.svg b/packages/app/src/assets/file-icons/knip.svg
new file mode 100644
index 000000000..c71d0a20d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/knip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kotlin.svg b/packages/app/src/assets/file-icons/kotlin.svg
new file mode 100644
index 000000000..740505c19
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kotlin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kubernetes.svg b/packages/app/src/assets/file-icons/kubernetes.svg
new file mode 100644
index 000000000..6726dcc86
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kubernetes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kusto.svg b/packages/app/src/assets/file-icons/kusto.svg
new file mode 100644
index 000000000..46087e83c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/kusto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/label.svg b/packages/app/src/assets/file-icons/label.svg
new file mode 100644
index 000000000..28abeacd7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/label.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/laravel.svg b/packages/app/src/assets/file-icons/laravel.svg
new file mode 100644
index 000000000..95ee92351
--- /dev/null
+++ b/packages/app/src/assets/file-icons/laravel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/latexmk.svg b/packages/app/src/assets/file-icons/latexmk.svg
new file mode 100644
index 000000000..484318aaf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/latexmk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lbx.svg b/packages/app/src/assets/file-icons/lbx.svg
new file mode 100644
index 000000000..c66f15715
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lefthook.svg b/packages/app/src/assets/file-icons/lefthook.svg
new file mode 100644
index 000000000..93f6f81b6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lefthook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lerna.svg b/packages/app/src/assets/file-icons/lerna.svg
new file mode 100644
index 000000000..4128d6b9d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lerna.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/less.svg b/packages/app/src/assets/file-icons/less.svg
new file mode 100644
index 000000000..2e13a3c5e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/less.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/liara.svg b/packages/app/src/assets/file-icons/liara.svg
new file mode 100644
index 000000000..2fd408c6e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/liara.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lib.svg b/packages/app/src/assets/file-icons/lib.svg
new file mode 100644
index 000000000..7c8fda3e0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lib.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lighthouse.svg b/packages/app/src/assets/file-icons/lighthouse.svg
new file mode 100644
index 000000000..022924410
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lighthouse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lilypond.svg b/packages/app/src/assets/file-icons/lilypond.svg
new file mode 100644
index 000000000..a12aa2cc2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lilypond.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lintstaged.svg b/packages/app/src/assets/file-icons/lintstaged.svg
new file mode 100644
index 000000000..fbf94678e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lintstaged.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/liquid.svg b/packages/app/src/assets/file-icons/liquid.svg
new file mode 100644
index 000000000..5111ab67f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/liquid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lisp.svg b/packages/app/src/assets/file-icons/lisp.svg
new file mode 100644
index 000000000..76e4f465b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lisp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/livescript.svg b/packages/app/src/assets/file-icons/livescript.svg
new file mode 100644
index 000000000..d7dcb37c3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/livescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lock.svg b/packages/app/src/assets/file-icons/lock.svg
new file mode 100644
index 000000000..ca49d02c3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/log.svg b/packages/app/src/assets/file-icons/log.svg
new file mode 100644
index 000000000..389f51d32
--- /dev/null
+++ b/packages/app/src/assets/file-icons/log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lolcode.svg b/packages/app/src/assets/file-icons/lolcode.svg
new file mode 100644
index 000000000..f9c759581
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lolcode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lottie.svg b/packages/app/src/assets/file-icons/lottie.svg
new file mode 100644
index 000000000..29981d323
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lottie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lua.svg b/packages/app/src/assets/file-icons/lua.svg
new file mode 100644
index 000000000..ca7a3d5dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/luau.svg b/packages/app/src/assets/file-icons/luau.svg
new file mode 100644
index 000000000..7f9ad5768
--- /dev/null
+++ b/packages/app/src/assets/file-icons/luau.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lyric.svg b/packages/app/src/assets/file-icons/lyric.svg
new file mode 100644
index 000000000..06bb43e4d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/lyric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/makefile.svg b/packages/app/src/assets/file-icons/makefile.svg
new file mode 100644
index 000000000..e211671c5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/makefile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdoc-config.svg b/packages/app/src/assets/file-icons/markdoc-config.svg
new file mode 100644
index 000000000..13913c38c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/markdoc-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdoc.svg b/packages/app/src/assets/file-icons/markdoc.svg
new file mode 100644
index 000000000..3ed2c54b7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/markdoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdown.svg b/packages/app/src/assets/file-icons/markdown.svg
new file mode 100644
index 000000000..4c224341c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdownlint.svg b/packages/app/src/assets/file-icons/markdownlint.svg
new file mode 100644
index 000000000..37daf0d27
--- /dev/null
+++ b/packages/app/src/assets/file-icons/markdownlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markojs.svg b/packages/app/src/assets/file-icons/markojs.svg
new file mode 100644
index 000000000..938b6fee8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/markojs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mathematica.svg b/packages/app/src/assets/file-icons/mathematica.svg
new file mode 100644
index 000000000..08c25084b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mathematica.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/matlab.svg b/packages/app/src/assets/file-icons/matlab.svg
new file mode 100644
index 000000000..a2166f81e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/matlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/maven.svg b/packages/app/src/assets/file-icons/maven.svg
new file mode 100644
index 000000000..7a8874502
--- /dev/null
+++ b/packages/app/src/assets/file-icons/maven.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mdsvex.svg b/packages/app/src/assets/file-icons/mdsvex.svg
new file mode 100644
index 000000000..34b252af1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mdsvex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mdx.svg b/packages/app/src/assets/file-icons/mdx.svg
new file mode 100644
index 000000000..b2ab5611a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mdx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mercurial.svg b/packages/app/src/assets/file-icons/mercurial.svg
new file mode 100644
index 000000000..41f701e23
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mercurial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/merlin.svg b/packages/app/src/assets/file-icons/merlin.svg
new file mode 100644
index 000000000..96b29d3fd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/merlin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mermaid.svg b/packages/app/src/assets/file-icons/mermaid.svg
new file mode 100644
index 000000000..b1f520d81
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mermaid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/meson.svg b/packages/app/src/assets/file-icons/meson.svg
new file mode 100644
index 000000000..f9d3bef4a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/meson.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/minecraft-fabric.svg b/packages/app/src/assets/file-icons/minecraft-fabric.svg
new file mode 100644
index 000000000..4c0985b9c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/minecraft-fabric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/minecraft.svg b/packages/app/src/assets/file-icons/minecraft.svg
new file mode 100644
index 000000000..219af8ae4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/minecraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mint.svg b/packages/app/src/assets/file-icons/mint.svg
new file mode 100644
index 000000000..659340a8c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mjml.svg b/packages/app/src/assets/file-icons/mjml.svg
new file mode 100644
index 000000000..5580ca096
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mjml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mocha.svg b/packages/app/src/assets/file-icons/mocha.svg
new file mode 100644
index 000000000..bce8ac3b5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mocha.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/modernizr.svg b/packages/app/src/assets/file-icons/modernizr.svg
new file mode 100644
index 000000000..b340bec1b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/modernizr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mojo.svg b/packages/app/src/assets/file-icons/mojo.svg
new file mode 100644
index 000000000..505a8f529
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/moon.svg b/packages/app/src/assets/file-icons/moon.svg
new file mode 100644
index 000000000..c428ebb0e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/moon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/moonscript.svg b/packages/app/src/assets/file-icons/moonscript.svg
new file mode 100644
index 000000000..1d7f7ee9f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/moonscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mxml.svg b/packages/app/src/assets/file-icons/mxml.svg
new file mode 100644
index 000000000..c5b84ddbd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/mxml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nano-staged.svg b/packages/app/src/assets/file-icons/nano-staged.svg
new file mode 100644
index 000000000..6e6cd0751
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nano-staged.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nano-staged_light.svg b/packages/app/src/assets/file-icons/nano-staged_light.svg
new file mode 100644
index 000000000..698232f0c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nano-staged_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/packages/app/src/assets/file-icons/ndst.svg b/packages/app/src/assets/file-icons/ndst.svg
new file mode 100644
index 000000000..194131385
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ndst.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nest.svg b/packages/app/src/assets/file-icons/nest.svg
new file mode 100644
index 000000000..259dc538b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/netlify.svg b/packages/app/src/assets/file-icons/netlify.svg
new file mode 100644
index 000000000..27c837fcc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/netlify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/netlify_light.svg b/packages/app/src/assets/file-icons/netlify_light.svg
new file mode 100644
index 000000000..b142c486f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/netlify_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/next.svg b/packages/app/src/assets/file-icons/next.svg
new file mode 100644
index 000000000..83fee37c1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/next_light.svg b/packages/app/src/assets/file-icons/next_light.svg
new file mode 100644
index 000000000..6e5fb272e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/next_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nginx.svg b/packages/app/src/assets/file-icons/nginx.svg
new file mode 100644
index 000000000..658ad228f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nginx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-actions.svg b/packages/app/src/assets/file-icons/ngrx-actions.svg
new file mode 100644
index 000000000..de418d48d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-actions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-effects.svg b/packages/app/src/assets/file-icons/ngrx-effects.svg
new file mode 100644
index 000000000..8f7dc89dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-effects.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-entity.svg b/packages/app/src/assets/file-icons/ngrx-entity.svg
new file mode 100644
index 000000000..af0dd0563
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-entity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-reducer.svg b/packages/app/src/assets/file-icons/ngrx-reducer.svg
new file mode 100644
index 000000000..db7a5534a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-selectors.svg b/packages/app/src/assets/file-icons/ngrx-selectors.svg
new file mode 100644
index 000000000..af03c40ff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-selectors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-state.svg b/packages/app/src/assets/file-icons/ngrx-state.svg
new file mode 100644
index 000000000..258c0ac87
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ngrx-state.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nim.svg b/packages/app/src/assets/file-icons/nim.svg
new file mode 100644
index 000000000..d985bb40e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nix.svg b/packages/app/src/assets/file-icons/nix.svg
new file mode 100644
index 000000000..a50760969
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodejs.svg b/packages/app/src/assets/file-icons/nodejs.svg
new file mode 100644
index 000000000..ba7390153
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nodejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodejs_alt.svg b/packages/app/src/assets/file-icons/nodejs_alt.svg
new file mode 100644
index 000000000..5b70be2d0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nodejs_alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodemon.svg b/packages/app/src/assets/file-icons/nodemon.svg
new file mode 100644
index 000000000..2bd35d1c2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nodemon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/npm.svg b/packages/app/src/assets/file-icons/npm.svg
new file mode 100644
index 000000000..87aa58368
--- /dev/null
+++ b/packages/app/src/assets/file-icons/npm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nuget.svg b/packages/app/src/assets/file-icons/nuget.svg
new file mode 100644
index 000000000..82e298f50
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nuget.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nunjucks.svg b/packages/app/src/assets/file-icons/nunjucks.svg
new file mode 100644
index 000000000..9fb8890e2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nunjucks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nuxt.svg b/packages/app/src/assets/file-icons/nuxt.svg
new file mode 100644
index 000000000..babf91945
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nuxt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nx.svg b/packages/app/src/assets/file-icons/nx.svg
new file mode 100644
index 000000000..8db832302
--- /dev/null
+++ b/packages/app/src/assets/file-icons/nx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/objective-c.svg b/packages/app/src/assets/file-icons/objective-c.svg
new file mode 100644
index 000000000..7a69f91d6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/objective-c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/objective-cpp.svg b/packages/app/src/assets/file-icons/objective-cpp.svg
new file mode 100644
index 000000000..cd55d1ea5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/objective-cpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ocaml.svg b/packages/app/src/assets/file-icons/ocaml.svg
new file mode 100644
index 000000000..cb6eb6b94
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ocaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/odin.svg b/packages/app/src/assets/file-icons/odin.svg
new file mode 100644
index 000000000..1877a6cfc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/odin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/opa.svg b/packages/app/src/assets/file-icons/opa.svg
new file mode 100644
index 000000000..3afc1c6bf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/opa.svg
@@ -0,0 +1,9 @@
+
diff --git a/packages/app/src/assets/file-icons/opam.svg b/packages/app/src/assets/file-icons/opam.svg
new file mode 100644
index 000000000..70f1b7f02
--- /dev/null
+++ b/packages/app/src/assets/file-icons/opam.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/openapi.svg b/packages/app/src/assets/file-icons/openapi.svg
new file mode 100644
index 000000000..5b367a168
--- /dev/null
+++ b/packages/app/src/assets/file-icons/openapi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/openapi_light.svg b/packages/app/src/assets/file-icons/openapi_light.svg
new file mode 100644
index 000000000..179006db8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/openapi_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/otne.svg b/packages/app/src/assets/file-icons/otne.svg
new file mode 100644
index 000000000..8670a615b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/otne.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/oxlint.svg b/packages/app/src/assets/file-icons/oxlint.svg
new file mode 100644
index 000000000..2ffad92d9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/oxlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/packship.svg b/packages/app/src/assets/file-icons/packship.svg
new file mode 100644
index 000000000..e03b35d66
--- /dev/null
+++ b/packages/app/src/assets/file-icons/packship.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/palette.svg b/packages/app/src/assets/file-icons/palette.svg
new file mode 100644
index 000000000..cc27f66ae
--- /dev/null
+++ b/packages/app/src/assets/file-icons/palette.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/panda.svg b/packages/app/src/assets/file-icons/panda.svg
new file mode 100644
index 000000000..dde4122bb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/panda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/parcel.svg b/packages/app/src/assets/file-icons/parcel.svg
new file mode 100644
index 000000000..39a1835f1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/parcel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pascal.svg b/packages/app/src/assets/file-icons/pascal.svg
new file mode 100644
index 000000000..b0a2993eb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pascal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pawn.svg b/packages/app/src/assets/file-icons/pawn.svg
new file mode 100644
index 000000000..b615d75d1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pawn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/payload.svg b/packages/app/src/assets/file-icons/payload.svg
new file mode 100644
index 000000000..8e1e82abd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/payload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/payload_light.svg b/packages/app/src/assets/file-icons/payload_light.svg
new file mode 100644
index 000000000..7a4e9c7d3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/payload_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pdf.svg b/packages/app/src/assets/file-icons/pdf.svg
new file mode 100644
index 000000000..1c84fe82d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pdm.svg b/packages/app/src/assets/file-icons/pdm.svg
new file mode 100644
index 000000000..dd23bb343
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pdm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/percy.svg b/packages/app/src/assets/file-icons/percy.svg
new file mode 100644
index 000000000..6d0f8973b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/percy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/perl.svg b/packages/app/src/assets/file-icons/perl.svg
new file mode 100644
index 000000000..0534cade2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/perl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php-cs-fixer.svg b/packages/app/src/assets/file-icons/php-cs-fixer.svg
new file mode 100644
index 000000000..398c2145b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/php-cs-fixer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php.svg b/packages/app/src/assets/file-icons/php.svg
new file mode 100644
index 000000000..1d7e3365e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php_elephant.svg b/packages/app/src/assets/file-icons/php_elephant.svg
new file mode 100644
index 000000000..d2c2995b6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/php_elephant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php_elephant_pink.svg b/packages/app/src/assets/file-icons/php_elephant_pink.svg
new file mode 100644
index 000000000..a7cad7493
--- /dev/null
+++ b/packages/app/src/assets/file-icons/php_elephant_pink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/phpstan.svg b/packages/app/src/assets/file-icons/phpstan.svg
new file mode 100644
index 000000000..34b612fe9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/phpstan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/phpunit.svg b/packages/app/src/assets/file-icons/phpunit.svg
new file mode 100644
index 000000000..21322005e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/phpunit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pinejs.svg b/packages/app/src/assets/file-icons/pinejs.svg
new file mode 100644
index 000000000..44c0020b2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pinejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pipeline.svg b/packages/app/src/assets/file-icons/pipeline.svg
new file mode 100644
index 000000000..a3a5e6688
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pipeline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pkl.svg b/packages/app/src/assets/file-icons/pkl.svg
new file mode 100644
index 000000000..3f31ead5d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pkl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/plastic.svg b/packages/app/src/assets/file-icons/plastic.svg
new file mode 100644
index 000000000..cc00e5a70
--- /dev/null
+++ b/packages/app/src/assets/file-icons/plastic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/playwright.svg b/packages/app/src/assets/file-icons/playwright.svg
new file mode 100644
index 000000000..cae0b24aa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/playwright.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/plop.svg b/packages/app/src/assets/file-icons/plop.svg
new file mode 100644
index 000000000..85e3bd2f0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/plop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pm2-ecosystem.svg b/packages/app/src/assets/file-icons/pm2-ecosystem.svg
new file mode 100644
index 000000000..a99d5f2a6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pm2-ecosystem.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pnpm.svg b/packages/app/src/assets/file-icons/pnpm.svg
new file mode 100644
index 000000000..fc52c6ed9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pnpm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pnpm_light.svg b/packages/app/src/assets/file-icons/pnpm_light.svg
new file mode 100644
index 000000000..4236956cc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pnpm_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/poetry.svg b/packages/app/src/assets/file-icons/poetry.svg
new file mode 100644
index 000000000..4a355a7ef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/poetry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/postcss.svg b/packages/app/src/assets/file-icons/postcss.svg
new file mode 100644
index 000000000..799edebc9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/postcss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/posthtml.svg b/packages/app/src/assets/file-icons/posthtml.svg
new file mode 100644
index 000000000..54dda3c6a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/posthtml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/powerpoint.svg b/packages/app/src/assets/file-icons/powerpoint.svg
new file mode 100644
index 000000000..eaba916fb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/powerpoint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/powershell.svg b/packages/app/src/assets/file-icons/powershell.svg
new file mode 100644
index 000000000..a2663936d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pre-commit.svg b/packages/app/src/assets/file-icons/pre-commit.svg
new file mode 100644
index 000000000..399826bff
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pre-commit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prettier.svg b/packages/app/src/assets/file-icons/prettier.svg
new file mode 100644
index 000000000..a6cda341b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/prettier.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prisma.svg b/packages/app/src/assets/file-icons/prisma.svg
new file mode 100644
index 000000000..121abea22
--- /dev/null
+++ b/packages/app/src/assets/file-icons/prisma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/processing.svg b/packages/app/src/assets/file-icons/processing.svg
new file mode 100644
index 000000000..8a960abd8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/processing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prolog.svg b/packages/app/src/assets/file-icons/prolog.svg
new file mode 100644
index 000000000..7eda09071
--- /dev/null
+++ b/packages/app/src/assets/file-icons/prolog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prompt.svg b/packages/app/src/assets/file-icons/prompt.svg
new file mode 100644
index 000000000..aa37366b7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/prompt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/proto.svg b/packages/app/src/assets/file-icons/proto.svg
new file mode 100644
index 000000000..7757c0e5f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/proto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/protractor.svg b/packages/app/src/assets/file-icons/protractor.svg
new file mode 100644
index 000000000..50f464394
--- /dev/null
+++ b/packages/app/src/assets/file-icons/protractor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pug.svg b/packages/app/src/assets/file-icons/pug.svg
new file mode 100644
index 000000000..62a36027c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/puppet.svg b/packages/app/src/assets/file-icons/puppet.svg
new file mode 100644
index 000000000..3e1e9c12b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/puppet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/puppeteer.svg b/packages/app/src/assets/file-icons/puppeteer.svg
new file mode 100644
index 000000000..b553df392
--- /dev/null
+++ b/packages/app/src/assets/file-icons/puppeteer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/purescript.svg b/packages/app/src/assets/file-icons/purescript.svg
new file mode 100644
index 000000000..d82c8f9d8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/purescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/python-misc.svg b/packages/app/src/assets/file-icons/python-misc.svg
new file mode 100644
index 000000000..44fb730e5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/python-misc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/python.svg b/packages/app/src/assets/file-icons/python.svg
new file mode 100644
index 000000000..20c2508a2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/python.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pytorch.svg b/packages/app/src/assets/file-icons/pytorch.svg
new file mode 100644
index 000000000..4cb85d012
--- /dev/null
+++ b/packages/app/src/assets/file-icons/pytorch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/qsharp.svg b/packages/app/src/assets/file-icons/qsharp.svg
new file mode 100644
index 000000000..de9838d60
--- /dev/null
+++ b/packages/app/src/assets/file-icons/qsharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/quarto.svg b/packages/app/src/assets/file-icons/quarto.svg
new file mode 100644
index 000000000..3bb8ef7c7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/quarto.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/quasar.svg b/packages/app/src/assets/file-icons/quasar.svg
new file mode 100644
index 000000000..fa02ff081
--- /dev/null
+++ b/packages/app/src/assets/file-icons/quasar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/quokka.svg b/packages/app/src/assets/file-icons/quokka.svg
new file mode 100644
index 000000000..bf368de32
--- /dev/null
+++ b/packages/app/src/assets/file-icons/quokka.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/qwik.svg b/packages/app/src/assets/file-icons/qwik.svg
new file mode 100644
index 000000000..555511694
--- /dev/null
+++ b/packages/app/src/assets/file-icons/qwik.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/r.svg b/packages/app/src/assets/file-icons/r.svg
new file mode 100644
index 000000000..5703dd0f9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/r.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/racket.svg b/packages/app/src/assets/file-icons/racket.svg
new file mode 100644
index 000000000..04ca144ba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/racket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/raml.svg b/packages/app/src/assets/file-icons/raml.svg
new file mode 100644
index 000000000..d35d561b9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/raml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/razor.svg b/packages/app/src/assets/file-icons/razor.svg
new file mode 100644
index 000000000..4e99091f1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/razor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rbxmk.svg b/packages/app/src/assets/file-icons/rbxmk.svg
new file mode 100644
index 000000000..e7d495376
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rbxmk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rc.svg b/packages/app/src/assets/file-icons/rc.svg
new file mode 100644
index 000000000..83040dbc9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/react.svg b/packages/app/src/assets/file-icons/react.svg
new file mode 100644
index 000000000..ced90db1a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/react_ts.svg b/packages/app/src/assets/file-icons/react_ts.svg
new file mode 100644
index 000000000..887f72ca1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/react_ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/readme.svg b/packages/app/src/assets/file-icons/readme.svg
new file mode 100644
index 000000000..943d08f3c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/readme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/reason.svg b/packages/app/src/assets/file-icons/reason.svg
new file mode 100644
index 000000000..0f4b3e1f6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/reason.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/red.svg b/packages/app/src/assets/file-icons/red.svg
new file mode 100644
index 000000000..608423166
--- /dev/null
+++ b/packages/app/src/assets/file-icons/red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-action.svg b/packages/app/src/assets/file-icons/redux-action.svg
new file mode 100644
index 000000000..a4872e7db
--- /dev/null
+++ b/packages/app/src/assets/file-icons/redux-action.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-reducer.svg b/packages/app/src/assets/file-icons/redux-reducer.svg
new file mode 100644
index 000000000..cfcca98a1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/redux-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-selector.svg b/packages/app/src/assets/file-icons/redux-selector.svg
new file mode 100644
index 000000000..073c286df
--- /dev/null
+++ b/packages/app/src/assets/file-icons/redux-selector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-store.svg b/packages/app/src/assets/file-icons/redux-store.svg
new file mode 100644
index 000000000..8e644e771
--- /dev/null
+++ b/packages/app/src/assets/file-icons/redux-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/regedit.svg b/packages/app/src/assets/file-icons/regedit.svg
new file mode 100644
index 000000000..3d6320607
--- /dev/null
+++ b/packages/app/src/assets/file-icons/regedit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remark.svg b/packages/app/src/assets/file-icons/remark.svg
new file mode 100644
index 000000000..9d6a91831
--- /dev/null
+++ b/packages/app/src/assets/file-icons/remark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remix.svg b/packages/app/src/assets/file-icons/remix.svg
new file mode 100644
index 000000000..763f57ff4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/remix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remix_light.svg b/packages/app/src/assets/file-icons/remix_light.svg
new file mode 100644
index 000000000..748b77928
--- /dev/null
+++ b/packages/app/src/assets/file-icons/remix_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/renovate.svg b/packages/app/src/assets/file-icons/renovate.svg
new file mode 100644
index 000000000..bc63cbb0c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/renovate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/replit.svg b/packages/app/src/assets/file-icons/replit.svg
new file mode 100644
index 000000000..f1478a503
--- /dev/null
+++ b/packages/app/src/assets/file-icons/replit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rescript-interface.svg b/packages/app/src/assets/file-icons/rescript-interface.svg
new file mode 100644
index 000000000..db3055365
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rescript-interface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rescript.svg b/packages/app/src/assets/file-icons/rescript.svg
new file mode 100644
index 000000000..8f40a3a96
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/restql.svg b/packages/app/src/assets/file-icons/restql.svg
new file mode 100644
index 000000000..a056fe910
--- /dev/null
+++ b/packages/app/src/assets/file-icons/restql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/riot.svg b/packages/app/src/assets/file-icons/riot.svg
new file mode 100644
index 000000000..587e50dfc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/riot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/roadmap.svg b/packages/app/src/assets/file-icons/roadmap.svg
new file mode 100644
index 000000000..2279eadd0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/roadmap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/roblox.svg b/packages/app/src/assets/file-icons/roblox.svg
new file mode 100644
index 000000000..56cc37847
--- /dev/null
+++ b/packages/app/src/assets/file-icons/roblox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/robot.svg b/packages/app/src/assets/file-icons/robot.svg
new file mode 100644
index 000000000..36c722518
--- /dev/null
+++ b/packages/app/src/assets/file-icons/robot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/robots.svg b/packages/app/src/assets/file-icons/robots.svg
new file mode 100644
index 000000000..11fdaaea4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/robots.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rocket.svg b/packages/app/src/assets/file-icons/rocket.svg
new file mode 100644
index 000000000..5f62f322c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rocket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rojo.svg b/packages/app/src/assets/file-icons/rojo.svg
new file mode 100644
index 000000000..37c46ea0e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rollup.svg b/packages/app/src/assets/file-icons/rollup.svg
new file mode 100644
index 000000000..7fa015324
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rollup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rome.svg b/packages/app/src/assets/file-icons/rome.svg
new file mode 100644
index 000000000..8f5de92d2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rome.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/app/src/assets/file-icons/routing.svg b/packages/app/src/assets/file-icons/routing.svg
new file mode 100644
index 000000000..ea02c9054
--- /dev/null
+++ b/packages/app/src/assets/file-icons/routing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rspec.svg b/packages/app/src/assets/file-icons/rspec.svg
new file mode 100644
index 000000000..c1bf424d6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rspec.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rubocop.svg b/packages/app/src/assets/file-icons/rubocop.svg
new file mode 100644
index 000000000..e6a24a235
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rubocop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rubocop_light.svg b/packages/app/src/assets/file-icons/rubocop_light.svg
new file mode 100644
index 000000000..689c023b5
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rubocop_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ruby.svg b/packages/app/src/assets/file-icons/ruby.svg
new file mode 100644
index 000000000..2e3215d75
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ruby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ruff.svg b/packages/app/src/assets/file-icons/ruff.svg
new file mode 100644
index 000000000..a526788a8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/ruff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rust.svg b/packages/app/src/assets/file-icons/rust.svg
new file mode 100644
index 000000000..b382aa4b1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/rust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/salesforce.svg b/packages/app/src/assets/file-icons/salesforce.svg
new file mode 100644
index 000000000..80e1aa99e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/salesforce.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/san.svg b/packages/app/src/assets/file-icons/san.svg
new file mode 100644
index 000000000..d17b9faf6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/san.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sas.svg b/packages/app/src/assets/file-icons/sas.svg
new file mode 100644
index 000000000..d47c8bdef
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sas.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sass.svg b/packages/app/src/assets/file-icons/sass.svg
new file mode 100644
index 000000000..6f39acb02
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sbt.svg b/packages/app/src/assets/file-icons/sbt.svg
new file mode 100644
index 000000000..37587c5ca
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sbt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scala.svg b/packages/app/src/assets/file-icons/scala.svg
new file mode 100644
index 000000000..08e0c2d34
--- /dev/null
+++ b/packages/app/src/assets/file-icons/scala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scheme.svg b/packages/app/src/assets/file-icons/scheme.svg
new file mode 100644
index 000000000..c8f986e86
--- /dev/null
+++ b/packages/app/src/assets/file-icons/scheme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scons.svg b/packages/app/src/assets/file-icons/scons.svg
new file mode 100644
index 000000000..d584ea832
--- /dev/null
+++ b/packages/app/src/assets/file-icons/scons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scons_light.svg b/packages/app/src/assets/file-icons/scons_light.svg
new file mode 100644
index 000000000..31f88d565
--- /dev/null
+++ b/packages/app/src/assets/file-icons/scons_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/screwdriver.svg b/packages/app/src/assets/file-icons/screwdriver.svg
new file mode 100644
index 000000000..cac820631
--- /dev/null
+++ b/packages/app/src/assets/file-icons/screwdriver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/search.svg b/packages/app/src/assets/file-icons/search.svg
new file mode 100644
index 000000000..3d35c8e24
--- /dev/null
+++ b/packages/app/src/assets/file-icons/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semantic-release.svg b/packages/app/src/assets/file-icons/semantic-release.svg
new file mode 100644
index 000000000..17187e89a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/semantic-release.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semantic-release_light.svg b/packages/app/src/assets/file-icons/semantic-release_light.svg
new file mode 100644
index 000000000..21e42a095
--- /dev/null
+++ b/packages/app/src/assets/file-icons/semantic-release_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semgrep.svg b/packages/app/src/assets/file-icons/semgrep.svg
new file mode 100644
index 000000000..73a8abc66
--- /dev/null
+++ b/packages/app/src/assets/file-icons/semgrep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sentry.svg b/packages/app/src/assets/file-icons/sentry.svg
new file mode 100644
index 000000000..319e60a74
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sentry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sequelize.svg b/packages/app/src/assets/file-icons/sequelize.svg
new file mode 100644
index 000000000..0e4c7888f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sequelize.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/serverless.svg b/packages/app/src/assets/file-icons/serverless.svg
new file mode 100644
index 000000000..92ccca84a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/serverless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/settings.svg b/packages/app/src/assets/file-icons/settings.svg
new file mode 100644
index 000000000..dc701ae87
--- /dev/null
+++ b/packages/app/src/assets/file-icons/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/shader.svg b/packages/app/src/assets/file-icons/shader.svg
new file mode 100644
index 000000000..f42156ed8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/shader.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/silverstripe.svg b/packages/app/src/assets/file-icons/silverstripe.svg
new file mode 100644
index 000000000..46cdb7ee1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/silverstripe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/simulink.svg b/packages/app/src/assets/file-icons/simulink.svg
new file mode 100644
index 000000000..33e97fe42
--- /dev/null
+++ b/packages/app/src/assets/file-icons/simulink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/siyuan.svg b/packages/app/src/assets/file-icons/siyuan.svg
new file mode 100644
index 000000000..7a7488dd2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/siyuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sketch.svg b/packages/app/src/assets/file-icons/sketch.svg
new file mode 100644
index 000000000..0d7540690
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sketch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slim.svg b/packages/app/src/assets/file-icons/slim.svg
new file mode 100644
index 000000000..edc724173
--- /dev/null
+++ b/packages/app/src/assets/file-icons/slim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slint.svg b/packages/app/src/assets/file-icons/slint.svg
new file mode 100644
index 000000000..b6434ec97
--- /dev/null
+++ b/packages/app/src/assets/file-icons/slint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slug.svg b/packages/app/src/assets/file-icons/slug.svg
new file mode 100644
index 000000000..da1dcc7b0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/slug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/smarty.svg b/packages/app/src/assets/file-icons/smarty.svg
new file mode 100644
index 000000000..4572a5879
--- /dev/null
+++ b/packages/app/src/assets/file-icons/smarty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sml.svg b/packages/app/src/assets/file-icons/sml.svg
new file mode 100644
index 000000000..8f92a33ba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snakemake.svg b/packages/app/src/assets/file-icons/snakemake.svg
new file mode 100644
index 000000000..6dd08c958
--- /dev/null
+++ b/packages/app/src/assets/file-icons/snakemake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snapcraft.svg b/packages/app/src/assets/file-icons/snapcraft.svg
new file mode 100644
index 000000000..17bf8d8d9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/snapcraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snowpack.svg b/packages/app/src/assets/file-icons/snowpack.svg
new file mode 100644
index 000000000..7941faefb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/snowpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snowpack_light.svg b/packages/app/src/assets/file-icons/snowpack_light.svg
new file mode 100644
index 000000000..70389d20f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/snowpack_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snyk.svg b/packages/app/src/assets/file-icons/snyk.svg
new file mode 100644
index 000000000..90791eeec
--- /dev/null
+++ b/packages/app/src/assets/file-icons/snyk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/solidity.svg b/packages/app/src/assets/file-icons/solidity.svg
new file mode 100644
index 000000000..6ae9873d8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/solidity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sonarcloud.svg b/packages/app/src/assets/file-icons/sonarcloud.svg
new file mode 100644
index 000000000..ee9896161
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sonarcloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/spwn.svg b/packages/app/src/assets/file-icons/spwn.svg
new file mode 100644
index 000000000..8a8bf4347
--- /dev/null
+++ b/packages/app/src/assets/file-icons/spwn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stackblitz.svg b/packages/app/src/assets/file-icons/stackblitz.svg
new file mode 100644
index 000000000..f1806a8b2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stackblitz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stan.svg b/packages/app/src/assets/file-icons/stan.svg
new file mode 100644
index 000000000..bb5cf6723
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/steadybit.svg b/packages/app/src/assets/file-icons/steadybit.svg
new file mode 100644
index 000000000..4871bbd76
--- /dev/null
+++ b/packages/app/src/assets/file-icons/steadybit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stencil.svg b/packages/app/src/assets/file-icons/stencil.svg
new file mode 100644
index 000000000..bf8f3ea19
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stitches.svg b/packages/app/src/assets/file-icons/stitches.svg
new file mode 100644
index 000000000..a597fbcce
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stitches.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stitches_light.svg b/packages/app/src/assets/file-icons/stitches_light.svg
new file mode 100644
index 000000000..8001d9dfc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stitches_light.svg
@@ -0,0 +1,10 @@
+
diff --git a/packages/app/src/assets/file-icons/storybook.svg b/packages/app/src/assets/file-icons/storybook.svg
new file mode 100644
index 000000000..8a4bdeaa7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/storybook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stryker.svg b/packages/app/src/assets/file-icons/stryker.svg
new file mode 100644
index 000000000..05d45e614
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stryker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylable.svg b/packages/app/src/assets/file-icons/stylable.svg
new file mode 100644
index 000000000..be5522619
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stylable.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylelint.svg b/packages/app/src/assets/file-icons/stylelint.svg
new file mode 100644
index 000000000..eb6452438
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stylelint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylelint_light.svg b/packages/app/src/assets/file-icons/stylelint_light.svg
new file mode 100644
index 000000000..502fec33f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stylelint_light.svg
@@ -0,0 +1,13 @@
+
diff --git a/packages/app/src/assets/file-icons/stylus.svg b/packages/app/src/assets/file-icons/stylus.svg
new file mode 100644
index 000000000..ae61b48dd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/stylus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sublime.svg b/packages/app/src/assets/file-icons/sublime.svg
new file mode 100644
index 000000000..5c99fb9be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sublime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/subtitles.svg b/packages/app/src/assets/file-icons/subtitles.svg
new file mode 100644
index 000000000..15eebd61f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/subtitles.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/supabase.svg b/packages/app/src/assets/file-icons/supabase.svg
new file mode 100644
index 000000000..78bfef7d9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/supabase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svelte.svg b/packages/app/src/assets/file-icons/svelte.svg
new file mode 100644
index 000000000..4b14a6f71
--- /dev/null
+++ b/packages/app/src/assets/file-icons/svelte.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svg.svg b/packages/app/src/assets/file-icons/svg.svg
new file mode 100644
index 000000000..fbaf9e59b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/svg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svgo.svg b/packages/app/src/assets/file-icons/svgo.svg
new file mode 100644
index 000000000..4b9cb8904
--- /dev/null
+++ b/packages/app/src/assets/file-icons/svgo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svgr.svg b/packages/app/src/assets/file-icons/svgr.svg
new file mode 100644
index 000000000..01443226e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/svgr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swagger.svg b/packages/app/src/assets/file-icons/swagger.svg
new file mode 100644
index 000000000..1f79152d1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/swagger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sway.svg b/packages/app/src/assets/file-icons/sway.svg
new file mode 100644
index 000000000..adca3282b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/sway.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swc.svg b/packages/app/src/assets/file-icons/swc.svg
new file mode 100644
index 000000000..5931bd3a1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/swc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swift.svg b/packages/app/src/assets/file-icons/swift.svg
new file mode 100644
index 000000000..df413c843
--- /dev/null
+++ b/packages/app/src/assets/file-icons/swift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/syncpack.svg b/packages/app/src/assets/file-icons/syncpack.svg
new file mode 100644
index 000000000..9c64e3184
--- /dev/null
+++ b/packages/app/src/assets/file-icons/syncpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/systemd.svg b/packages/app/src/assets/file-icons/systemd.svg
new file mode 100755
index 000000000..943b77f26
--- /dev/null
+++ b/packages/app/src/assets/file-icons/systemd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/systemd_light.svg b/packages/app/src/assets/file-icons/systemd_light.svg
new file mode 100755
index 000000000..39e81f63b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/systemd_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/table.svg b/packages/app/src/assets/file-icons/table.svg
new file mode 100644
index 000000000..040b3839e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tailwindcss.svg b/packages/app/src/assets/file-icons/tailwindcss.svg
new file mode 100644
index 000000000..a55450d0b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tailwindcss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/taskfile.svg b/packages/app/src/assets/file-icons/taskfile.svg
new file mode 100644
index 000000000..99a775f69
--- /dev/null
+++ b/packages/app/src/assets/file-icons/taskfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tauri.svg b/packages/app/src/assets/file-icons/tauri.svg
new file mode 100644
index 000000000..2c7aa2656
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tauri.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/taze.svg b/packages/app/src/assets/file-icons/taze.svg
new file mode 100644
index 000000000..c6e3a3fc8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/taze.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tcl.svg b/packages/app/src/assets/file-icons/tcl.svg
new file mode 100644
index 000000000..3c196a696
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/teal.svg b/packages/app/src/assets/file-icons/teal.svg
new file mode 100644
index 000000000..770b63d7b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/teal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/templ.svg b/packages/app/src/assets/file-icons/templ.svg
new file mode 100644
index 000000000..5b79cfe99
--- /dev/null
+++ b/packages/app/src/assets/file-icons/templ.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/template.svg b/packages/app/src/assets/file-icons/template.svg
new file mode 100644
index 000000000..604a6f86e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/template.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/terraform.svg b/packages/app/src/assets/file-icons/terraform.svg
new file mode 100644
index 000000000..d072809bf
--- /dev/null
+++ b/packages/app/src/assets/file-icons/terraform.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-js.svg b/packages/app/src/assets/file-icons/test-js.svg
new file mode 100644
index 000000000..d6ea99491
--- /dev/null
+++ b/packages/app/src/assets/file-icons/test-js.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-jsx.svg b/packages/app/src/assets/file-icons/test-jsx.svg
new file mode 100644
index 000000000..ea2d4da46
--- /dev/null
+++ b/packages/app/src/assets/file-icons/test-jsx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-ts.svg b/packages/app/src/assets/file-icons/test-ts.svg
new file mode 100644
index 000000000..0b4ec71be
--- /dev/null
+++ b/packages/app/src/assets/file-icons/test-ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tex.svg b/packages/app/src/assets/file-icons/tex.svg
new file mode 100644
index 000000000..83fc24ad0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/textlint.svg b/packages/app/src/assets/file-icons/textlint.svg
new file mode 100644
index 000000000..a619bf04d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/textlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tilt.svg b/packages/app/src/assets/file-icons/tilt.svg
new file mode 100644
index 000000000..0ab842851
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tilt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tldraw.svg b/packages/app/src/assets/file-icons/tldraw.svg
new file mode 100644
index 000000000..c4e6d6b8f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tldraw.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tldraw_light.svg b/packages/app/src/assets/file-icons/tldraw_light.svg
new file mode 100644
index 000000000..41faab3f0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tldraw_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tobi.svg b/packages/app/src/assets/file-icons/tobi.svg
new file mode 100644
index 000000000..1a576a1c3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tobi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tobimake.svg b/packages/app/src/assets/file-icons/tobimake.svg
new file mode 100644
index 000000000..0ba3b3e7f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tobimake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/todo.svg b/packages/app/src/assets/file-icons/todo.svg
new file mode 100644
index 000000000..281ed6599
--- /dev/null
+++ b/packages/app/src/assets/file-icons/todo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/toml.svg b/packages/app/src/assets/file-icons/toml.svg
new file mode 100644
index 000000000..aa4f24c3b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/toml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/toml_light.svg b/packages/app/src/assets/file-icons/toml_light.svg
new file mode 100644
index 000000000..a85712bf8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/toml_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/travis.svg b/packages/app/src/assets/file-icons/travis.svg
new file mode 100644
index 000000000..37a69a8d3
--- /dev/null
+++ b/packages/app/src/assets/file-icons/travis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tree.svg b/packages/app/src/assets/file-icons/tree.svg
new file mode 100644
index 000000000..a3b6d57e1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/trigger.svg b/packages/app/src/assets/file-icons/trigger.svg
new file mode 100644
index 000000000..7a4f63a07
--- /dev/null
+++ b/packages/app/src/assets/file-icons/trigger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsconfig.svg b/packages/app/src/assets/file-icons/tsconfig.svg
new file mode 100644
index 000000000..817fb8dbe
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tsconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsdoc.svg b/packages/app/src/assets/file-icons/tsdoc.svg
new file mode 100644
index 000000000..e7e04d0e1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tsdoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsil.svg b/packages/app/src/assets/file-icons/tsil.svg
new file mode 100644
index 000000000..261d7cdfe
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tsil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tune.svg b/packages/app/src/assets/file-icons/tune.svg
new file mode 100644
index 000000000..ecbde06c6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/tune.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/turborepo.svg b/packages/app/src/assets/file-icons/turborepo.svg
new file mode 100644
index 000000000..f0e544985
--- /dev/null
+++ b/packages/app/src/assets/file-icons/turborepo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/turborepo_light.svg b/packages/app/src/assets/file-icons/turborepo_light.svg
new file mode 100644
index 000000000..b020a358d
--- /dev/null
+++ b/packages/app/src/assets/file-icons/turborepo_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/twig.svg b/packages/app/src/assets/file-icons/twig.svg
new file mode 100644
index 000000000..01f9a5dba
--- /dev/null
+++ b/packages/app/src/assets/file-icons/twig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/twine.svg b/packages/app/src/assets/file-icons/twine.svg
new file mode 100644
index 000000000..ac1bc553b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/twine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typescript-def.svg b/packages/app/src/assets/file-icons/typescript-def.svg
new file mode 100644
index 000000000..a9ef95879
--- /dev/null
+++ b/packages/app/src/assets/file-icons/typescript-def.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typescript.svg b/packages/app/src/assets/file-icons/typescript.svg
new file mode 100644
index 000000000..acaf0ddb7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/typescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typst.svg b/packages/app/src/assets/file-icons/typst.svg
new file mode 100644
index 000000000..a36473450
--- /dev/null
+++ b/packages/app/src/assets/file-icons/typst.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/umi.svg b/packages/app/src/assets/file-icons/umi.svg
new file mode 100644
index 000000000..7479a4bbb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/umi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uml.svg b/packages/app/src/assets/file-icons/uml.svg
new file mode 100644
index 000000000..5f70f1e42
--- /dev/null
+++ b/packages/app/src/assets/file-icons/uml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uml_light.svg b/packages/app/src/assets/file-icons/uml_light.svg
new file mode 100644
index 000000000..c296fac5a
--- /dev/null
+++ b/packages/app/src/assets/file-icons/uml_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/unity.svg b/packages/app/src/assets/file-icons/unity.svg
new file mode 100644
index 000000000..f495772f9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/unity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/unocss.svg b/packages/app/src/assets/file-icons/unocss.svg
new file mode 100644
index 000000000..eab05c437
--- /dev/null
+++ b/packages/app/src/assets/file-icons/unocss.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/app/src/assets/file-icons/url.svg b/packages/app/src/assets/file-icons/url.svg
new file mode 100644
index 000000000..f065589a6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/url.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uv.svg b/packages/app/src/assets/file-icons/uv.svg
new file mode 100644
index 000000000..1549270fb
--- /dev/null
+++ b/packages/app/src/assets/file-icons/uv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vagrant.svg b/packages/app/src/assets/file-icons/vagrant.svg
new file mode 100644
index 000000000..78c19f9e7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vagrant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vala.svg b/packages/app/src/assets/file-icons/vala.svg
new file mode 100644
index 000000000..114aff27c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vanilla-extract.svg b/packages/app/src/assets/file-icons/vanilla-extract.svg
new file mode 100644
index 000000000..c1f1e5946
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vanilla-extract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/varnish.svg b/packages/app/src/assets/file-icons/varnish.svg
new file mode 100644
index 000000000..6b504af71
--- /dev/null
+++ b/packages/app/src/assets/file-icons/varnish.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vedic.svg b/packages/app/src/assets/file-icons/vedic.svg
new file mode 100644
index 000000000..3dccbeb01
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vedic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/velite.svg b/packages/app/src/assets/file-icons/velite.svg
new file mode 100644
index 000000000..ca50cfa4f
--- /dev/null
+++ b/packages/app/src/assets/file-icons/velite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/velocity.svg b/packages/app/src/assets/file-icons/velocity.svg
new file mode 100644
index 000000000..f5fb988a2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/velocity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vercel.svg b/packages/app/src/assets/file-icons/vercel.svg
new file mode 100644
index 000000000..8ff6e492e
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vercel_light.svg b/packages/app/src/assets/file-icons/vercel_light.svg
new file mode 100644
index 000000000..314b78cd6
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vercel_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verdaccio.svg b/packages/app/src/assets/file-icons/verdaccio.svg
new file mode 100644
index 000000000..3b5f1d412
--- /dev/null
+++ b/packages/app/src/assets/file-icons/verdaccio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verified.svg b/packages/app/src/assets/file-icons/verified.svg
new file mode 100644
index 000000000..0c861c559
--- /dev/null
+++ b/packages/app/src/assets/file-icons/verified.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verilog.svg b/packages/app/src/assets/file-icons/verilog.svg
new file mode 100644
index 000000000..c546ea874
--- /dev/null
+++ b/packages/app/src/assets/file-icons/verilog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vfl.svg b/packages/app/src/assets/file-icons/vfl.svg
new file mode 100644
index 000000000..3c371b4ad
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vfl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/video.svg b/packages/app/src/assets/file-icons/video.svg
new file mode 100644
index 000000000..2ade126f8
--- /dev/null
+++ b/packages/app/src/assets/file-icons/video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vim.svg b/packages/app/src/assets/file-icons/vim.svg
new file mode 100644
index 000000000..1fc655d96
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/virtual.svg b/packages/app/src/assets/file-icons/virtual.svg
new file mode 100644
index 000000000..0fdb620da
--- /dev/null
+++ b/packages/app/src/assets/file-icons/virtual.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/visualstudio.svg b/packages/app/src/assets/file-icons/visualstudio.svg
new file mode 100644
index 000000000..15328de80
--- /dev/null
+++ b/packages/app/src/assets/file-icons/visualstudio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vite.svg b/packages/app/src/assets/file-icons/vite.svg
new file mode 100644
index 000000000..d66cd5e7b
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vitest.svg b/packages/app/src/assets/file-icons/vitest.svg
new file mode 100644
index 000000000..0a634e997
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vitest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vlang.svg b/packages/app/src/assets/file-icons/vlang.svg
new file mode 100644
index 000000000..17bf0e049
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vlang.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/app/src/assets/file-icons/vscode.svg b/packages/app/src/assets/file-icons/vscode.svg
new file mode 100644
index 000000000..bb3772afd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vue-config.svg b/packages/app/src/assets/file-icons/vue-config.svg
new file mode 100644
index 000000000..bfe01c23c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vue-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vue.svg b/packages/app/src/assets/file-icons/vue.svg
new file mode 100644
index 000000000..359f899f2
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vuex-store.svg b/packages/app/src/assets/file-icons/vuex-store.svg
new file mode 100644
index 000000000..c98a851cc
--- /dev/null
+++ b/packages/app/src/assets/file-icons/vuex-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wakatime.svg b/packages/app/src/assets/file-icons/wakatime.svg
new file mode 100644
index 000000000..66b8a6f71
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wakatime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wakatime_light.svg b/packages/app/src/assets/file-icons/wakatime_light.svg
new file mode 100644
index 000000000..2b94c5611
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wakatime_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wallaby.svg b/packages/app/src/assets/file-icons/wallaby.svg
new file mode 100644
index 000000000..0e7ce6ef0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wallaby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wally.svg b/packages/app/src/assets/file-icons/wally.svg
new file mode 100644
index 000000000..a5c1f24fa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wally.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/watchman.svg b/packages/app/src/assets/file-icons/watchman.svg
new file mode 100644
index 000000000..74773cd14
--- /dev/null
+++ b/packages/app/src/assets/file-icons/watchman.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webassembly.svg b/packages/app/src/assets/file-icons/webassembly.svg
new file mode 100644
index 000000000..69a43aa35
--- /dev/null
+++ b/packages/app/src/assets/file-icons/webassembly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webhint.svg b/packages/app/src/assets/file-icons/webhint.svg
new file mode 100644
index 000000000..fdaa668db
--- /dev/null
+++ b/packages/app/src/assets/file-icons/webhint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webpack.svg b/packages/app/src/assets/file-icons/webpack.svg
new file mode 100644
index 000000000..68233d9e9
--- /dev/null
+++ b/packages/app/src/assets/file-icons/webpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wepy.svg b/packages/app/src/assets/file-icons/wepy.svg
new file mode 100644
index 000000000..bed1ad034
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wepy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/werf.svg b/packages/app/src/assets/file-icons/werf.svg
new file mode 100644
index 000000000..7a89a1fb1
--- /dev/null
+++ b/packages/app/src/assets/file-icons/werf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/windicss.svg b/packages/app/src/assets/file-icons/windicss.svg
new file mode 100644
index 000000000..4f31c55fa
--- /dev/null
+++ b/packages/app/src/assets/file-icons/windicss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wolframlanguage.svg b/packages/app/src/assets/file-icons/wolframlanguage.svg
new file mode 100644
index 000000000..77e880995
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wolframlanguage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/word.svg b/packages/app/src/assets/file-icons/word.svg
new file mode 100644
index 000000000..a90b88f9c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/word.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wrangler.svg b/packages/app/src/assets/file-icons/wrangler.svg
new file mode 100644
index 000000000..51a7983a0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wrangler.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wxt.svg b/packages/app/src/assets/file-icons/wxt.svg
new file mode 100644
index 000000000..d43b74283
--- /dev/null
+++ b/packages/app/src/assets/file-icons/wxt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xaml.svg b/packages/app/src/assets/file-icons/xaml.svg
new file mode 100644
index 000000000..0b7e865a7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/xaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xmake.svg b/packages/app/src/assets/file-icons/xmake.svg
new file mode 100644
index 000000000..47b3ce8ae
--- /dev/null
+++ b/packages/app/src/assets/file-icons/xmake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xml.svg b/packages/app/src/assets/file-icons/xml.svg
new file mode 100644
index 000000000..c3a1eaf45
--- /dev/null
+++ b/packages/app/src/assets/file-icons/xml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yaml.svg b/packages/app/src/assets/file-icons/yaml.svg
new file mode 100644
index 000000000..1f1cc7cb0
--- /dev/null
+++ b/packages/app/src/assets/file-icons/yaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yang.svg b/packages/app/src/assets/file-icons/yang.svg
new file mode 100644
index 000000000..fba4bbfa4
--- /dev/null
+++ b/packages/app/src/assets/file-icons/yang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yarn.svg b/packages/app/src/assets/file-icons/yarn.svg
new file mode 100644
index 000000000..9af575c11
--- /dev/null
+++ b/packages/app/src/assets/file-icons/yarn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zeabur.svg b/packages/app/src/assets/file-icons/zeabur.svg
new file mode 100644
index 000000000..37b0ea8b7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/zeabur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zeabur_light.svg b/packages/app/src/assets/file-icons/zeabur_light.svg
new file mode 100644
index 000000000..0d01f2b1c
--- /dev/null
+++ b/packages/app/src/assets/file-icons/zeabur_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zig.svg b/packages/app/src/assets/file-icons/zig.svg
new file mode 100644
index 000000000..b5604dfe7
--- /dev/null
+++ b/packages/app/src/assets/file-icons/zig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zip.svg b/packages/app/src/assets/file-icons/zip.svg
new file mode 100644
index 000000000..1056c60bd
--- /dev/null
+++ b/packages/app/src/assets/file-icons/zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/app/src/assets/theme.css b/packages/app/src/assets/theme.css
new file mode 100644
index 000000000..48d91fc94
--- /dev/null
+++ b/packages/app/src/assets/theme.css
@@ -0,0 +1,2385 @@
+/* Auto-generated theme CSS - Do not edit manually */
+:root {
+ --theme-primary: #3b7dd8;
+ --theme-secondary: #7b5bb6;
+ --theme-accent: #d68c27;
+ --theme-error: #d1383d;
+ --theme-warning: #d68c27;
+ --theme-success: #3d9a57;
+ --theme-info: #318795;
+ --theme-text: #1a1a1a;
+ --theme-text-muted: #8a8a8a;
+ --theme-background: #ffffff;
+ --theme-background-panel: #fafafa;
+ --theme-background-element: #f5f5f5;
+ --theme-border: #b8b8b8;
+ --theme-border-active: #a0a0a0;
+ --theme-border-subtle: #d4d4d4;
+ --theme-diff-added: #1e725c;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #7086b5;
+ --theme-diff-hunk-header: #7086b5;
+ --theme-diff-highlight-added: #4db380;
+ --theme-diff-highlight-removed: #f52a65;
+ --theme-diff-added-bg: #d5e5d5;
+ --theme-diff-removed-bg: #f7d8db;
+ --theme-diff-context-bg: #fafafa;
+ --theme-diff-line-number: #f5f5f5;
+ --theme-diff-added-line-number-bg: #c5d5c5;
+ --theme-diff-removed-line-number-bg: #e7c8cb;
+ --theme-markdown-text: #1a1a1a;
+ --theme-markdown-heading: #d68c27;
+ --theme-markdown-link: #3b7dd8;
+ --theme-markdown-link-text: #318795;
+ --theme-markdown-code: #3d9a57;
+ --theme-markdown-block-quote: #b0851f;
+ --theme-markdown-emph: #b0851f;
+ --theme-markdown-strong: #d68c27;
+ --theme-markdown-horizontal-rule: #8a8a8a;
+ --theme-markdown-list-item: #3b7dd8;
+ --theme-markdown-list-enumeration: #318795;
+ --theme-markdown-image: #3b7dd8;
+ --theme-markdown-image-text: #318795;
+ --theme-markdown-code-block: #1a1a1a;
+ --theme-syntax-comment: #8a8a8a;
+ --theme-syntax-keyword: #d68c27;
+ --theme-syntax-function: #3b7dd8;
+ --theme-syntax-variable: #d1383d;
+ --theme-syntax-string: #3d9a57;
+ --theme-syntax-number: #d68c27;
+ --theme-syntax-type: #b0851f;
+ --theme-syntax-operator: #318795;
+ --theme-syntax-punctuation: #1a1a1a;
+}
+
+[data-theme="aura"][data-dark="false"] {
+ --theme-primary: #a277ff;
+ --theme-secondary: #f694ff;
+ --theme-accent: #a277ff;
+ --theme-error: #ff6767;
+ --theme-warning: #ffca85;
+ --theme-success: #61ffca;
+ --theme-info: #a277ff;
+ --theme-text: #edecee;
+ --theme-text-muted: #6d6d6d;
+ --theme-background: #0f0f0f;
+ --theme-background-panel: #15141b;
+ --theme-background-element: #15141b;
+ --theme-border: #2d2d2d;
+ --theme-border-active: #6d6d6d;
+ --theme-border-subtle: #2d2d2d;
+ --theme-diff-added: #61ffca;
+ --theme-diff-removed: #ff6767;
+ --theme-diff-context: #6d6d6d;
+ --theme-diff-hunk-header: #6d6d6d;
+ --theme-diff-highlight-added: #61ffca;
+ --theme-diff-highlight-removed: #ff6767;
+ --theme-diff-added-bg: #354933;
+ --theme-diff-removed-bg: #3f191a;
+ --theme-diff-context-bg: #15141b;
+ --theme-diff-line-number: #2d2d2d;
+ --theme-diff-added-line-number-bg: #162620;
+ --theme-diff-removed-line-number-bg: #26161a;
+ --theme-markdown-text: #edecee;
+ --theme-markdown-heading: #a277ff;
+ --theme-markdown-link: #f694ff;
+ --theme-markdown-link-text: #a277ff;
+ --theme-markdown-code: #61ffca;
+ --theme-markdown-block-quote: #6d6d6d;
+ --theme-markdown-emph: #ffca85;
+ --theme-markdown-strong: #a277ff;
+ --theme-markdown-horizontal-rule: #6d6d6d;
+ --theme-markdown-list-item: #a277ff;
+ --theme-markdown-list-enumeration: #a277ff;
+ --theme-markdown-image: #f694ff;
+ --theme-markdown-image-text: #a277ff;
+ --theme-markdown-code-block: #edecee;
+ --theme-syntax-comment: #6d6d6d;
+ --theme-syntax-keyword: #f694ff;
+ --theme-syntax-function: #a277ff;
+ --theme-syntax-variable: #a277ff;
+ --theme-syntax-string: #61ffca;
+ --theme-syntax-number: #9dff65;
+ --theme-syntax-type: #a277ff;
+ --theme-syntax-operator: #f694ff;
+ --theme-syntax-punctuation: #edecee;
+}
+
+[data-theme="aura"][data-dark="true"] {
+ --theme-primary: #a277ff;
+ --theme-secondary: #f694ff;
+ --theme-accent: #a277ff;
+ --theme-error: #ff6767;
+ --theme-warning: #ffca85;
+ --theme-success: #61ffca;
+ --theme-info: #a277ff;
+ --theme-text: #edecee;
+ --theme-text-muted: #6d6d6d;
+ --theme-background: #0f0f0f;
+ --theme-background-panel: #15141b;
+ --theme-background-element: #15141b;
+ --theme-border: #2d2d2d;
+ --theme-border-active: #6d6d6d;
+ --theme-border-subtle: #2d2d2d;
+ --theme-diff-added: #61ffca;
+ --theme-diff-removed: #ff6767;
+ --theme-diff-context: #6d6d6d;
+ --theme-diff-hunk-header: #6d6d6d;
+ --theme-diff-highlight-added: #61ffca;
+ --theme-diff-highlight-removed: #ff6767;
+ --theme-diff-added-bg: #354933;
+ --theme-diff-removed-bg: #3f191a;
+ --theme-diff-context-bg: #15141b;
+ --theme-diff-line-number: #2d2d2d;
+ --theme-diff-added-line-number-bg: #162620;
+ --theme-diff-removed-line-number-bg: #26161a;
+ --theme-markdown-text: #edecee;
+ --theme-markdown-heading: #a277ff;
+ --theme-markdown-link: #f694ff;
+ --theme-markdown-link-text: #a277ff;
+ --theme-markdown-code: #61ffca;
+ --theme-markdown-block-quote: #6d6d6d;
+ --theme-markdown-emph: #ffca85;
+ --theme-markdown-strong: #a277ff;
+ --theme-markdown-horizontal-rule: #6d6d6d;
+ --theme-markdown-list-item: #a277ff;
+ --theme-markdown-list-enumeration: #a277ff;
+ --theme-markdown-image: #f694ff;
+ --theme-markdown-image-text: #a277ff;
+ --theme-markdown-code-block: #edecee;
+ --theme-syntax-comment: #6d6d6d;
+ --theme-syntax-keyword: #f694ff;
+ --theme-syntax-function: #a277ff;
+ --theme-syntax-variable: #a277ff;
+ --theme-syntax-string: #61ffca;
+ --theme-syntax-number: #9dff65;
+ --theme-syntax-type: #a277ff;
+ --theme-syntax-operator: #f694ff;
+ --theme-syntax-punctuation: #edecee;
+}
+
+[data-theme="ayu"][data-dark="false"] {
+ --theme-primary: #59c2ff;
+ --theme-secondary: #d2a6ff;
+ --theme-accent: #e6b450;
+ --theme-error: #d95757;
+ --theme-warning: #e6b673;
+ --theme-success: #7fd962;
+ --theme-info: #39bae6;
+ --theme-text: #bfbdb6;
+ --theme-text-muted: #565b66;
+ --theme-background: #0b0e14;
+ --theme-background-panel: #0f131a;
+ --theme-background-element: #0d1017;
+ --theme-border: #6c7380;
+ --theme-border-active: #6c7380;
+ --theme-border-subtle: #11151c;
+ --theme-diff-added: #7fd962;
+ --theme-diff-removed: #f26d78;
+ --theme-diff-context: #acb6bf;
+ --theme-diff-hunk-header: #acb6bf;
+ --theme-diff-highlight-added: #aad94c;
+ --theme-diff-highlight-removed: #f07178;
+ --theme-diff-added-bg: #20303b;
+ --theme-diff-removed-bg: #37222c;
+ --theme-diff-context-bg: #0f131a;
+ --theme-diff-line-number: #6c7380;
+ --theme-diff-added-line-number-bg: #1b2b34;
+ --theme-diff-removed-line-number-bg: #2d1f26;
+ --theme-markdown-text: #bfbdb6;
+ --theme-markdown-heading: #d2a6ff;
+ --theme-markdown-link: #59c2ff;
+ --theme-markdown-link-text: #39bae6;
+ --theme-markdown-code: #aad94c;
+ --theme-markdown-block-quote: #e6b673;
+ --theme-markdown-emph: #e6b673;
+ --theme-markdown-strong: #ffb454;
+ --theme-markdown-horizontal-rule: #565b66;
+ --theme-markdown-list-item: #59c2ff;
+ --theme-markdown-list-enumeration: #39bae6;
+ --theme-markdown-image: #59c2ff;
+ --theme-markdown-image-text: #39bae6;
+ --theme-markdown-code-block: #bfbdb6;
+ --theme-syntax-comment: #acb6bf;
+ --theme-syntax-keyword: #ff8f40;
+ --theme-syntax-function: #ffb454;
+ --theme-syntax-variable: #59c2ff;
+ --theme-syntax-string: #aad94c;
+ --theme-syntax-number: #d2a6ff;
+ --theme-syntax-type: #e6b673;
+ --theme-syntax-operator: #f29668;
+ --theme-syntax-punctuation: #bfbdb6;
+}
+
+[data-theme="ayu"][data-dark="true"] {
+ --theme-primary: #59c2ff;
+ --theme-secondary: #d2a6ff;
+ --theme-accent: #e6b450;
+ --theme-error: #d95757;
+ --theme-warning: #e6b673;
+ --theme-success: #7fd962;
+ --theme-info: #39bae6;
+ --theme-text: #bfbdb6;
+ --theme-text-muted: #565b66;
+ --theme-background: #0b0e14;
+ --theme-background-panel: #0f131a;
+ --theme-background-element: #0d1017;
+ --theme-border: #6c7380;
+ --theme-border-active: #6c7380;
+ --theme-border-subtle: #11151c;
+ --theme-diff-added: #7fd962;
+ --theme-diff-removed: #f26d78;
+ --theme-diff-context: #acb6bf;
+ --theme-diff-hunk-header: #acb6bf;
+ --theme-diff-highlight-added: #aad94c;
+ --theme-diff-highlight-removed: #f07178;
+ --theme-diff-added-bg: #20303b;
+ --theme-diff-removed-bg: #37222c;
+ --theme-diff-context-bg: #0f131a;
+ --theme-diff-line-number: #6c7380;
+ --theme-diff-added-line-number-bg: #1b2b34;
+ --theme-diff-removed-line-number-bg: #2d1f26;
+ --theme-markdown-text: #bfbdb6;
+ --theme-markdown-heading: #d2a6ff;
+ --theme-markdown-link: #59c2ff;
+ --theme-markdown-link-text: #39bae6;
+ --theme-markdown-code: #aad94c;
+ --theme-markdown-block-quote: #e6b673;
+ --theme-markdown-emph: #e6b673;
+ --theme-markdown-strong: #ffb454;
+ --theme-markdown-horizontal-rule: #565b66;
+ --theme-markdown-list-item: #59c2ff;
+ --theme-markdown-list-enumeration: #39bae6;
+ --theme-markdown-image: #59c2ff;
+ --theme-markdown-image-text: #39bae6;
+ --theme-markdown-code-block: #bfbdb6;
+ --theme-syntax-comment: #acb6bf;
+ --theme-syntax-keyword: #ff8f40;
+ --theme-syntax-function: #ffb454;
+ --theme-syntax-variable: #59c2ff;
+ --theme-syntax-string: #aad94c;
+ --theme-syntax-number: #d2a6ff;
+ --theme-syntax-type: #e6b673;
+ --theme-syntax-operator: #f29668;
+ --theme-syntax-punctuation: #bfbdb6;
+}
+
+[data-theme="catppuccin"][data-dark="false"] {
+ --theme-primary: #1e66f5;
+ --theme-secondary: #8839ef;
+ --theme-accent: #ea76cb;
+ --theme-error: #d20f39;
+ --theme-warning: #df8e1d;
+ --theme-success: #40a02b;
+ --theme-info: #179299;
+ --theme-text: #4c4f69;
+ --theme-text-muted: #5c5f77;
+ --theme-background: #eff1f5;
+ --theme-background-panel: #e6e9ef;
+ --theme-background-element: #dce0e8;
+ --theme-border: #ccd0da;
+ --theme-border-active: #bcc0cc;
+ --theme-border-subtle: #acb0be;
+ --theme-diff-added: #40a02b;
+ --theme-diff-removed: #d20f39;
+ --theme-diff-context: #7c7f93;
+ --theme-diff-hunk-header: #fe640b;
+ --theme-diff-highlight-added: #40a02b;
+ --theme-diff-highlight-removed: #d20f39;
+ --theme-diff-added-bg: #d6f0d9;
+ --theme-diff-removed-bg: #f6dfe2;
+ --theme-diff-context-bg: #e6e9ef;
+ --theme-diff-line-number: #bcc0cc;
+ --theme-diff-added-line-number-bg: #c9e3cb;
+ --theme-diff-removed-line-number-bg: #e9d3d6;
+ --theme-markdown-text: #4c4f69;
+ --theme-markdown-heading: #8839ef;
+ --theme-markdown-link: #1e66f5;
+ --theme-markdown-link-text: #04a5e5;
+ --theme-markdown-code: #40a02b;
+ --theme-markdown-block-quote: #df8e1d;
+ --theme-markdown-emph: #df8e1d;
+ --theme-markdown-strong: #fe640b;
+ --theme-markdown-horizontal-rule: #6c6f85;
+ --theme-markdown-list-item: #1e66f5;
+ --theme-markdown-list-enumeration: #04a5e5;
+ --theme-markdown-image: #1e66f5;
+ --theme-markdown-image-text: #04a5e5;
+ --theme-markdown-code-block: #4c4f69;
+ --theme-syntax-comment: #7c7f93;
+ --theme-syntax-keyword: #8839ef;
+ --theme-syntax-function: #1e66f5;
+ --theme-syntax-variable: #d20f39;
+ --theme-syntax-string: #40a02b;
+ --theme-syntax-number: #fe640b;
+ --theme-syntax-type: #df8e1d;
+ --theme-syntax-operator: #04a5e5;
+ --theme-syntax-punctuation: #4c4f69;
+}
+
+[data-theme="catppuccin"][data-dark="true"] {
+ --theme-primary: #89b4fa;
+ --theme-secondary: #cba6f7;
+ --theme-accent: #f5c2e7;
+ --theme-error: #f38ba8;
+ --theme-warning: #f9e2af;
+ --theme-success: #a6e3a1;
+ --theme-info: #94e2d5;
+ --theme-text: #cdd6f4;
+ --theme-text-muted: #bac2de;
+ --theme-background: #1e1e2e;
+ --theme-background-panel: #181825;
+ --theme-background-element: #11111b;
+ --theme-border: #313244;
+ --theme-border-active: #45475a;
+ --theme-border-subtle: #585b70;
+ --theme-diff-added: #a6e3a1;
+ --theme-diff-removed: #f38ba8;
+ --theme-diff-context: #9399b2;
+ --theme-diff-hunk-header: #fab387;
+ --theme-diff-highlight-added: #a6e3a1;
+ --theme-diff-highlight-removed: #f38ba8;
+ --theme-diff-added-bg: #24312b;
+ --theme-diff-removed-bg: #3c2a32;
+ --theme-diff-context-bg: #181825;
+ --theme-diff-line-number: #45475a;
+ --theme-diff-added-line-number-bg: #1e2a25;
+ --theme-diff-removed-line-number-bg: #32232a;
+ --theme-markdown-text: #cdd6f4;
+ --theme-markdown-heading: #cba6f7;
+ --theme-markdown-link: #89b4fa;
+ --theme-markdown-link-text: #89dceb;
+ --theme-markdown-code: #a6e3a1;
+ --theme-markdown-block-quote: #f9e2af;
+ --theme-markdown-emph: #f9e2af;
+ --theme-markdown-strong: #fab387;
+ --theme-markdown-horizontal-rule: #a6adc8;
+ --theme-markdown-list-item: #89b4fa;
+ --theme-markdown-list-enumeration: #89dceb;
+ --theme-markdown-image: #89b4fa;
+ --theme-markdown-image-text: #89dceb;
+ --theme-markdown-code-block: #cdd6f4;
+ --theme-syntax-comment: #9399b2;
+ --theme-syntax-keyword: #cba6f7;
+ --theme-syntax-function: #89b4fa;
+ --theme-syntax-variable: #f38ba8;
+ --theme-syntax-string: #a6e3a1;
+ --theme-syntax-number: #fab387;
+ --theme-syntax-type: #f9e2af;
+ --theme-syntax-operator: #89dceb;
+ --theme-syntax-punctuation: #cdd6f4;
+}
+
+[data-theme="cobalt2"][data-dark="false"] {
+ --theme-primary: #0066cc;
+ --theme-secondary: #7c4dff;
+ --theme-accent: #00acc1;
+ --theme-error: #e91e63;
+ --theme-warning: #ff9800;
+ --theme-success: #4caf50;
+ --theme-info: #ff5722;
+ --theme-text: #193549;
+ --theme-text-muted: #5c6b7d;
+ --theme-background: #ffffff;
+ --theme-background-panel: #f5f7fa;
+ --theme-background-element: #e8ecf1;
+ --theme-border: #d3dae3;
+ --theme-border-active: #0066cc;
+ --theme-border-subtle: #e8ecf1;
+ --theme-diff-added: #4caf50;
+ --theme-diff-removed: #e91e63;
+ --theme-diff-context: #5c6b7d;
+ --theme-diff-hunk-header: #00acc1;
+ --theme-diff-highlight-added: #4caf50;
+ --theme-diff-highlight-removed: #e91e63;
+ --theme-diff-added-bg: #e8f5e9;
+ --theme-diff-removed-bg: #ffebee;
+ --theme-diff-context-bg: #f5f7fa;
+ --theme-diff-line-number: #b0bec5;
+ --theme-diff-added-line-number-bg: #e8f5e9;
+ --theme-diff-removed-line-number-bg: #ffebee;
+ --theme-markdown-text: #193549;
+ --theme-markdown-heading: #ff9800;
+ --theme-markdown-link: #0066cc;
+ --theme-markdown-link-text: #00acc1;
+ --theme-markdown-code: #4caf50;
+ --theme-markdown-block-quote: #5c6b7d;
+ --theme-markdown-emph: #ff5722;
+ --theme-markdown-strong: #e91e63;
+ --theme-markdown-horizontal-rule: #d3dae3;
+ --theme-markdown-list-item: #0066cc;
+ --theme-markdown-list-enumeration: #00acc1;
+ --theme-markdown-image: #0066cc;
+ --theme-markdown-image-text: #00acc1;
+ --theme-markdown-code-block: #193549;
+ --theme-syntax-comment: #5c6b7d;
+ --theme-syntax-keyword: #ff5722;
+ --theme-syntax-function: #ff9800;
+ --theme-syntax-variable: #193549;
+ --theme-syntax-string: #4caf50;
+ --theme-syntax-number: #e91e63;
+ --theme-syntax-type: #00acc1;
+ --theme-syntax-operator: #ff5722;
+ --theme-syntax-punctuation: #193549;
+}
+
+[data-theme="cobalt2"][data-dark="true"] {
+ --theme-primary: #0088ff;
+ --theme-secondary: #9a5feb;
+ --theme-accent: #2affdf;
+ --theme-error: #ff0088;
+ --theme-warning: #ffc600;
+ --theme-success: #9eff80;
+ --theme-info: #ff9d00;
+ --theme-text: #ffffff;
+ --theme-text-muted: #adb7c9;
+ --theme-background: #193549;
+ --theme-background-panel: #122738;
+ --theme-background-element: #1f4662;
+ --theme-border: #1f4662;
+ --theme-border-active: #0088ff;
+ --theme-border-subtle: #0e1e2e;
+ --theme-diff-added: #9eff80;
+ --theme-diff-removed: #ff0088;
+ --theme-diff-context: #adb7c9;
+ --theme-diff-hunk-header: #2affdf;
+ --theme-diff-highlight-added: #b9ff9f;
+ --theme-diff-highlight-removed: #ff5fb3;
+ --theme-diff-added-bg: #1a3a2a;
+ --theme-diff-removed-bg: #3a1a2a;
+ --theme-diff-context-bg: #122738;
+ --theme-diff-line-number: #2d5a7b;
+ --theme-diff-added-line-number-bg: #1a3a2a;
+ --theme-diff-removed-line-number-bg: #3a1a2a;
+ --theme-markdown-text: #ffffff;
+ --theme-markdown-heading: #ffc600;
+ --theme-markdown-link: #0088ff;
+ --theme-markdown-link-text: #2affdf;
+ --theme-markdown-code: #9eff80;
+ --theme-markdown-block-quote: #adb7c9;
+ --theme-markdown-emph: #ff9d00;
+ --theme-markdown-strong: #ff628c;
+ --theme-markdown-horizontal-rule: #2d5a7b;
+ --theme-markdown-list-item: #0088ff;
+ --theme-markdown-list-enumeration: #2affdf;
+ --theme-markdown-image: #0088ff;
+ --theme-markdown-image-text: #2affdf;
+ --theme-markdown-code-block: #ffffff;
+ --theme-syntax-comment: #0088ff;
+ --theme-syntax-keyword: #ff9d00;
+ --theme-syntax-function: #ffc600;
+ --theme-syntax-variable: #ffffff;
+ --theme-syntax-string: #9eff80;
+ --theme-syntax-number: #ff628c;
+ --theme-syntax-type: #2affdf;
+ --theme-syntax-operator: #ff9d00;
+ --theme-syntax-punctuation: #ffffff;
+}
+
+[data-theme="dracula"][data-dark="false"] {
+ --theme-primary: #bd93f9;
+ --theme-secondary: #ff79c6;
+ --theme-accent: #8be9fd;
+ --theme-error: #ff5555;
+ --theme-warning: #f1fa8c;
+ --theme-success: #50fa7b;
+ --theme-info: #ffb86c;
+ --theme-text: #282a36;
+ --theme-text-muted: #6272a4;
+ --theme-background: #f8f8f2;
+ --theme-background-panel: #e8e8e2;
+ --theme-background-element: #d8d8d2;
+ --theme-border: #c8c8c2;
+ --theme-border-active: #bd93f9;
+ --theme-border-subtle: #e0e0e0;
+ --theme-diff-added: #50fa7b;
+ --theme-diff-removed: #ff5555;
+ --theme-diff-context: #6272a4;
+ --theme-diff-hunk-header: #6272a4;
+ --theme-diff-highlight-added: #50fa7b;
+ --theme-diff-highlight-removed: #ff5555;
+ --theme-diff-added-bg: #e0ffe0;
+ --theme-diff-removed-bg: #ffe0e0;
+ --theme-diff-context-bg: #e8e8e2;
+ --theme-diff-line-number: #c8c8c2;
+ --theme-diff-added-line-number-bg: #e0ffe0;
+ --theme-diff-removed-line-number-bg: #ffe0e0;
+ --theme-markdown-text: #282a36;
+ --theme-markdown-heading: #bd93f9;
+ --theme-markdown-link: #8be9fd;
+ --theme-markdown-link-text: #ff79c6;
+ --theme-markdown-code: #50fa7b;
+ --theme-markdown-block-quote: #6272a4;
+ --theme-markdown-emph: #f1fa8c;
+ --theme-markdown-strong: #ffb86c;
+ --theme-markdown-horizontal-rule: #6272a4;
+ --theme-markdown-list-item: #bd93f9;
+ --theme-markdown-list-enumeration: #8be9fd;
+ --theme-markdown-image: #8be9fd;
+ --theme-markdown-image-text: #ff79c6;
+ --theme-markdown-code-block: #282a36;
+ --theme-syntax-comment: #6272a4;
+ --theme-syntax-keyword: #ff79c6;
+ --theme-syntax-function: #50fa7b;
+ --theme-syntax-variable: #282a36;
+ --theme-syntax-string: #f1fa8c;
+ --theme-syntax-number: #bd93f9;
+ --theme-syntax-type: #8be9fd;
+ --theme-syntax-operator: #ff79c6;
+ --theme-syntax-punctuation: #282a36;
+}
+
+[data-theme="dracula"][data-dark="true"] {
+ --theme-primary: #bd93f9;
+ --theme-secondary: #ff79c6;
+ --theme-accent: #8be9fd;
+ --theme-error: #ff5555;
+ --theme-warning: #f1fa8c;
+ --theme-success: #50fa7b;
+ --theme-info: #ffb86c;
+ --theme-text: #f8f8f2;
+ --theme-text-muted: #6272a4;
+ --theme-background: #282a36;
+ --theme-background-panel: #21222c;
+ --theme-background-element: #44475a;
+ --theme-border: #44475a;
+ --theme-border-active: #bd93f9;
+ --theme-border-subtle: #191a21;
+ --theme-diff-added: #50fa7b;
+ --theme-diff-removed: #ff5555;
+ --theme-diff-context: #6272a4;
+ --theme-diff-hunk-header: #6272a4;
+ --theme-diff-highlight-added: #50fa7b;
+ --theme-diff-highlight-removed: #ff5555;
+ --theme-diff-added-bg: #1a3a1a;
+ --theme-diff-removed-bg: #3a1a1a;
+ --theme-diff-context-bg: #21222c;
+ --theme-diff-line-number: #44475a;
+ --theme-diff-added-line-number-bg: #1a3a1a;
+ --theme-diff-removed-line-number-bg: #3a1a1a;
+ --theme-markdown-text: #f8f8f2;
+ --theme-markdown-heading: #bd93f9;
+ --theme-markdown-link: #8be9fd;
+ --theme-markdown-link-text: #ff79c6;
+ --theme-markdown-code: #50fa7b;
+ --theme-markdown-block-quote: #6272a4;
+ --theme-markdown-emph: #f1fa8c;
+ --theme-markdown-strong: #ffb86c;
+ --theme-markdown-horizontal-rule: #6272a4;
+ --theme-markdown-list-item: #bd93f9;
+ --theme-markdown-list-enumeration: #8be9fd;
+ --theme-markdown-image: #8be9fd;
+ --theme-markdown-image-text: #ff79c6;
+ --theme-markdown-code-block: #f8f8f2;
+ --theme-syntax-comment: #6272a4;
+ --theme-syntax-keyword: #ff79c6;
+ --theme-syntax-function: #50fa7b;
+ --theme-syntax-variable: #f8f8f2;
+ --theme-syntax-string: #f1fa8c;
+ --theme-syntax-number: #bd93f9;
+ --theme-syntax-type: #8be9fd;
+ --theme-syntax-operator: #ff79c6;
+ --theme-syntax-punctuation: #f8f8f2;
+}
+
+[data-theme="everforest"][data-dark="false"] {
+ --theme-primary: #8da101;
+ --theme-secondary: #3a94c5;
+ --theme-accent: #df69ba;
+ --theme-error: #f85552;
+ --theme-warning: #f57d26;
+ --theme-success: #8da101;
+ --theme-info: #35a77c;
+ --theme-text: #5c6a72;
+ --theme-text-muted: #a6b0a0;
+ --theme-background: #fdf6e3;
+ --theme-background-panel: #efebd4;
+ --theme-background-element: #f4f0d9;
+ --theme-border: #939f91;
+ --theme-border-active: #829181;
+ --theme-border-subtle: #a6b0a0;
+ --theme-diff-added: #1e725c;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #7086b5;
+ --theme-diff-hunk-header: #7086b5;
+ --theme-diff-highlight-added: #4db380;
+ --theme-diff-highlight-removed: #f52a65;
+ --theme-diff-added-bg: #d5e5d5;
+ --theme-diff-removed-bg: #f7d8db;
+ --theme-diff-context-bg: #efebd4;
+ --theme-diff-line-number: #f4f0d9;
+ --theme-diff-added-line-number-bg: #c5d5c5;
+ --theme-diff-removed-line-number-bg: #e7c8cb;
+ --theme-markdown-text: #5c6a72;
+ --theme-markdown-heading: #df69ba;
+ --theme-markdown-link: #8da101;
+ --theme-markdown-link-text: #35a77c;
+ --theme-markdown-code: #8da101;
+ --theme-markdown-block-quote: #dfa000;
+ --theme-markdown-emph: #dfa000;
+ --theme-markdown-strong: #f57d26;
+ --theme-markdown-horizontal-rule: #a6b0a0;
+ --theme-markdown-list-item: #8da101;
+ --theme-markdown-list-enumeration: #35a77c;
+ --theme-markdown-image: #8da101;
+ --theme-markdown-image-text: #35a77c;
+ --theme-markdown-code-block: #5c6a72;
+ --theme-syntax-comment: #a6b0a0;
+ --theme-syntax-keyword: #df69ba;
+ --theme-syntax-function: #8da101;
+ --theme-syntax-variable: #f85552;
+ --theme-syntax-string: #8da101;
+ --theme-syntax-number: #f57d26;
+ --theme-syntax-type: #dfa000;
+ --theme-syntax-operator: #35a77c;
+ --theme-syntax-punctuation: #5c6a72;
+}
+
+[data-theme="everforest"][data-dark="true"] {
+ --theme-primary: #a7c080;
+ --theme-secondary: #7fbbb3;
+ --theme-accent: #d699b6;
+ --theme-error: #e67e80;
+ --theme-warning: #e69875;
+ --theme-success: #a7c080;
+ --theme-info: #83c092;
+ --theme-text: #d3c6aa;
+ --theme-text-muted: #7a8478;
+ --theme-background: #2d353b;
+ --theme-background-panel: #333c43;
+ --theme-background-element: #343f44;
+ --theme-border: #859289;
+ --theme-border-active: #9da9a0;
+ --theme-border-subtle: #7a8478;
+ --theme-diff-added: #4fd6be;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #828bb8;
+ --theme-diff-hunk-header: #828bb8;
+ --theme-diff-highlight-added: #b8db87;
+ --theme-diff-highlight-removed: #e26a75;
+ --theme-diff-added-bg: #20303b;
+ --theme-diff-removed-bg: #37222c;
+ --theme-diff-context-bg: #333c43;
+ --theme-diff-line-number: #343f44;
+ --theme-diff-added-line-number-bg: #1b2b34;
+ --theme-diff-removed-line-number-bg: #2d1f26;
+ --theme-markdown-text: #d3c6aa;
+ --theme-markdown-heading: #d699b6;
+ --theme-markdown-link: #a7c080;
+ --theme-markdown-link-text: #83c092;
+ --theme-markdown-code: #a7c080;
+ --theme-markdown-block-quote: #dbbc7f;
+ --theme-markdown-emph: #dbbc7f;
+ --theme-markdown-strong: #e69875;
+ --theme-markdown-horizontal-rule: #7a8478;
+ --theme-markdown-list-item: #a7c080;
+ --theme-markdown-list-enumeration: #83c092;
+ --theme-markdown-image: #a7c080;
+ --theme-markdown-image-text: #83c092;
+ --theme-markdown-code-block: #d3c6aa;
+ --theme-syntax-comment: #7a8478;
+ --theme-syntax-keyword: #d699b6;
+ --theme-syntax-function: #a7c080;
+ --theme-syntax-variable: #e67e80;
+ --theme-syntax-string: #a7c080;
+ --theme-syntax-number: #e69875;
+ --theme-syntax-type: #dbbc7f;
+ --theme-syntax-operator: #83c092;
+ --theme-syntax-punctuation: #d3c6aa;
+}
+
+[data-theme="github"][data-dark="false"] {
+ --theme-primary: #0969da;
+ --theme-secondary: #8250df;
+ --theme-accent: #1b7c83;
+ --theme-error: #cf222e;
+ --theme-warning: #9a6700;
+ --theme-success: #1a7f37;
+ --theme-info: #bc4c00;
+ --theme-text: #24292f;
+ --theme-text-muted: #57606a;
+ --theme-background: #ffffff;
+ --theme-background-panel: #f6f8fa;
+ --theme-background-element: #f0f3f6;
+ --theme-border: #d0d7de;
+ --theme-border-active: #0969da;
+ --theme-border-subtle: #d8dee4;
+ --theme-diff-added: #1a7f37;
+ --theme-diff-removed: #cf222e;
+ --theme-diff-context: #57606a;
+ --theme-diff-hunk-header: #0969da;
+ --theme-diff-highlight-added: #1a7f37;
+ --theme-diff-highlight-removed: #cf222e;
+ --theme-diff-added-bg: #dafbe1;
+ --theme-diff-removed-bg: #ffebe9;
+ --theme-diff-context-bg: #f6f8fa;
+ --theme-diff-line-number: #afb8c1;
+ --theme-diff-added-line-number-bg: #dafbe1;
+ --theme-diff-removed-line-number-bg: #ffebe9;
+ --theme-markdown-text: #24292f;
+ --theme-markdown-heading: #0969da;
+ --theme-markdown-link: #0969da;
+ --theme-markdown-link-text: #1b7c83;
+ --theme-markdown-code: #bf3989;
+ --theme-markdown-block-quote: #57606a;
+ --theme-markdown-emph: #9a6700;
+ --theme-markdown-strong: #bc4c00;
+ --theme-markdown-horizontal-rule: #d0d7de;
+ --theme-markdown-list-item: #0969da;
+ --theme-markdown-list-enumeration: #1b7c83;
+ --theme-markdown-image: #0969da;
+ --theme-markdown-image-text: #1b7c83;
+ --theme-markdown-code-block: #24292f;
+ --theme-syntax-comment: #57606a;
+ --theme-syntax-keyword: #cf222e;
+ --theme-syntax-function: #8250df;
+ --theme-syntax-variable: #bc4c00;
+ --theme-syntax-string: #0969da;
+ --theme-syntax-number: #1b7c83;
+ --theme-syntax-type: #bc4c00;
+ --theme-syntax-operator: #cf222e;
+ --theme-syntax-punctuation: #24292f;
+}
+
+[data-theme="github"][data-dark="true"] {
+ --theme-primary: #58a6ff;
+ --theme-secondary: #bc8cff;
+ --theme-accent: #39c5cf;
+ --theme-error: #f85149;
+ --theme-warning: #e3b341;
+ --theme-success: #3fb950;
+ --theme-info: #d29922;
+ --theme-text: #c9d1d9;
+ --theme-text-muted: #8b949e;
+ --theme-background: #0d1117;
+ --theme-background-panel: #010409;
+ --theme-background-element: #161b22;
+ --theme-border: #30363d;
+ --theme-border-active: #58a6ff;
+ --theme-border-subtle: #21262d;
+ --theme-diff-added: #3fb950;
+ --theme-diff-removed: #f85149;
+ --theme-diff-context: #8b949e;
+ --theme-diff-hunk-header: #58a6ff;
+ --theme-diff-highlight-added: #3fb950;
+ --theme-diff-highlight-removed: #f85149;
+ --theme-diff-added-bg: #033a16;
+ --theme-diff-removed-bg: #67060c;
+ --theme-diff-context-bg: #010409;
+ --theme-diff-line-number: #484f58;
+ --theme-diff-added-line-number-bg: #033a16;
+ --theme-diff-removed-line-number-bg: #67060c;
+ --theme-markdown-text: #c9d1d9;
+ --theme-markdown-heading: #58a6ff;
+ --theme-markdown-link: #58a6ff;
+ --theme-markdown-link-text: #39c5cf;
+ --theme-markdown-code: #ff7b72;
+ --theme-markdown-block-quote: #8b949e;
+ --theme-markdown-emph: #e3b341;
+ --theme-markdown-strong: #d29922;
+ --theme-markdown-horizontal-rule: #30363d;
+ --theme-markdown-list-item: #58a6ff;
+ --theme-markdown-list-enumeration: #39c5cf;
+ --theme-markdown-image: #58a6ff;
+ --theme-markdown-image-text: #39c5cf;
+ --theme-markdown-code-block: #c9d1d9;
+ --theme-syntax-comment: #8b949e;
+ --theme-syntax-keyword: #ff7b72;
+ --theme-syntax-function: #bc8cff;
+ --theme-syntax-variable: #d29922;
+ --theme-syntax-string: #39c5cf;
+ --theme-syntax-number: #58a6ff;
+ --theme-syntax-type: #d29922;
+ --theme-syntax-operator: #ff7b72;
+ --theme-syntax-punctuation: #c9d1d9;
+}
+
+[data-theme="gruvbox"][data-dark="false"] {
+ --theme-primary: #076678;
+ --theme-secondary: #8f3f71;
+ --theme-accent: #427b58;
+ --theme-error: #9d0006;
+ --theme-warning: #af3a03;
+ --theme-success: #79740e;
+ --theme-info: #b57614;
+ --theme-text: #3c3836;
+ --theme-text-muted: #7c6f64;
+ --theme-background: #fbf1c7;
+ --theme-background-panel: #ebdbb2;
+ --theme-background-element: #d5c4a1;
+ --theme-border: #bdae93;
+ --theme-border-active: #3c3836;
+ --theme-border-subtle: #d5c4a1;
+ --theme-diff-added: #79740e;
+ --theme-diff-removed: #9d0006;
+ --theme-diff-context: #7c6f64;
+ --theme-diff-hunk-header: #427b58;
+ --theme-diff-highlight-added: #79740e;
+ --theme-diff-highlight-removed: #9d0006;
+ --theme-diff-added-bg: #e2e0b5;
+ --theme-diff-removed-bg: #e9d8d5;
+ --theme-diff-context-bg: #ebdbb2;
+ --theme-diff-line-number: #bdae93;
+ --theme-diff-added-line-number-bg: #d4d2a9;
+ --theme-diff-removed-line-number-bg: #d8cbc8;
+ --theme-markdown-text: #3c3836;
+ --theme-markdown-heading: #076678;
+ --theme-markdown-link: #427b58;
+ --theme-markdown-link-text: #79740e;
+ --theme-markdown-code: #b57614;
+ --theme-markdown-block-quote: #7c6f64;
+ --theme-markdown-emph: #8f3f71;
+ --theme-markdown-strong: #af3a03;
+ --theme-markdown-horizontal-rule: #7c6f64;
+ --theme-markdown-list-item: #076678;
+ --theme-markdown-list-enumeration: #427b58;
+ --theme-markdown-image: #427b58;
+ --theme-markdown-image-text: #79740e;
+ --theme-markdown-code-block: #3c3836;
+ --theme-syntax-comment: #7c6f64;
+ --theme-syntax-keyword: #9d0006;
+ --theme-syntax-function: #79740e;
+ --theme-syntax-variable: #076678;
+ --theme-syntax-string: #b57614;
+ --theme-syntax-number: #8f3f71;
+ --theme-syntax-type: #427b58;
+ --theme-syntax-operator: #af3a03;
+ --theme-syntax-punctuation: #3c3836;
+}
+
+[data-theme="gruvbox"][data-dark="true"] {
+ --theme-primary: #83a598;
+ --theme-secondary: #d3869b;
+ --theme-accent: #8ec07c;
+ --theme-error: #fb4934;
+ --theme-warning: #fe8019;
+ --theme-success: #b8bb26;
+ --theme-info: #fabd2f;
+ --theme-text: #ebdbb2;
+ --theme-text-muted: #928374;
+ --theme-background: #282828;
+ --theme-background-panel: #3c3836;
+ --theme-background-element: #504945;
+ --theme-border: #665c54;
+ --theme-border-active: #ebdbb2;
+ --theme-border-subtle: #504945;
+ --theme-diff-added: #98971a;
+ --theme-diff-removed: #cc241d;
+ --theme-diff-context: #928374;
+ --theme-diff-hunk-header: #689d6a;
+ --theme-diff-highlight-added: #b8bb26;
+ --theme-diff-highlight-removed: #fb4934;
+ --theme-diff-added-bg: #32302f;
+ --theme-diff-removed-bg: #322929;
+ --theme-diff-context-bg: #3c3836;
+ --theme-diff-line-number: #665c54;
+ --theme-diff-added-line-number-bg: #2a2827;
+ --theme-diff-removed-line-number-bg: #2a2222;
+ --theme-markdown-text: #ebdbb2;
+ --theme-markdown-heading: #83a598;
+ --theme-markdown-link: #8ec07c;
+ --theme-markdown-link-text: #b8bb26;
+ --theme-markdown-code: #fabd2f;
+ --theme-markdown-block-quote: #928374;
+ --theme-markdown-emph: #d3869b;
+ --theme-markdown-strong: #fe8019;
+ --theme-markdown-horizontal-rule: #928374;
+ --theme-markdown-list-item: #83a598;
+ --theme-markdown-list-enumeration: #8ec07c;
+ --theme-markdown-image: #8ec07c;
+ --theme-markdown-image-text: #b8bb26;
+ --theme-markdown-code-block: #ebdbb2;
+ --theme-syntax-comment: #928374;
+ --theme-syntax-keyword: #fb4934;
+ --theme-syntax-function: #b8bb26;
+ --theme-syntax-variable: #83a598;
+ --theme-syntax-string: #fabd2f;
+ --theme-syntax-number: #d3869b;
+ --theme-syntax-type: #8ec07c;
+ --theme-syntax-operator: #fe8019;
+ --theme-syntax-punctuation: #ebdbb2;
+}
+
+[data-theme="kanagawa"][data-dark="false"] {
+ --theme-primary: #2d4f67;
+ --theme-secondary: #957fb8;
+ --theme-accent: #d27e99;
+ --theme-error: #e82424;
+ --theme-warning: #d7a657;
+ --theme-success: #98bb6c;
+ --theme-info: #76946a;
+ --theme-text: #54433a;
+ --theme-text-muted: #9e9389;
+ --theme-background: #f2e9de;
+ --theme-background-panel: #eae4d7;
+ --theme-background-element: #e3dcd2;
+ --theme-border: #d4cbbf;
+ --theme-border-active: #c38d9d;
+ --theme-border-subtle: #dcd4c9;
+ --theme-diff-added: #98bb6c;
+ --theme-diff-removed: #e82424;
+ --theme-diff-context: #9e9389;
+ --theme-diff-hunk-header: #2d4f67;
+ --theme-diff-highlight-added: #89af5b;
+ --theme-diff-highlight-removed: #d61f1f;
+ --theme-diff-added-bg: #eaf3e4;
+ --theme-diff-removed-bg: #fbe6e6;
+ --theme-diff-context-bg: #eae4d7;
+ --theme-diff-line-number: #c7beb4;
+ --theme-diff-added-line-number-bg: #dde8d6;
+ --theme-diff-removed-line-number-bg: #f2dada;
+ --theme-markdown-text: #54433a;
+ --theme-markdown-heading: #957fb8;
+ --theme-markdown-link: #2d4f67;
+ --theme-markdown-link-text: #76946a;
+ --theme-markdown-code: #98bb6c;
+ --theme-markdown-block-quote: #9e9389;
+ --theme-markdown-emph: #c38d9d;
+ --theme-markdown-strong: #d7a657;
+ --theme-markdown-horizontal-rule: #9e9389;
+ --theme-markdown-list-item: #2d4f67;
+ --theme-markdown-list-enumeration: #76946a;
+ --theme-markdown-image: #2d4f67;
+ --theme-markdown-image-text: #76946a;
+ --theme-markdown-code-block: #54433a;
+ --theme-syntax-comment: #9e9389;
+ --theme-syntax-keyword: #957fb8;
+ --theme-syntax-function: #2d4f67;
+ --theme-syntax-variable: #54433a;
+ --theme-syntax-string: #98bb6c;
+ --theme-syntax-number: #d7a657;
+ --theme-syntax-type: #c38d9d;
+ --theme-syntax-operator: #d27e99;
+ --theme-syntax-punctuation: #54433a;
+}
+
+[data-theme="kanagawa"][data-dark="true"] {
+ --theme-primary: #7e9cd8;
+ --theme-secondary: #957fb8;
+ --theme-accent: #d27e99;
+ --theme-error: #e82424;
+ --theme-warning: #d7a657;
+ --theme-success: #98bb6c;
+ --theme-info: #76946a;
+ --theme-text: #dcd7ba;
+ --theme-text-muted: #727169;
+ --theme-background: #1f1f28;
+ --theme-background-panel: #2a2a37;
+ --theme-background-element: #363646;
+ --theme-border: #54546d;
+ --theme-border-active: #c38d9d;
+ --theme-border-subtle: #363646;
+ --theme-diff-added: #98bb6c;
+ --theme-diff-removed: #e82424;
+ --theme-diff-context: #727169;
+ --theme-diff-hunk-header: #2d4f67;
+ --theme-diff-highlight-added: #a9d977;
+ --theme-diff-highlight-removed: #f24a4a;
+ --theme-diff-added-bg: #252e25;
+ --theme-diff-removed-bg: #362020;
+ --theme-diff-context-bg: #2a2a37;
+ --theme-diff-line-number: #54546d;
+ --theme-diff-added-line-number-bg: #202820;
+ --theme-diff-removed-line-number-bg: #2d1c1c;
+ --theme-markdown-text: #dcd7ba;
+ --theme-markdown-heading: #957fb8;
+ --theme-markdown-link: #7e9cd8;
+ --theme-markdown-link-text: #76946a;
+ --theme-markdown-code: #98bb6c;
+ --theme-markdown-block-quote: #727169;
+ --theme-markdown-emph: #c38d9d;
+ --theme-markdown-strong: #d7a657;
+ --theme-markdown-horizontal-rule: #727169;
+ --theme-markdown-list-item: #7e9cd8;
+ --theme-markdown-list-enumeration: #76946a;
+ --theme-markdown-image: #7e9cd8;
+ --theme-markdown-image-text: #76946a;
+ --theme-markdown-code-block: #dcd7ba;
+ --theme-syntax-comment: #727169;
+ --theme-syntax-keyword: #957fb8;
+ --theme-syntax-function: #7e9cd8;
+ --theme-syntax-variable: #dcd7ba;
+ --theme-syntax-string: #98bb6c;
+ --theme-syntax-number: #d7a657;
+ --theme-syntax-type: #c38d9d;
+ --theme-syntax-operator: #d27e99;
+ --theme-syntax-punctuation: #dcd7ba;
+}
+
+[data-theme="material"][data-dark="false"] {
+ --theme-primary: #6182b8;
+ --theme-secondary: #7c4dff;
+ --theme-accent: #39adb5;
+ --theme-error: #e53935;
+ --theme-warning: #ffb300;
+ --theme-success: #91b859;
+ --theme-info: #f4511e;
+ --theme-text: #263238;
+ --theme-text-muted: #90a4ae;
+ --theme-background: #fafafa;
+ --theme-background-panel: #f5f5f5;
+ --theme-background-element: #e7e7e8;
+ --theme-border: #e0e0e0;
+ --theme-border-active: #6182b8;
+ --theme-border-subtle: #eeeeee;
+ --theme-diff-added: #91b859;
+ --theme-diff-removed: #e53935;
+ --theme-diff-context: #90a4ae;
+ --theme-diff-hunk-header: #39adb5;
+ --theme-diff-highlight-added: #91b859;
+ --theme-diff-highlight-removed: #e53935;
+ --theme-diff-added-bg: #e8f5e9;
+ --theme-diff-removed-bg: #ffebee;
+ --theme-diff-context-bg: #f5f5f5;
+ --theme-diff-line-number: #cfd8dc;
+ --theme-diff-added-line-number-bg: #e8f5e9;
+ --theme-diff-removed-line-number-bg: #ffebee;
+ --theme-markdown-text: #263238;
+ --theme-markdown-heading: #6182b8;
+ --theme-markdown-link: #39adb5;
+ --theme-markdown-link-text: #7c4dff;
+ --theme-markdown-code: #91b859;
+ --theme-markdown-block-quote: #90a4ae;
+ --theme-markdown-emph: #ffb300;
+ --theme-markdown-strong: #f4511e;
+ --theme-markdown-horizontal-rule: #e0e0e0;
+ --theme-markdown-list-item: #6182b8;
+ --theme-markdown-list-enumeration: #39adb5;
+ --theme-markdown-image: #39adb5;
+ --theme-markdown-image-text: #7c4dff;
+ --theme-markdown-code-block: #263238;
+ --theme-syntax-comment: #90a4ae;
+ --theme-syntax-keyword: #7c4dff;
+ --theme-syntax-function: #6182b8;
+ --theme-syntax-variable: #263238;
+ --theme-syntax-string: #91b859;
+ --theme-syntax-number: #f4511e;
+ --theme-syntax-type: #ffb300;
+ --theme-syntax-operator: #39adb5;
+ --theme-syntax-punctuation: #263238;
+}
+
+[data-theme="material"][data-dark="true"] {
+ --theme-primary: #82aaff;
+ --theme-secondary: #c792ea;
+ --theme-accent: #89ddff;
+ --theme-error: #f07178;
+ --theme-warning: #ffcb6b;
+ --theme-success: #c3e88d;
+ --theme-info: #ffcb6b;
+ --theme-text: #eeffff;
+ --theme-text-muted: #546e7a;
+ --theme-background: #263238;
+ --theme-background-panel: #1e272c;
+ --theme-background-element: #37474f;
+ --theme-border: #37474f;
+ --theme-border-active: #82aaff;
+ --theme-border-subtle: #1e272c;
+ --theme-diff-added: #c3e88d;
+ --theme-diff-removed: #f07178;
+ --theme-diff-context: #546e7a;
+ --theme-diff-hunk-header: #89ddff;
+ --theme-diff-highlight-added: #c3e88d;
+ --theme-diff-highlight-removed: #f07178;
+ --theme-diff-added-bg: #2e3c2b;
+ --theme-diff-removed-bg: #3c2b2b;
+ --theme-diff-context-bg: #1e272c;
+ --theme-diff-line-number: #37474f;
+ --theme-diff-added-line-number-bg: #2e3c2b;
+ --theme-diff-removed-line-number-bg: #3c2b2b;
+ --theme-markdown-text: #eeffff;
+ --theme-markdown-heading: #82aaff;
+ --theme-markdown-link: #89ddff;
+ --theme-markdown-link-text: #c792ea;
+ --theme-markdown-code: #c3e88d;
+ --theme-markdown-block-quote: #546e7a;
+ --theme-markdown-emph: #ffcb6b;
+ --theme-markdown-strong: #ffcb6b;
+ --theme-markdown-horizontal-rule: #37474f;
+ --theme-markdown-list-item: #82aaff;
+ --theme-markdown-list-enumeration: #89ddff;
+ --theme-markdown-image: #89ddff;
+ --theme-markdown-image-text: #c792ea;
+ --theme-markdown-code-block: #eeffff;
+ --theme-syntax-comment: #546e7a;
+ --theme-syntax-keyword: #c792ea;
+ --theme-syntax-function: #82aaff;
+ --theme-syntax-variable: #eeffff;
+ --theme-syntax-string: #c3e88d;
+ --theme-syntax-number: #ffcb6b;
+ --theme-syntax-type: #ffcb6b;
+ --theme-syntax-operator: #89ddff;
+ --theme-syntax-punctuation: #eeffff;
+}
+
+[data-theme="matrix"][data-dark="false"] {
+ --theme-primary: #1cc24b;
+ --theme-secondary: #24f6d9;
+ --theme-accent: #c770ff;
+ --theme-error: #ff4b4b;
+ --theme-warning: #e6ff57;
+ --theme-success: #1cc24b;
+ --theme-info: #30b3ff;
+ --theme-text: #203022;
+ --theme-text-muted: #748476;
+ --theme-background: #eef3ea;
+ --theme-background-panel: #e4ebe1;
+ --theme-background-element: #dae1d7;
+ --theme-border: #748476;
+ --theme-border-active: #1cc24b;
+ --theme-border-subtle: #dae1d7;
+ --theme-diff-added: #1cc24b;
+ --theme-diff-removed: #ff4b4b;
+ --theme-diff-context: #748476;
+ --theme-diff-hunk-header: #30b3ff;
+ --theme-diff-highlight-added: #5dac7e;
+ --theme-diff-highlight-removed: #d53a3a;
+ --theme-diff-added-bg: #e0efde;
+ --theme-diff-removed-bg: #f9e5e5;
+ --theme-diff-context-bg: #e4ebe1;
+ --theme-diff-line-number: #748476;
+ --theme-diff-added-line-number-bg: #d6e7d2;
+ --theme-diff-removed-line-number-bg: #f2d2d2;
+ --theme-markdown-text: #203022;
+ --theme-markdown-heading: #24f6d9;
+ --theme-markdown-link: #30b3ff;
+ --theme-markdown-link-text: #24f6d9;
+ --theme-markdown-code: #1cc24b;
+ --theme-markdown-block-quote: #748476;
+ --theme-markdown-emph: #ffa83d;
+ --theme-markdown-strong: #e6ff57;
+ --theme-markdown-horizontal-rule: #748476;
+ --theme-markdown-list-item: #30b3ff;
+ --theme-markdown-list-enumeration: #24f6d9;
+ --theme-markdown-image: #30b3ff;
+ --theme-markdown-image-text: #24f6d9;
+ --theme-markdown-code-block: #203022;
+ --theme-syntax-comment: #748476;
+ --theme-syntax-keyword: #c770ff;
+ --theme-syntax-function: #30b3ff;
+ --theme-syntax-variable: #203022;
+ --theme-syntax-string: #1cc24b;
+ --theme-syntax-number: #ffa83d;
+ --theme-syntax-type: #e6ff57;
+ --theme-syntax-operator: #24f6d9;
+ --theme-syntax-punctuation: #203022;
+}
+
+[data-theme="matrix"][data-dark="true"] {
+ --theme-primary: #2eff6a;
+ --theme-secondary: #00efff;
+ --theme-accent: #c770ff;
+ --theme-error: #ff4b4b;
+ --theme-warning: #e6ff57;
+ --theme-success: #62ff94;
+ --theme-info: #30b3ff;
+ --theme-text: #62ff94;
+ --theme-text-muted: #8ca391;
+ --theme-background: #0a0e0a;
+ --theme-background-panel: #0e130d;
+ --theme-background-element: #141c12;
+ --theme-border: #1e2a1b;
+ --theme-border-active: #2eff6a;
+ --theme-border-subtle: #141c12;
+ --theme-diff-added: #1cc24b;
+ --theme-diff-removed: #ff4b4b;
+ --theme-diff-context: #8ca391;
+ --theme-diff-hunk-header: #30b3ff;
+ --theme-diff-highlight-added: #77ffaf;
+ --theme-diff-highlight-removed: #ff7171;
+ --theme-diff-added-bg: #132616;
+ --theme-diff-removed-bg: #261212;
+ --theme-diff-context-bg: #0e130d;
+ --theme-diff-line-number: #1e2a1b;
+ --theme-diff-added-line-number-bg: #0f1b11;
+ --theme-diff-removed-line-number-bg: #1b1414;
+ --theme-markdown-text: #62ff94;
+ --theme-markdown-heading: #00efff;
+ --theme-markdown-link: #30b3ff;
+ --theme-markdown-link-text: #24f6d9;
+ --theme-markdown-code: #1cc24b;
+ --theme-markdown-block-quote: #8ca391;
+ --theme-markdown-emph: #ffa83d;
+ --theme-markdown-strong: #e6ff57;
+ --theme-markdown-horizontal-rule: #8ca391;
+ --theme-markdown-list-item: #30b3ff;
+ --theme-markdown-list-enumeration: #24f6d9;
+ --theme-markdown-image: #30b3ff;
+ --theme-markdown-image-text: #24f6d9;
+ --theme-markdown-code-block: #62ff94;
+ --theme-syntax-comment: #8ca391;
+ --theme-syntax-keyword: #c770ff;
+ --theme-syntax-function: #30b3ff;
+ --theme-syntax-variable: #62ff94;
+ --theme-syntax-string: #1cc24b;
+ --theme-syntax-number: #ffa83d;
+ --theme-syntax-type: #e6ff57;
+ --theme-syntax-operator: #24f6d9;
+ --theme-syntax-punctuation: #62ff94;
+}
+
+[data-theme="monokai"][data-dark="false"] {
+ --theme-primary: #66d9ef;
+ --theme-secondary: #ae81ff;
+ --theme-accent: #a6e22e;
+ --theme-error: #f92672;
+ --theme-warning: #fd971f;
+ --theme-success: #a6e22e;
+ --theme-info: #fd971f;
+ --theme-text: #272822;
+ --theme-text-muted: #75715e;
+ --theme-background: #fafafa;
+ --theme-background-panel: #f0f0f0;
+ --theme-background-element: #e0e0e0;
+ --theme-border: #d0d0d0;
+ --theme-border-active: #66d9ef;
+ --theme-border-subtle: #e8e8e8;
+ --theme-diff-added: #a6e22e;
+ --theme-diff-removed: #f92672;
+ --theme-diff-context: #75715e;
+ --theme-diff-hunk-header: #75715e;
+ --theme-diff-highlight-added: #a6e22e;
+ --theme-diff-highlight-removed: #f92672;
+ --theme-diff-added-bg: #e0ffe0;
+ --theme-diff-removed-bg: #ffe0e0;
+ --theme-diff-context-bg: #f0f0f0;
+ --theme-diff-line-number: #d0d0d0;
+ --theme-diff-added-line-number-bg: #e0ffe0;
+ --theme-diff-removed-line-number-bg: #ffe0e0;
+ --theme-markdown-text: #272822;
+ --theme-markdown-heading: #f92672;
+ --theme-markdown-link: #66d9ef;
+ --theme-markdown-link-text: #ae81ff;
+ --theme-markdown-code: #a6e22e;
+ --theme-markdown-block-quote: #75715e;
+ --theme-markdown-emph: #fd971f;
+ --theme-markdown-strong: #fd971f;
+ --theme-markdown-horizontal-rule: #75715e;
+ --theme-markdown-list-item: #66d9ef;
+ --theme-markdown-list-enumeration: #ae81ff;
+ --theme-markdown-image: #66d9ef;
+ --theme-markdown-image-text: #ae81ff;
+ --theme-markdown-code-block: #272822;
+ --theme-syntax-comment: #75715e;
+ --theme-syntax-keyword: #f92672;
+ --theme-syntax-function: #a6e22e;
+ --theme-syntax-variable: #272822;
+ --theme-syntax-string: #fd971f;
+ --theme-syntax-number: #ae81ff;
+ --theme-syntax-type: #66d9ef;
+ --theme-syntax-operator: #f92672;
+ --theme-syntax-punctuation: #272822;
+}
+
+[data-theme="monokai"][data-dark="true"] {
+ --theme-primary: #66d9ef;
+ --theme-secondary: #ae81ff;
+ --theme-accent: #a6e22e;
+ --theme-error: #f92672;
+ --theme-warning: #e6db74;
+ --theme-success: #a6e22e;
+ --theme-info: #fd971f;
+ --theme-text: #f8f8f2;
+ --theme-text-muted: #75715e;
+ --theme-background: #272822;
+ --theme-background-panel: #1e1f1c;
+ --theme-background-element: #3e3d32;
+ --theme-border: #3e3d32;
+ --theme-border-active: #66d9ef;
+ --theme-border-subtle: #1e1f1c;
+ --theme-diff-added: #a6e22e;
+ --theme-diff-removed: #f92672;
+ --theme-diff-context: #75715e;
+ --theme-diff-hunk-header: #75715e;
+ --theme-diff-highlight-added: #a6e22e;
+ --theme-diff-highlight-removed: #f92672;
+ --theme-diff-added-bg: #1a3a1a;
+ --theme-diff-removed-bg: #3a1a1a;
+ --theme-diff-context-bg: #1e1f1c;
+ --theme-diff-line-number: #3e3d32;
+ --theme-diff-added-line-number-bg: #1a3a1a;
+ --theme-diff-removed-line-number-bg: #3a1a1a;
+ --theme-markdown-text: #f8f8f2;
+ --theme-markdown-heading: #f92672;
+ --theme-markdown-link: #66d9ef;
+ --theme-markdown-link-text: #ae81ff;
+ --theme-markdown-code: #a6e22e;
+ --theme-markdown-block-quote: #75715e;
+ --theme-markdown-emph: #e6db74;
+ --theme-markdown-strong: #fd971f;
+ --theme-markdown-horizontal-rule: #75715e;
+ --theme-markdown-list-item: #66d9ef;
+ --theme-markdown-list-enumeration: #ae81ff;
+ --theme-markdown-image: #66d9ef;
+ --theme-markdown-image-text: #ae81ff;
+ --theme-markdown-code-block: #f8f8f2;
+ --theme-syntax-comment: #75715e;
+ --theme-syntax-keyword: #f92672;
+ --theme-syntax-function: #a6e22e;
+ --theme-syntax-variable: #f8f8f2;
+ --theme-syntax-string: #e6db74;
+ --theme-syntax-number: #ae81ff;
+ --theme-syntax-type: #66d9ef;
+ --theme-syntax-operator: #f92672;
+ --theme-syntax-punctuation: #f8f8f2;
+}
+
+[data-theme="nord"][data-dark="false"] {
+ --theme-primary: #5e81ac;
+ --theme-secondary: #81a1c1;
+ --theme-accent: #8fbcbb;
+ --theme-error: #bf616a;
+ --theme-warning: #d08770;
+ --theme-success: #a3be8c;
+ --theme-info: #5e81ac;
+ --theme-text: #2e3440;
+ --theme-text-muted: #3b4252;
+ --theme-background: #eceff4;
+ --theme-background-panel: #e5e9f0;
+ --theme-background-element: #d8dee9;
+ --theme-border: #4c566a;
+ --theme-border-active: #434c5e;
+ --theme-border-subtle: #4c566a;
+ --theme-diff-added: #a3be8c;
+ --theme-diff-removed: #bf616a;
+ --theme-diff-context: #4c566a;
+ --theme-diff-hunk-header: #4c566a;
+ --theme-diff-highlight-added: #a3be8c;
+ --theme-diff-highlight-removed: #bf616a;
+ --theme-diff-added-bg: #e5e9f0;
+ --theme-diff-removed-bg: #e5e9f0;
+ --theme-diff-context-bg: #e5e9f0;
+ --theme-diff-line-number: #d8dee9;
+ --theme-diff-added-line-number-bg: #e5e9f0;
+ --theme-diff-removed-line-number-bg: #e5e9f0;
+ --theme-markdown-text: #2e3440;
+ --theme-markdown-heading: #5e81ac;
+ --theme-markdown-link: #81a1c1;
+ --theme-markdown-link-text: #8fbcbb;
+ --theme-markdown-code: #a3be8c;
+ --theme-markdown-block-quote: #4c566a;
+ --theme-markdown-emph: #d08770;
+ --theme-markdown-strong: #ebcb8b;
+ --theme-markdown-horizontal-rule: #4c566a;
+ --theme-markdown-list-item: #5e81ac;
+ --theme-markdown-list-enumeration: #8fbcbb;
+ --theme-markdown-image: #81a1c1;
+ --theme-markdown-image-text: #8fbcbb;
+ --theme-markdown-code-block: #2e3440;
+ --theme-syntax-comment: #4c566a;
+ --theme-syntax-keyword: #81a1c1;
+ --theme-syntax-function: #88c0d0;
+ --theme-syntax-variable: #8fbcbb;
+ --theme-syntax-string: #a3be8c;
+ --theme-syntax-number: #b48ead;
+ --theme-syntax-type: #8fbcbb;
+ --theme-syntax-operator: #81a1c1;
+ --theme-syntax-punctuation: #2e3440;
+}
+
+[data-theme="nord"][data-dark="true"] {
+ --theme-primary: #88c0d0;
+ --theme-secondary: #81a1c1;
+ --theme-accent: #8fbcbb;
+ --theme-error: #bf616a;
+ --theme-warning: #d08770;
+ --theme-success: #a3be8c;
+ --theme-info: #88c0d0;
+ --theme-text: #eceff4;
+ --theme-text-muted: #8b95a7;
+ --theme-background: #2e3440;
+ --theme-background-panel: #3b4252;
+ --theme-background-element: #434c5e;
+ --theme-border: #434c5e;
+ --theme-border-active: #4c566a;
+ --theme-border-subtle: #434c5e;
+ --theme-diff-added: #a3be8c;
+ --theme-diff-removed: #bf616a;
+ --theme-diff-context: #8b95a7;
+ --theme-diff-hunk-header: #8b95a7;
+ --theme-diff-highlight-added: #a3be8c;
+ --theme-diff-highlight-removed: #bf616a;
+ --theme-diff-added-bg: #3b4252;
+ --theme-diff-removed-bg: #3b4252;
+ --theme-diff-context-bg: #3b4252;
+ --theme-diff-line-number: #434c5e;
+ --theme-diff-added-line-number-bg: #3b4252;
+ --theme-diff-removed-line-number-bg: #3b4252;
+ --theme-markdown-text: #d8dee9;
+ --theme-markdown-heading: #88c0d0;
+ --theme-markdown-link: #81a1c1;
+ --theme-markdown-link-text: #8fbcbb;
+ --theme-markdown-code: #a3be8c;
+ --theme-markdown-block-quote: #8b95a7;
+ --theme-markdown-emph: #d08770;
+ --theme-markdown-strong: #ebcb8b;
+ --theme-markdown-horizontal-rule: #8b95a7;
+ --theme-markdown-list-item: #88c0d0;
+ --theme-markdown-list-enumeration: #8fbcbb;
+ --theme-markdown-image: #81a1c1;
+ --theme-markdown-image-text: #8fbcbb;
+ --theme-markdown-code-block: #d8dee9;
+ --theme-syntax-comment: #8b95a7;
+ --theme-syntax-keyword: #81a1c1;
+ --theme-syntax-function: #88c0d0;
+ --theme-syntax-variable: #8fbcbb;
+ --theme-syntax-string: #a3be8c;
+ --theme-syntax-number: #b48ead;
+ --theme-syntax-type: #8fbcbb;
+ --theme-syntax-operator: #81a1c1;
+ --theme-syntax-punctuation: #d8dee9;
+}
+
+[data-theme="one-dark"][data-dark="false"] {
+ --theme-primary: #4078f2;
+ --theme-secondary: #a626a4;
+ --theme-accent: #0184bc;
+ --theme-error: #e45649;
+ --theme-warning: #c18401;
+ --theme-success: #50a14f;
+ --theme-info: #986801;
+ --theme-text: #383a42;
+ --theme-text-muted: #a0a1a7;
+ --theme-background: #fafafa;
+ --theme-background-panel: #f0f0f1;
+ --theme-background-element: #eaeaeb;
+ --theme-border: #d1d1d2;
+ --theme-border-active: #4078f2;
+ --theme-border-subtle: #e0e0e1;
+ --theme-diff-added: #50a14f;
+ --theme-diff-removed: #e45649;
+ --theme-diff-context: #a0a1a7;
+ --theme-diff-hunk-header: #0184bc;
+ --theme-diff-highlight-added: #489447;
+ --theme-diff-highlight-removed: #d65145;
+ --theme-diff-added-bg: #eafbe9;
+ --theme-diff-removed-bg: #fce9e8;
+ --theme-diff-context-bg: #f0f0f1;
+ --theme-diff-line-number: #c9c9ca;
+ --theme-diff-added-line-number-bg: #e1f3df;
+ --theme-diff-removed-line-number-bg: #f5e2e1;
+ --theme-markdown-text: #383a42;
+ --theme-markdown-heading: #a626a4;
+ --theme-markdown-link: #4078f2;
+ --theme-markdown-link-text: #0184bc;
+ --theme-markdown-code: #50a14f;
+ --theme-markdown-block-quote: #a0a1a7;
+ --theme-markdown-emph: #c18401;
+ --theme-markdown-strong: #986801;
+ --theme-markdown-horizontal-rule: #a0a1a7;
+ --theme-markdown-list-item: #4078f2;
+ --theme-markdown-list-enumeration: #0184bc;
+ --theme-markdown-image: #4078f2;
+ --theme-markdown-image-text: #0184bc;
+ --theme-markdown-code-block: #383a42;
+ --theme-syntax-comment: #a0a1a7;
+ --theme-syntax-keyword: #a626a4;
+ --theme-syntax-function: #4078f2;
+ --theme-syntax-variable: #e45649;
+ --theme-syntax-string: #50a14f;
+ --theme-syntax-number: #986801;
+ --theme-syntax-type: #c18401;
+ --theme-syntax-operator: #0184bc;
+ --theme-syntax-punctuation: #383a42;
+}
+
+[data-theme="one-dark"][data-dark="true"] {
+ --theme-primary: #61afef;
+ --theme-secondary: #c678dd;
+ --theme-accent: #56b6c2;
+ --theme-error: #e06c75;
+ --theme-warning: #e5c07b;
+ --theme-success: #98c379;
+ --theme-info: #d19a66;
+ --theme-text: #abb2bf;
+ --theme-text-muted: #5c6370;
+ --theme-background: #282c34;
+ --theme-background-panel: #21252b;
+ --theme-background-element: #353b45;
+ --theme-border: #393f4a;
+ --theme-border-active: #61afef;
+ --theme-border-subtle: #2c313a;
+ --theme-diff-added: #98c379;
+ --theme-diff-removed: #e06c75;
+ --theme-diff-context: #5c6370;
+ --theme-diff-hunk-header: #56b6c2;
+ --theme-diff-highlight-added: #aad482;
+ --theme-diff-highlight-removed: #e8828b;
+ --theme-diff-added-bg: #2c382b;
+ --theme-diff-removed-bg: #3a2d2f;
+ --theme-diff-context-bg: #21252b;
+ --theme-diff-line-number: #495162;
+ --theme-diff-added-line-number-bg: #283427;
+ --theme-diff-removed-line-number-bg: #36292b;
+ --theme-markdown-text: #abb2bf;
+ --theme-markdown-heading: #c678dd;
+ --theme-markdown-link: #61afef;
+ --theme-markdown-link-text: #56b6c2;
+ --theme-markdown-code: #98c379;
+ --theme-markdown-block-quote: #5c6370;
+ --theme-markdown-emph: #e5c07b;
+ --theme-markdown-strong: #d19a66;
+ --theme-markdown-horizontal-rule: #5c6370;
+ --theme-markdown-list-item: #61afef;
+ --theme-markdown-list-enumeration: #56b6c2;
+ --theme-markdown-image: #61afef;
+ --theme-markdown-image-text: #56b6c2;
+ --theme-markdown-code-block: #abb2bf;
+ --theme-syntax-comment: #5c6370;
+ --theme-syntax-keyword: #c678dd;
+ --theme-syntax-function: #61afef;
+ --theme-syntax-variable: #e06c75;
+ --theme-syntax-string: #98c379;
+ --theme-syntax-number: #d19a66;
+ --theme-syntax-type: #e5c07b;
+ --theme-syntax-operator: #56b6c2;
+ --theme-syntax-punctuation: #abb2bf;
+}
+
+[data-theme="opencode"][data-dark="false"] {
+ --theme-primary: #3b7dd8;
+ --theme-secondary: #7b5bb6;
+ --theme-accent: #d68c27;
+ --theme-error: #d1383d;
+ --theme-warning: #d68c27;
+ --theme-success: #3d9a57;
+ --theme-info: #318795;
+ --theme-text: #1a1a1a;
+ --theme-text-muted: #8a8a8a;
+ --theme-background: #ffffff;
+ --theme-background-panel: #fafafa;
+ --theme-background-element: #f5f5f5;
+ --theme-border: #b8b8b8;
+ --theme-border-active: #a0a0a0;
+ --theme-border-subtle: #d4d4d4;
+ --theme-diff-added: #1e725c;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #7086b5;
+ --theme-diff-hunk-header: #7086b5;
+ --theme-diff-highlight-added: #4db380;
+ --theme-diff-highlight-removed: #f52a65;
+ --theme-diff-added-bg: #d5e5d5;
+ --theme-diff-removed-bg: #f7d8db;
+ --theme-diff-context-bg: #fafafa;
+ --theme-diff-line-number: #f5f5f5;
+ --theme-diff-added-line-number-bg: #c5d5c5;
+ --theme-diff-removed-line-number-bg: #e7c8cb;
+ --theme-markdown-text: #1a1a1a;
+ --theme-markdown-heading: #d68c27;
+ --theme-markdown-link: #3b7dd8;
+ --theme-markdown-link-text: #318795;
+ --theme-markdown-code: #3d9a57;
+ --theme-markdown-block-quote: #b0851f;
+ --theme-markdown-emph: #b0851f;
+ --theme-markdown-strong: #d68c27;
+ --theme-markdown-horizontal-rule: #8a8a8a;
+ --theme-markdown-list-item: #3b7dd8;
+ --theme-markdown-list-enumeration: #318795;
+ --theme-markdown-image: #3b7dd8;
+ --theme-markdown-image-text: #318795;
+ --theme-markdown-code-block: #1a1a1a;
+ --theme-syntax-comment: #8a8a8a;
+ --theme-syntax-keyword: #d68c27;
+ --theme-syntax-function: #3b7dd8;
+ --theme-syntax-variable: #d1383d;
+ --theme-syntax-string: #3d9a57;
+ --theme-syntax-number: #d68c27;
+ --theme-syntax-type: #b0851f;
+ --theme-syntax-operator: #318795;
+ --theme-syntax-punctuation: #1a1a1a;
+}
+
+[data-theme="opencode"][data-dark="true"] {
+ --theme-primary: #fab283;
+ --theme-secondary: #5c9cf5;
+ --theme-accent: #9d7cd8;
+ --theme-error: #e06c75;
+ --theme-warning: #f5a742;
+ --theme-success: #7fd88f;
+ --theme-info: #56b6c2;
+ --theme-text: #eeeeee;
+ --theme-text-muted: #808080;
+ --theme-background: #0a0a0a;
+ --theme-background-panel: #141414;
+ --theme-background-element: #1e1e1e;
+ --theme-border: #484848;
+ --theme-border-active: #606060;
+ --theme-border-subtle: #3c3c3c;
+ --theme-diff-added: #4fd6be;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #828bb8;
+ --theme-diff-hunk-header: #828bb8;
+ --theme-diff-highlight-added: #b8db87;
+ --theme-diff-highlight-removed: #e26a75;
+ --theme-diff-added-bg: #20303b;
+ --theme-diff-removed-bg: #37222c;
+ --theme-diff-context-bg: #141414;
+ --theme-diff-line-number: #1e1e1e;
+ --theme-diff-added-line-number-bg: #1b2b34;
+ --theme-diff-removed-line-number-bg: #2d1f26;
+ --theme-markdown-text: #eeeeee;
+ --theme-markdown-heading: #9d7cd8;
+ --theme-markdown-link: #fab283;
+ --theme-markdown-link-text: #56b6c2;
+ --theme-markdown-code: #7fd88f;
+ --theme-markdown-block-quote: #e5c07b;
+ --theme-markdown-emph: #e5c07b;
+ --theme-markdown-strong: #f5a742;
+ --theme-markdown-horizontal-rule: #808080;
+ --theme-markdown-list-item: #fab283;
+ --theme-markdown-list-enumeration: #56b6c2;
+ --theme-markdown-image: #fab283;
+ --theme-markdown-image-text: #56b6c2;
+ --theme-markdown-code-block: #eeeeee;
+ --theme-syntax-comment: #808080;
+ --theme-syntax-keyword: #9d7cd8;
+ --theme-syntax-function: #fab283;
+ --theme-syntax-variable: #e06c75;
+ --theme-syntax-string: #7fd88f;
+ --theme-syntax-number: #f5a742;
+ --theme-syntax-type: #e5c07b;
+ --theme-syntax-operator: #56b6c2;
+ --theme-syntax-punctuation: #eeeeee;
+}
+
+[data-theme="palenight"][data-dark="false"] {
+ --theme-primary: #4976eb;
+ --theme-secondary: #a854f2;
+ --theme-accent: #00acc1;
+ --theme-error: #e53935;
+ --theme-warning: #ffb300;
+ --theme-success: #91b859;
+ --theme-info: #f4511e;
+ --theme-text: #292d3e;
+ --theme-text-muted: #8796b0;
+ --theme-background: #fafafa;
+ --theme-background-panel: #f5f5f5;
+ --theme-background-element: #e7e7e8;
+ --theme-border: #e0e0e0;
+ --theme-border-active: #4976eb;
+ --theme-border-subtle: #eeeeee;
+ --theme-diff-added: #91b859;
+ --theme-diff-removed: #e53935;
+ --theme-diff-context: #8796b0;
+ --theme-diff-hunk-header: #00acc1;
+ --theme-diff-highlight-added: #91b859;
+ --theme-diff-highlight-removed: #e53935;
+ --theme-diff-added-bg: #e8f5e9;
+ --theme-diff-removed-bg: #ffebee;
+ --theme-diff-context-bg: #f5f5f5;
+ --theme-diff-line-number: #cfd8dc;
+ --theme-diff-added-line-number-bg: #e8f5e9;
+ --theme-diff-removed-line-number-bg: #ffebee;
+ --theme-markdown-text: #292d3e;
+ --theme-markdown-heading: #a854f2;
+ --theme-markdown-link: #4976eb;
+ --theme-markdown-link-text: #00acc1;
+ --theme-markdown-code: #91b859;
+ --theme-markdown-block-quote: #8796b0;
+ --theme-markdown-emph: #ffb300;
+ --theme-markdown-strong: #f4511e;
+ --theme-markdown-horizontal-rule: #8796b0;
+ --theme-markdown-list-item: #4976eb;
+ --theme-markdown-list-enumeration: #00acc1;
+ --theme-markdown-image: #4976eb;
+ --theme-markdown-image-text: #00acc1;
+ --theme-markdown-code-block: #292d3e;
+ --theme-syntax-comment: #8796b0;
+ --theme-syntax-keyword: #a854f2;
+ --theme-syntax-function: #4976eb;
+ --theme-syntax-variable: #292d3e;
+ --theme-syntax-string: #91b859;
+ --theme-syntax-number: #f4511e;
+ --theme-syntax-type: #ffb300;
+ --theme-syntax-operator: #00acc1;
+ --theme-syntax-punctuation: #292d3e;
+}
+
+[data-theme="palenight"][data-dark="true"] {
+ --theme-primary: #82aaff;
+ --theme-secondary: #c792ea;
+ --theme-accent: #89ddff;
+ --theme-error: #f07178;
+ --theme-warning: #ffcb6b;
+ --theme-success: #c3e88d;
+ --theme-info: #f78c6c;
+ --theme-text: #a6accd;
+ --theme-text-muted: #676e95;
+ --theme-background: #292d3e;
+ --theme-background-panel: #1e2132;
+ --theme-background-element: #32364a;
+ --theme-border: #32364a;
+ --theme-border-active: #82aaff;
+ --theme-border-subtle: #1e2132;
+ --theme-diff-added: #c3e88d;
+ --theme-diff-removed: #f07178;
+ --theme-diff-context: #676e95;
+ --theme-diff-hunk-header: #89ddff;
+ --theme-diff-highlight-added: #c3e88d;
+ --theme-diff-highlight-removed: #f07178;
+ --theme-diff-added-bg: #2e3c2b;
+ --theme-diff-removed-bg: #3c2b2b;
+ --theme-diff-context-bg: #1e2132;
+ --theme-diff-line-number: #444760;
+ --theme-diff-added-line-number-bg: #2e3c2b;
+ --theme-diff-removed-line-number-bg: #3c2b2b;
+ --theme-markdown-text: #a6accd;
+ --theme-markdown-heading: #c792ea;
+ --theme-markdown-link: #82aaff;
+ --theme-markdown-link-text: #89ddff;
+ --theme-markdown-code: #c3e88d;
+ --theme-markdown-block-quote: #676e95;
+ --theme-markdown-emph: #ffcb6b;
+ --theme-markdown-strong: #f78c6c;
+ --theme-markdown-horizontal-rule: #676e95;
+ --theme-markdown-list-item: #82aaff;
+ --theme-markdown-list-enumeration: #89ddff;
+ --theme-markdown-image: #82aaff;
+ --theme-markdown-image-text: #89ddff;
+ --theme-markdown-code-block: #a6accd;
+ --theme-syntax-comment: #676e95;
+ --theme-syntax-keyword: #c792ea;
+ --theme-syntax-function: #82aaff;
+ --theme-syntax-variable: #a6accd;
+ --theme-syntax-string: #c3e88d;
+ --theme-syntax-number: #f78c6c;
+ --theme-syntax-type: #ffcb6b;
+ --theme-syntax-operator: #89ddff;
+ --theme-syntax-punctuation: #a6accd;
+}
+
+[data-theme="rosepine"][data-dark="false"] {
+ --theme-primary: #31748f;
+ --theme-secondary: #907aa9;
+ --theme-accent: #d7827e;
+ --theme-error: #b4637a;
+ --theme-warning: #ea9d34;
+ --theme-success: #286983;
+ --theme-info: #56949f;
+ --theme-text: #575279;
+ --theme-text-muted: #9893a5;
+ --theme-background: #faf4ed;
+ --theme-background-panel: #fffaf3;
+ --theme-background-element: #f2e9e1;
+ --theme-border: #dfdad9;
+ --theme-border-active: #31748f;
+ --theme-border-subtle: #f4ede8;
+ --theme-diff-added: #286983;
+ --theme-diff-removed: #b4637a;
+ --theme-diff-context: #9893a5;
+ --theme-diff-hunk-header: #907aa9;
+ --theme-diff-highlight-added: #286983;
+ --theme-diff-highlight-removed: #b4637a;
+ --theme-diff-added-bg: #e5f2f3;
+ --theme-diff-removed-bg: #fce5e8;
+ --theme-diff-context-bg: #fffaf3;
+ --theme-diff-line-number: #9893a5;
+ --theme-diff-added-line-number-bg: #e5f2f3;
+ --theme-diff-removed-line-number-bg: #fce5e8;
+ --theme-markdown-text: #575279;
+ --theme-markdown-heading: #907aa9;
+ --theme-markdown-link: #31748f;
+ --theme-markdown-link-text: #d7827e;
+ --theme-markdown-code: #286983;
+ --theme-markdown-block-quote: #9893a5;
+ --theme-markdown-emph: #ea9d34;
+ --theme-markdown-strong: #b4637a;
+ --theme-markdown-horizontal-rule: #dfdad9;
+ --theme-markdown-list-item: #31748f;
+ --theme-markdown-list-enumeration: #d7827e;
+ --theme-markdown-image: #31748f;
+ --theme-markdown-image-text: #d7827e;
+ --theme-markdown-code-block: #575279;
+ --theme-syntax-comment: #9893a5;
+ --theme-syntax-keyword: #286983;
+ --theme-syntax-function: #d7827e;
+ --theme-syntax-variable: #575279;
+ --theme-syntax-string: #ea9d34;
+ --theme-syntax-number: #907aa9;
+ --theme-syntax-type: #56949f;
+ --theme-syntax-operator: #797593;
+ --theme-syntax-punctuation: #797593;
+}
+
+[data-theme="rosepine"][data-dark="true"] {
+ --theme-primary: #9ccfd8;
+ --theme-secondary: #c4a7e7;
+ --theme-accent: #ebbcba;
+ --theme-error: #eb6f92;
+ --theme-warning: #f6c177;
+ --theme-success: #31748f;
+ --theme-info: #9ccfd8;
+ --theme-text: #e0def4;
+ --theme-text-muted: #6e6a86;
+ --theme-background: #191724;
+ --theme-background-panel: #1f1d2e;
+ --theme-background-element: #26233a;
+ --theme-border: #403d52;
+ --theme-border-active: #9ccfd8;
+ --theme-border-subtle: #21202e;
+ --theme-diff-added: #31748f;
+ --theme-diff-removed: #eb6f92;
+ --theme-diff-context: #6e6a86;
+ --theme-diff-hunk-header: #c4a7e7;
+ --theme-diff-highlight-added: #31748f;
+ --theme-diff-highlight-removed: #eb6f92;
+ --theme-diff-added-bg: #1f2d3a;
+ --theme-diff-removed-bg: #3a1f2d;
+ --theme-diff-context-bg: #1f1d2e;
+ --theme-diff-line-number: #6e6a86;
+ --theme-diff-added-line-number-bg: #1f2d3a;
+ --theme-diff-removed-line-number-bg: #3a1f2d;
+ --theme-markdown-text: #e0def4;
+ --theme-markdown-heading: #c4a7e7;
+ --theme-markdown-link: #9ccfd8;
+ --theme-markdown-link-text: #ebbcba;
+ --theme-markdown-code: #31748f;
+ --theme-markdown-block-quote: #6e6a86;
+ --theme-markdown-emph: #f6c177;
+ --theme-markdown-strong: #eb6f92;
+ --theme-markdown-horizontal-rule: #403d52;
+ --theme-markdown-list-item: #9ccfd8;
+ --theme-markdown-list-enumeration: #ebbcba;
+ --theme-markdown-image: #9ccfd8;
+ --theme-markdown-image-text: #ebbcba;
+ --theme-markdown-code-block: #e0def4;
+ --theme-syntax-comment: #6e6a86;
+ --theme-syntax-keyword: #31748f;
+ --theme-syntax-function: #ebbcba;
+ --theme-syntax-variable: #e0def4;
+ --theme-syntax-string: #f6c177;
+ --theme-syntax-number: #c4a7e7;
+ --theme-syntax-type: #9ccfd8;
+ --theme-syntax-operator: #908caa;
+ --theme-syntax-punctuation: #908caa;
+}
+
+[data-theme="solarized"][data-dark="false"] {
+ --theme-primary: #268bd2;
+ --theme-secondary: #6c71c4;
+ --theme-accent: #2aa198;
+ --theme-error: #dc322f;
+ --theme-warning: #b58900;
+ --theme-success: #859900;
+ --theme-info: #cb4b16;
+ --theme-text: #657b83;
+ --theme-text-muted: #93a1a1;
+ --theme-background: #fdf6e3;
+ --theme-background-panel: #eee8d5;
+ --theme-background-element: #eee8d5;
+ --theme-border: #eee8d5;
+ --theme-border-active: #93a1a1;
+ --theme-border-subtle: #eee8d5;
+ --theme-diff-added: #859900;
+ --theme-diff-removed: #dc322f;
+ --theme-diff-context: #93a1a1;
+ --theme-diff-hunk-header: #93a1a1;
+ --theme-diff-highlight-added: #859900;
+ --theme-diff-highlight-removed: #dc322f;
+ --theme-diff-added-bg: #eee8d5;
+ --theme-diff-removed-bg: #eee8d5;
+ --theme-diff-context-bg: #eee8d5;
+ --theme-diff-line-number: #93a1a1;
+ --theme-diff-added-line-number-bg: #eee8d5;
+ --theme-diff-removed-line-number-bg: #eee8d5;
+ --theme-markdown-text: #657b83;
+ --theme-markdown-heading: #268bd2;
+ --theme-markdown-link: #2aa198;
+ --theme-markdown-link-text: #6c71c4;
+ --theme-markdown-code: #859900;
+ --theme-markdown-block-quote: #93a1a1;
+ --theme-markdown-emph: #b58900;
+ --theme-markdown-strong: #cb4b16;
+ --theme-markdown-horizontal-rule: #93a1a1;
+ --theme-markdown-list-item: #268bd2;
+ --theme-markdown-list-enumeration: #2aa198;
+ --theme-markdown-image: #2aa198;
+ --theme-markdown-image-text: #6c71c4;
+ --theme-markdown-code-block: #657b83;
+ --theme-syntax-comment: #93a1a1;
+ --theme-syntax-keyword: #859900;
+ --theme-syntax-function: #268bd2;
+ --theme-syntax-variable: #2aa198;
+ --theme-syntax-string: #2aa198;
+ --theme-syntax-number: #d33682;
+ --theme-syntax-type: #b58900;
+ --theme-syntax-operator: #859900;
+ --theme-syntax-punctuation: #657b83;
+}
+
+[data-theme="solarized"][data-dark="true"] {
+ --theme-primary: #268bd2;
+ --theme-secondary: #6c71c4;
+ --theme-accent: #2aa198;
+ --theme-error: #dc322f;
+ --theme-warning: #b58900;
+ --theme-success: #859900;
+ --theme-info: #cb4b16;
+ --theme-text: #839496;
+ --theme-text-muted: #586e75;
+ --theme-background: #002b36;
+ --theme-background-panel: #073642;
+ --theme-background-element: #073642;
+ --theme-border: #073642;
+ --theme-border-active: #586e75;
+ --theme-border-subtle: #073642;
+ --theme-diff-added: #859900;
+ --theme-diff-removed: #dc322f;
+ --theme-diff-context: #586e75;
+ --theme-diff-hunk-header: #586e75;
+ --theme-diff-highlight-added: #859900;
+ --theme-diff-highlight-removed: #dc322f;
+ --theme-diff-added-bg: #073642;
+ --theme-diff-removed-bg: #073642;
+ --theme-diff-context-bg: #073642;
+ --theme-diff-line-number: #586e75;
+ --theme-diff-added-line-number-bg: #073642;
+ --theme-diff-removed-line-number-bg: #073642;
+ --theme-markdown-text: #839496;
+ --theme-markdown-heading: #268bd2;
+ --theme-markdown-link: #2aa198;
+ --theme-markdown-link-text: #6c71c4;
+ --theme-markdown-code: #859900;
+ --theme-markdown-block-quote: #586e75;
+ --theme-markdown-emph: #b58900;
+ --theme-markdown-strong: #cb4b16;
+ --theme-markdown-horizontal-rule: #586e75;
+ --theme-markdown-list-item: #268bd2;
+ --theme-markdown-list-enumeration: #2aa198;
+ --theme-markdown-image: #2aa198;
+ --theme-markdown-image-text: #6c71c4;
+ --theme-markdown-code-block: #839496;
+ --theme-syntax-comment: #586e75;
+ --theme-syntax-keyword: #859900;
+ --theme-syntax-function: #268bd2;
+ --theme-syntax-variable: #2aa198;
+ --theme-syntax-string: #2aa198;
+ --theme-syntax-number: #d33682;
+ --theme-syntax-type: #b58900;
+ --theme-syntax-operator: #859900;
+ --theme-syntax-punctuation: #839496;
+}
+
+[data-theme="synthwave84"][data-dark="false"] {
+ --theme-primary: #00bcd4;
+ --theme-secondary: #e91e63;
+ --theme-accent: #9c27b0;
+ --theme-error: #f44336;
+ --theme-warning: #ff9800;
+ --theme-success: #4caf50;
+ --theme-info: #ff5722;
+ --theme-text: #262335;
+ --theme-text-muted: #5c5c8a;
+ --theme-background: #fafafa;
+ --theme-background-panel: #f5f5f5;
+ --theme-background-element: #eeeeee;
+ --theme-border: #e0e0e0;
+ --theme-border-active: #00bcd4;
+ --theme-border-subtle: #f0f0f0;
+ --theme-diff-added: #4caf50;
+ --theme-diff-removed: #f44336;
+ --theme-diff-context: #5c5c8a;
+ --theme-diff-hunk-header: #9c27b0;
+ --theme-diff-highlight-added: #4caf50;
+ --theme-diff-highlight-removed: #f44336;
+ --theme-diff-added-bg: #e8f5e9;
+ --theme-diff-removed-bg: #ffebee;
+ --theme-diff-context-bg: #f5f5f5;
+ --theme-diff-line-number: #b0b0b0;
+ --theme-diff-added-line-number-bg: #e8f5e9;
+ --theme-diff-removed-line-number-bg: #ffebee;
+ --theme-markdown-text: #262335;
+ --theme-markdown-heading: #e91e63;
+ --theme-markdown-link: #00bcd4;
+ --theme-markdown-link-text: #9c27b0;
+ --theme-markdown-code: #4caf50;
+ --theme-markdown-block-quote: #5c5c8a;
+ --theme-markdown-emph: #ff9800;
+ --theme-markdown-strong: #ff5722;
+ --theme-markdown-horizontal-rule: #e0e0e0;
+ --theme-markdown-list-item: #00bcd4;
+ --theme-markdown-list-enumeration: #9c27b0;
+ --theme-markdown-image: #00bcd4;
+ --theme-markdown-image-text: #9c27b0;
+ --theme-markdown-code-block: #262335;
+ --theme-syntax-comment: #5c5c8a;
+ --theme-syntax-keyword: #e91e63;
+ --theme-syntax-function: #ff5722;
+ --theme-syntax-variable: #262335;
+ --theme-syntax-string: #ff9800;
+ --theme-syntax-number: #9c27b0;
+ --theme-syntax-type: #00bcd4;
+ --theme-syntax-operator: #e91e63;
+ --theme-syntax-punctuation: #262335;
+}
+
+[data-theme="synthwave84"][data-dark="true"] {
+ --theme-primary: #36f9f6;
+ --theme-secondary: #ff7edb;
+ --theme-accent: #b084eb;
+ --theme-error: #fe4450;
+ --theme-warning: #fede5d;
+ --theme-success: #72f1b8;
+ --theme-info: #ff8b39;
+ --theme-text: #ffffff;
+ --theme-text-muted: #848bbd;
+ --theme-background: #262335;
+ --theme-background-panel: #1e1a29;
+ --theme-background-element: #2a2139;
+ --theme-border: #495495;
+ --theme-border-active: #36f9f6;
+ --theme-border-subtle: #241b2f;
+ --theme-diff-added: #72f1b8;
+ --theme-diff-removed: #fe4450;
+ --theme-diff-context: #848bbd;
+ --theme-diff-hunk-header: #b084eb;
+ --theme-diff-highlight-added: #97f1d8;
+ --theme-diff-highlight-removed: #ff5e5b;
+ --theme-diff-added-bg: #1a3a2a;
+ --theme-diff-removed-bg: #3a1a2a;
+ --theme-diff-context-bg: #1e1a29;
+ --theme-diff-line-number: #495495;
+ --theme-diff-added-line-number-bg: #1a3a2a;
+ --theme-diff-removed-line-number-bg: #3a1a2a;
+ --theme-markdown-text: #ffffff;
+ --theme-markdown-heading: #ff7edb;
+ --theme-markdown-link: #36f9f6;
+ --theme-markdown-link-text: #b084eb;
+ --theme-markdown-code: #72f1b8;
+ --theme-markdown-block-quote: #848bbd;
+ --theme-markdown-emph: #fede5d;
+ --theme-markdown-strong: #ff8b39;
+ --theme-markdown-horizontal-rule: #495495;
+ --theme-markdown-list-item: #36f9f6;
+ --theme-markdown-list-enumeration: #b084eb;
+ --theme-markdown-image: #36f9f6;
+ --theme-markdown-image-text: #b084eb;
+ --theme-markdown-code-block: #ffffff;
+ --theme-syntax-comment: #848bbd;
+ --theme-syntax-keyword: #ff7edb;
+ --theme-syntax-function: #ff8b39;
+ --theme-syntax-variable: #ffffff;
+ --theme-syntax-string: #fede5d;
+ --theme-syntax-number: #b084eb;
+ --theme-syntax-type: #36f9f6;
+ --theme-syntax-operator: #ff7edb;
+ --theme-syntax-punctuation: #ffffff;
+}
+
+[data-theme="tokyonight"][data-dark="false"] {
+ --theme-primary: #2e7de9;
+ --theme-secondary: #9854f1;
+ --theme-accent: #b15c00;
+ --theme-error: #f52a65;
+ --theme-warning: #b15c00;
+ --theme-success: #587539;
+ --theme-info: #2e7de9;
+ --theme-text: #3760bf;
+ --theme-text-muted: #8990a3;
+ --theme-background: #e1e2e7;
+ --theme-background-panel: #d5d6db;
+ --theme-background-element: #c8c9ce;
+ --theme-border: #737a8c;
+ --theme-border-active: #5a607d;
+ --theme-border-subtle: #9699a8;
+ --theme-diff-added: #1e725c;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #7086b5;
+ --theme-diff-hunk-header: #7086b5;
+ --theme-diff-highlight-added: #4db380;
+ --theme-diff-highlight-removed: #f52a65;
+ --theme-diff-added-bg: #d5e5d5;
+ --theme-diff-removed-bg: #f7d8db;
+ --theme-diff-context-bg: #d5d6db;
+ --theme-diff-line-number: #c8c9ce;
+ --theme-diff-added-line-number-bg: #c5d5c5;
+ --theme-diff-removed-line-number-bg: #e7c8cb;
+ --theme-markdown-text: #3760bf;
+ --theme-markdown-heading: #9854f1;
+ --theme-markdown-link: #2e7de9;
+ --theme-markdown-link-text: #007197;
+ --theme-markdown-code: #587539;
+ --theme-markdown-block-quote: #8c6c3e;
+ --theme-markdown-emph: #8c6c3e;
+ --theme-markdown-strong: #b15c00;
+ --theme-markdown-horizontal-rule: #8990a3;
+ --theme-markdown-list-item: #2e7de9;
+ --theme-markdown-list-enumeration: #007197;
+ --theme-markdown-image: #2e7de9;
+ --theme-markdown-image-text: #007197;
+ --theme-markdown-code-block: #3760bf;
+ --theme-syntax-comment: #8990a3;
+ --theme-syntax-keyword: #9854f1;
+ --theme-syntax-function: #2e7de9;
+ --theme-syntax-variable: #f52a65;
+ --theme-syntax-string: #587539;
+ --theme-syntax-number: #b15c00;
+ --theme-syntax-type: #8c6c3e;
+ --theme-syntax-operator: #007197;
+ --theme-syntax-punctuation: #3760bf;
+}
+
+[data-theme="tokyonight"][data-dark="true"] {
+ --theme-primary: #82aaff;
+ --theme-secondary: #c099ff;
+ --theme-accent: #ff966c;
+ --theme-error: #ff757f;
+ --theme-warning: #ff966c;
+ --theme-success: #c3e88d;
+ --theme-info: #82aaff;
+ --theme-text: #c8d3f5;
+ --theme-text-muted: #828bb8;
+ --theme-background: #1a1b26;
+ --theme-background-panel: #1e2030;
+ --theme-background-element: #222436;
+ --theme-border: #737aa2;
+ --theme-border-active: #9099b2;
+ --theme-border-subtle: #545c7e;
+ --theme-diff-added: #4fd6be;
+ --theme-diff-removed: #c53b53;
+ --theme-diff-context: #828bb8;
+ --theme-diff-hunk-header: #828bb8;
+ --theme-diff-highlight-added: #b8db87;
+ --theme-diff-highlight-removed: #e26a75;
+ --theme-diff-added-bg: #20303b;
+ --theme-diff-removed-bg: #37222c;
+ --theme-diff-context-bg: #1e2030;
+ --theme-diff-line-number: #222436;
+ --theme-diff-added-line-number-bg: #1b2b34;
+ --theme-diff-removed-line-number-bg: #2d1f26;
+ --theme-markdown-text: #c8d3f5;
+ --theme-markdown-heading: #c099ff;
+ --theme-markdown-link: #82aaff;
+ --theme-markdown-link-text: #86e1fc;
+ --theme-markdown-code: #c3e88d;
+ --theme-markdown-block-quote: #ffc777;
+ --theme-markdown-emph: #ffc777;
+ --theme-markdown-strong: #ff966c;
+ --theme-markdown-horizontal-rule: #828bb8;
+ --theme-markdown-list-item: #82aaff;
+ --theme-markdown-list-enumeration: #86e1fc;
+ --theme-markdown-image: #82aaff;
+ --theme-markdown-image-text: #86e1fc;
+ --theme-markdown-code-block: #c8d3f5;
+ --theme-syntax-comment: #828bb8;
+ --theme-syntax-keyword: #c099ff;
+ --theme-syntax-function: #82aaff;
+ --theme-syntax-variable: #ff757f;
+ --theme-syntax-string: #c3e88d;
+ --theme-syntax-number: #ff966c;
+ --theme-syntax-type: #ffc777;
+ --theme-syntax-operator: #86e1fc;
+ --theme-syntax-punctuation: #c8d3f5;
+}
+
+[data-theme="vesper"][data-dark="false"] {
+ --theme-primary: #ffc799;
+ --theme-secondary: #99ffe4;
+ --theme-accent: #ffc799;
+ --theme-error: #ff8080;
+ --theme-warning: #ffc799;
+ --theme-success: #99ffe4;
+ --theme-info: #ffc799;
+ --theme-text: #101010;
+ --theme-text-muted: #a0a0a0;
+ --theme-background: #fff;
+ --theme-background-panel: #f0f0f0;
+ --theme-background-element: #e0e0e0;
+ --theme-border: #d0d0d0;
+ --theme-border-active: #ffc799;
+ --theme-border-subtle: #e8e8e8;
+ --theme-diff-added: #99ffe4;
+ --theme-diff-removed: #ff8080;
+ --theme-diff-context: #a0a0a0;
+ --theme-diff-hunk-header: #a0a0a0;
+ --theme-diff-highlight-added: #99ffe4;
+ --theme-diff-highlight-removed: #ff8080;
+ --theme-diff-added-bg: #e8f5e8;
+ --theme-diff-removed-bg: #f5e8e8;
+ --theme-diff-context-bg: #f8f8f8;
+ --theme-diff-line-number: #808080;
+ --theme-diff-added-line-number-bg: #e8f5e8;
+ --theme-diff-removed-line-number-bg: #f5e8e8;
+ --theme-markdown-text: #101010;
+ --theme-markdown-heading: #ffc799;
+ --theme-markdown-link: #ffc799;
+ --theme-markdown-link-text: #a0a0a0;
+ --theme-markdown-code: #a0a0a0;
+ --theme-markdown-block-quote: #101010;
+ --theme-markdown-emph: #101010;
+ --theme-markdown-strong: #101010;
+ --theme-markdown-horizontal-rule: #65737e;
+ --theme-markdown-list-item: #101010;
+ --theme-markdown-list-enumeration: #101010;
+ --theme-markdown-image: #ffc799;
+ --theme-markdown-image-text: #a0a0a0;
+ --theme-markdown-code-block: #101010;
+ --theme-syntax-comment: #8b8b8b94;
+ --theme-syntax-keyword: #a0a0a0;
+ --theme-syntax-function: #ffc799;
+ --theme-syntax-variable: #101010;
+ --theme-syntax-string: #99ffe4;
+ --theme-syntax-number: #ffc799;
+ --theme-syntax-type: #ffc799;
+ --theme-syntax-operator: #a0a0a0;
+ --theme-syntax-punctuation: #101010;
+}
+
+[data-theme="vesper"][data-dark="true"] {
+ --theme-primary: #ffc799;
+ --theme-secondary: #99ffe4;
+ --theme-accent: #ffc799;
+ --theme-error: #ff8080;
+ --theme-warning: #ffc799;
+ --theme-success: #99ffe4;
+ --theme-info: #ffc799;
+ --theme-text: #fff;
+ --theme-text-muted: #a0a0a0;
+ --theme-background: #101010;
+ --theme-background-panel: #101010;
+ --theme-background-element: #101010;
+ --theme-border: #282828;
+ --theme-border-active: #ffc799;
+ --theme-border-subtle: #1c1c1c;
+ --theme-diff-added: #99ffe4;
+ --theme-diff-removed: #ff8080;
+ --theme-diff-context: #a0a0a0;
+ --theme-diff-hunk-header: #a0a0a0;
+ --theme-diff-highlight-added: #99ffe4;
+ --theme-diff-highlight-removed: #ff8080;
+ --theme-diff-added-bg: #0d2818;
+ --theme-diff-removed-bg: #281a1a;
+ --theme-diff-context-bg: #101010;
+ --theme-diff-line-number: #505050;
+ --theme-diff-added-line-number-bg: #0d2818;
+ --theme-diff-removed-line-number-bg: #281a1a;
+ --theme-markdown-text: #fff;
+ --theme-markdown-heading: #ffc799;
+ --theme-markdown-link: #ffc799;
+ --theme-markdown-link-text: #a0a0a0;
+ --theme-markdown-code: #a0a0a0;
+ --theme-markdown-block-quote: #fff;
+ --theme-markdown-emph: #fff;
+ --theme-markdown-strong: #fff;
+ --theme-markdown-horizontal-rule: #65737e;
+ --theme-markdown-list-item: #fff;
+ --theme-markdown-list-enumeration: #fff;
+ --theme-markdown-image: #ffc799;
+ --theme-markdown-image-text: #a0a0a0;
+ --theme-markdown-code-block: #fff;
+ --theme-syntax-comment: #8b8b8b94;
+ --theme-syntax-keyword: #a0a0a0;
+ --theme-syntax-function: #ffc799;
+ --theme-syntax-variable: #fff;
+ --theme-syntax-string: #99ffe4;
+ --theme-syntax-number: #ffc799;
+ --theme-syntax-type: #ffc799;
+ --theme-syntax-operator: #a0a0a0;
+ --theme-syntax-punctuation: #fff;
+}
+
+[data-theme="zenburn"][data-dark="false"] {
+ --theme-primary: #5f7f8f;
+ --theme-secondary: #8f5f8f;
+ --theme-accent: #5f8f8f;
+ --theme-error: #8f5f5f;
+ --theme-warning: #8f8f5f;
+ --theme-success: #5f8f5f;
+ --theme-info: #8f7f5f;
+ --theme-text: #3f3f3f;
+ --theme-text-muted: #6f6f6f;
+ --theme-background: #ffffef;
+ --theme-background-panel: #f5f5e5;
+ --theme-background-element: #ebebdb;
+ --theme-border: #d0d0c0;
+ --theme-border-active: #5f7f8f;
+ --theme-border-subtle: #e0e0d0;
+ --theme-diff-added: #5f8f5f;
+ --theme-diff-removed: #8f5f5f;
+ --theme-diff-context: #6f6f6f;
+ --theme-diff-hunk-header: #5f8f8f;
+ --theme-diff-highlight-added: #5f8f5f;
+ --theme-diff-highlight-removed: #8f5f5f;
+ --theme-diff-added-bg: #efffef;
+ --theme-diff-removed-bg: #ffefef;
+ --theme-diff-context-bg: #f5f5e5;
+ --theme-diff-line-number: #b0b0a0;
+ --theme-diff-added-line-number-bg: #efffef;
+ --theme-diff-removed-line-number-bg: #ffefef;
+ --theme-markdown-text: #3f3f3f;
+ --theme-markdown-heading: #8f8f5f;
+ --theme-markdown-link: #5f7f8f;
+ --theme-markdown-link-text: #5f8f8f;
+ --theme-markdown-code: #5f8f5f;
+ --theme-markdown-block-quote: #6f6f6f;
+ --theme-markdown-emph: #8f8f5f;
+ --theme-markdown-strong: #8f7f5f;
+ --theme-markdown-horizontal-rule: #6f6f6f;
+ --theme-markdown-list-item: #5f7f8f;
+ --theme-markdown-list-enumeration: #5f8f8f;
+ --theme-markdown-image: #5f7f8f;
+ --theme-markdown-image-text: #5f8f8f;
+ --theme-markdown-code-block: #3f3f3f;
+ --theme-syntax-comment: #5f7f5f;
+ --theme-syntax-keyword: #8f8f5f;
+ --theme-syntax-function: #5f7f8f;
+ --theme-syntax-variable: #3f3f3f;
+ --theme-syntax-string: #8f5f5f;
+ --theme-syntax-number: #5f8f5f;
+ --theme-syntax-type: #5f8f8f;
+ --theme-syntax-operator: #8f8f5f;
+ --theme-syntax-punctuation: #3f3f3f;
+}
+
+[data-theme="zenburn"][data-dark="true"] {
+ --theme-primary: #8cd0d3;
+ --theme-secondary: #dc8cc3;
+ --theme-accent: #93e0e3;
+ --theme-error: #cc9393;
+ --theme-warning: #f0dfaf;
+ --theme-success: #7f9f7f;
+ --theme-info: #dfaf8f;
+ --theme-text: #dcdccc;
+ --theme-text-muted: #9f9f9f;
+ --theme-background: #3f3f3f;
+ --theme-background-panel: #4f4f4f;
+ --theme-background-element: #5f5f5f;
+ --theme-border: #5f5f5f;
+ --theme-border-active: #8cd0d3;
+ --theme-border-subtle: #4f4f4f;
+ --theme-diff-added: #7f9f7f;
+ --theme-diff-removed: #cc9393;
+ --theme-diff-context: #9f9f9f;
+ --theme-diff-hunk-header: #93e0e3;
+ --theme-diff-highlight-added: #8fb28f;
+ --theme-diff-highlight-removed: #dca3a3;
+ --theme-diff-added-bg: #4f5f4f;
+ --theme-diff-removed-bg: #5f4f4f;
+ --theme-diff-context-bg: #4f4f4f;
+ --theme-diff-line-number: #6f6f6f;
+ --theme-diff-added-line-number-bg: #4f5f4f;
+ --theme-diff-removed-line-number-bg: #5f4f4f;
+ --theme-markdown-text: #dcdccc;
+ --theme-markdown-heading: #f0dfaf;
+ --theme-markdown-link: #8cd0d3;
+ --theme-markdown-link-text: #93e0e3;
+ --theme-markdown-code: #7f9f7f;
+ --theme-markdown-block-quote: #9f9f9f;
+ --theme-markdown-emph: #e0cf9f;
+ --theme-markdown-strong: #dfaf8f;
+ --theme-markdown-horizontal-rule: #9f9f9f;
+ --theme-markdown-list-item: #8cd0d3;
+ --theme-markdown-list-enumeration: #93e0e3;
+ --theme-markdown-image: #8cd0d3;
+ --theme-markdown-image-text: #93e0e3;
+ --theme-markdown-code-block: #dcdccc;
+ --theme-syntax-comment: #7f9f7f;
+ --theme-syntax-keyword: #f0dfaf;
+ --theme-syntax-function: #8cd0d3;
+ --theme-syntax-variable: #dcdccc;
+ --theme-syntax-string: #cc9393;
+ --theme-syntax-number: #8fb28f;
+ --theme-syntax-type: #93e0e3;
+ --theme-syntax-operator: #f0dfaf;
+ --theme-syntax-punctuation: #dcdccc;
+}
diff --git a/packages/app/src/components/code.tsx b/packages/app/src/components/code.tsx
new file mode 100644
index 000000000..4eed5814e
--- /dev/null
+++ b/packages/app/src/components/code.tsx
@@ -0,0 +1,1358 @@
+import { bundledLanguages, codeToHtml, type ShikiTransformer } from "shiki"
+import {
+ createResource,
+ splitProps,
+ Suspense,
+ type ComponentProps,
+ createEffect,
+ onMount,
+ onCleanup,
+ createMemo,
+} from "solid-js"
+import { useLocal } from "@/context"
+import { getFileExtension, getNodeOffsetInLine, getSelectionInContainer } from "@/utils"
+
+interface Props extends ComponentProps<"div"> {
+ code: string
+ path: string
+}
+
+function transformerUnifiedDiff(): ShikiTransformer {
+ const kinds = new Map()
+ const meta = new Map()
+ let isDiff = false
+
+ return {
+ name: "unified-diff",
+ preprocess(input) {
+ kinds.clear()
+ meta.clear()
+ isDiff = false
+
+ const ls = input.split(/\r?\n/)
+ const out: Array = []
+ let oldNo = 0
+ let newNo = 0
+ let inHunk = false
+
+ for (let i = 0; i < ls.length; i++) {
+ const s = ls[i]
+
+ const m = s.match(/^@@\s*-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s*@@/)
+ if (m) {
+ isDiff = true
+ inHunk = true
+ oldNo = parseInt(m[1], 10)
+ newNo = parseInt(m[3], 10)
+ continue
+ }
+
+ if (
+ /^diff --git /.test(s) ||
+ /^Index: /.test(s) ||
+ /^--- /.test(s) ||
+ /^\+\+\+ /.test(s) ||
+ /^[=]{3,}$/.test(s) ||
+ /^\*{3,}$/.test(s) ||
+ /^\\ No newline at end of file$/.test(s)
+ ) {
+ isDiff = true
+ continue
+ }
+
+ if (!inHunk) {
+ out.push(s)
+ continue
+ }
+
+ if (/^\+/.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "add")
+ meta.set(ln, { new: newNo, sign: "+" })
+ newNo++
+ continue
+ }
+
+ if (/^-/.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "remove")
+ meta.set(ln, { old: oldNo, sign: "-" })
+ oldNo++
+ continue
+ }
+
+ if (/^ /.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "context")
+ meta.set(ln, { old: oldNo, new: newNo })
+ oldNo++
+ newNo++
+ continue
+ }
+
+ // fallback in hunks
+ out.push(s)
+ }
+
+ return out.join("\n")
+ },
+ code(node) {
+ if (isDiff) this.addClassToHast(node, "code-diff")
+ },
+ pre(node) {
+ if (isDiff) this.addClassToHast(node, "code-diff")
+ },
+ line(node, line) {
+ if (!isDiff) return
+ const kind = kinds.get(line)
+ if (!kind) return
+
+ const m = meta.get(line) || {}
+
+ this.addClassToHast(node, "diff-line")
+ this.addClassToHast(node, `diff-${kind}`)
+ node.properties = node.properties || {}
+ ;(node.properties as any)["data-diff"] = kind
+ if (m.old != undefined) (node.properties as any)["data-old"] = String(m.old)
+ if (m.new != undefined) (node.properties as any)["data-new"] = String(m.new)
+
+ const oldSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-oldln"] },
+ children: [{ type: "text", value: m.old != undefined ? String(m.old) : " " }],
+ }
+ const newSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-newln"] },
+ children: [{ type: "text", value: m.new != undefined ? String(m.new) : " " }],
+ }
+
+ if (kind === "add" || kind === "remove" || kind === "context") {
+ const first = (node.children && (node.children as any[])[0]) as any
+ if (first && first.type === "element" && first.children && first.children.length > 0) {
+ const t = first.children[0]
+ if (t && t.type === "text" && typeof t.value === "string" && t.value.length > 0) {
+ const ch = t.value[0]
+ if (ch === "+" || ch === "-" || ch === " ") t.value = t.value.slice(1)
+ }
+ }
+ }
+
+ const signSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-sign"] },
+ children: [{ type: "text", value: (m as any).sign || " " }],
+ }
+
+ // @ts-expect-error hast typing across versions
+ node.children = [oldSpan, newSpan, signSpan, ...(node.children || [])]
+ },
+ }
+}
+
+function transformerDiffGroups(): ShikiTransformer {
+ let group = -1
+ let inGroup = false
+ return {
+ name: "diff-groups",
+ pre() {
+ group = -1
+ inGroup = false
+ },
+ line(node) {
+ const props = (node.properties || {}) as any
+ const kind = props["data-diff"] as string | undefined
+ if (kind === "add" || kind === "remove") {
+ if (!inGroup) {
+ group += 1
+ inGroup = true
+ }
+ ;(node.properties as any)["data-chgrp"] = String(group)
+ } else {
+ inGroup = false
+ }
+ },
+ }
+}
+
+function applyDiffFolding(
+ root: HTMLElement,
+ context = 3,
+ options?: { expanded?: string[]; onExpand?: (key: string) => void; side?: "left" | "right" },
+) {
+ if (!root.classList.contains("code-diff")) return
+
+ // Cleanup: unwrap previous collapsed blocks and remove toggles
+ const blocks = Array.from(root.querySelectorAll(".diff-collapsed-block"))
+ for (const block of blocks) {
+ const p = block.parentNode
+ if (!p) {
+ block.remove()
+ continue
+ }
+ while (block.firstChild) p.insertBefore(block.firstChild, block)
+ block.remove()
+ }
+ const toggles = Array.from(root.querySelectorAll(".diff-collapsed"))
+ for (const t of toggles) t.remove()
+
+ const lines = Array.from(root.querySelectorAll(".diff-line"))
+ if (lines.length === 0) return
+
+ const n = lines.length
+ const isChange = lines.map((l) => l.dataset["diff"] === "add" || l.dataset["diff"] === "remove")
+ const isContext = lines.map((l) => l.dataset["diff"] === "context")
+ if (!isChange.some(Boolean)) return
+
+ const visible = new Array(n).fill(false) as boolean[]
+ for (let i = 0; i < n; i++) if (isChange[i]) visible[i] = true
+ for (let i = 0; i < n; i++) {
+ if (isChange[i]) {
+ const s = Math.max(0, i - context)
+ const e = Math.min(n - 1, i + context)
+ for (let j = s; j <= e; j++) if (isContext[j]) visible[j] = true
+ }
+ }
+
+ type Range = { start: number; end: number }
+ const ranges: Range[] = []
+ let i = 0
+ while (i < n) {
+ if (!visible[i] && isContext[i]) {
+ let j = i
+ while (j + 1 < n && !visible[j + 1] && isContext[j + 1]) j++
+ ranges.push({ start: i, end: j })
+ i = j + 1
+ } else {
+ i++
+ }
+ }
+
+ for (const r of ranges) {
+ const start = lines[r.start]
+ const end = lines[r.end]
+ const count = r.end - r.start + 1
+ const minCollapse = 20
+ if (count < minCollapse) {
+ continue
+ }
+
+ // Wrap the entire collapsed chunk (including trailing newline) so it takes no space
+ const block = document.createElement("span")
+ block.className = "diff-collapsed-block"
+ start.parentElement?.insertBefore(block, start)
+
+ let cur: Node | undefined = start
+ while (cur) {
+ const next: Node | undefined = cur.nextSibling || undefined
+ block.appendChild(cur)
+ if (cur === end) {
+ // Also move the newline after the last line into the block
+ if (next && next.nodeType === Node.TEXT_NODE && (next.textContent || "").startsWith("\n")) {
+ block.appendChild(next)
+ }
+ break
+ }
+ cur = next
+ }
+
+ block.style.display = "none"
+ const row = document.createElement("span")
+ row.className = "line diff-collapsed"
+ row.setAttribute("data-kind", "collapsed")
+ row.setAttribute("data-count", String(count))
+ row.setAttribute("tabindex", "0")
+ row.setAttribute("role", "button")
+
+ const oldln = document.createElement("span")
+ oldln.className = "diff-oldln"
+ oldln.textContent = " "
+
+ const newln = document.createElement("span")
+ newln.className = "diff-newln"
+ newln.textContent = " "
+
+ const sign = document.createElement("span")
+ sign.className = "diff-sign"
+ sign.textContent = "…"
+
+ const label = document.createElement("span")
+ label.textContent = `show ${count} unchanged line${count > 1 ? "s" : ""}`
+
+ const key = `o${start.dataset["old"] || ""}-${end.dataset["old"] || ""}:n${start.dataset["new"] || ""}-${end.dataset["new"] || ""}`
+
+ const show = (record = true) => {
+ if (record) options?.onExpand?.(key)
+ const p = block.parentNode
+ if (p) {
+ while (block.firstChild) p.insertBefore(block.firstChild, block)
+ block.remove()
+ }
+ row.remove()
+ }
+
+ row.addEventListener("click", () => show(true))
+ row.addEventListener("keydown", (ev) => {
+ if (ev.key === "Enter" || ev.key === " ") {
+ ev.preventDefault()
+ show(true)
+ }
+ })
+
+ block.parentElement?.insertBefore(row, block)
+ if (!options?.side || options.side === "left") row.appendChild(oldln)
+ if (!options?.side || options.side === "right") row.appendChild(newln)
+ row.appendChild(sign)
+ row.appendChild(label)
+
+ if (options?.expanded && options.expanded.includes(key)) {
+ show(false)
+ }
+ }
+}
+
+function applySplitDiff(container: HTMLElement) {
+ const pres = Array.from(container.querySelectorAll("pre"))
+ if (pres.length === 0) return
+ const originalPre = pres[0]
+ const originalCode = originalPre.querySelector("code") as HTMLElement | undefined
+ if (!originalCode || !originalCode.classList.contains("code-diff")) return
+
+ // Rebuild split each time to match current content
+ const existing = container.querySelector(".diff-split")
+ if (existing) existing.remove()
+
+ const grid = document.createElement("div")
+ grid.className = "diff-split grid grid-cols-2 gap-x-6"
+
+ const makeColumn = () => {
+ const pre = document.createElement("pre")
+ pre.className = originalPre.className
+ const code = document.createElement("code")
+ code.className = originalCode.className
+ pre.appendChild(code)
+ return { pre, code }
+ }
+
+ const left = makeColumn()
+ const right = makeColumn()
+
+ // Helpers
+ const cloneSide = (line: HTMLElement, side: "old" | "new"): HTMLElement => {
+ const clone = line.cloneNode(true) as HTMLElement
+ const oldln = clone.querySelector(".diff-oldln")
+ const newln = clone.querySelector(".diff-newln")
+ if (side === "old") {
+ if (newln) newln.remove()
+ } else {
+ if (oldln) oldln.remove()
+ }
+ return clone
+ }
+
+ const blankLine = (side: "old" | "new", kind: "add" | "remove"): HTMLElement => {
+ const span = document.createElement("span")
+ span.className = "line diff-line diff-blank"
+ span.setAttribute("data-diff", kind)
+ const ln = document.createElement("span")
+ ln.className = side === "old" ? "diff-oldln" : "diff-newln"
+ ln.textContent = " "
+ span.appendChild(ln)
+ return span
+ }
+
+ const lines = Array.from(originalCode.querySelectorAll(".diff-line"))
+ let i = 0
+ while (i < lines.length) {
+ const cur = lines[i]
+ const kind = cur.dataset["diff"]
+
+ if (kind === "context") {
+ left.code.appendChild(cloneSide(cur, "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(cur, "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ i++
+ continue
+ }
+
+ if (kind === "remove") {
+ // Batch consecutive removes and following adds, then pair
+ const removes: HTMLElement[] = []
+ const adds: HTMLElement[] = []
+ let j = i
+ while (j < lines.length && lines[j].dataset["diff"] === "remove") {
+ removes.push(lines[j])
+ j++
+ }
+ let k = j
+ while (k < lines.length && lines[k].dataset["diff"] === "add") {
+ adds.push(lines[k])
+ k++
+ }
+
+ const pairs = Math.min(removes.length, adds.length)
+ for (let p = 0; p < pairs; p++) {
+ left.code.appendChild(cloneSide(removes[p], "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ for (let p = pairs; p < removes.length; p++) {
+ left.code.appendChild(cloneSide(removes[p], "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(blankLine("new", "remove"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ for (let p = pairs; p < adds.length; p++) {
+ left.code.appendChild(blankLine("old", "add"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+
+ i = k
+ continue
+ }
+
+ if (kind === "add") {
+ // Run of adds not preceded by removes
+ const adds: HTMLElement[] = []
+ let j = i
+ while (j < lines.length && lines[j].dataset["diff"] === "add") {
+ adds.push(lines[j])
+ j++
+ }
+ for (let p = 0; p < adds.length; p++) {
+ left.code.appendChild(blankLine("old", "add"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ i = j
+ continue
+ }
+
+ // Any other kind: mirror as context
+ left.code.appendChild(cloneSide(cur, "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(cur, "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ i++
+ }
+
+ grid.appendChild(left.pre)
+ grid.appendChild(right.pre)
+ container.appendChild(grid)
+}
+
+export function Code(props: Props) {
+ const ctx = useLocal()
+ const [local, others] = splitProps(props, ["class", "classList", "code", "path"])
+ const lang = createMemo(() => getFileExtension(local.path))
+
+ let container: HTMLDivElement | undefined
+ let isProgrammaticSelection = false
+
+ const [html] = createResource(
+ () => [local.code, lang()],
+ async ([code, lang]) => {
+ return (await codeToHtml(code || "", {
+ lang: lang && lang in bundledLanguages ? lang : "text",
+ theme: {
+ colors: {
+ "actionBar.toggledBackground": "var(--theme-background-element)",
+ "activityBarBadge.background": "var(--theme-accent)",
+ "checkbox.border": "var(--theme-border)",
+ "editor.background": "transparent",
+ "editor.foreground": "var(--theme-text)",
+ "editor.inactiveSelectionBackground": "var(--theme-background-element)",
+ "editor.selectionHighlightBackground": "var(--theme-border-active)",
+ "editorIndentGuide.activeBackground1": "var(--theme-border-subtle)",
+ "editorIndentGuide.background1": "var(--theme-border-subtle)",
+ "input.placeholderForeground": "var(--theme-text-muted)",
+ "list.activeSelectionIconForeground": "var(--theme-text)",
+ "list.dropBackground": "var(--theme-background-element)",
+ "menu.background": "var(--theme-background-panel)",
+ "menu.border": "var(--theme-border)",
+ "menu.foreground": "var(--theme-text)",
+ "menu.selectionBackground": "var(--theme-primary)",
+ "menu.separatorBackground": "var(--theme-border)",
+ "ports.iconRunningProcessForeground": "var(--theme-success)",
+ "sideBarSectionHeader.background": "transparent",
+ "sideBarSectionHeader.border": "var(--theme-border-subtle)",
+ "sideBarTitle.foreground": "var(--theme-text-muted)",
+ "statusBarItem.remoteBackground": "var(--theme-success)",
+ "statusBarItem.remoteForeground": "var(--theme-text)",
+ "tab.lastPinnedBorder": "var(--theme-border-subtle)",
+ "tab.selectedBackground": "var(--theme-background-element)",
+ "tab.selectedForeground": "var(--theme-text-muted)",
+ "terminal.inactiveSelectionBackground": "var(--theme-background-element)",
+ "widget.border": "var(--theme-border)",
+ },
+ displayName: "opencode",
+ name: "opencode",
+ semanticHighlighting: true,
+ semanticTokenColors: {
+ customLiteral: "var(--theme-syntax-function)",
+ newOperator: "var(--theme-syntax-operator)",
+ numberLiteral: "var(--theme-syntax-number)",
+ stringLiteral: "var(--theme-syntax-string)",
+ },
+ tokenColors: [
+ {
+ scope: [
+ "meta.embedded",
+ "source.groovy.embedded",
+ "string meta.image.inline.markdown",
+ "variable.legacy.builtin.python",
+ ],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "emphasis",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "strong",
+ settings: {
+ fontStyle: "bold",
+ },
+ },
+ {
+ scope: "header",
+ settings: {
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "comment",
+ settings: {
+ foreground: "var(--theme-syntax-comment)",
+ },
+ },
+ {
+ scope: "constant.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "constant.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.tag",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["entity.name.tag.css", "entity.name.tag.less"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.other.attribute-name",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "entity.other.attribute-name.class.css",
+ "source.css entity.other.attribute-name.class",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.parent.less",
+ "source.css entity.other.attribute-name.pseudo-class",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "invalid",
+ settings: {
+ foreground: "var(--theme-error)",
+ },
+ },
+ {
+ scope: "markup.underline",
+ settings: {
+ fontStyle: "underline",
+ },
+ },
+ {
+ scope: "markup.bold",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-strong)",
+ },
+ },
+ {
+ scope: "markup.heading",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "markup.italic",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "markup.strikethrough",
+ settings: {
+ fontStyle: "strikethrough",
+ },
+ },
+ {
+ scope: "markup.inserted",
+ settings: {
+ foreground: "var(--theme-diff-added)",
+ },
+ },
+ {
+ scope: "markup.deleted",
+ settings: {
+ foreground: "var(--theme-diff-removed)",
+ },
+ },
+ {
+ scope: "markup.changed",
+ settings: {
+ foreground: "var(--theme-diff-context)",
+ },
+ },
+ {
+ scope: "punctuation.definition.quote.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-block-quote)",
+ },
+ },
+ {
+ scope: "punctuation.definition.list.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-list-enumeration)",
+ },
+ },
+ {
+ scope: "markup.inline.raw",
+ settings: {
+ foreground: "var(--theme-markdown-code)",
+ },
+ },
+ {
+ scope: "punctuation.definition.tag",
+ settings: {
+ foreground: "var(--theme-syntax-punctuation)",
+ },
+ },
+ {
+ scope: ["meta.preprocessor", "entity.name.function.preprocessor"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.string",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.numeric",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "meta.structure.dictionary.key.python",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "meta.diff.header",
+ settings: {
+ foreground: "var(--theme-diff-hunk-header)",
+ },
+ },
+ {
+ scope: "storage",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "storage.type",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["storage.modifier", "keyword.operator.noexcept"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["string", "meta.embedded.assembly"],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.tag",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.value",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["meta.template.expression"],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "source.css variable",
+ "source.coffee.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "keyword",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.control",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.operator",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.other.unit",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "support.function.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "constant.sha.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java",
+ ],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "variable.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-function)",
+ },
+ },
+ {
+ scope: [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class",
+ "punctuation.separator.namespace.ruby",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.directive.using",
+ "keyword.other.operator",
+ "entity.name.operator",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["variable.other.constant", "variable.other.enummember"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["meta.object-literal.key"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "keyword.operator.quantifier.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["constant.character", "constant.other.option"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "constant.character.escape",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.label",
+ settings: {
+ foreground: "var(--theme-text-muted)",
+ },
+ },
+ ],
+ type: "dark",
+ },
+ transformers: [transformerUnifiedDiff(), transformerDiffGroups()],
+ })) as string
+ },
+ )
+
+ onMount(() => {
+ if (!container) return
+
+ let ticking = false
+ const onScroll = () => {
+ if (!container) return
+ if (ctx.file.active()?.path !== local.path) return
+ if (ticking) return
+ ticking = true
+ requestAnimationFrame(() => {
+ ticking = false
+ ctx.file.scroll(local.path, container!.scrollTop)
+ })
+ }
+
+ const onSelectionChange = () => {
+ if (!container) return
+ if (isProgrammaticSelection) return
+ if (ctx.file.active()?.path !== local.path) return
+ const d = getSelectionInContainer(container)
+ if (!d) return
+ const p = ctx.file.node(local.path)?.selection
+ if (p && p.startLine === d.sl && p.endLine === d.el && p.startChar === d.sch && p.endChar === d.ech) return
+ ctx.file.select(local.path, { startLine: d.sl, startChar: d.sch, endLine: d.el, endChar: d.ech })
+ }
+
+ const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
+ const onKeyDown = (e: KeyboardEvent) => {
+ if (ctx.file.active()?.path !== local.path) return
+ const ae = document.activeElement as HTMLElement | undefined
+ const tag = (ae?.tagName || "").toLowerCase()
+ const inputFocused = !!ae && (tag === "input" || tag === "textarea" || ae.isContentEditable)
+ if (inputFocused) return
+ if (e.getModifierState(MOD) && e.key.toLowerCase() === "a") {
+ e.preventDefault()
+ if (!container) return
+ const element = container.querySelector("code") as HTMLElement | undefined
+ if (!element) return
+ const lines = Array.from(element.querySelectorAll(".line"))
+ if (!lines.length) return
+ const r = document.createRange()
+ const last = lines[lines.length - 1]
+ r.selectNodeContents(last)
+ const lastLen = r.toString().length
+ ctx.file.select(local.path, { startLine: 1, startChar: 0, endLine: lines.length, endChar: lastLen })
+ }
+ }
+
+ container.addEventListener("scroll", onScroll)
+ document.addEventListener("selectionchange", onSelectionChange)
+ document.addEventListener("keydown", onKeyDown)
+
+ onCleanup(() => {
+ container?.removeEventListener("scroll", onScroll)
+ document.removeEventListener("selectionchange", onSelectionChange)
+ document.removeEventListener("keydown", onKeyDown)
+ })
+ })
+
+ // Restore scroll position from store when content is ready
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const top = ctx.file.node(local.path)?.scrollTop
+ if (top !== undefined && container.scrollTop !== top) container.scrollTop = top
+ })
+
+ // Sync selection from store -> DOM
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ if (ctx.file.active()?.path !== local.path) return
+ const codeEl = container.querySelector("code") as HTMLElement | undefined
+ if (!codeEl) return
+ const target = ctx.file.node(local.path)?.selection
+ const current = getSelectionInContainer(container)
+ const sel = window.getSelection()
+ if (!sel) return
+ if (!target) {
+ if (current) {
+ isProgrammaticSelection = true
+ sel.removeAllRanges()
+ queueMicrotask(() => {
+ isProgrammaticSelection = false
+ })
+ }
+ return
+ }
+ const matches = !!(
+ current &&
+ current.sl === target.startLine &&
+ current.sch === target.startChar &&
+ current.el === target.endLine &&
+ current.ech === target.endChar
+ )
+ if (matches) return
+ const lines = Array.from(codeEl.querySelectorAll(".line"))
+ if (lines.length === 0) return
+ let sIdx = Math.max(0, target.startLine - 1)
+ let eIdx = Math.max(0, target.endLine - 1)
+ let sChar = Math.max(0, target.startChar || 0)
+ let eChar = Math.max(0, target.endChar || 0)
+ if (sIdx > eIdx || (sIdx === eIdx && sChar > eChar)) {
+ const ti = sIdx
+ sIdx = eIdx
+ eIdx = ti
+ const tc = sChar
+ sChar = eChar
+ eChar = tc
+ }
+ if (eChar === 0 && eIdx > sIdx) {
+ eIdx = eIdx - 1
+ eChar = Number.POSITIVE_INFINITY
+ }
+ if (sIdx >= lines.length) return
+ if (eIdx >= lines.length) eIdx = lines.length - 1
+ const s = getNodeOffsetInLine(lines[sIdx], sChar) ?? { node: lines[sIdx], offset: 0 }
+ const e = getNodeOffsetInLine(lines[eIdx], eChar) ?? { node: lines[eIdx], offset: lines[eIdx].childNodes.length }
+ const range = document.createRange()
+ range.setStart(s.node, s.offset)
+ range.setEnd(e.node, e.offset)
+ isProgrammaticSelection = true
+ sel.removeAllRanges()
+ sel.addRange(range)
+ queueMicrotask(() => {
+ isProgrammaticSelection = false
+ })
+ })
+
+ // Build/toggle split layout and apply folding (both unified and split)
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const view = ctx.file.view(local.path)
+
+ const pres = Array.from(container.querySelectorAll("pre"))
+ if (pres.length === 0) return
+ const originalPre = pres[0]
+
+ const split = container.querySelector(".diff-split")
+ if (view === "diff-split") {
+ applySplitDiff(container)
+ const next = container.querySelector(".diff-split")
+ if (next) next.style.display = ""
+ originalPre.style.display = "none"
+ } else {
+ if (split) split.style.display = "none"
+ originalPre.style.display = ""
+ }
+
+ const expanded = ctx.file.folded(local.path)
+ if (view === "diff-split") {
+ const left = container.querySelector(".diff-split pre:nth-child(1) code")
+ const right = container.querySelector(".diff-split pre:nth-child(2) code")
+ if (left)
+ applyDiffFolding(left, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "left" })
+ if (right)
+ applyDiffFolding(right, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "right" })
+ } else {
+ const code = container.querySelector("pre code")
+ if (code)
+ applyDiffFolding(code, 3, {
+ expanded,
+ onExpand: (key) => ctx.file.unfold(local.path, key),
+ })
+ }
+ })
+
+ // Highlight groups + scroll coupling
+ const clearHighlights = () => {
+ if (!container) return
+ container.querySelectorAll(".diff-selected").forEach((el) => el.classList.remove("diff-selected"))
+ }
+
+ const applyHighlight = (idx: number, scroll?: boolean) => {
+ if (!container) return
+ const view = ctx.file.view(local.path)
+ if (view === "raw") return
+
+ clearHighlights()
+
+ const nodes: HTMLElement[] = []
+ if (view === "diff-split") {
+ const left = container.querySelector(".diff-split pre:nth-child(1) code")
+ const right = container.querySelector(".diff-split pre:nth-child(2) code")
+ if (left)
+ nodes.push(...Array.from(left.querySelectorAll(`[data-chgrp="${idx}"][data-diff="remove"]`)))
+ if (right)
+ nodes.push(...Array.from(right.querySelectorAll(`[data-chgrp="${idx}"][data-diff="add"]`)))
+ } else {
+ const code = container.querySelector("pre code")
+ if (code) nodes.push(...Array.from(code.querySelectorAll(`[data-chgrp="${idx}"]`)))
+ }
+
+ for (const n of nodes) n.classList.add("diff-selected")
+ if (scroll && nodes.length) nodes[0].scrollIntoView({ block: "center", behavior: "smooth" })
+ }
+
+ const countGroups = () => {
+ if (!container) return 0
+ const code = container.querySelector("pre code")
+ if (!code) return 0
+ const set = new Set()
+ for (const el of Array.from(code.querySelectorAll(".diff-line[data-chgrp]"))) {
+ const v = el.getAttribute("data-chgrp")
+ if (v != undefined) set.add(v)
+ }
+ return set.size
+ }
+
+ let lastIdx: number | undefined = undefined
+ let lastView: string | undefined
+ let lastContent: string | undefined
+ let lastRawIdx: number | undefined = undefined
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const view = ctx.file.view(local.path)
+ const raw = ctx.file.changeIndex(local.path)
+ if (raw === undefined) return
+ const total = countGroups()
+ if (total <= 0) return
+ const next = ((raw % total) + total) % total
+
+ const navigated = lastRawIdx !== undefined && lastRawIdx !== raw
+
+ if (next !== raw) {
+ ctx.file.setChangeIndex(local.path, next)
+ applyHighlight(next, true)
+ } else {
+ if (lastView !== view || lastContent !== content) applyHighlight(next)
+ if ((lastIdx !== undefined && lastIdx !== next) || navigated) applyHighlight(next, true)
+ }
+
+ lastRawIdx = raw
+ lastIdx = next
+ lastView = view
+ lastContent = content
+ })
+
+ return (
+
+ {
+ container = el
+ }}
+ innerHTML={html()}
+ class="
+ font-mono text-xs tracking-wide overflow-y-auto no-scrollbar h-full
+ [&]:[counter-reset:line]
+ [&_pre]:focus-visible:outline-none
+ [&_pre]:overflow-x-auto [&_pre]:no-scrollbar
+ [&_code]:min-w-full [&_code]:inline-block [&_code]:pb-40
+ [&_.tab]:relative
+ [&_.tab::before]:content['⇥']
+ [&_.tab::before]:absolute
+ [&_.tab::before]:opacity-0
+ [&_.space]:relative
+ [&_.space::before]:content-['·']
+ [&_.space::before]:absolute
+ [&_.space::before]:opacity-0
+ [&_.line]:inline-block [&_.line]:w-full
+ [&_.line]:hover:bg-background-element
+ [&_.line::before]:sticky [&_.line::before]:left-0
+ [&_.line::before]:w-12 [&_.line::before]:pr-4
+ [&_.line::before]:z-10
+ [&_.line::before]:bg-background-panel
+ [&_.line::before]:text-text-muted/60
+ [&_.line::before]:text-right [&_.line::before]:inline-block
+ [&_.line::before]:select-none
+ [&_.line::before]:[counter-increment:line]
+ [&_.line::before]:content-[counter(line)]
+ [&_code.code-diff_.line::before]:content-['']
+ [&_code.code-diff_.line::before]:w-0
+ [&_code.code-diff_.line::before]:pr-0
+ [&_.diff-split_code.code-diff::before]:w-10
+ [&_.diff-split_.diff-newln]:left-0
+ [&_.diff-oldln]:sticky [&_.diff-oldln]:left-0
+ [&_.diff-oldln]:w-10 [&_.diff-oldln]:pr-2
+ [&_.diff-oldln]:z-40
+ [&_.diff-oldln]:text-text-muted/60
+ [&_.diff-oldln]:text-right [&_.diff-oldln]:inline-block
+ [&_.diff-oldln]:select-none
+ [&_.diff-oldln]:bg-background-panel
+ [&_.diff-newln]:sticky [&_.diff-newln]:left-10
+ [&_.diff-newln]:w-10 [&_.diff-newln]:pr-2
+ [&_.diff-newln]:z-40
+ [&_.diff-newln]:text-text-muted/60
+ [&_.diff-newln]:text-right [&_.diff-newln]:inline-block
+ [&_.diff-newln]:select-none
+ [&_.diff-newln]:bg-background-panel
+ [&_.diff-add]:bg-success/20!
+ [&_.diff-add.diff-selected]:bg-success/50!
+ [&_.diff-add_.diff-oldln]:bg-success!
+ [&_.diff-add_.diff-oldln]:text-background-panel!
+ [&_.diff-add_.diff-newln]:bg-success!
+ [&_.diff-add_.diff-newln]:text-background-panel!
+ [&_.diff-remove]:bg-error/20!
+ [&_.diff-remove.diff-selected]:bg-error/50!
+ [&_.diff-remove_.diff-newln]:bg-error!
+ [&_.diff-remove_.diff-newln]:text-background-panel!
+ [&_.diff-remove_.diff-oldln]:bg-error!
+ [&_.diff-remove_.diff-oldln]:text-background-panel!
+ [&_.diff-sign]:inline-block [&_.diff-sign]:px-2 [&_.diff-sign]:select-none
+ [&_.diff-blank]:bg-background-element
+ [&_.diff-blank_.diff-oldln]:bg-background-element
+ [&_.diff-blank_.diff-newln]:bg-background-element
+ [&_.diff-collapsed]:block! [&_.diff-collapsed]:w-full [&_.diff-collapsed]:relative
+ [&_.diff-collapsed]:cursor-pointer [&_.diff-collapsed]:select-none
+ [&_.diff-collapsed]:bg-info/20 [&_.diff-collapsed]:hover:bg-info/40!
+ [&_.diff-collapsed]:text-info/80 [&_.diff-collapsed]:hover:text-info
+ [&_.diff-collapsed]:text-xs
+ [&_.diff-collapsed_.diff-oldln]:bg-info!
+ [&_.diff-collapsed_.diff-newln]:bg-info!
+ "
+ classList={{
+ ...(local.classList || {}),
+ [local.class ?? ""]: !!local.class,
+ }}
+ {...others}
+ />
+
+ )
+}
diff --git a/packages/app/src/components/file-tree.tsx b/packages/app/src/components/file-tree.tsx
new file mode 100644
index 000000000..a3c4f42df
--- /dev/null
+++ b/packages/app/src/components/file-tree.tsx
@@ -0,0 +1,85 @@
+import { useLocal } from "@/context"
+import type { LocalFile } from "@/context/local"
+import { Collapsible, FileIcon, Tooltip } from "@/ui"
+import { For, Match, Switch, Show, type ComponentProps, type ParentProps } from "solid-js"
+import { Dynamic } from "solid-js/web"
+
+export default function FileTree(props: {
+ path: string
+ class?: string
+ nodeClass?: string
+ level?: number
+ onFileClick?: (file: LocalFile) => void
+}) {
+ const local = useLocal()
+ const level = props.level ?? 0
+
+ const Node = (p: ParentProps & ComponentProps<"div"> & { node: LocalFile; as?: "div" | "button" }) => (
+
+ {p.children}
+
+ {p.node.name}
+
+
+
+
+
+ )
+
+ return (
+
+
+ {(node) => (
+
+
+
+ (open ? local.file.expand(node.path) : local.file.collapse(node.path))}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ props.onFileClick?.(node)}>
+
+
+
+
+
+
+ )}
+
+
+ )
+}
diff --git a/packages/app/src/components/markdown.tsx b/packages/app/src/components/markdown.tsx
new file mode 100644
index 000000000..1fb2cf836
--- /dev/null
+++ b/packages/app/src/components/markdown.tsx
@@ -0,0 +1,601 @@
+import { transformerNotationDiff } from "@shikijs/transformers"
+import { marked } from "marked"
+import markedShiki from "marked-shiki"
+import { codeToHtml } from "shiki"
+import { createResource } from "solid-js"
+
+const markedWithShiki = marked.use(
+ markedShiki({
+ highlight(code, lang) {
+ return codeToHtml(code, {
+ // structure: "inline",
+ lang: lang || "text",
+ tabindex: false,
+ theme: {
+ colors: {
+ "actionBar.toggledBackground": "var(--theme-background-element)",
+ "activityBarBadge.background": "var(--theme-accent)",
+ "checkbox.border": "var(--theme-border)",
+ "editor.background": "transparent",
+ "editor.foreground": "var(--theme-text)",
+ "editor.inactiveSelectionBackground": "var(--theme-background-element)",
+ "editor.selectionHighlightBackground": "var(--theme-border-active)",
+ "editorIndentGuide.activeBackground1": "var(--theme-border-subtle)",
+ "editorIndentGuide.background1": "var(--theme-border-subtle)",
+ "input.placeholderForeground": "var(--theme-text-muted)",
+ "list.activeSelectionIconForeground": "var(--theme-text)",
+ "list.dropBackground": "var(--theme-background-element)",
+ "menu.background": "var(--theme-background-panel)",
+ "menu.border": "var(--theme-border)",
+ "menu.foreground": "var(--theme-text)",
+ "menu.selectionBackground": "var(--theme-primary)",
+ "menu.separatorBackground": "var(--theme-border)",
+ "ports.iconRunningProcessForeground": "var(--theme-success)",
+ "sideBarSectionHeader.background": "transparent",
+ "sideBarSectionHeader.border": "var(--theme-border-subtle)",
+ "sideBarTitle.foreground": "var(--theme-text-muted)",
+ "statusBarItem.remoteBackground": "var(--theme-success)",
+ "statusBarItem.remoteForeground": "var(--theme-text)",
+ "tab.lastPinnedBorder": "var(--theme-border-subtle)",
+ "tab.selectedBackground": "var(--theme-background-element)",
+ "tab.selectedForeground": "var(--theme-text-muted)",
+ "terminal.inactiveSelectionBackground": "var(--theme-background-element)",
+ "widget.border": "var(--theme-border)",
+ },
+ displayName: "opencode",
+ name: "opencode",
+ semanticHighlighting: true,
+ semanticTokenColors: {
+ customLiteral: "var(--theme-syntax-function)",
+ newOperator: "var(--theme-syntax-operator)",
+ numberLiteral: "var(--theme-syntax-number)",
+ stringLiteral: "var(--theme-syntax-string)",
+ },
+ tokenColors: [
+ {
+ scope: [
+ "meta.embedded",
+ "source.groovy.embedded",
+ "string meta.image.inline.markdown",
+ "variable.legacy.builtin.python",
+ ],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "emphasis",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "strong",
+ settings: {
+ fontStyle: "bold",
+ },
+ },
+ {
+ scope: "header",
+ settings: {
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "comment",
+ settings: {
+ foreground: "var(--theme-syntax-comment)",
+ },
+ },
+ {
+ scope: "constant.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "constant.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.tag",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["entity.name.tag.css", "entity.name.tag.less"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.other.attribute-name",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "entity.other.attribute-name.class.css",
+ "source.css entity.other.attribute-name.class",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.parent.less",
+ "source.css entity.other.attribute-name.pseudo-class",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "invalid",
+ settings: {
+ foreground: "var(--theme-error)",
+ },
+ },
+ {
+ scope: "markup.underline",
+ settings: {
+ fontStyle: "underline",
+ },
+ },
+ {
+ scope: "markup.bold",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-strong)",
+ },
+ },
+ {
+ scope: "markup.heading",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "markup.italic",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "markup.strikethrough",
+ settings: {
+ fontStyle: "strikethrough",
+ },
+ },
+ {
+ scope: "markup.inserted",
+ settings: {
+ foreground: "var(--theme-diff-added)",
+ },
+ },
+ {
+ scope: "markup.deleted",
+ settings: {
+ foreground: "var(--theme-diff-removed)",
+ },
+ },
+ {
+ scope: "markup.changed",
+ settings: {
+ foreground: "var(--theme-diff-context)",
+ },
+ },
+ {
+ scope: "punctuation.definition.quote.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-block-quote)",
+ },
+ },
+ {
+ scope: "punctuation.definition.list.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-list-enumeration)",
+ },
+ },
+ {
+ scope: "markup.inline.raw",
+ settings: {
+ foreground: "var(--theme-markdown-code)",
+ },
+ },
+ {
+ scope: "punctuation.definition.tag",
+ settings: {
+ foreground: "var(--theme-syntax-punctuation)",
+ },
+ },
+ {
+ scope: ["meta.preprocessor", "entity.name.function.preprocessor"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.string",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.numeric",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "meta.structure.dictionary.key.python",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "meta.diff.header",
+ settings: {
+ foreground: "var(--theme-diff-hunk-header)",
+ },
+ },
+ {
+ scope: "storage",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "storage.type",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["storage.modifier", "keyword.operator.noexcept"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["string", "meta.embedded.assembly"],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.tag",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.value",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["meta.template.expression"],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "source.css variable",
+ "source.coffee.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "keyword",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.control",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.operator",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.other.unit",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "support.function.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "constant.sha.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java",
+ ],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "variable.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-function)",
+ },
+ },
+ {
+ scope: [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class",
+ "punctuation.separator.namespace.ruby",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.directive.using",
+ "keyword.other.operator",
+ "entity.name.operator",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["variable.other.constant", "variable.other.enummember"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["meta.object-literal.key"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "keyword.operator.quantifier.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["constant.character", "constant.other.option"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "constant.character.escape",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.label",
+ settings: {
+ foreground: "var(--theme-text-muted)",
+ },
+ },
+ ],
+ type: "dark",
+ },
+ transformers: [transformerNotationDiff()],
+ })
+ },
+ }),
+)
+
+function strip(text: string): string {
+ const wrappedRe = /^\s*<([A-Za-z]\w*)>\s*([\s\S]*?)\s*<\/\1>\s*$/
+ const match = text.match(wrappedRe)
+ return match ? match[2] : text
+}
+
+export default function Markdown(props: { text: string; class?: string }) {
+ const [html] = createResource(
+ () => strip(props.text),
+ async (markdown) => {
+ return markedWithShiki.parse(markdown)
+ },
+ )
+ return (
+
+ )
+}
diff --git a/packages/app/src/components/session-list.tsx b/packages/app/src/components/session-list.tsx
new file mode 100644
index 000000000..e57562586
--- /dev/null
+++ b/packages/app/src/components/session-list.tsx
@@ -0,0 +1,28 @@
+import { useSync, useLocal } from "@/context"
+import { Button, Tooltip } from "@/ui"
+import { VList } from "virtua/solid"
+
+export default function SessionList() {
+ const sync = useSync()
+ const local = useLocal()
+
+ return (
+
+ {(session) => (
+
+
+
+ )}
+
+ )
+}
diff --git a/packages/app/src/components/session-timeline.tsx b/packages/app/src/components/session-timeline.tsx
new file mode 100644
index 000000000..ac8519a9c
--- /dev/null
+++ b/packages/app/src/components/session-timeline.tsx
@@ -0,0 +1,369 @@
+import { useLocal, useSync } from "@/context"
+import { Collapsible, Icon, type IconProps } from "@/ui"
+import type { Part, ToolPart } from "@opencode-ai/sdk"
+import { DateTime } from "luxon"
+import {
+ createSignal,
+ onMount,
+ For,
+ Match,
+ splitProps,
+ Switch,
+ type ComponentProps,
+ type ParentProps,
+ createEffect,
+ createMemo,
+} from "solid-js"
+import { getFilename } from "@/utils"
+import Markdown from "./markdown"
+import { Code } from "./code"
+import { createElementSize } from "@solid-primitives/resize-observer"
+import { createScrollPosition } from "@solid-primitives/scroll"
+
+function TimelineIcon(props: { name: IconProps["name"]; class?: string }) {
+ return (
+
+
+
+ )
+}
+
+function CollapsibleTimelineIcon(props: { name: IconProps["name"]; class?: string }) {
+ return (
+ <>
+
+
+
+ >
+ )
+}
+
+function ToolIcon(props: { part: ToolPart }) {
+ return (
+
}>
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+function Part(props: ParentProps & ComponentProps<"div">) {
+ const [local, others] = splitProps(props, ["class", "classList", "children"])
+ return (
+
+ )
+}
+
+function CollapsiblePart(props: { title: ParentProps["children"] } & ParentProps & ComponentProps
) {
+ return (
+
+
+ {props.title}
+
+
+
+ {props.children}
+
+
+
+ )
+}
+
+function ReadToolPart(props: { part: ToolPart }) {
+ const local = useLocal()
+ return (
+
+
+ {(state) => {
+ const path = state().input["filePath"] as string
+ return (
+ local.file.open(path)}>
+ Read {getFilename(path)}
+
+ )
+ }}
+
+
+ )
+}
+
+function EditToolPart(props: { part: ToolPart }) {
+ return (
+
+
+ {(state) => (
+
+ Edit {getFilename(state().input["filePath"] as string)}
+ >
+ }
+ >
+
+
+ )}
+
+
+ )
+}
+
+function WriteToolPart(props: { part: ToolPart }) {
+ return (
+
+
+ {(state) => (
+
+ Write {getFilename(state().input["filePath"] as string)}
+ >
+ }
+ >
+
+
+ )}
+
+
+ )
+}
+
+function ToolPart(props: { part: ToolPart }) {
+ return (
+
+ {props.part.type}:{props.part.tool}
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default function SessionTimeline(props: { session: string; class?: string }) {
+ const sync = useSync()
+ const [scrollElement, setScrollElement] = createSignal(undefined)
+ const [root, setRoot] = createSignal(undefined)
+ const [tail, setTail] = createSignal(true)
+ const size = createElementSize(root)
+ const scroll = createScrollPosition(scrollElement)
+
+ onMount(() => sync.session.sync(props.session))
+ const messages = createMemo(() => sync.data.message[props.session] ?? [])
+ const working = createMemo(() => {
+ const last = messages()[messages().length - 1]
+ if (!last) return false
+ if (last.role === "user") return true
+ return !last.time.completed
+ })
+
+ const getScrollParent = (el: HTMLElement | null): HTMLElement | undefined => {
+ let p = el?.parentElement
+ while (p && p !== document.body) {
+ const s = getComputedStyle(p)
+ if (s.overflowY === "auto" || s.overflowY === "scroll") return p
+ p = p.parentElement
+ }
+ return undefined
+ }
+
+ createEffect(() => {
+ if (!root()) return
+ setScrollElement(getScrollParent(root()!))
+ })
+
+ const scrollToBottom = () => {
+ const element = scrollElement()
+ if (!element) return
+ element.scrollTop = element.scrollHeight
+ }
+
+ createEffect(() => {
+ size.height
+ if (tail()) scrollToBottom()
+ })
+
+ createEffect(() => {
+ if (working()) {
+ setTail(true)
+ scrollToBottom()
+ }
+ })
+
+ let lastScrollY = 0
+ createEffect(() => {
+ if (scroll.y < lastScrollY) {
+ setTail(false)
+ }
+ lastScrollY = scroll.y
+ })
+
+ const valid = (part: Part) => {
+ if (!part) return false
+ switch (part.type) {
+ case "step-start":
+ case "step-finish":
+ case "file":
+ case "patch":
+ return false
+ case "text":
+ return !part.synthetic
+ case "reasoning":
+ return part.text.trim()
+ default:
+ return true
+ }
+ }
+
+ const duration = (part: Part) => {
+ switch (part.type) {
+ default:
+ if (
+ "time" in part &&
+ part.time &&
+ "start" in part.time &&
+ part.time.start &&
+ "end" in part.time &&
+ part.time.end
+ ) {
+ const start = DateTime.fromMillis(part.time.start)
+ const end = DateTime.fromMillis(part.time.end)
+ return end.diff(start).toFormat("s")
+ }
+ return ""
+ }
+ }
+
+ return (
+
+
+ {(message) => (
+
+
+ {(part) => (
+ -
+
+
+
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {(part) => }
+
+ {part.type}}>
+
+ {(part) => (
+
+
+
+
+ {part().text}
+
+
12:07pm · adam
+
+
+
+
+
+
+ )}
+
+
+ {(part) => (
+
+ Thought for {duration(part())}s
+ >
+ }
+ >
+
+
+ )}
+
+ {(part) => }
+
+
+ )}
+
+
+ )}
+
+
+ )
+}
diff --git a/packages/app/src/components/sidebar-nav.tsx b/packages/app/src/components/sidebar-nav.tsx
new file mode 100644
index 000000000..24750bdba
--- /dev/null
+++ b/packages/app/src/components/sidebar-nav.tsx
@@ -0,0 +1,48 @@
+import { For } from "solid-js"
+import { Icon, Link, Logo, Tooltip } from "@/ui"
+import { useLocation } from "@solidjs/router"
+
+const navigation = [
+ { name: "Sessions", href: "/sessions", icon: "dashboard" as const },
+ { name: "Commands", href: "/commands", icon: "slash" as const },
+ { name: "Agents", href: "/agents", icon: "bolt" as const },
+ { name: "Providers", href: "/providers", icon: "cloud" as const },
+ { name: "Tools (MCP)", href: "/tools", icon: "hammer" as const },
+ { name: "LSP", href: "/lsp", icon: "code" as const },
+ { name: "Settings", href: "/settings", icon: "settings" as const },
+]
+
+export default function SidebarNav() {
+ const location = useLocation()
+ return (
+
+
+
+
+
+
+ )
+}
diff --git a/packages/app/src/context/index.ts b/packages/app/src/context/index.ts
new file mode 100644
index 000000000..ef2bbd9c3
--- /dev/null
+++ b/packages/app/src/context/index.ts
@@ -0,0 +1,4 @@
+export { LocalProvider, useLocal } from "./local"
+export { SDKProvider, useSDK } from "./sdk"
+export { SyncProvider, useSync } from "./sync"
+export { ThemeProvider, useTheme } from "./theme"
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx
new file mode 100644
index 000000000..161166ba6
--- /dev/null
+++ b/packages/app/src/context/local.tsx
@@ -0,0 +1,409 @@
+import { createStore, produce, reconcile } from "solid-js/store"
+import { batch, createContext, createEffect, createMemo, useContext, type ParentProps } from "solid-js"
+import { useSync } from "./sync"
+import { uniqueBy } from "remeda"
+import type { FileContent, FileNode } from "@opencode-ai/sdk"
+import { useSDK } from "./sdk"
+
+export type LocalFile = FileNode &
+ Partial<{
+ loaded: boolean
+ pinned: boolean
+ expanded: boolean
+ content: FileContent
+ selection: { startLine: number; startChar: number; endLine: number; endChar: number }
+ scrollTop: number
+ view: "raw" | "diff-unified" | "diff-split"
+ folded: string[]
+ selectedChange: number
+ }>
+export type TextSelection = LocalFile["selection"]
+export type View = LocalFile["view"]
+
+function init() {
+ const sdk = useSDK()
+ const sync = useSync()
+
+ const agents = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent"))
+ const agent = (() => {
+ const [store, setStore] = createStore<{
+ current: string
+ }>({
+ current: agents()[0].name,
+ })
+ return {
+ current() {
+ return agents().find((x) => x.name === store.current)!
+ },
+ move(direction: 1 | -1) {
+ let next = agents().findIndex((x) => x.name === store.current) + direction
+ if (next < 0) next = agents().length - 1
+ if (next >= agents().length) next = 0
+ const value = agents()[next]
+ setStore("current", value.name)
+ if (value.model)
+ model.set({
+ providerID: value.model.providerID,
+ modelID: value.model.modelID,
+ })
+ },
+ }
+ })()
+
+ const model = (() => {
+ const [store, setStore] = createStore<{
+ model: Record<
+ string,
+ {
+ providerID: string
+ modelID: string
+ }
+ >
+ recent: {
+ providerID: string
+ modelID: string
+ }[]
+ }>({
+ model: {},
+ recent: [],
+ })
+
+ const value = localStorage.getItem("model")
+ setStore("recent", JSON.parse(value ?? "[]"))
+ createEffect(() => {
+ localStorage.setItem("model", JSON.stringify(store.recent))
+ })
+
+ const fallback = createMemo(() => {
+ if (store.recent.length) return store.recent[0]
+ const provider = sync.data.provider[0]
+ const model = Object.values(provider.models)[0]
+ return {
+ providerID: provider.id,
+ modelID: model.id,
+ }
+ })
+
+ const current = createMemo(() => {
+ const a = agent.current()
+ return store.model[agent.current().name] ?? (a.model ? a.model : fallback())
+ })
+
+ return {
+ current,
+ recent() {
+ return store.recent
+ },
+ parsed: createMemo(() => {
+ const value = current()
+ const provider = sync.data.provider.find((x) => x.id === value.providerID)!
+ const model = provider.models[value.modelID]
+ return {
+ provider: provider.name ?? value.providerID,
+ model: model.name ?? value.modelID,
+ }
+ }),
+ set(model: { providerID: string; modelID: string }, options?: { recent?: boolean }) {
+ batch(() => {
+ setStore("model", agent.current().name, model)
+ if (options?.recent) {
+ const uniq = uniqueBy([model, ...store.recent], (x) => x.providerID + x.modelID)
+ if (uniq.length > 5) uniq.pop()
+ setStore("recent", uniq)
+ }
+ })
+ },
+ }
+ })()
+
+ const file = (() => {
+ const [store, setStore] = createStore<{
+ node: Record
+ opened: string[]
+ active?: string
+ }>({
+ node: Object.fromEntries(sync.data.node.map((x) => [x.path, x])),
+ opened: [],
+ })
+
+ const active = createMemo(() => {
+ if (!store.active) return undefined
+ return store.node[store.active]
+ })
+ const opened = createMemo(() => store.opened.map((x) => store.node[x]))
+ const changes = createMemo(() => new Set(sync.data.changes.map((f) => f.path)))
+ const status = (path: string) => sync.data.changes.find((f) => f.path === path)
+
+ const changed = (path: string) => {
+ const set = changes()
+ if (set.has(path)) return true
+ for (const p of set) {
+ if (p.startsWith(path ? path + "/" : "")) return true
+ }
+ return false
+ }
+
+ const resetNode = (path: string) => {
+ setStore("node", path, {
+ loaded: undefined,
+ pinned: undefined,
+ content: undefined,
+ selection: undefined,
+ scrollTop: undefined,
+ folded: undefined,
+ view: undefined,
+ selectedChange: undefined,
+ })
+ }
+
+ const load = async (path: string) =>
+ sdk.file.read({ query: { path } }).then((x) => {
+ setStore(
+ "node",
+ path,
+ produce((draft) => {
+ draft.loaded = true
+ draft.content = x.data
+ }),
+ )
+ })
+
+ const open = async (path: string) => {
+ const relative = path.replace(sync.data.path.directory + "/", "")
+ if (!store.node[relative]) {
+ const parent = relative.split("/").slice(0, -1).join("/")
+ if (parent) {
+ await list(parent)
+ }
+ }
+ setStore("opened", (x) => {
+ if (x.includes(relative)) return x
+ return [
+ ...opened()
+ .filter((x) => x.pinned)
+ .map((x) => x.path),
+ relative,
+ ]
+ })
+ setStore("active", relative)
+ if (store.node[relative].loaded) return
+ return load(relative)
+ }
+
+ const list = async (path: string) => {
+ return sdk.file.list({ query: { path: path + "/" } }).then((x) => {
+ setStore(
+ "node",
+ produce((draft) => {
+ x.data!.forEach((node) => {
+ if (node.path in draft) return
+ draft[node.path] = node
+ })
+ }),
+ )
+ })
+ }
+
+ sdk.event.subscribe().then(async (events) => {
+ for await (const event of events.stream) {
+ switch (event.type) {
+ case "message.part.updated":
+ const part = event.properties.part
+ if (part.type === "tool" && part.state.status === "completed") {
+ switch (part.tool) {
+ case "read":
+ console.log("read", part.state.input)
+ break
+ case "edit":
+ const absolute = part.state.input["filePath"] as string
+ const path = absolute.replace(sync.data.path.directory + "/", "")
+ load(path)
+ break
+ default:
+ break
+ }
+ }
+ break
+ }
+ }
+ })
+
+ return {
+ active,
+ opened,
+ node: (path: string) => store.node[path],
+ update: (path: string, node: LocalFile) => setStore("node", path, reconcile(node)),
+ open,
+ load,
+ close(path: string) {
+ setStore("opened", (opened) => opened.filter((x) => x !== path))
+ if (store.active === path) {
+ const index = store.opened.findIndex((f) => f === path)
+ const previous = store.opened[Math.max(0, index - 1)]
+ setStore("active", previous)
+ }
+ resetNode(path)
+ },
+ expand(path: string) {
+ setStore("node", path, "expanded", true)
+ if (store.node[path].loaded) return
+ setStore("node", path, "loaded", true)
+ list(path)
+ },
+ collapse(path: string) {
+ setStore("node", path, "expanded", false)
+ },
+ select(path: string, selection: TextSelection | undefined) {
+ setStore("node", path, "selection", selection)
+ },
+ scroll(path: string, scrollTop: number) {
+ setStore("node", path, "scrollTop", scrollTop)
+ },
+ move(path: string, to: number) {
+ const index = store.opened.findIndex((f) => f === path)
+ if (index === -1) return
+ setStore(
+ "opened",
+ produce((opened) => {
+ opened.splice(to, 0, opened.splice(index, 1)[0])
+ }),
+ )
+ setStore("node", path, "pinned", true)
+ },
+ view(path: string): View {
+ const n = store.node[path]
+ return n && n.view ? n.view : "raw"
+ },
+ setView(path: string, view: View) {
+ setStore("node", path, "view", view)
+ },
+ unfold(path: string, key: string) {
+ setStore("node", path, "folded", (xs) => {
+ const a = xs ?? []
+ if (a.includes(key)) return a
+ return [...a, key]
+ })
+ },
+ fold(path: string, key: string) {
+ setStore("node", path, "folded", (xs) => (xs ?? []).filter((k) => k !== key))
+ },
+ folded(path: string) {
+ const n = store.node[path]
+ return n && n.folded ? n.folded : []
+ },
+ changeIndex(path: string) {
+ return store.node[path]?.selectedChange
+ },
+ setChangeIndex(path: string, index: number | undefined) {
+ setStore("node", path, "selectedChange", index)
+ },
+ changed,
+ status,
+ children(path: string) {
+ return Object.values(store.node).filter(
+ (x) =>
+ x.path.startsWith(path) &&
+ x.path !== path &&
+ !x.path.replace(new RegExp(`^${path + "/"}`), "").includes("/"),
+ )
+ },
+ }
+ })()
+
+ const layout = (() => {
+ const [store, setStore] = createStore<{
+ rightPane: boolean
+ leftWidth: number
+ rightWidth: number
+ }>({
+ rightPane: false,
+ leftWidth: 200, // Default 50 * 4px (w-50 = 12.5rem = 200px)
+ rightWidth: 320, // Default 80 * 4px (w-80 = 20rem = 320px)
+ })
+
+ const value = localStorage.getItem("layout")
+ if (value) {
+ const v = JSON.parse(value)
+ if (typeof v?.rightPane === "boolean") setStore("rightPane", v.rightPane)
+ if (typeof v?.leftWidth === "number") setStore("leftWidth", Math.max(150, Math.min(400, v.leftWidth)))
+ if (typeof v?.rightWidth === "number") setStore("rightWidth", Math.max(200, Math.min(500, v.rightWidth)))
+ }
+ createEffect(() => {
+ localStorage.setItem("layout", JSON.stringify(store))
+ })
+
+ return {
+ rightPane() {
+ return store.rightPane
+ },
+ leftWidth() {
+ return store.leftWidth
+ },
+ rightWidth() {
+ return store.rightWidth
+ },
+ toggleRightPane() {
+ setStore("rightPane", (x) => !x)
+ },
+ openRightPane() {
+ setStore("rightPane", true)
+ },
+ closeRightPane() {
+ setStore("rightPane", false)
+ },
+ setLeftWidth(width: number) {
+ setStore("leftWidth", Math.max(150, Math.min(400, width)))
+ },
+ setRightWidth(width: number) {
+ setStore("rightWidth", Math.max(200, Math.min(500, width)))
+ },
+ }
+ })()
+
+ const session = (() => {
+ const [store, setStore] = createStore<{
+ active?: string
+ }>({})
+
+ const active = createMemo(() => {
+ if (!store.active) return undefined
+ return sync.session.get(store.active)
+ })
+
+ return {
+ active,
+ setActive(sessionId: string | undefined) {
+ setStore("active", sessionId)
+ },
+ clearActive() {
+ setStore("active", undefined)
+ },
+ }
+ })()
+
+ const result = {
+ model,
+ agent,
+ file,
+ layout,
+ session,
+ }
+ return result
+}
+
+type LocalContext = ReturnType
+
+const ctx = createContext()
+
+export function LocalProvider(props: ParentProps) {
+ const value = init()
+ return {props.children}
+}
+
+export function useLocal() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useLocal must be used within a LocalProvider")
+ }
+ return value
+}
diff --git a/packages/app/src/context/sdk.tsx b/packages/app/src/context/sdk.tsx
new file mode 100644
index 000000000..48595cf9d
--- /dev/null
+++ b/packages/app/src/context/sdk.tsx
@@ -0,0 +1,29 @@
+import { createContext, useContext, type ParentProps } from "solid-js"
+import { createOpencodeClient } from "@opencode-ai/sdk/client"
+
+const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1"
+const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"
+
+function init() {
+ const client = createOpencodeClient({
+ baseUrl: `http://${host}:${port}`,
+ })
+ return client
+}
+
+type SDKContext = ReturnType
+
+const ctx = createContext()
+
+export function SDKProvider(props: ParentProps) {
+ const value = init()
+ return {props.children}
+}
+
+export function useSDK() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useSDK must be used within a SDKProvider")
+ }
+ return value
+}
diff --git a/packages/app/src/context/sync.tsx b/packages/app/src/context/sync.tsx
new file mode 100644
index 000000000..22140683d
--- /dev/null
+++ b/packages/app/src/context/sync.tsx
@@ -0,0 +1,165 @@
+import type { Message, Agent, Provider, Session, Part, Config, Path, File, FileNode } from "@opencode-ai/sdk"
+import { createStore, produce, reconcile } from "solid-js/store"
+import { useSDK } from "./sdk"
+import { createContext, Show, useContext, type ParentProps } from "solid-js"
+import { Binary } from "@/utils/binary"
+
+function init() {
+ const [store, setStore] = createStore<{
+ ready: boolean
+ provider: Provider[]
+ agent: Agent[]
+ config: Config
+ path: Path
+ session: Session[]
+ message: {
+ [sessionID: string]: Message[]
+ }
+ part: {
+ [messageID: string]: Part[]
+ }
+ node: FileNode[]
+ changes: File[]
+ }>({
+ config: {},
+ path: { state: "", config: "", worktree: "", directory: "" },
+ ready: false,
+ agent: [],
+ provider: [],
+ session: [],
+ message: {},
+ part: {},
+ node: [],
+ changes: [],
+ })
+
+ const sdk = useSDK()
+
+ sdk.event.subscribe().then(async (events) => {
+ for await (const event of events.stream) {
+ switch (event.type) {
+ case "session.updated": {
+ const result = Binary.search(store.session, event.properties.info.id, (s) => s.id)
+ if (result.found) {
+ setStore("session", result.index, reconcile(event.properties.info))
+ break
+ }
+ setStore(
+ "session",
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.info)
+ }),
+ )
+ break
+ }
+ case "message.updated": {
+ const messages = store.message[event.properties.info.sessionID]
+ if (!messages) {
+ setStore("message", event.properties.info.sessionID, [event.properties.info])
+ break
+ }
+ const result = Binary.search(messages, event.properties.info.id, (m) => m.id)
+ if (result.found) {
+ setStore("message", event.properties.info.sessionID, result.index, reconcile(event.properties.info))
+ break
+ }
+ setStore(
+ "message",
+ event.properties.info.sessionID,
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.info)
+ }),
+ )
+ break
+ }
+ case "message.part.updated": {
+ const parts = store.part[event.properties.part.messageID]
+ if (!parts) {
+ setStore("part", event.properties.part.messageID, [event.properties.part])
+ break
+ }
+ const result = Binary.search(parts, event.properties.part.id, (p) => p.id)
+ if (result.found) {
+ setStore("part", event.properties.part.messageID, result.index, reconcile(event.properties.part))
+ break
+ }
+ setStore(
+ "part",
+ event.properties.part.messageID,
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.part)
+ }),
+ )
+ break
+ }
+ }
+ }
+ })
+
+ Promise.all([
+ sdk.config.providers().then((x) => setStore("provider", x.data!.providers)),
+ sdk.path.get().then((x) => setStore("path", x.data!)),
+ sdk.app.agents().then((x) => setStore("agent", x.data ?? [])),
+ sdk.session.list().then((x) =>
+ setStore(
+ "session",
+ (x.data ?? []).slice().sort((a, b) => a.id.localeCompare(b.id)),
+ ),
+ ),
+ sdk.config.get().then((x) => setStore("config", x.data!)),
+ sdk.file.status().then((x) => setStore("changes", x.data!)),
+ sdk.file.list({ query: { path: "/" } }).then((x) => setStore("node", x.data!)),
+ ]).then(() => setStore("ready", true))
+
+ return {
+ data: store,
+ set: setStore,
+ session: {
+ get(sessionID: string) {
+ const match = Binary.search(store.session, sessionID, (s) => s.id)
+ if (match.found) return store.session[match.index]
+ return undefined
+ },
+ async sync(sessionID: string) {
+ const [session, messages] = await Promise.all([
+ sdk.session.get({ path: { id: sessionID } }),
+ sdk.session.messages({ path: { id: sessionID } }),
+ ])
+ setStore(
+ produce((draft) => {
+ const match = Binary.search(draft.session, sessionID, (s) => s.id)
+ draft.session[match.index] = session.data!
+ draft.message[sessionID] = messages
+ .data!.map((x) => x.info)
+ .slice()
+ .sort((a, b) => a.id.localeCompare(b.id))
+ for (const message of messages.data!) {
+ draft.part[message.info.id] = message.parts.slice().sort((a, b) => a.id.localeCompare(b.id))
+ }
+ }),
+ )
+ },
+ },
+ }
+}
+
+type SyncContext = ReturnType
+
+const ctx = createContext()
+
+export function SyncProvider(props: ParentProps) {
+ const value = init()
+ return (
+
+ {props.children}
+
+ )
+}
+
+export function useSync() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useSync must be used within a SyncProvider")
+ }
+ return value
+}
diff --git a/packages/app/src/context/theme.tsx b/packages/app/src/context/theme.tsx
new file mode 100644
index 000000000..0b344ea97
--- /dev/null
+++ b/packages/app/src/context/theme.tsx
@@ -0,0 +1,92 @@
+import {
+ createContext,
+ useContext,
+ createSignal,
+ createEffect,
+ onMount,
+ type ParentComponent,
+ onCleanup,
+} from "solid-js"
+
+export interface ThemeContextValue {
+ theme: string | undefined
+ isDark: boolean
+ setTheme: (themeName: string) => void
+ setDarkMode: (isDark: boolean) => void
+}
+
+const ThemeContext = createContext()
+
+export const useTheme = () => {
+ const context = useContext(ThemeContext)
+ if (!context) {
+ throw new Error("useTheme must be used within a ThemeProvider")
+ }
+ return context
+}
+
+interface ThemeProviderProps {
+ defaultTheme?: string
+ defaultDarkMode?: boolean
+}
+
+const themes = ["opencode", "tokyonight", "ayu", "nord", "catppuccin"]
+
+export const ThemeProvider: ParentComponent = (props) => {
+ const [theme, setThemeSignal] = createSignal()
+ const [isDark, setIsDark] = createSignal(props.defaultDarkMode ?? false)
+
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (event.key === "t" && event.ctrlKey) {
+ event.preventDefault()
+ const current = theme()
+ if (!current) return
+ const index = themes.indexOf(current)
+ const next = themes[(index + 1) % themes.length]
+ setTheme(next)
+ }
+ }
+
+ onMount(() => {
+ window.addEventListener("keydown", handleKeyDown)
+ })
+
+ onCleanup(() => {
+ window.removeEventListener("keydown", handleKeyDown)
+ })
+
+ onMount(() => {
+ const savedTheme = localStorage.getItem("theme") ?? "opencode"
+ const savedDarkMode = localStorage.getItem("darkMode") ?? "true"
+ setIsDark(savedDarkMode === "true")
+ setTheme(savedTheme)
+ })
+
+ createEffect(() => {
+ const currentTheme = theme()
+ const darkMode = isDark()
+ if (currentTheme) {
+ document.documentElement.setAttribute("data-theme", currentTheme)
+ document.documentElement.setAttribute("data-dark", darkMode.toString())
+ }
+ })
+
+ const setTheme = async (theme: string) => {
+ setThemeSignal(theme)
+ localStorage.setItem("theme", theme)
+ }
+
+ const setDarkMode = (dark: boolean) => {
+ setIsDark(dark)
+ localStorage.setItem("darkMode", dark.toString())
+ }
+
+ const contextValue: ThemeContextValue = {
+ theme: theme(),
+ isDark: isDark(),
+ setTheme,
+ setDarkMode,
+ }
+
+ return {props.children}
+}
diff --git a/packages/app/src/env.d.ts b/packages/app/src/env.d.ts
new file mode 100644
index 000000000..ad575e93b
--- /dev/null
+++ b/packages/app/src/env.d.ts
@@ -0,0 +1,8 @@
+interface ImportMetaEnv {
+ readonly VITE_OPENCODE_SERVER_HOST: string
+ readonly VITE_OPENCODE_SERVER_PORT: string
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv
+}
diff --git a/packages/app/src/index.css b/packages/app/src/index.css
new file mode 100644
index 000000000..aebd52be6
--- /dev/null
+++ b/packages/app/src/index.css
@@ -0,0 +1,155 @@
+@import "tailwindcss";
+
+:root {
+ interpolate-size: allow-keywords;
+}
+
+@layer components {
+ [data-popper-positioner] {
+ pointer-events: none;
+ }
+
+ body {
+ line-height: 1;
+ }
+
+ ::selection {
+ background-color: color-mix(in srgb, var(--color-primary) 33%, transparent);
+ /* background-color: var(--color-primary); */
+ /* color: var(--color-background); */
+ }
+
+ .prose h1 {
+ color: var(--color-text);
+ font-size: var(--text-sm);
+ line-height: var(--text-sm--line-height);
+ margin-bottom: calc(var(--spacing) * 3);
+ }
+ .prose h2 {
+ color: var(--color-text);
+ font-size: var(--text-sm);
+ line-height: var(--text-sm--line-height);
+ margin-bottom: calc(var(--spacing) * 3);
+ }
+ .prose h3 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h4 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h5 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h6 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose p {
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose strong {
+ color: var(--color-text);
+ }
+ .prose ul,
+ ol {
+ list-style-type: disc;
+ list-style-position: inside;
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose pre {
+ background-color: var(--color-background-panel);
+ padding: calc(var(--spacing) * 2);
+ border-radius: var(--radius-md);
+ border: 1px solid var(--color-border-subtle);
+ overflow-x: auto;
+ white-space: pre;
+ margin-bottom: calc(var(--spacing) * 2);
+ @apply no-scrollbar;
+ }
+ .prose code {
+ font-family: var(--font-mono);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ }
+ .prose blockquote {
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+}
+
+@utility no-scrollbar {
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ /* Hide scrollbar for IE, Edge and Firefox */
+ & {
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+ }
+}
+
+@theme {
+ --color-*: initial;
+ --color-primary: var(--theme-primary);
+ --color-secondary: var(--theme-secondary);
+ --color-accent: var(--theme-accent);
+ --color-error: var(--theme-error);
+ --color-warning: var(--theme-warning);
+ --color-success: var(--theme-success);
+ --color-info: var(--theme-info);
+ --color-text: var(--theme-text);
+ --color-text-muted: var(--theme-text-muted);
+ --color-background: var(--theme-background);
+ --color-background-panel: var(--theme-background-panel);
+ --color-background-element: var(--theme-background-element);
+ --color-border: var(--theme-border);
+ --color-border-active: var(--theme-border-active);
+ --color-border-subtle: var(--theme-border-subtle);
+ --color-diff-added: var(--theme-diff-added);
+ --color-diff-removed: var(--theme-diff-removed);
+ --color-diff-context: var(--theme-diff-context);
+ --color-diff-hunk-header: var(--theme-diff-hunk-header);
+ --color-diff-highlight-added: var(--theme-diff-highlight-added);
+ --color-diff-highlight-removed: var(--theme-diff-highlight-removed);
+ --color-diff-added-bg: var(--theme-diff-added-bg);
+ --color-diff-removed-bg: var(--theme-diff-removed-bg);
+ --color-diff-context-bg: var(--theme-diff-context-bg);
+ --color-diff-line-number: var(--theme-diff-line-number);
+ --color-diff-added-line-number-bg: var(--theme-diff-added-line-number-bg);
+ --color-diff-removed-line-number-bg: var(--theme-diff-removed-line-number-bg);
+ --color-markdown-text: var(--theme-markdown-text);
+ --color-markdown-heading: var(--theme-markdown-heading);
+ --color-markdown-link: var(--theme-markdown-link);
+ --color-markdown-link-text: var(--theme-markdown-link-text);
+ --color-markdown-code: var(--theme-markdown-code);
+ --color-markdown-block-quote: var(--theme-markdown-block-quote);
+ --color-markdown-emph: var(--theme-markdown-emph);
+ --color-markdown-strong: var(--theme-markdown-strong);
+ --color-markdown-horizontal-rule: var(--theme-markdown-horizontal-rule);
+ --color-markdown-list-item: var(--theme-markdown-list-item);
+ --color-markdown-list-enumeration: var(--theme-markdown-list-enumeration);
+ --color-markdown-image: var(--theme-markdown-image);
+ --color-markdown-image-text: var(--theme-markdown-image-text);
+ --color-markdown-code-block: var(--theme-markdown-code-block);
+ --color-syntax-comment: var(--theme-syntax-comment);
+ --color-syntax-keyword: var(--theme-syntax-keyword);
+ --color-syntax-function: var(--theme-syntax-function);
+ --color-syntax-variable: var(--theme-syntax-variable);
+ --color-syntax-string: var(--theme-syntax-string);
+ --color-syntax-number: var(--theme-syntax-number);
+ --color-syntax-type: var(--theme-syntax-type);
+ --color-syntax-operator: var(--theme-syntax-operator);
+ --color-syntax-punctuation: var(--theme-syntax-punctuation);
+}
diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx
new file mode 100644
index 000000000..f305ab819
--- /dev/null
+++ b/packages/app/src/index.tsx
@@ -0,0 +1,34 @@
+/* @refresh reload */
+import { render } from "solid-js/web"
+import { Router, Route } from "@solidjs/router"
+import "@/index.css"
+import Layout from "@/pages/layout"
+import Home from "@/pages"
+import { SDKProvider, SyncProvider, LocalProvider, ThemeProvider } from "@/context"
+
+const root = document.getElementById("root")
+
+if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
+ throw new Error(
+ "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?",
+ )
+}
+
+render(
+ () => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ root!,
+)
diff --git a/packages/app/src/pages/index.tsx b/packages/app/src/pages/index.tsx
new file mode 100644
index 000000000..5922b28db
--- /dev/null
+++ b/packages/app/src/pages/index.tsx
@@ -0,0 +1,608 @@
+import { FileIcon, Icon, IconButton, Tooltip } from "@/ui"
+import { Tabs } from "@/ui/tabs"
+import FileTree from "@/components/file-tree"
+import { createSignal, For, Match, onCleanup, onMount, Show, Switch } from "solid-js"
+import { useLocal, useSDK } from "@/context"
+import { Code } from "@/components/code"
+import {
+ DragDropProvider,
+ DragDropSensors,
+ DragOverlay,
+ SortableProvider,
+ createSortable,
+ closestCenter,
+ useDragDropContext,
+} from "@thisbeyond/solid-dnd"
+import type { DragEvent, Transformer } from "@thisbeyond/solid-dnd"
+import type { LocalFile } from "@/context/local"
+import SessionList from "@/components/session-list"
+import SessionTimeline from "@/components/session-timeline"
+
+export default function Page() {
+ const sdk = useSDK()
+ const local = useLocal()
+ const [clickTimer, setClickTimer] = createSignal()
+ const [activeItem, setActiveItem] = createSignal(undefined)
+ const [inputValue, setInputValue] = createSignal("")
+ const [isDragging, setIsDragging] = createSignal<"left" | "right" | undefined>(undefined)
+ const [leftScrolled, setLeftScrolled] = createSignal(false)
+
+ // TODO: remove
+ local.model.set({ providerID: "opencode", modelID: "grok-code" })
+
+ let inputRef: HTMLInputElement | undefined = undefined
+
+ const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
+
+ onMount(() => {
+ document.addEventListener("keydown", handleKeyDown)
+ })
+
+ onCleanup(() => {
+ document.removeEventListener("keydown", handleKeyDown)
+ })
+
+ const handleKeyDown = (e: KeyboardEvent) => {
+ const inputFocused = document.activeElement === inputRef
+ if (inputFocused) {
+ if (e.key === "Escape") {
+ inputRef?.blur()
+ }
+ return
+ }
+
+ if (local.file.active()) {
+ if (e.getModifierState(MOD)) {
+ if (e.key.toLowerCase() === "a") {
+ return
+ }
+ if (e.key.toLowerCase() === "c") {
+ return
+ }
+ }
+ }
+
+ if (e.key.length === 1 && e.key !== "Unidentified") {
+ inputRef?.focus()
+ }
+ }
+
+ const navigateChange = (dir: 1 | -1) => {
+ const active = local.file.active()
+ if (!active) return
+ const current = local.file.changeIndex(active.path)
+ const next = current == undefined ? (dir === 1 ? 0 : -1) : current + dir
+ local.file.setChangeIndex(active.path, next)
+ }
+
+ const resetClickTimer = () => {
+ if (!clickTimer()) return
+ clearTimeout(clickTimer())
+ setClickTimer(undefined)
+ }
+
+ const startClickTimer = () => {
+ const newClickTimer = setTimeout(() => {
+ setClickTimer(undefined)
+ }, 300)
+ setClickTimer(newClickTimer as unknown as number)
+ }
+
+ const handleFileClick = async (file: LocalFile) => {
+ if (clickTimer()) {
+ resetClickTimer()
+ local.file.update(file.path, { ...file, pinned: true })
+ } else {
+ local.file.open(file.path)
+ startClickTimer()
+ }
+ }
+
+ const handleTabChange = (path: string) => {
+ local.file.open(path)
+ }
+
+ const handleTabClose = (file: LocalFile) => {
+ local.file.close(file.path)
+ }
+
+ const onDragStart = (event: any) => {
+ setActiveItem(event.draggable.id as string)
+ }
+
+ const onDragOver = (event: DragEvent) => {
+ const { draggable, droppable } = event
+ if (draggable && droppable) {
+ const currentFiles = local.file.opened().map((f) => f.path)
+ const fromIndex = currentFiles.indexOf(draggable.id.toString())
+ const toIndex = currentFiles.indexOf(droppable.id.toString())
+ if (fromIndex !== toIndex) {
+ local.file.move(draggable.id.toString(), toIndex)
+ }
+ }
+ }
+
+ const onDragEnd = () => {
+ setActiveItem(undefined)
+ }
+
+ const handleLeftDragStart = (e: MouseEvent) => {
+ e.preventDefault()
+ setIsDragging("left")
+ const startX = e.clientX
+ const startWidth = local.layout.leftWidth()
+
+ const handleMouseMove = (e: MouseEvent) => {
+ const deltaX = e.clientX - startX
+ const newWidth = startWidth + deltaX
+ local.layout.setLeftWidth(newWidth)
+ }
+
+ const handleMouseUp = () => {
+ setIsDragging(undefined)
+ document.removeEventListener("mousemove", handleMouseMove)
+ document.removeEventListener("mouseup", handleMouseUp)
+ }
+
+ document.addEventListener("mousemove", handleMouseMove)
+ document.addEventListener("mouseup", handleMouseUp)
+ }
+
+ const handleRightDragStart = (e: MouseEvent) => {
+ e.preventDefault()
+ setIsDragging("right")
+ const startX = e.clientX
+ const startWidth = local.layout.rightWidth()
+
+ const handleMouseMove = (e: MouseEvent) => {
+ const deltaX = startX - e.clientX
+ const newWidth = startWidth + deltaX
+ local.layout.setRightWidth(newWidth)
+ }
+
+ const handleMouseUp = () => {
+ setIsDragging(undefined)
+ document.removeEventListener("mousemove", handleMouseMove)
+ document.removeEventListener("mouseup", handleMouseUp)
+ }
+
+ document.addEventListener("mousemove", handleMouseMove)
+ document.addEventListener("mouseup", handleMouseUp)
+ }
+
+ const handleSubmit = async (e: SubmitEvent) => {
+ e.preventDefault()
+ const prompt = inputValue()
+ setInputValue("")
+ inputRef?.blur()
+
+ const session =
+ (local.layout.rightPane() ? local.session.active() : undefined) ??
+ (await sdk.session.create().then((x) => x.data!))
+ local.session.setActive(session!.id)
+ local.layout.openRightPane()
+
+ const response = await sdk.session.prompt({
+ path: { id: session!.id },
+ body: {
+ agent: local.agent.current()!.name,
+ model: local.model.current(),
+ parts: [
+ {
+ type: "text",
+ text: prompt,
+ },
+ ...local.file
+ .opened()
+ .filter((f) => f.selection || local.file.active()?.path === f.path)
+ .flatMap((f) => [
+ {
+ type: "file" as const,
+ mime: "text/plain",
+ url: `file://${f.absolute}${f.selection ? `?start=${f.selection.startLine}&end=${f.selection.endLine}` : ""}`,
+ filename: f.name,
+ source: {
+ type: "file" as const,
+ text: {
+ value: "@" + f.name,
+ start: 0, // f.start,
+ end: 0, // f.end,
+ },
+ path: f.absolute,
+ },
+ },
+ ]),
+ ],
+ },
+ })
+
+ console.log("response", response)
+ }
+
+ return (
+
+
+
+
+
+
+ Files
+
+
+ Changes
+
+
+
+ setLeftScrolled(e.currentTarget.scrollTop > 0)}
+ >
+
+
+
+
+
+
+
+ No changes yet
+
+
+
+
handleLeftDragStart(e)}
+ >
+
+
+
+
+ handleRightDragStart(e)}
+ >
+
+
+
+
+
+
+
+
+
+
+ f.path)}>
+
+ {(file) => }
+
+
+
+
+
+ {(() => {
+ const f = local.file.active()!
+ const view = local.file.view(f.path)
+ return (
+
+
+
+
+ navigateChange(-1)}>
+
+
+
+
+ navigateChange(1)}>
+
+
+
+
+
+
+ local.file.setView(f.path, "raw")}
+ >
+
+
+
+
+ local.file.setView(f.path, "diff-unified")}
+ >
+
+
+
+
+ local.file.setView(f.path, "diff-split")}
+ >
+
+
+
+
+ )
+ })()}
+
+
+ local.layout.toggleRightPane()}>
+
+
+
+
+
+
+ {(file) => (
+
+ {(() => {
+ const view = local.file.view(file.path)
+ const showRaw = view === "raw" || !file.content?.diff
+ const code = showRaw ? (file.content?.content ?? "") : (file.content?.diff ?? "")
+ return
+ })()}
+
+ )}
+
+
+
+ {activeItem() &&
+ (() => {
+ const draggedFile = local.file.node(activeItem()!)
+ return (
+
+
+
+ )
+ })()}
+
+
+
+
+
+ )
+}
+
+const TabVisual = (props: { file: LocalFile }) => {
+ const local = useLocal()
+ return (
+
+
+
+ {props.file.name}
+
+
+
+
+ M
+
+
+ A
+
+
+ D
+
+
+
+
+ )
+}
+
+const SortableTab = (props: {
+ file: LocalFile
+ onTabClick: (file: LocalFile) => void
+ onTabClose: (file: LocalFile) => void
+}) => {
+ const sortable = createSortable(props.file.path)
+
+ return (
+ // @ts-ignore
+
+
+
+ props.onTabClick(props.file)}>
+
+
+ props.onTabClose(props.file)}
+ >
+
+
+
+
+
+ )
+}
+
+const FileTag = (props: { file: LocalFile; default?: boolean; onClose: () => void }) => (
+
+
+ }>
+
+
+
+
+
+
+
+ {props.file.name}
+
+
+ ({props.file.selection!.startLine}-{props.file.selection!.endLine})
+
+
+
+
+)
+
+const ConstrainDragYAxis = () => {
+ const context = useDragDropContext()
+ if (!context) return <>>
+ const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
+ const transformer: Transformer = {
+ id: "constrain-y-axis",
+ order: 100,
+ callback: (transform) => ({ ...transform, y: 0 }),
+ }
+ onDragStart((event: any) => {
+ addTransformer("draggables", event.draggable.id, transformer)
+ })
+ onDragEnd((event: any) => {
+ removeTransformer("draggables", event.draggable.id, transformer.id)
+ })
+ return <>>
+}
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
new file mode 100644
index 000000000..d2e33a2ca
--- /dev/null
+++ b/packages/app/src/pages/layout.tsx
@@ -0,0 +1,5 @@
+import { type ParentProps } from "solid-js"
+
+export default function Layout(props: ParentProps) {
+ return {props.children}
+}
diff --git a/packages/app/src/ui/button.tsx b/packages/app/src/ui/button.tsx
new file mode 100644
index 000000000..e496d41bb
--- /dev/null
+++ b/packages/app/src/ui/button.tsx
@@ -0,0 +1,49 @@
+import { Button as KobalteButton } from "@kobalte/core/button"
+import { splitProps } from "solid-js"
+import type { ComponentProps } from "solid-js"
+
+export interface ButtonProps extends ComponentProps {
+ variant?: "primary" | "secondary" | "outline" | "ghost"
+ size?: "sm" | "md" | "lg"
+}
+
+export const buttonStyles = {
+ base: "inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer",
+ variants: {
+ primary: "bg-primary text-background hover:bg-secondary focus-visible:ring-primary data-[disabled]:opacity-50",
+ secondary:
+ "bg-background-panel text-text hover:bg-background-element focus-visible:ring-secondary data-[disabled]:opacity-50",
+ outline:
+ "border border-border bg-transparent text-text hover:bg-background-panel focus-visible:ring-border-active data-[disabled]:border-border-subtle data-[disabled]:text-text-muted",
+ ghost: "text-text hover:bg-background-panel focus-visible:ring-border-active data-[disabled]:text-text-muted",
+ },
+ sizes: {
+ sm: "h-8 px-3 text-sm",
+ md: "h-10 px-4 text-sm",
+ lg: "h-12 px-6 text-base",
+ },
+}
+
+export function getButtonClasses(
+ variant: keyof typeof buttonStyles.variants = "primary",
+ size: keyof typeof buttonStyles.sizes = "md",
+ className?: string,
+) {
+ return `${buttonStyles.base} ${buttonStyles.variants[variant]} ${buttonStyles.sizes[size]}${className ? ` ${className}` : ""}`
+}
+
+export function Button(props: ButtonProps) {
+ const [local, others] = splitProps(props, ["variant", "size", "class", "classList"])
+ return (
+
+ )
+}
diff --git a/packages/app/src/ui/collapsible.tsx b/packages/app/src/ui/collapsible.tsx
new file mode 100644
index 000000000..e0202f617
--- /dev/null
+++ b/packages/app/src/ui/collapsible.tsx
@@ -0,0 +1,62 @@
+import { Collapsible as KobalteCollapsible } from "@kobalte/core/collapsible"
+import { splitProps } from "solid-js"
+import type { ComponentProps, ParentProps } from "solid-js"
+import { Icon, type IconProps } from "./icon"
+
+export interface CollapsibleProps extends ComponentProps {}
+export interface CollapsibleTriggerProps extends ComponentProps {}
+export interface CollapsibleContentProps extends ComponentProps {}
+
+function CollapsibleRoot(props: CollapsibleProps) {
+ return
+}
+
+function CollapsibleTrigger(props: CollapsibleTriggerProps) {
+ const [local, others] = splitProps(props, ["class"])
+ return (
+
+ )
+}
+
+function CollapsibleContent(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+function CollapsibleArrow(props: Partial) {
+ const [local, others] = splitProps(props, ["class", "name"])
+ return (
+
+ )
+}
+
+export const Collapsible = Object.assign(CollapsibleRoot, {
+ Trigger: CollapsibleTrigger,
+ Content: CollapsibleContent,
+ Arrow: CollapsibleArrow,
+})
diff --git a/packages/app/src/ui/file-icon.tsx b/packages/app/src/ui/file-icon.tsx
new file mode 100644
index 000000000..d31a741e0
--- /dev/null
+++ b/packages/app/src/ui/file-icon.tsx
@@ -0,0 +1,582 @@
+import type { Component, JSX } from "solid-js"
+import { createMemo, splitProps } from "solid-js"
+import sprite from "@/ui/file-icons/sprite.svg"
+import type { IconName } from "@/ui/file-icons/types"
+
+export type FileIconProps = JSX.GSVGAttributes & {
+ node: { path: string; type: "file" | "directory" }
+ expanded?: boolean
+}
+
+export const FileIcon: Component = (props) => {
+ const [local, rest] = splitProps(props, ["node", "class", "expanded"])
+ const name = createMemo(() => chooseIconName(local.node.path, local.node.type, local.expanded || false))
+ return (
+
+
+
+ )
+}
+
+type IconMaps = {
+ fileNames: Record
+ fileExtensions: Record
+ folderNames: Record
+ defaults: {
+ file: IconName
+ folder: IconName
+ folderOpen: IconName
+ }
+}
+
+const ICON_MAPS: IconMaps = {
+ fileNames: {
+ // Documentation files
+ "readme.md": "Readme",
+ "changelog.md": "Changelog",
+ "contributing.md": "Contributing",
+ "conduct.md": "Conduct",
+ license: "Certificate",
+ authors: "Authors",
+ credits: "Credits",
+ install: "Installation",
+
+ // Node.js files
+ "package.json": "Nodejs",
+ "package-lock.json": "Nodejs",
+ "yarn.lock": "Yarn",
+ "pnpm-lock.yaml": "Pnpm",
+ "bun.lock": "Bun",
+ "bun.lockb": "Bun",
+ "bunfig.toml": "Bun",
+ ".nvmrc": "Nodejs",
+ ".node-version": "Nodejs",
+
+ // Docker files
+ dockerfile: "Docker",
+ "docker-compose.yml": "Docker",
+ "docker-compose.yaml": "Docker",
+ ".dockerignore": "Docker",
+
+ // Config files
+ "jest.config.js": "Jest",
+ "jest.config.ts": "Jest",
+ "jest.config.mjs": "Jest",
+ "vitest.config.js": "Vitest",
+ "vitest.config.ts": "Vitest",
+ "tailwind.config.js": "Tailwindcss",
+ "tailwind.config.ts": "Tailwindcss",
+ "turbo.json": "Turborepo",
+ "tsconfig.json": "Tsconfig",
+ "jsconfig.json": "Jsconfig",
+ ".eslintrc": "Eslint",
+ ".eslintrc.js": "Eslint",
+ ".eslintrc.json": "Eslint",
+ ".prettierrc": "Prettier",
+ ".prettierrc.js": "Prettier",
+ ".prettierrc.json": "Prettier",
+ "vite.config.js": "Vite",
+ "vite.config.ts": "Vite",
+ "webpack.config.js": "Webpack",
+ "rollup.config.js": "Rollup",
+ "astro.config.mjs": "AstroConfig",
+ "astro.config.js": "AstroConfig",
+ "next.config.js": "Next",
+ "next.config.mjs": "Next",
+ "nuxt.config.js": "Nuxt",
+ "nuxt.config.ts": "Nuxt",
+ "svelte.config.js": "Svelte",
+ "gatsby-config.js": "Gatsby",
+ "remix.config.js": "Remix",
+ "prisma.schema": "Prisma",
+ ".gitignore": "Git",
+ ".gitattributes": "Git",
+ makefile: "Makefile",
+ cmake: "Cmake",
+ "cargo.toml": "Rust",
+ "go.mod": "GoMod",
+ "go.sum": "GoMod",
+ "requirements.txt": "Python",
+ "pyproject.toml": "Python",
+ pipfile: "Python",
+ "poetry.lock": "Poetry",
+ gemfile: "Gemfile",
+ rakefile: "Ruby",
+ "composer.json": "Php",
+ "build.gradle": "Gradle",
+ "pom.xml": "Maven",
+ "deno.json": "Deno",
+ "deno.jsonc": "Deno",
+ "vercel.json": "Vercel",
+ "netlify.toml": "Netlify",
+ ".env": "Tune",
+ ".env.local": "Tune",
+ ".env.development": "Tune",
+ ".env.production": "Tune",
+ ".env.example": "Tune",
+ ".editorconfig": "Editorconfig",
+ "robots.txt": "Robots",
+ "favicon.ico": "Favicon",
+ browserlist: "Browserlist",
+ ".babelrc": "Babel",
+ "babel.config.js": "Babel",
+ "gulpfile.js": "Gulp",
+ "gruntfile.js": "Grunt",
+ "capacitor.config.json": "Capacitor",
+ "ionic.config.json": "Ionic",
+ "angular.json": "Angular",
+ ".storybook": "Storybook",
+ "storybook.config.js": "Storybook",
+ "cypress.config.js": "Cypress",
+ "playwright.config.js": "Playwright",
+ "puppeteer.config.js": "Puppeteer",
+ "wrangler.toml": "Wrangler",
+ "firebase.json": "Firebase",
+ supabase: "Supabase",
+ terraform: "Terraform",
+ kubernetes: "Kubernetes",
+ ".gitpod.yml": "Gitpod",
+ ".devcontainer": "Vscode",
+ "travis.yml": "Travis",
+ "appveyor.yml": "Appveyor",
+ ".circleci": "Circleci",
+ "renovate.json": "Renovate",
+ "dependabot.yml": "Dependabot",
+ "lerna.json": "Lerna",
+ "nx.json": "Nx",
+ },
+ fileExtensions: {
+ // Test files
+ "spec.ts": "TestTs",
+ "test.ts": "TestTs",
+ "spec.tsx": "TestJsx",
+ "test.tsx": "TestJsx",
+ "spec.js": "TestJs",
+ "test.js": "TestJs",
+ "spec.jsx": "TestJsx",
+ "test.jsx": "TestJsx",
+
+ // JavaScript/TypeScript
+ "js.map": "JavascriptMap",
+ "d.ts": "TypescriptDef",
+ ts: "Typescript",
+ tsx: "React_ts",
+ js: "Javascript",
+ jsx: "React",
+ mjs: "Javascript",
+ cjs: "Javascript",
+
+ // Web languages
+ html: "Html",
+ htm: "Html",
+ css: "Css",
+ scss: "Sass",
+ sass: "Sass",
+ less: "Less",
+ styl: "Stylus",
+
+ // Data formats
+ json: "Json",
+ xml: "Xml",
+ yml: "Yaml",
+ yaml: "Yaml",
+ toml: "Toml",
+ hjson: "Hjson",
+
+ // Documentation
+ md: "Markdown",
+ mdx: "Mdx",
+ tex: "Tex",
+
+ // Programming languages
+ py: "Python",
+ pyx: "Python",
+ pyw: "Python",
+ rs: "Rust",
+ go: "Go",
+ java: "Java",
+ kt: "Kotlin",
+ scala: "Scala",
+ php: "Php",
+ rb: "Ruby",
+ cs: "Csharp",
+ vb: "Visualstudio",
+ cpp: "Cpp",
+ cc: "Cpp",
+ cxx: "Cpp",
+ c: "C",
+ h: "H",
+ hpp: "Hpp",
+ swift: "Swift",
+ m: "ObjectiveC",
+ mm: "ObjectiveCpp",
+ dart: "Dart",
+ lua: "Lua",
+ pl: "Perl",
+ r: "R",
+ jl: "Julia",
+ hs: "Haskell",
+ elm: "Elm",
+ ml: "Ocaml",
+ clj: "Clojure",
+ cljs: "Clojure",
+ erl: "Erlang",
+ ex: "Elixir",
+ exs: "Elixir",
+ nim: "Nim",
+ zig: "Zig",
+ v: "Vlang",
+ odin: "Odin",
+ gleam: "Gleam",
+ grain: "Grain",
+ roc: "Rocket",
+ fs: "Fsharp",
+
+ // Shell scripts
+ sh: "Console",
+ bash: "Console",
+ zsh: "Console",
+ fish: "Console",
+ ps1: "Powershell",
+
+ // Config/build files
+ cfg: "Settings",
+ ini: "Settings",
+ conf: "Settings",
+ properties: "Settings",
+
+ // Media files
+ svg: "Svg",
+ png: "Image",
+ jpg: "Image",
+ jpeg: "Image",
+ gif: "Image",
+ webp: "Image",
+ bmp: "Image",
+ ico: "Favicon",
+ mp4: "Video",
+ mov: "Video",
+ avi: "Video",
+ webm: "Video",
+ mp3: "Audio",
+ wav: "Audio",
+ flac: "Audio",
+
+ // Archive files
+ zip: "Zip",
+ tar: "Zip",
+ gz: "Zip",
+ rar: "Zip",
+ "7z": "Zip",
+
+ // Document files
+ pdf: "Pdf",
+ doc: "Word",
+ docx: "Word",
+ ppt: "Powerpoint",
+ pptx: "Powerpoint",
+ xls: "Document",
+ xlsx: "Document",
+
+ // Database files
+ sql: "Database",
+ db: "Database",
+ sqlite: "Database",
+
+ // Other
+ env: "Tune",
+ log: "Log",
+ lock: "Lock",
+ key: "Key",
+ pem: "Certificate",
+ crt: "Certificate",
+ proto: "Proto",
+ graphql: "Graphql",
+ gql: "Graphql",
+ wasm: "Webassembly",
+ dockerfile: "Docker",
+ },
+ folderNames: {
+ // Source code
+ src: "FolderSrc",
+ source: "FolderSrc",
+ lib: "FolderLib",
+ libs: "FolderLib",
+
+ // Testing
+ test: "FolderTest",
+ tests: "FolderTest",
+ testing: "FolderTest",
+ spec: "FolderTest",
+ specs: "FolderTest",
+ __tests__: "FolderTest",
+ e2e: "FolderTest",
+ integration: "FolderTest",
+ unit: "FolderTest",
+ cypress: "FolderCypress",
+
+ // Dependencies
+ node_modules: "FolderNode",
+ vendor: "FolderPackages",
+ packages: "FolderPackages",
+ deps: "FolderPackages",
+
+ // Build/dist
+ build: "FolderBuildkite",
+ dist: "FolderDist",
+ out: "FolderDist",
+ output: "FolderDist",
+ target: "FolderTarget",
+
+ // Configuration
+ config: "FolderConfig",
+ configs: "FolderConfig",
+ configuration: "FolderConfig",
+ settings: "FolderConfig",
+ env: "FolderEnvironment",
+ environments: "FolderEnvironment",
+
+ // Docker
+ docker: "FolderDocker",
+ dockerfiles: "FolderDocker",
+ containers: "FolderDocker",
+
+ // Documentation
+ docs: "FolderDocs",
+ doc: "FolderDocs",
+ documentation: "FolderDocs",
+ readme: "FolderDocs",
+
+ // Public/assets
+ public: "FolderPublic",
+ static: "FolderPublic",
+ assets: "FolderImages",
+ images: "FolderImages",
+ img: "FolderImages",
+ icons: "FolderImages",
+ media: "FolderImages",
+ fonts: "FolderFont",
+ styles: "FolderCss",
+ stylesheets: "FolderCss",
+ css: "FolderCss",
+ sass: "FolderSass",
+ scss: "FolderSass",
+ less: "FolderLess",
+
+ // Scripts
+ scripts: "FolderScripts",
+ script: "FolderScripts",
+ tools: "FolderTools",
+ utils: "FolderUtils",
+ utilities: "FolderUtils",
+ helpers: "FolderHelper",
+
+ // Framework specific
+ components: "FolderComponents",
+ component: "FolderComponents",
+ views: "FolderViews",
+ view: "FolderViews",
+ layouts: "FolderLayout",
+ layout: "FolderLayout",
+ templates: "FolderTemplate",
+ template: "FolderTemplate",
+ hooks: "FolderHook",
+ hook: "FolderHook",
+ store: "FolderStore",
+ stores: "FolderStore",
+ state: "FolderNgrxStore",
+ reducers: "FolderReduxReducer",
+ reducer: "FolderReduxReducer",
+ services: "FolderApi",
+ service: "FolderApi",
+ api: "FolderApi",
+ apis: "FolderApi",
+ routes: "FolderRoutes",
+ route: "FolderRoutes",
+ routing: "FolderRoutes",
+ middleware: "FolderMiddleware",
+ middlewares: "FolderMiddleware",
+ controllers: "FolderController",
+ controller: "FolderController",
+ models: "FolderDatabase",
+ model: "FolderDatabase",
+ schemas: "FolderDatabase",
+ schema: "FolderDatabase",
+ migrations: "FolderDatabase",
+ migration: "FolderDatabase",
+ seeders: "FolderSeeders",
+ seeder: "FolderSeeders",
+
+ // TypeScript
+ types: "FolderTypescript",
+ typing: "FolderTypescript",
+ typings: "FolderTypescript",
+ "@types": "FolderTypescript",
+ interfaces: "FolderInterface",
+ interface: "FolderInterface",
+
+ // Mobile
+ android: "FolderAndroid",
+ ios: "FolderIos",
+ mobile: "FolderMobile",
+ flutter: "FolderFlutter",
+
+ // Infrastructure
+ kubernetes: "FolderKubernetes",
+ k8s: "FolderKubernetes",
+ terraform: "FolderTerraform",
+ aws: "FolderAws",
+ azure: "FolderAzurePipelines",
+ firebase: "FolderFirebase",
+ supabase: "FolderSupabase",
+ vercel: "FolderVercel",
+ netlify: "FolderNetlify",
+
+ // CI/CD
+ ".github": "FolderGithub",
+ ".gitlab": "FolderGitlab",
+ ".circleci": "FolderCircleci",
+ ci: "FolderCi",
+ ".ci": "FolderCi",
+ workflows: "FolderGhWorkflows",
+
+ // Git
+ ".git": "FolderGit",
+
+ // Development tools
+ ".vscode": "FolderVscode",
+ ".idea": "FolderIntellij",
+ ".cursor": "FolderCursor",
+ ".devcontainer": "FolderContainer",
+ ".storybook": "FolderStorybook",
+
+ // Localization
+ i18n: "FolderI18n",
+ locales: "FolderI18n",
+ locale: "FolderI18n",
+ lang: "FolderI18n",
+ languages: "FolderI18n",
+
+ // Other common patterns
+ temp: "FolderTemp",
+ tmp: "FolderTemp",
+ logs: "FolderLog",
+ log: "FolderLog",
+ backup: "FolderBackup",
+ backups: "FolderBackup",
+ examples: "FolderExamples",
+ example: "FolderExamples",
+ demo: "FolderExamples",
+ demos: "FolderExamples",
+ samples: "FolderExamples",
+ sample: "FolderExamples",
+ fixtures: "FolderTest",
+ mocks: "FolderMock",
+ mock: "FolderMock",
+ data: "FolderDatabase",
+ database: "FolderDatabase",
+ db: "FolderDatabase",
+ sql: "FolderDatabase",
+ prisma: "FolderPrisma",
+ drizzle: "FolderDrizzle",
+
+ // Security
+ security: "FolderSecure",
+ auth: "FolderSecure",
+ authentication: "FolderSecure",
+ authorization: "FolderSecure",
+ keys: "FolderKeys",
+ certs: "FolderKeys",
+ certificates: "FolderKeys",
+
+ // Content
+ content: "FolderContent",
+ posts: "FolderContent",
+ articles: "FolderContent",
+ blog: "FolderContent",
+
+ // Functions
+ functions: "FolderFunctions",
+ function: "FolderFunctions",
+ lambda: "FolderFunctions",
+ lambdas: "FolderFunctions",
+ serverless: "FolderServerless",
+
+ // Jobs/tasks
+ jobs: "FolderJob",
+ job: "FolderJob",
+ tasks: "FolderTasks",
+ task: "FolderTasks",
+ cron: "FolderTasks",
+ queue: "FolderQueue",
+ queues: "FolderQueue",
+
+ // Desktop platforms
+ desktop: "FolderDesktop",
+ windows: "FolderWindows",
+ macos: "FolderMacos",
+ linux: "FolderLinux",
+ },
+ defaults: {
+ file: "Document",
+ folder: "Folder",
+ folderOpen: "FolderOpen",
+ },
+}
+
+const toOpenVariant = (icon: IconName): IconName => {
+ if (!icon.startsWith("Folder")) return icon
+ if (icon.endsWith("_light")) return icon.replace("_light", "Open_light") as IconName
+ if (!icon.endsWith("Open")) return (icon + "Open") as IconName
+ return icon
+}
+
+const basenameOf = (p: string) =>
+ p
+ .replace(/[/\\]+$/, "")
+ .split(/[\\/]/)
+ .pop() ?? ""
+
+const folderNameVariants = (name: string) => {
+ const n = name.toLowerCase()
+ return [n, `.${n}`, `_${n}`, `__${n}__`]
+}
+
+const dottedSuffixesDesc = (name: string) => {
+ const n = name.toLowerCase()
+ const idxs: number[] = []
+ for (let i = 0; i < n.length; i++) if (n[i] === ".") idxs.push(i)
+ const out = new Set()
+ out.add(n) // allow exact whole-name "extensions" like "dockerfile"
+ for (const i of idxs) if (i + 1 < n.length) out.add(n.slice(i + 1))
+ return Array.from(out).sort((a, b) => b.length - a.length) // longest first
+}
+
+export function chooseIconName(path: string, type: "directory" | "file", expanded: boolean): IconName {
+ const base = basenameOf(path)
+ const baseLower = base.toLowerCase()
+
+ if (type === "directory") {
+ for (const cand of folderNameVariants(baseLower)) {
+ const icon = ICON_MAPS.folderNames[cand]
+ if (icon) return expanded ? toOpenVariant(icon) : icon
+ }
+ return expanded ? ICON_MAPS.defaults.folderOpen : ICON_MAPS.defaults.folder
+ }
+
+ const byName = ICON_MAPS.fileNames[baseLower]
+ if (byName) return byName
+
+ for (const ext of dottedSuffixesDesc(baseLower)) {
+ const icon = ICON_MAPS.fileExtensions[ext]
+ if (icon) return icon
+ }
+
+ return ICON_MAPS.defaults.file
+}
diff --git a/packages/app/src/ui/file-icons/sprite.svg b/packages/app/src/ui/file-icons/sprite.svg
new file mode 100644
index 000000000..619b2b58c
--- /dev/null
+++ b/packages/app/src/ui/file-icons/sprite.svg
@@ -0,0 +1,11707 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/ui/file-icons/types.ts b/packages/app/src/ui/file-icons/types.ts
new file mode 100644
index 000000000..5b47661f9
--- /dev/null
+++ b/packages/app/src/ui/file-icons/types.ts
@@ -0,0 +1,1095 @@
+// This file is generated by icon spritesheet generator
+
+export const iconNames = [
+ "Zip",
+ "Zig",
+ "Zeabur_light",
+ "Zeabur",
+ "Yarn",
+ "Yang",
+ "Yaml",
+ "Xml",
+ "Xmake",
+ "Xaml",
+ "Wxt",
+ "Wrangler",
+ "Word",
+ "Wolframlanguage",
+ "Windicss",
+ "Werf",
+ "Wepy",
+ "Webpack",
+ "Webhint",
+ "Webassembly",
+ "Watchman",
+ "Wally",
+ "Wallaby",
+ "Wakatime_light",
+ "Wakatime",
+ "VuexStore",
+ "Vue",
+ "VueConfig",
+ "Vscode",
+ "Vlang",
+ "Vitest",
+ "Vite",
+ "Visualstudio",
+ "Virtual",
+ "Vim",
+ "Video",
+ "Vfl",
+ "Verilog",
+ "Verified",
+ "Verdaccio",
+ "Vercel_light",
+ "Vercel",
+ "Velocity",
+ "Velite",
+ "Vedic",
+ "Varnish",
+ "VanillaExtract",
+ "Vala",
+ "Vagrant",
+ "Uv",
+ "Url",
+ "Unocss",
+ "Unity",
+ "Uml_light",
+ "Uml",
+ "Umi",
+ "Typst",
+ "Typescript",
+ "TypescriptDef",
+ "Twine",
+ "Twig",
+ "Turborepo_light",
+ "Turborepo",
+ "Tune",
+ "Tsil",
+ "Tsdoc",
+ "Tsconfig",
+ "Trigger",
+ "Tree",
+ "Travis",
+ "Toml_light",
+ "Toml",
+ "Todo",
+ "Tobimake",
+ "Tobi",
+ "Tldraw_light",
+ "Tldraw",
+ "Tilt",
+ "Textlint",
+ "Tex",
+ "TestTs",
+ "TestJsx",
+ "TestJs",
+ "Terraform",
+ "Template",
+ "Templ",
+ "Teal",
+ "Tcl",
+ "Taze",
+ "Tauri",
+ "Taskfile",
+ "Tailwindcss",
+ "Table",
+ "Systemd_light",
+ "Systemd",
+ "Syncpack",
+ "Swift",
+ "Swc",
+ "Sway",
+ "Swagger",
+ "Svgr",
+ "Svgo",
+ "Svg",
+ "Svelte",
+ "Supabase",
+ "Subtitles",
+ "Sublime",
+ "Stylus",
+ "Stylelint_light",
+ "Stylelint",
+ "Stylable",
+ "Stryker",
+ "Storybook",
+ "Stitches_light",
+ "Stitches",
+ "Stencil",
+ "Steadybit",
+ "Stan",
+ "Stackblitz",
+ "Spwn",
+ "Sonarcloud",
+ "Solidity",
+ "Snyk",
+ "Snowpack_light",
+ "Snowpack",
+ "Snapcraft",
+ "Snakemake",
+ "Sml",
+ "Smarty",
+ "Slug",
+ "Slint",
+ "Slim",
+ "Sketch",
+ "Siyuan",
+ "Simulink",
+ "Silverstripe",
+ "Shader",
+ "Settings",
+ "Serverless",
+ "Sequelize",
+ "Sentry",
+ "Semgrep",
+ "SemanticRelease_light",
+ "SemanticRelease",
+ "Search",
+ "Screwdriver",
+ "Scons_light",
+ "Scons",
+ "Scheme",
+ "Scala",
+ "Sbt",
+ "Sass",
+ "Sas",
+ "San",
+ "Salesforce",
+ "Rust",
+ "Ruff",
+ "Ruby",
+ "Rubocop_light",
+ "Rubocop",
+ "Rspec",
+ "Routing",
+ "Rome",
+ "Rollup",
+ "Rojo",
+ "Rocket",
+ "Robots",
+ "Robot",
+ "Roblox",
+ "Roadmap",
+ "Riot",
+ "Restql",
+ "Rescript",
+ "RescriptInterface",
+ "Replit",
+ "Renovate",
+ "Remix_light",
+ "Remix",
+ "Remark",
+ "Regedit",
+ "ReduxStore",
+ "ReduxSelector",
+ "ReduxReducer",
+ "ReduxAction",
+ "Red",
+ "Reason",
+ "Readme",
+ "React_ts",
+ "React",
+ "Rc",
+ "Rbxmk",
+ "Razor",
+ "Raml",
+ "Racket",
+ "R",
+ "Qwik",
+ "Quokka",
+ "Quasar",
+ "Quarto",
+ "Qsharp",
+ "Pytorch",
+ "Python",
+ "PythonMisc",
+ "Purescript",
+ "Puppeteer",
+ "Puppet",
+ "Pug",
+ "Protractor",
+ "Proto",
+ "Prompt",
+ "Prolog",
+ "Processing",
+ "Prisma",
+ "Prettier",
+ "PreCommit",
+ "Powershell",
+ "Powerpoint",
+ "Posthtml",
+ "Postcss",
+ "Poetry",
+ "Pnpm_light",
+ "Pnpm",
+ "Pm2Ecosystem",
+ "Plop",
+ "Playwright",
+ "Plastic",
+ "Pkl",
+ "Pipeline",
+ "Pinejs",
+ "Phpunit",
+ "Phpstan",
+ "Php_elephant_pink",
+ "Php_elephant",
+ "Php",
+ "PhpCsFixer",
+ "Perl",
+ "Percy",
+ "Pdm",
+ "Pdf",
+ "Payload_light",
+ "Payload",
+ "Pawn",
+ "Pascal",
+ "Parcel",
+ "Panda",
+ "Palette",
+ "Packship",
+ "Oxlint",
+ "Otne",
+ "Openapi_light",
+ "Openapi",
+ "Opam",
+ "Opa",
+ "Odin",
+ "Ocaml",
+ "ObjectiveCpp",
+ "ObjectiveC",
+ "Nx",
+ "Nuxt",
+ "Nunjucks",
+ "Nuget",
+ "Npm",
+ "Nodemon",
+ "Nodejs_alt",
+ "Nodejs",
+ "Nix",
+ "Nim",
+ "NgrxState",
+ "NgrxSelectors",
+ "NgrxReducer",
+ "NgrxEntity",
+ "NgrxEffects",
+ "NgrxActions",
+ "Nginx",
+ "Next_light",
+ "Next",
+ "Netlify_light",
+ "Netlify",
+ "Nest",
+ "Ndst",
+ "NanoStaged_light",
+ "NanoStaged",
+ "Mxml",
+ "Moonscript",
+ "Moon",
+ "Mojo",
+ "Modernizr",
+ "Mocha",
+ "Mjml",
+ "Mint",
+ "Minecraft",
+ "MinecraftFabric",
+ "Meson",
+ "Mermaid",
+ "Merlin",
+ "Mercurial",
+ "Mdx",
+ "Mdsvex",
+ "Maven",
+ "Matlab",
+ "Mathematica",
+ "Markojs",
+ "Markdownlint",
+ "Markdown",
+ "Markdoc",
+ "MarkdocConfig",
+ "Makefile",
+ "Lyric",
+ "Luau",
+ "Lua",
+ "Lottie",
+ "Lolcode",
+ "Log",
+ "Lock",
+ "Livescript",
+ "Lisp",
+ "Liquid",
+ "Lintstaged",
+ "Lilypond",
+ "Lighthouse",
+ "Lib",
+ "Liara",
+ "Less",
+ "Lerna",
+ "Lefthook",
+ "Lbx",
+ "Latexmk",
+ "Laravel",
+ "Label",
+ "Kusto",
+ "Kubernetes",
+ "Kotlin",
+ "Knip",
+ "Kl",
+ "Kivy",
+ "Keystatic",
+ "Key",
+ "Kcl",
+ "Karma",
+ "Just",
+ "Jupyter",
+ "Julia",
+ "Jsr_light",
+ "Jsr",
+ "Json",
+ "Jsconfig",
+ "Jinja_light",
+ "Jinja",
+ "Jest",
+ "Jenkins",
+ "Javascript",
+ "JavascriptMap",
+ "Javaclass",
+ "Java",
+ "Jar",
+ "Istanbul",
+ "Ionic",
+ "Installation",
+ "Imba",
+ "Image",
+ "IfanrCloud",
+ "Idris",
+ "I18n",
+ "Husky",
+ "Hurl",
+ "Huff_light",
+ "Huff",
+ "Http",
+ "Html",
+ "Hpp",
+ "Hosts_light",
+ "Hosts",
+ "Horusec",
+ "Hjson",
+ "Histoire",
+ "Hex",
+ "Heroku",
+ "Helm",
+ "Hcl_light",
+ "Hcl",
+ "Haxe",
+ "Haskell",
+ "Harmonix",
+ "Hardhat",
+ "Handlebars",
+ "Haml",
+ "Hadolint",
+ "Hack",
+ "H",
+ "Gulp",
+ "Grunt",
+ "Groovy",
+ "Gridsome",
+ "Graphql",
+ "Graphcool",
+ "Grain",
+ "GrafanaAlloy",
+ "Gradle",
+ "Godot",
+ "GodotAssets",
+ "Go_gopher",
+ "Go",
+ "GoMod",
+ "Gnuplot",
+ "Gleam",
+ "Gitpod",
+ "Gitlab",
+ "GithubSponsors",
+ "GithubActionsWorkflow",
+ "Git",
+ "Gemini",
+ "GeminiAi",
+ "Gemfile",
+ "Gcp",
+ "Gatsby",
+ "Garden",
+ "Gamemaker",
+ "Fusebox",
+ "Fsharp",
+ "Freemarker",
+ "Foxpro",
+ "Fortran",
+ "Forth",
+ "Font",
+ "Folder",
+ "FolderZeabur",
+ "FolderZeaburOpen",
+ "FolderYarn",
+ "FolderYarnOpen",
+ "FolderWordpress",
+ "FolderWordpressOpen",
+ "FolderWindows",
+ "FolderWindowsOpen",
+ "FolderWebpack",
+ "FolderWebpackOpen",
+ "FolderWakatime",
+ "FolderWakatimeOpen",
+ "FolderVuexStore",
+ "FolderVuexStoreOpen",
+ "FolderVuepress",
+ "FolderVuepressOpen",
+ "FolderVue",
+ "FolderVueOpen",
+ "FolderVueDirectives",
+ "FolderVueDirectivesOpen",
+ "FolderVscode",
+ "FolderVscodeOpen",
+ "FolderVm",
+ "FolderVmOpen",
+ "FolderViews",
+ "FolderViewsOpen",
+ "FolderVideo",
+ "FolderVideoOpen",
+ "FolderVerdaccio",
+ "FolderVerdaccioOpen",
+ "FolderVercel",
+ "FolderVercelOpen",
+ "FolderUtils",
+ "FolderUtilsOpen",
+ "FolderUpload",
+ "FolderUploadOpen",
+ "FolderUpdate",
+ "FolderUpdateOpen",
+ "FolderUnity",
+ "FolderUnityOpen",
+ "FolderUi",
+ "FolderUiOpen",
+ "FolderTypescript",
+ "FolderTypescriptOpen",
+ "FolderTurborepo",
+ "FolderTurborepoOpen",
+ "FolderTrigger",
+ "FolderTriggerOpen",
+ "FolderTrash",
+ "FolderTrashOpen",
+ "FolderTools",
+ "FolderToolsOpen",
+ "FolderTheme",
+ "FolderThemeOpen",
+ "FolderTest",
+ "FolderTestOpen",
+ "FolderTerraform",
+ "FolderTerraformOpen",
+ "FolderTemplate",
+ "FolderTemplateOpen",
+ "FolderTemp",
+ "FolderTempOpen",
+ "FolderTelevision",
+ "FolderTelevisionOpen",
+ "FolderTasks",
+ "FolderTasksOpen",
+ "FolderTaskfile",
+ "FolderTaskfileOpen",
+ "FolderTarget",
+ "FolderTargetOpen",
+ "FolderSyntax",
+ "FolderSyntaxOpen",
+ "FolderSvg",
+ "FolderSvgOpen",
+ "FolderSvelte",
+ "FolderSvelteOpen",
+ "FolderSupabase",
+ "FolderSupabaseOpen",
+ "FolderSublime",
+ "FolderSublimeOpen",
+ "FolderStylus",
+ "FolderStylusOpen",
+ "FolderStorybook",
+ "FolderStorybookOpen",
+ "FolderStore",
+ "FolderStoreOpen",
+ "FolderStencil",
+ "FolderStencilOpen",
+ "FolderStack",
+ "FolderStackOpen",
+ "FolderSrc",
+ "FolderSrcTauri",
+ "FolderSrcTauriOpen",
+ "FolderSrcOpen",
+ "FolderSnippet",
+ "FolderSnippetOpen",
+ "FolderSnapcraft",
+ "FolderSnapcraftOpen",
+ "FolderShared",
+ "FolderSharedOpen",
+ "FolderShader",
+ "FolderShaderOpen",
+ "FolderServerless",
+ "FolderServerlessOpen",
+ "FolderServer",
+ "FolderServerOpen",
+ "FolderSeeders",
+ "FolderSeedersOpen",
+ "FolderSecure",
+ "FolderSecureOpen",
+ "FolderScripts",
+ "FolderScriptsOpen",
+ "FolderScons",
+ "FolderSconsOpen",
+ "FolderScala",
+ "FolderScalaOpen",
+ "FolderSass",
+ "FolderSassOpen",
+ "FolderSandbox",
+ "FolderSandboxOpen",
+ "FolderRust",
+ "FolderRustOpen",
+ "FolderRules",
+ "FolderRulesOpen",
+ "FolderRoutes",
+ "FolderRoutesOpen",
+ "FolderRobot",
+ "FolderRobotOpen",
+ "FolderReview",
+ "FolderReviewOpen",
+ "FolderResource",
+ "FolderResourceOpen",
+ "FolderResolver",
+ "FolderResolverOpen",
+ "FolderRepository",
+ "FolderRepositoryOpen",
+ "FolderReduxReducer",
+ "FolderReduxReducerOpen",
+ "FolderReactComponents",
+ "FolderReactComponentsOpen",
+ "FolderQueue",
+ "FolderQueueOpen",
+ "FolderQuasar",
+ "FolderQuasarOpen",
+ "FolderPytorch",
+ "FolderPytorchOpen",
+ "FolderPython",
+ "FolderPythonOpen",
+ "FolderPublic",
+ "FolderPublicOpen",
+ "FolderProto",
+ "FolderProtoOpen",
+ "FolderPrompts",
+ "FolderPromptsOpen",
+ "FolderProject",
+ "FolderProjectOpen",
+ "FolderPrivate",
+ "FolderPrivateOpen",
+ "FolderPrisma",
+ "FolderPrismaOpen",
+ "FolderPowershell",
+ "FolderPowershellOpen",
+ "FolderPolicy",
+ "FolderPolicyOpen",
+ "FolderPlugin",
+ "FolderPluginOpen",
+ "FolderPlastic",
+ "FolderPlasticOpen",
+ "FolderPipe",
+ "FolderPipeOpen",
+ "FolderPhpmailer",
+ "FolderPhpmailerOpen",
+ "FolderPhp",
+ "FolderPhpOpen",
+ "FolderPdm",
+ "FolderPdmOpen",
+ "FolderPdf",
+ "FolderPdfOpen",
+ "FolderPackages",
+ "FolderPackagesOpen",
+ "FolderOther",
+ "FolderOtherOpen",
+ "FolderOrganism",
+ "FolderOrganismOpen",
+ "FolderOpen",
+ "FolderObsidian",
+ "FolderObsidianOpen",
+ "FolderNuxt",
+ "FolderNuxtOpen",
+ "FolderNode",
+ "FolderNodeOpen",
+ "FolderNgrxStore",
+ "FolderNgrxStoreOpen",
+ "FolderNext",
+ "FolderNextOpen",
+ "FolderNetlify",
+ "FolderNetlifyOpen",
+ "FolderMoon",
+ "FolderMoonOpen",
+ "FolderMolecule",
+ "FolderMoleculeOpen",
+ "FolderMojo",
+ "FolderMojoOpen",
+ "FolderMock",
+ "FolderMockOpen",
+ "FolderMobile",
+ "FolderMobileOpen",
+ "FolderMjml",
+ "FolderMjmlOpen",
+ "FolderMiddleware",
+ "FolderMiddlewareOpen",
+ "FolderMeta",
+ "FolderMetaOpen",
+ "FolderMessages",
+ "FolderMessagesOpen",
+ "FolderMercurial",
+ "FolderMercurialOpen",
+ "FolderMarkdown",
+ "FolderMarkdownOpen",
+ "FolderMappings",
+ "FolderMappingsOpen",
+ "FolderMail",
+ "FolderMailOpen",
+ "FolderMacos",
+ "FolderMacosOpen",
+ "FolderLuau",
+ "FolderLuauOpen",
+ "FolderLua",
+ "FolderLuaOpen",
+ "FolderLottie",
+ "FolderLottieOpen",
+ "FolderLog",
+ "FolderLogOpen",
+ "FolderLiquibase",
+ "FolderLiquibaseOpen",
+ "FolderLinux",
+ "FolderLinuxOpen",
+ "FolderLink",
+ "FolderLinkOpen",
+ "FolderLib",
+ "FolderLibOpen",
+ "FolderLess",
+ "FolderLessOpen",
+ "FolderLefthook",
+ "FolderLefthookOpen",
+ "FolderLayout",
+ "FolderLayoutOpen",
+ "FolderKusto",
+ "FolderKustoOpen",
+ "FolderKubernetes",
+ "FolderKubernetesOpen",
+ "FolderKeys",
+ "FolderKeysOpen",
+ "FolderJupyter",
+ "FolderJupyterOpen",
+ "FolderJson",
+ "FolderJsonOpen",
+ "FolderJob",
+ "FolderJobOpen",
+ "FolderJinja_light",
+ "FolderJinja",
+ "FolderJinjaOpen_light",
+ "FolderJinjaOpen",
+ "FolderJavascript",
+ "FolderJavascriptOpen",
+ "FolderJava",
+ "FolderJavaOpen",
+ "FolderIos",
+ "FolderIosOpen",
+ "FolderInterface",
+ "FolderInterfaceOpen",
+ "FolderInterceptor",
+ "FolderInterceptorOpen",
+ "FolderIntellij_light",
+ "FolderIntellij",
+ "FolderIntellijOpen_light",
+ "FolderIntellijOpen",
+ "FolderInclude",
+ "FolderIncludeOpen",
+ "FolderImport",
+ "FolderImportOpen",
+ "FolderImages",
+ "FolderImagesOpen",
+ "FolderI18n",
+ "FolderI18nOpen",
+ "FolderHusky",
+ "FolderHuskyOpen",
+ "FolderHook",
+ "FolderHookOpen",
+ "FolderHome",
+ "FolderHomeOpen",
+ "FolderHelper",
+ "FolderHelperOpen",
+ "FolderHelm",
+ "FolderHelmOpen",
+ "FolderGulp",
+ "FolderGulpOpen",
+ "FolderGuard",
+ "FolderGuardOpen",
+ "FolderGraphql",
+ "FolderGraphqlOpen",
+ "FolderGradle",
+ "FolderGradleOpen",
+ "FolderGodot",
+ "FolderGodotOpen",
+ "FolderGlobal",
+ "FolderGlobalOpen",
+ "FolderGitlab",
+ "FolderGitlabOpen",
+ "FolderGithub",
+ "FolderGithubOpen",
+ "FolderGitea",
+ "FolderGiteaOpen",
+ "FolderGit",
+ "FolderGitOpen",
+ "FolderGhWorkflows",
+ "FolderGhWorkflowsOpen",
+ "FolderGenerator",
+ "FolderGeneratorOpen",
+ "FolderGamemaker",
+ "FolderGamemakerOpen",
+ "FolderFunctions",
+ "FolderFunctionsOpen",
+ "FolderForgejo",
+ "FolderForgejoOpen",
+ "FolderFont",
+ "FolderFontOpen",
+ "FolderFlutter",
+ "FolderFlutterOpen",
+ "FolderFlow",
+ "FolderFlowOpen",
+ "FolderFirestore",
+ "FolderFirestoreOpen",
+ "FolderFirebase",
+ "FolderFirebaseOpen",
+ "FolderFavicon",
+ "FolderFaviconOpen",
+ "FolderFastlane",
+ "FolderFastlaneOpen",
+ "FolderExport",
+ "FolderExportOpen",
+ "FolderExpo",
+ "FolderExpoOpen",
+ "FolderExamples",
+ "FolderExamplesOpen",
+ "FolderEvent",
+ "FolderEventOpen",
+ "FolderError",
+ "FolderErrorOpen",
+ "FolderEnvironment",
+ "FolderEnvironmentOpen",
+ "FolderEnum",
+ "FolderEnumOpen",
+ "FolderElement",
+ "FolderElementOpen",
+ "FolderDump",
+ "FolderDumpOpen",
+ "FolderDrizzle",
+ "FolderDrizzleOpen",
+ "FolderDownload",
+ "FolderDownloadOpen",
+ "FolderDocs",
+ "FolderDocsOpen",
+ "FolderDocker",
+ "FolderDockerOpen",
+ "FolderDist",
+ "FolderDistOpen",
+ "FolderDirective",
+ "FolderDirectiveOpen",
+ "FolderDesktop",
+ "FolderDesktopOpen",
+ "FolderDelta",
+ "FolderDeltaOpen",
+ "FolderDecorators",
+ "FolderDecoratorsOpen",
+ "FolderDebug",
+ "FolderDebugOpen",
+ "FolderDatabase",
+ "FolderDatabaseOpen",
+ "FolderDart",
+ "FolderDartOpen",
+ "FolderCypress",
+ "FolderCypressOpen",
+ "FolderCustom",
+ "FolderCustomOpen",
+ "FolderCursor_light",
+ "FolderCursor",
+ "FolderCursorOpen_light",
+ "FolderCursorOpen",
+ "FolderCss",
+ "FolderCssOpen",
+ "FolderCoverage",
+ "FolderCoverageOpen",
+ "FolderCore",
+ "FolderCoreOpen",
+ "FolderController",
+ "FolderControllerOpen",
+ "FolderContract",
+ "FolderContractOpen",
+ "FolderContext",
+ "FolderContextOpen",
+ "FolderContent",
+ "FolderContentOpen",
+ "FolderContainer",
+ "FolderContainerOpen",
+ "FolderConstant",
+ "FolderConstantOpen",
+ "FolderConsole",
+ "FolderConsoleOpen",
+ "FolderConnection",
+ "FolderConnectionOpen",
+ "FolderConfig",
+ "FolderConfigOpen",
+ "FolderComponents",
+ "FolderComponentsOpen",
+ "FolderCommand",
+ "FolderCommandOpen",
+ "FolderCobol",
+ "FolderCobolOpen",
+ "FolderCluster",
+ "FolderClusterOpen",
+ "FolderCloudflare",
+ "FolderCloudflareOpen",
+ "FolderCloudFunctions",
+ "FolderCloudFunctionsOpen",
+ "FolderCline",
+ "FolderClineOpen",
+ "FolderClient",
+ "FolderClientOpen",
+ "FolderClaude",
+ "FolderClaudeOpen",
+ "FolderClass",
+ "FolderClassOpen",
+ "FolderCircleci",
+ "FolderCircleciOpen",
+ "FolderCi",
+ "FolderCiOpen",
+ "FolderChangesets",
+ "FolderChangesetsOpen",
+ "FolderCart",
+ "FolderCartOpen",
+ "FolderBuildkite",
+ "FolderBuildkiteOpen",
+ "FolderBower",
+ "FolderBowerOpen",
+ "FolderBloc",
+ "FolderBlocOpen",
+ "FolderBlender",
+ "FolderBlenderOpen",
+ "FolderBicep",
+ "FolderBicepOpen",
+ "FolderBibliography",
+ "FolderBibliographyOpen",
+ "FolderBenchmark",
+ "FolderBenchmarkOpen",
+ "FolderBatch",
+ "FolderBatchOpen",
+ "FolderBase",
+ "FolderBaseOpen",
+ "FolderBackup",
+ "FolderBackupOpen",
+ "FolderAzurePipelines",
+ "FolderAzurePipelinesOpen",
+ "FolderAws",
+ "FolderAwsOpen",
+ "FolderAurelia",
+ "FolderAureliaOpen",
+ "FolderAudio",
+ "FolderAudioOpen",
+ "FolderAttachment",
+ "FolderAttachmentOpen",
+ "FolderAtom",
+ "FolderAtomOpen",
+ "FolderAstro",
+ "FolderAstroOpen",
+ "FolderArchive",
+ "FolderArchiveOpen",
+ "FolderApp",
+ "FolderAppOpen",
+ "FolderApollo",
+ "FolderApolloOpen",
+ "FolderApi",
+ "FolderApiOpen",
+ "FolderAnsible",
+ "FolderAnsibleOpen",
+ "FolderAnimation",
+ "FolderAnimationOpen",
+ "FolderAngular",
+ "FolderAngularOpen",
+ "FolderAndroid",
+ "FolderAndroidOpen",
+ "FolderAdmin",
+ "FolderAdminOpen",
+ "Flow",
+ "Flash",
+ "Firebase",
+ "Figma",
+ "Favicon",
+ "Fastlane",
+ "Exe",
+ "Excalidraw",
+ "Eslint",
+ "Esbuild",
+ "Erlang",
+ "Epub",
+ "Ember",
+ "Email",
+ "Elm",
+ "Elixir",
+ "Ejs",
+ "Editorconfig",
+ "Edge",
+ "Dune",
+ "Duc",
+ "Drone_light",
+ "Drone",
+ "Drizzle",
+ "Drawio",
+ "Dotjs",
+ "Document",
+ "DoctexInstaller",
+ "Docker",
+ "Dll",
+ "Django",
+ "Disc",
+ "Dinophp",
+ "Diff",
+ "Dhall",
+ "DependenciesUpdate",
+ "Dependabot",
+ "Deno_light",
+ "Deno",
+ "Denizenscript",
+ "Deepsource",
+ "Database",
+ "Dart_generated",
+ "Dart",
+ "D",
+ "Cypress",
+ "Cursor_light",
+ "Cursor",
+ "Cuda",
+ "Cucumber",
+ "Css",
+ "CssMap",
+ "Csharp",
+ "Crystal_light",
+ "Crystal",
+ "Credits",
+ "Craco",
+ "Cpp",
+ "Copilot_light",
+ "Copilot",
+ "Controller",
+ "Contributing",
+ "Context",
+ "Contentlayer",
+ "Console",
+ "Conduct",
+ "Concourse",
+ "Commitlint",
+ "Commitizen",
+ "Command",
+ "Coloredpetrinets",
+ "Coldfusion",
+ "Coffee",
+ "CoderabbitAi",
+ "Codeowners",
+ "Codecov",
+ "CodeClimate_light",
+ "CodeClimate",
+ "Coconut",
+ "Cobol",
+ "Coala",
+ "Cmake",
+ "Cloudfoundry",
+ "Clojure",
+ "Cline",
+ "Claude",
+ "Clangd",
+ "Citation",
+ "Circleci_light",
+ "Circleci",
+ "Chrome",
+ "Chess_light",
+ "Chess",
+ "Changelog",
+ "Certificate",
+ "Cds",
+ "Cbx",
+ "Capnp",
+ "Capacitor",
+ "Cake",
+ "Cairo",
+ "Cadence",
+ "Caddy",
+ "Cabal",
+ "C3",
+ "C",
+ "Bun_light",
+ "Bun",
+ "Buildkite",
+ "Bucklescript",
+ "Buck",
+ "Bruno",
+ "Browserlist_light",
+ "Browserlist",
+ "Brainfuck",
+ "Bower",
+ "Blitz",
+ "Blink_light",
+ "Blink",
+ "Blender",
+ "Bithound",
+ "Bitbucket",
+ "Biome",
+ "Bicep",
+ "BibtexStyle",
+ "Bibliography",
+ "BenchTs",
+ "BenchJsx",
+ "BenchJs",
+ "Beancount",
+ "Bbx",
+ "Bazel",
+ "Ballerina",
+ "Babel",
+ "Azure",
+ "AzurePipelines",
+ "Autoit",
+ "Autohotkey",
+ "Auto_light",
+ "Auto",
+ "Authors",
+ "Aurelia",
+ "Audio",
+ "Astyle",
+ "Astro",
+ "AstroConfig",
+ "Assembly",
+ "Asciidoc",
+ "Arduino",
+ "Architecture",
+ "Appveyor",
+ "AppsScript",
+ "Applescript",
+ "Apollo",
+ "Apiblueprint",
+ "Antlr",
+ "Angular",
+ "Android",
+ "Amplify",
+ "Advpl",
+ "Adonis",
+ "AdobeSwc",
+ "AdobePhotoshop_light",
+ "AdobePhotoshop",
+ "AdobeIllustrator_light",
+ "AdobeIllustrator",
+ "Ada",
+ "Actionscript",
+ "Abc",
+ "Abap",
+ "3d",
+] as const
+
+export type IconName = (typeof iconNames)[number]
diff --git a/packages/app/src/ui/icon-button.tsx b/packages/app/src/ui/icon-button.tsx
new file mode 100644
index 000000000..7e9e3e6e2
--- /dev/null
+++ b/packages/app/src/ui/icon-button.tsx
@@ -0,0 +1,38 @@
+import { Button as KobalteButton } from "@kobalte/core/button"
+import { splitProps } from "solid-js"
+import type { ComponentProps, JSX } from "solid-js"
+
+export interface IconButtonProps extends ComponentProps {
+ variant?: "primary" | "secondary" | "outline" | "ghost"
+ size?: "xs" | "sm" | "md" | "lg"
+ children: JSX.Element
+}
+
+export function IconButton(props: IconButtonProps) {
+ const [local, others] = splitProps(props, ["variant", "size", "class", "classList"])
+ return (
+
+ )
+}
diff --git a/packages/app/src/ui/icon.tsx b/packages/app/src/ui/icon.tsx
new file mode 100644
index 000000000..0bbd17f5d
--- /dev/null
+++ b/packages/app/src/ui/icon.tsx
@@ -0,0 +1,149 @@
+import { splitProps, type ComponentProps } from "solid-js"
+
+export interface IconProps extends ComponentProps<"svg"> {
+ name: keyof typeof icons
+ size?: number
+}
+
+// prettier-ignore
+const icons = {
+ close: '',
+ menu: ' ',
+ "chevron-right": '',
+ "chevron-left": '',
+ "chevron-down": '',
+ "chevron-up": '',
+ "chevron-down-square": '',
+ "chevron-up-square": '',
+ "chevron-right-square": '',
+ "chevron-left-square": '',
+ settings: '',
+ globe: '',
+ github: '',
+ hammer: '',
+ "avatar-square": '',
+ slash: '',
+ robot: '',
+ cloud: '',
+ "file-text": '',
+ file: '',
+ "file-checkmark": '',
+ "file-code": '',
+ "file-important": '',
+ "file-minus": '',
+ "file-plus": '',
+ files: '',
+ "file-zip": '',
+ jpg: '',
+ pdf: '',
+ png: '',
+ gif: '',
+ archive: '',
+ sun: '',
+ moon: '',
+ monitor: '',
+ command: '',
+ link: '',
+ share: '',
+ branch: '',
+ logout: '',
+ login: '',
+ keys: '',
+ key: '',
+ info: '',
+ warning: '',
+ checkmark: '',
+ "checkmark-square": '',
+ plus: '',
+ minus: '',
+ undo: '',
+ merge: '',
+ redo: '',
+ refresh: '',
+ rotate: '',
+ "arrow-left": '',
+ "arrow-down": '',
+ "arrow-right": '',
+ "arrow-up": '',
+ enter: '',
+ trash: '',
+ package: '',
+ box: '',
+ lock: '',
+ unlocked: '',
+ activity: '',
+ asterisk: '',
+ bell: '',
+ "bell-off": '',
+ bolt: '',
+ bookmark: '',
+ brain: '',
+ browser: '',
+ "browser-cursor": '',
+ bug: '',
+ "carat-down": '',
+ "carat-left": '',
+ "carat-right": '',
+ "carat-up": '',
+ cards: '',
+ chart: '',
+ "check-circle": '',
+ checklist: '',
+ "checklist-cards": '',
+ lab: '',
+ circle: '',
+ "circle-dotted": '',
+ clipboard: '',
+ clock: '',
+ "close-circle": '',
+ terminal: '',
+ code: '',
+ components: '',
+ copy: '',
+ cpu: '',
+ dashboard: '',
+ transfer: '',
+ devices: '',
+ diamond: '',
+ dice: '',
+ discord: '',
+ dots: '',
+ expand: '',
+ droplet: '',
+ "chevron-double-down": '',
+ "chevron-double-left": '',
+ "chevron-double-right": '',
+ "chevron-double-up": '',
+ "speech-bubble": '',
+ message: '',
+ annotation: '',
+ square: '',
+ "pull-request": '',
+ pencil: '',
+ sparkles: '',
+ photo: '',
+ columns: '',
+ "open-pane": '',
+ "close-pane": '',
+ } as const
+
+export function Icon(props: IconProps) {
+ const [local, others] = splitProps(props, ["name", "size", "class", "classList"])
+ const size = local.size ?? 24
+ return (
+
+ )
+}
diff --git a/packages/app/src/ui/index.ts b/packages/app/src/ui/index.ts
new file mode 100644
index 000000000..d3f24a192
--- /dev/null
+++ b/packages/app/src/ui/index.ts
@@ -0,0 +1,13 @@
+export { Button, type ButtonProps } from "./button"
+export {
+ Collapsible,
+ type CollapsibleProps,
+ type CollapsibleTriggerProps,
+ type CollapsibleContentProps,
+} from "./collapsible"
+export { FileIcon, type FileIconProps } from "./file-icon"
+export { Icon, type IconProps } from "./icon"
+export { IconButton, type IconButtonProps } from "./icon-button"
+export { Link, type LinkProps } from "./link"
+export { Logo, type LogoProps } from "./logo"
+export { Tooltip, type TooltipProps } from "./tooltip"
diff --git a/packages/app/src/ui/link.tsx b/packages/app/src/ui/link.tsx
new file mode 100644
index 000000000..a75a059ec
--- /dev/null
+++ b/packages/app/src/ui/link.tsx
@@ -0,0 +1,15 @@
+import { A } from "@solidjs/router"
+import { splitProps } from "solid-js"
+import type { ComponentProps } from "solid-js"
+import { getButtonClasses } from "./button"
+
+export interface LinkProps extends ComponentProps {
+ variant?: "primary" | "secondary" | "outline" | "ghost"
+ size?: "sm" | "md" | "lg"
+}
+
+export function Link(props: LinkProps) {
+ const [local, others] = splitProps(props, ["variant", "size", "class"])
+ const classes = local.variant ? getButtonClasses(local.variant, local.size, local.class) : local.class
+ return
+}
diff --git a/packages/app/src/ui/logo.tsx b/packages/app/src/ui/logo.tsx
new file mode 100644
index 000000000..0bbaba835
--- /dev/null
+++ b/packages/app/src/ui/logo.tsx
@@ -0,0 +1,125 @@
+import type { ComponentProps } from "solid-js"
+
+export interface LogoProps extends ComponentProps<"svg"> {
+ variant?: "mark" | "full" | "ornate"
+ size?: number
+}
+
+export function Logo(props: LogoProps) {
+ const { variant = "mark", size = 64, ...others } = props
+
+ if (variant === "mark") {
+ return (
+
+
+
+
+ )
+ }
+
+ if (variant === "full") {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/packages/app/src/ui/tabs.tsx b/packages/app/src/ui/tabs.tsx
new file mode 100644
index 000000000..80a7d6a15
--- /dev/null
+++ b/packages/app/src/ui/tabs.tsx
@@ -0,0 +1,71 @@
+import { Tabs as KobalteTabs } from "@kobalte/core/tabs"
+import { splitProps } from "solid-js"
+import type { ComponentProps, ParentProps } from "solid-js"
+
+export interface TabsProps extends ComponentProps {}
+export interface TabsListProps extends ComponentProps {}
+export interface TabsTriggerProps extends ComponentProps {}
+export interface TabsContentProps extends ComponentProps {}
+
+function TabsRoot(props: TabsProps) {
+ return
+}
+
+function TabsList(props: TabsListProps) {
+ const [local, others] = splitProps(props, ["class"])
+ return (
+
+ )
+}
+
+function TabsTrigger(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+function TabsContent(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+export const Tabs = Object.assign(TabsRoot, {
+ List: TabsList,
+ Trigger: TabsTrigger,
+ Content: TabsContent,
+})
diff --git a/packages/app/src/ui/tooltip.tsx b/packages/app/src/ui/tooltip.tsx
new file mode 100644
index 000000000..f5884ca80
--- /dev/null
+++ b/packages/app/src/ui/tooltip.tsx
@@ -0,0 +1,56 @@
+import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip"
+import { children, createEffect, createSignal, splitProps } from "solid-js"
+import type { ComponentProps } from "solid-js"
+
+export interface TooltipProps extends ComponentProps {
+ value: string | (() => string)
+ class?: string
+}
+
+export function Tooltip(props: TooltipProps) {
+ const [open, setOpen] = createSignal(false)
+ const [local, others] = splitProps(props, ["class", "children"])
+
+ const c = children(() => local.children)
+
+ createEffect(() => {
+ const childElements = c()
+ if (childElements instanceof HTMLElement) {
+ childElements.addEventListener("focus", () => setOpen(true))
+ childElements.addEventListener("blur", () => setOpen(false))
+ } else if (Array.isArray(childElements)) {
+ for (const child of childElements) {
+ if (child instanceof HTMLElement) {
+ child.addEventListener("focus", () => setOpen(true))
+ child.addEventListener("blur", () => setOpen(false))
+ }
+ }
+ }
+ })
+
+ return (
+
+ {c()}
+
+
+ {typeof others.value === "function" ? others.value() : others.value}
+
+
+
+
+ )
+}
diff --git a/packages/app/src/utils/binary.ts b/packages/app/src/utils/binary.ts
new file mode 100644
index 000000000..3d8f61851
--- /dev/null
+++ b/packages/app/src/utils/binary.ts
@@ -0,0 +1,41 @@
+export namespace Binary {
+ export function search(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } {
+ let left = 0
+ let right = array.length - 1
+
+ while (left <= right) {
+ const mid = Math.floor((left + right) / 2)
+ const midId = compare(array[mid])
+
+ if (midId === id) {
+ return { found: true, index: mid }
+ } else if (midId < id) {
+ left = mid + 1
+ } else {
+ right = mid - 1
+ }
+ }
+
+ return { found: false, index: left }
+ }
+
+ export function insert(array: T[], item: T, compare: (item: T) => string): T[] {
+ const id = compare(item)
+ let left = 0
+ let right = array.length
+
+ while (left < right) {
+ const mid = Math.floor((left + right) / 2)
+ const midId = compare(array[mid])
+
+ if (midId < id) {
+ left = mid + 1
+ } else {
+ right = mid
+ }
+ }
+
+ array.splice(left, 0, item)
+ return array
+ }
+}
diff --git a/packages/app/src/utils/dom.ts b/packages/app/src/utils/dom.ts
new file mode 100644
index 000000000..4f3724c7c
--- /dev/null
+++ b/packages/app/src/utils/dom.ts
@@ -0,0 +1,51 @@
+export function getCharacterOffsetInLine(lineElement: Element, targetNode: Node, offset: number): number {
+ const r = document.createRange()
+ r.selectNodeContents(lineElement)
+ r.setEnd(targetNode, offset)
+ return r.toString().length
+}
+
+export function getNodeOffsetInLine(lineElement: Element, charIndex: number): { node: Node; offset: number } | null {
+ const walker = document.createTreeWalker(lineElement, NodeFilter.SHOW_TEXT, null)
+ let remaining = Math.max(0, charIndex)
+ let lastText: Node | null = null
+ let lastLen = 0
+ let node: Node | null
+ while ((node = walker.nextNode())) {
+ const len = node.textContent?.length || 0
+ lastText = node
+ lastLen = len
+ if (remaining <= len) return { node, offset: remaining }
+ remaining -= len
+ }
+ if (lastText) return { node: lastText, offset: lastLen }
+ if (lineElement.firstChild) return { node: lineElement.firstChild, offset: 0 }
+ return null
+}
+
+export function getSelectionInContainer(
+ container: HTMLElement,
+): { sl: number; sch: number; el: number; ech: number } | null {
+ const s = window.getSelection()
+ if (!s || s.rangeCount === 0) return null
+ const r = s.getRangeAt(0)
+ const sc = r.startContainer
+ const ec = r.endContainer
+ const getLineElement = (n: Node) =>
+ (n.nodeType === Node.TEXT_NODE ? (n.parentElement as Element) : (n as Element))?.closest(".line")
+ const sle = getLineElement(sc)
+ const ele = getLineElement(ec)
+ if (!sle || !ele) return null
+ if (!container.contains(sle as Node) || !container.contains(ele as Node)) return null
+ const cc = container.querySelector("code") as HTMLElement | null
+ if (!cc) return null
+ const lines = Array.from(cc.querySelectorAll(".line"))
+ const sli = lines.indexOf(sle as Element)
+ const eli = lines.indexOf(ele as Element)
+ if (sli === -1 || eli === -1) return null
+ const sl = sli + 1
+ const el = eli + 1
+ const sch = getCharacterOffsetInLine(sle as Element, sc, r.startOffset)
+ const ech = getCharacterOffsetInLine(ele as Element, ec, r.endOffset)
+ return { sl, sch, el, ech }
+}
diff --git a/packages/app/src/utils/index.ts b/packages/app/src/utils/index.ts
new file mode 100644
index 000000000..ae89e4417
--- /dev/null
+++ b/packages/app/src/utils/index.ts
@@ -0,0 +1,2 @@
+export * from "./path"
+export * from "./dom"
diff --git a/packages/app/src/utils/path.ts b/packages/app/src/utils/path.ts
new file mode 100644
index 000000000..d6a066e80
--- /dev/null
+++ b/packages/app/src/utils/path.ts
@@ -0,0 +1,9 @@
+export function getFilename(path: string) {
+ const parts = path.split("/")
+ return parts[parts.length - 1]
+}
+
+export function getFileExtension(path: string) {
+ const parts = path.split(".")
+ return parts[parts.length - 1]
+}
diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json
new file mode 100644
index 000000000..b0def7dab
--- /dev/null
+++ b/packages/app/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@tsconfig/bun/tsconfig.json",
+ "compilerOptions": {
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js",
+ "types": ["vite/client"],
+ "customConditions": ["development"],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts
new file mode 100644
index 000000000..e0a62f5f5
--- /dev/null
+++ b/packages/app/vite.config.ts
@@ -0,0 +1,32 @@
+import { defineConfig } from "vite"
+import solidPlugin from "vite-plugin-solid"
+import tailwindcss from "@tailwindcss/vite"
+import path from "path"
+import { iconsSpritesheet } from "vite-plugin-icons-spritesheet"
+import { generateThemeCSS } from "./scripts/vite-theme-plugin"
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "./src"),
+ },
+ },
+ plugins: [
+ generateThemeCSS(),
+ tailwindcss(),
+ solidPlugin(),
+ iconsSpritesheet({
+ withTypes: true,
+ inputDir: "src/assets/file-icons",
+ outputDir: "src/ui/file-icons",
+ formatter: "prettier",
+ }),
+ ],
+ server: {
+ host: "0.0.0.0",
+ port: 3000,
+ },
+ build: {
+ target: "esnext",
+ },
+})
diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts
index 40f52aa3a..8e142cf2b 100644
--- a/packages/opencode/src/file/index.ts
+++ b/packages/opencode/src/file/index.ts
@@ -105,7 +105,7 @@ export namespace File {
const untrackedFiles = untrackedOutput.trim().split("\n")
for (const filepath of untrackedFiles) {
try {
- const content = await Bun.file(path.join(Instance.worktree, filepath)).text()
+ const content = await Bun.file(path.join(Instance.directory, filepath)).text()
const lines = content.split("\n").length
changedFiles.push({
path: filepath,
@@ -140,7 +140,7 @@ export namespace File {
return changedFiles.map((x) => ({
...x,
- path: path.relative(Instance.directory, path.join(Instance.worktree, x.path)),
+ path: path.relative(Instance.directory, x.path),
}))
}
@@ -153,11 +153,13 @@ export namespace File {
.catch(() => "")
.then((x) => x.trim())
if (project.vcs === "git") {
- const diff = await $`git diff ${file}`.cwd(Instance.directory).quiet().nothrow().text()
+ let diff = await $`git diff ${file}`.cwd(Instance.directory).quiet().nothrow().text()
+ if (!diff.trim()) diff = await $`git diff --staged ${file}`.cwd(Instance.directory).quiet().nothrow().text()
if (diff.trim()) {
const original = await $`git show HEAD:${file}`.cwd(Instance.directory).quiet().nothrow().text()
const patch = structuredPatch(file, file, original, content, "old", "new", {
context: Infinity,
+ ignoreWhitespace: true,
})
const diff = formatPatch(patch)
return { content, patch, diff }
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index 19727e849..fd44b0fde 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -2,6 +2,7 @@ import { Log } from "../util/log"
import { Bus } from "../bus"
import { describeRoute, generateSpecs, validator, resolver, openAPIRouteHandler } from "hono-openapi"
import { Hono } from "hono"
+import { cors } from "hono/cors"
import { streamSSE } from "hono/streaming"
import { Session } from "../session"
import z from "zod/v4"
@@ -114,6 +115,7 @@ export namespace Server {
return next()
})
})
+ .use(cors())
.get(
"/doc",
openAPIRouteHandler(app, {