This commit is contained in:
2026-03-27 11:20:54 +09:00
commit bdb16d5935
94 changed files with 2842 additions and 0 deletions

24
.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

75
README.md Normal file
View File

@@ -0,0 +1,75 @@
# React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
## React Compiler
The React Compiler is enabled on this template. See [this documentation](https://react.dev/learn/react-compiler) for more information.
Note: This will impact Vite dev & build performances.
## Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
```js
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```

518
bun.lock Normal file
View File

@@ -0,0 +1,518 @@
{
"lockfileVersion": 1,
"configVersion": 1,
"workspaces": {
"": {
"name": "commit-it",
"dependencies": {
"@tailwindcss/vite": "^4.2.2",
"motion": "^12.38.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"tailwindcss": "^4.2.2",
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@eslint/js": "^9.39.4",
"@rolldown/plugin-babel": "^0.2.1",
"@types/babel__core": "^7.20.5",
"@types/node": "^24.12.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-react-compiler": "^1.0.0",
"daisyui": "^5.5.19",
"eslint": "^9.39.4",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^17.4.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.57.0",
"vite": "^8.0.1",
},
},
},
"packages": {
"@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="],
"@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="],
"@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@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-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="],
"@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="],
"@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="],
"@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="],
"@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="],
"@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="],
"@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
"@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="],
"@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="],
"@babel/helpers": ["@babel/helpers@7.29.2", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" } }, "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw=="],
"@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="],
"@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="],
"@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="],
"@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="],
"@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="],
"@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="],
"@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="],
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="],
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="],
"@eslint/config-array": ["@eslint/config-array@0.21.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" } }, "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw=="],
"@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="],
"@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="],
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.5", "", { "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" } }, "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg=="],
"@eslint/js": ["@eslint/js@9.39.4", "", {}, "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw=="],
"@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="],
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="],
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
"@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="],
"@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
"@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
"@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
"@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=="],
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="],
"@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="],
"@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.11", "", { "os": "android", "cpu": "arm64" }, "sha512-SJ+/g+xNnOh6NqYxD0V3uVN4W3VfnrGsC9/hoglicgTNfABFG9JjISvkkU0dNY84MNHLWyOgxP9v9Y9pX4S7+A=="],
"@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7WQgR8SfOPwmDZGFkThUvsmd/nwAWv91oCO4I5LS7RKrssPZmOt7jONN0cW17ydGC1n/+puol1IpoieKqQidmg=="],
"@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-39Ks6UvIHq4rEogIfQBoBRusj0Q0nPVWIvqmwBLaT6aqQGIakHdESBVOPRRLacy4WwUPIx4ZKzfZ9PMW+IeyUQ=="],
"@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jfsm0ZHfhiqrvWjJAmzsqiIFPz5e7mAoCOPBNTcNgkiid/LaFKiq92+0ojH+nmJmKYkre4t71BWXUZDNp7vsag=="],
"@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm" }, "sha512-zjQaUtSyq1nVe3nxmlSCuR96T1LPlpvmJ0SZy0WJFEsV4kFbXcq2u68L4E6O0XeFj4aex9bEauqjW8UQBeAvfQ=="],
"@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-WMW1yE6IOnehTcFE9eipFkm3XN63zypWlrJQ2iF7NrQ9b2LDRjumFoOGJE8RJJTJCTBAdmLMnJ8uVitACUUo1Q=="],
"@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-jfndI9tsfm4APzjNt6QdBkYwre5lRPUgHeDHoI7ydKUuJvz3lZeCfMsI56BZj+7BYqiKsJm7cfd/6KYV7ubrBg=="],
"@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ZlFgw46NOAGMgcdvdYwAGu2Q+SLFA9LzbJLW+iyMOJyhj5wk6P3KEE9Gct4xWwSzFoPI7JCdYmYMzVtlgQ+zfw=="],
"@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "s390x" }, "sha512-hIOYmuT6ofM4K04XAZd3OzMySEO4K0/nc9+jmNcxNAxRi6c5UWpqfw3KMFV4MVFWL+jQsSh+bGw2VqmaPMTLyw=="],
"@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "x64" }, "sha512-qXBQQO9OvkjjQPLdUVr7Nr2t3QTZI7s4KZtfw7HzBgjbmAPSFwSv4rmET9lLSgq3rH/ndA3ngv3Qb8l2njoPNA=="],
"@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.11", "", { "os": "linux", "cpu": "x64" }, "sha512-/tpFfoSTzUkH9LPY+cYbqZBDyyX62w5fICq9qzsHLL8uTI6BHip3Q9Uzft0wylk/i8OOwKik8OxW+QAhDmzwmg=="],
"@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.11", "", { "os": "none", "cpu": "arm64" }, "sha512-mcp3Rio2w72IvdZG0oQ4bM2c2oumtwHfUfKncUM6zGgz0KgPz4YmDPQfnXEiY5t3+KD/i8HG2rOB/LxdmieK2g=="],
"@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.11", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-LXk5Hii1Ph9asuGRjBuz8TUxdc1lWzB7nyfdoRgI0WGPZKmCxvlKk8KfYysqtr4MfGElu/f/pEQRh8fcEgkrWw=="],
"@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-dDwf5otnx0XgRY1yqxOC4ITizcdzS/8cQ3goOWv3jFAo4F+xQYni+hnMuO6+LssHHdJW7+OCVL3CoU4ycnh35Q=="],
"@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.11", "", { "os": "win32", "cpu": "x64" }, "sha512-LN4/skhSggybX71ews7dAj6r2geaMJfm3kMbK2KhFMg9B10AZXnKoLCVVgzhMHL0S+aKtr4p8QbAW8k+w95bAA=="],
"@rolldown/plugin-babel": ["@rolldown/plugin-babel@0.2.2", "", { "dependencies": { "picomatch": "^4.0.3" }, "peerDependencies": { "@babel/core": "^7.29.0 || ^8.0.0-rc.1", "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", "rolldown": "^1.0.0-rc.5", "vite": "^8.0.0" }, "optionalPeers": ["@babel/plugin-transform-runtime", "@babel/runtime", "vite"] }, "sha512-q9pE8+47bQNHb5eWVcE6oXppA+JTSwvnrhH53m0ZuHuK5MLvwsLoWrWzBTFQqQ06BVxz1gp0HblLsch8o6pvZw=="],
"@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.7", "", {}, "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA=="],
"@tailwindcss/node": ["@tailwindcss/node@4.2.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.2" } }, "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA=="],
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.2", "@tailwindcss/oxide-darwin-arm64": "4.2.2", "@tailwindcss/oxide-darwin-x64": "4.2.2", "@tailwindcss/oxide-freebsd-x64": "4.2.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", "@tailwindcss/oxide-linux-x64-musl": "4.2.2", "@tailwindcss/oxide-wasm32-wasi": "4.2.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg=="],
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.2", "", { "os": "android", "cpu": "arm64" }, "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg=="],
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg=="],
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw=="],
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ=="],
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2", "", { "os": "linux", "cpu": "arm" }, "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ=="],
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw=="],
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag=="],
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg=="],
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ=="],
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.2", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q=="],
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ=="],
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA=="],
"@tailwindcss/vite": ["@tailwindcss/vite@4.2.2", "", { "dependencies": { "@tailwindcss/node": "4.2.2", "@tailwindcss/oxide": "4.2.2", "tailwindcss": "4.2.2" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w=="],
"@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
"@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="],
"@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="],
"@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="],
"@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="],
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
"@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="],
"@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
"@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.57.2", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.57.2", "@typescript-eslint/type-utils": "8.57.2", "@typescript-eslint/utils": "8.57.2", "@typescript-eslint/visitor-keys": "8.57.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.57.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w=="],
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.57.2", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.57.2", "@typescript-eslint/types": "8.57.2", "@typescript-eslint/typescript-estree": "8.57.2", "@typescript-eslint/visitor-keys": "8.57.2", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA=="],
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.57.2", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.57.2", "@typescript-eslint/types": "^8.57.2", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw=="],
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.57.2", "", { "dependencies": { "@typescript-eslint/types": "8.57.2", "@typescript-eslint/visitor-keys": "8.57.2" } }, "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw=="],
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.57.2", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw=="],
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.57.2", "", { "dependencies": { "@typescript-eslint/types": "8.57.2", "@typescript-eslint/typescript-estree": "8.57.2", "@typescript-eslint/utils": "8.57.2", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg=="],
"@typescript-eslint/types": ["@typescript-eslint/types@8.57.2", "", {}, "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA=="],
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.57.2", "", { "dependencies": { "@typescript-eslint/project-service": "8.57.2", "@typescript-eslint/tsconfig-utils": "8.57.2", "@typescript-eslint/types": "8.57.2", "@typescript-eslint/visitor-keys": "8.57.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA=="],
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.57.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.57.2", "@typescript-eslint/types": "8.57.2", "@typescript-eslint/typescript-estree": "8.57.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg=="],
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.57.2", "", { "dependencies": { "@typescript-eslint/types": "8.57.2", "eslint-visitor-keys": "^5.0.0" } }, "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw=="],
"@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.1", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.7" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ=="],
"acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="],
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
"ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="],
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
"babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="],
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
"baseline-browser-mapping": ["baseline-browser-mapping@2.10.10", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ=="],
"brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
"browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="],
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
"caniuse-lite": ["caniuse-lite@1.0.30001781", "", {}, "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw=="],
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
"convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="],
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
"daisyui": ["daisyui@5.5.19", "", {}, "sha512-pbFAkl1VCEh/MPCeclKL61I/MqRIFFhNU7yiXoDDRapXN4/qNCoMxeCCswyxEEhqL5eiTTfwHvucFtOE71C9sA=="],
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
"deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
"electron-to-chromium": ["electron-to-chromium@1.5.322", "", {}, "sha512-vFU34OcrvMcH66T+dYC3G4nURmgfDVewMIu6Q2urXpumAPSMmzvcn04KVVV8Opikq8Vs5nUbO/8laNhNRqSzYw=="],
"enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="],
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
"eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="],
"eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="],
"eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.5.2", "", { "peerDependencies": { "eslint": "^9 || ^10" } }, "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA=="],
"eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
"eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
"espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="],
"esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="],
"esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
"estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
"esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
"file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
"flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
"flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="],
"framer-motion": ["framer-motion@12.38.0", "", { "dependencies": { "motion-dom": "^12.38.0", "motion-utils": "^12.36.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g=="],
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
"gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
"globals": ["globals@17.4.0", "", {}, "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw=="],
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
"hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="],
"hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="],
"ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
"import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
"js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
"jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="],
"json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
"json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
"json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
"json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
"levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
"lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="],
"lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="],
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="],
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="],
"lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="],
"lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="],
"lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="],
"lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="],
"lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="],
"lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="],
"lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="],
"lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="],
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
"minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="],
"motion": ["motion@12.38.0", "", { "dependencies": { "framer-motion": "^12.38.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w=="],
"motion-dom": ["motion-dom@12.38.0", "", { "dependencies": { "motion-utils": "^12.36.0" } }, "sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA=="],
"motion-utils": ["motion-utils@12.36.0", "", {}, "sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
"node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="],
"optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
"p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
"path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
"picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="],
"postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
"react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="],
"react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
"resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
"rolldown": ["rolldown@1.0.0-rc.11", "", { "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.11" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.11", "@rolldown/binding-darwin-arm64": "1.0.0-rc.11", "@rolldown/binding-darwin-x64": "1.0.0-rc.11", "@rolldown/binding-freebsd-x64": "1.0.0-rc.11", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.11", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.11", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.11", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.11", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.11", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.11", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.11" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-NRjoKMusSjfRbSYiH3VSumlkgFe7kYAa3pzVOsVYVFY3zb5d7nS+a3KGQ7hJKXuYWbzJKPVQ9Wxq2UvyK+ENpw=="],
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
"semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
"strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
"tailwindcss": ["tailwindcss@4.2.2", "", {}, "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="],
"tapable": ["tapable@2.3.2", "", {}, "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA=="],
"tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
"ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="],
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
"typescript-eslint": ["typescript-eslint@8.57.2", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.57.2", "@typescript-eslint/parser": "8.57.2", "@typescript-eslint/typescript-estree": "8.57.2", "@typescript-eslint/utils": "8.57.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A=="],
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
"update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="],
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
"vite": ["vite@8.0.2", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.3", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.11", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-1gFhNi+bHhRE/qKZOJXACm6tX4bA3Isy9KuKF15AgSRuRazNBOJfdDemPBU16/mpMxApDPrWvZ08DcLPEoRnuA=="],
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
"yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
"zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="],
"zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="],
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="],
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="],
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
"@typescript-eslint/typescript-estree/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
"@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
"rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.11", "", {}, "sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ=="],
"@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
"@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
}
}

23
eslint.config.js Normal file
View File

@@ -0,0 +1,23 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
])

14
index.html Normal file
View File

@@ -0,0 +1,14 @@
<!doctype html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="/src/index.css" rel="stylesheet">
<title>commit-it</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

38
package.json Normal file
View File

@@ -0,0 +1,38 @@
{
"name": "commit-it",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@tailwindcss/vite": "^4.2.2",
"motion": "^12.38.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"tailwindcss": "^4.2.2"
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@eslint/js": "^9.39.4",
"@rolldown/plugin-babel": "^0.2.1",
"@types/babel__core": "^7.20.5",
"@types/node": "^24.12.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-react-compiler": "^1.0.0",
"daisyui": "^5.5.19",
"eslint": "^9.39.4",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^17.4.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.57.0",
"vite": "^8.0.1"
}
}

BIN
public/1-кв.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

77
public/1c.svg Normal file
View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
xml:space="preserve"
width="489.7601"
height="238.85815"
viewBox="0 0 489.76011 238.85816"
sodipodi:docname="1C.svg"
inkscape:version="0.92.1 r15371"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18"><path
d="M 0,0 H 595.276 V 595.276 H 0 Z"
id="path16"
inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview4"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.682015"
inkscape:cx="211.29773"
inkscape:cy="30.022029"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g10" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="A9Rdfpkp1_1g2j1kf_6i8"
transform="matrix(1.3333333,0,0,-1.3333333,53.68649,897.18964)"><g
id="g12"
transform="matrix(5.8427196,0,0,5.8427196,-1583.8366,-2391.086)"><g
id="g14"
clip-path="url(#clipPath18)"><g
id="g20"
transform="translate(296.8092,497.8276)"><path
d="m 0,0 c -1.215,0.081 -2.616,0.294 -3.721,0.614 -0.207,0.06 -1.064,0.375 -1.282,0.475 -3.847,1.782 -6.527,5.672 -6.527,10.185 0,6.19 5.036,11.232 11.23,11.232 6.139,0 11.141,-4.956 11.227,-11.076 h 4.057 C 14.898,19.786 8.077,26.558 -0.3,26.558 c -8.427,0 -15.286,-6.855 -15.286,-15.284 0,-5.811 3.268,-10.865 8.053,-13.447 0.864,-0.457 2.104,-0.928 2.525,-1.057 1.364,-0.406 3.038,-0.676 4.528,-0.789 0.506,-0.038 2.273,-0.058 2.788,-0.06 h 27.938 v 4.041 H 2.355 C 1.984,-0.038 0.363,-0.024 0,0 m 2.355,6.345 v 0 c -0.295,0 -1.838,0.01 -2.123,0.034 -0.483,0.041 -1.183,0.113 -1.633,0.216 -0.508,0.136 -0.985,0.316 -1.2,0.434 -1.507,0.815 -2.534,2.409 -2.534,4.245 0,2.671 2.163,4.837 4.835,4.837 2.616,0 4.743,-2.081 4.828,-4.681 h 3.898 c -0.082,4.75 -3.954,8.578 -8.726,8.578 -4.825,0 -8.736,-3.91 -8.736,-8.734 0,-3.402 1.95,-6.34 4.79,-7.779 C -3.809,3.239 -2.987,2.971 -2.753,2.91 -1.951,2.699 -0.874,2.555 0,2.491 0.323,2.464 1.905,2.452 2.239,2.45 V 2.444 H 30.245 V 6.345 Z M -18.086,-4.064 h -4.084 v 26.561 h -5.968 v 4.085 h 10.052 z m -14.536,24.52 v -3.928 h 4.484 V -4.064 h 3.924 v 24.52 z"
style="fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path22"
inkscape:connector-curvature="0" /></g><g
id="g24"
transform="translate(319.8388,524.1243)"><path
d="m 0,0 c -1.471,0 -2.691,-1.173 -2.691,-2.645 0,-1.472 1.22,-2.692 2.691,-2.692 1.516,0 2.689,1.22 2.689,2.692 C 2.689,-1.173 1.516,0 0,0 m 0,-4.903 c -1.215,0 -2.262,0.955 -2.262,2.258 0,1.237 1.047,2.216 2.262,2.216 1.214,0 2.256,-0.979 2.256,-2.216 0,-1.303 -1.042,-2.258 -2.256,-2.258"
style="fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path26"
inkscape:connector-curvature="0" /></g><g
id="g28"
transform="translate(320.8634,520.7545)"><path
d="m 0,0 c 0,0.297 -0.044,0.573 -0.384,0.682 0.426,0.148 0.468,0.427 0.468,0.596 0,0.683 -0.62,0.77 -0.875,0.77 h -1.173 v -2.645 h 0.489 v 1.085 h 0.385 c 0.554,0 0.6,-0.255 0.6,-0.488 0,-0.451 0,-0.536 0.106,-0.597 h 0.49 C 0,-0.49 0.042,-0.407 0,0 m -0.898,0.874 h -0.577 v 0.833 h 0.494 c 0.342,0 0.574,-0.108 0.574,-0.429 0,-0.169 -0.083,-0.404 -0.491,-0.404"
style="fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path30"
inkscape:connector-curvature="0" /></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

144
public/1c_franch.svg Normal file
View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="800.000000pt"
height="457.000000pt"
viewBox="0 0 800.000000 457.000000"
preserveAspectRatio="xMidYMid meet"
id="svg48"
sodipodi:docname="1c_franch.svg"
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)">
<metadata
id="metadata54">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs52" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview50"
showgrid="false"
inkscape:zoom="0.8624493"
inkscape:cx="428.75749"
inkscape:cy="300.07294"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g923" />
<g
id="g923"
style="">
<path
d="m 99,41.7 v 21.8 h 31.2 31.3 L 161.8,204.2 162,345 H 183.5 205 V 182.5 20 H 152 99 Z"
id="path2"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 374.7,21.5 c -39.9,5.8 -70.4,21 -97.2,48.6 -23,23.7 -36,48.5 -43.2,81.9 -1.4,6.7 -1.8,13 -1.8,30.5 0,19.3 0.3,23.2 2.3,32.3 3.5,15.6 6.6,24.3 14.2,39.7 21.1,42.8 61.3,74.7 106.5,84.5 26.6,5.7 14.3,5.4 211.8,5.7 L 749,345.1 V 323.5 302 l -182.2,-0.3 c -200.1,-0.3 -185.7,0.1 -208.3,-6.2 -38.8,-10.9 -70.2,-43.8 -80.6,-84.4 -6.3,-24.6 -3.5,-55.1 7,-77.7 18.1,-38.5 51.9,-63.2 94.6,-69 47.5,-6.5 96.8,20 119.5,64.2 7,13.6 13,35.9 13,48 v 4.4 h 21.6 21.6 l -0.6,-7.8 C 551.1,132.5 537,99.9 510.4,71.1 493.1,52.5 467,36.1 441.6,28.1 c -20.9,-6.7 -48,-9.3 -66.9,-6.6 z"
id="path4"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 633.7,24 c -13.6,3.4 -21.6,13.6 -21.7,27.6 0,5.6 0.5,8.1 2.6,12.2 11,22.2 44.3,20.2 52,-3.1 2.1,-6.4 1.5,-16.6 -1.4,-22.2 C 659.7,27.7 645.4,21.1 633.7,24 Z m 15.8,5.9 c 9.2,4.1 13.9,11.5 14,21.7 0,6.1 -0.4,7.7 -3,12 -4.5,7.2 -10.9,10.8 -19.9,11.2 -6.6,0.3 -7.5,0.1 -12.6,-3 -16.4,-10 -15.8,-32.8 1.3,-41.3 6.2,-3.1 14.3,-3.3 20.2,-0.6 z"
id="path6"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="M 630,51.5 V 65 h 2.5 c 2.4,0 2.5,-0.3 2.5,-5.5 V 54 h 3.9 c 5,0 7.1,2.1 7.1,7.1 0,3.5 0.3,3.9 2.5,3.9 2.3,0 2.5,-0.4 2.5,-4.3 0,-2.3 -0.7,-5.3 -1.6,-6.5 -1.4,-2.1 -1.4,-2.4 0.6,-4.9 2.3,-3 2.1,-6.5 -0.7,-9.6 C 648,38.3 646,38 638.8,38 H 630 Z m 15.6,-8 c 1.2,1.8 1.1,2.4 -0.2,4.3 -1.2,1.7 -2.5,2.2 -6,2.2 H 635 v -4.6 -4.5 l 4.6,0.3 c 3.4,0.2 5,0.9 6,2.3 z"
id="path8"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 51,106 v 21 H 75 99 V 236 345 H 119.5 140 V 215 85 H 95.5 51 Z"
id="path10"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 374.6,92 c -34.4,7.3 -59.7,30.8 -70.2,65.5 -2.5,8.2 -2.8,10.4 -2.8,25 0,14.6 0.3,16.8 2.8,24.9 4.8,15.9 11.5,27.4 22.5,39 10.4,10.8 24,19.3 37.5,23.5 18.8,5.8 9.1,5.5 204.9,5.8 L 749,276.1 V 255.5 235 H 585.3 c -163,-0.1 -194.9,-0.6 -205.2,-3.4 -9.4,-2.6 -16.3,-6.6 -23.1,-13.5 -19.5,-19.9 -20.1,-49.8 -1.4,-70.1 9.5,-10.2 19.9,-15.4 33.7,-16.6 23.9,-2 46.1,13.6 53.1,37.5 0.9,3 1.6,7 1.6,8.8 v 3.3 h 20.6 20.7 l -0.6,-8.3 C 483.5,156.7 477,140.2 466.3,126.2 444.9,98.2 409,84.8 374.6,92 Z"
id="path12"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 523.3,371.2 c -3.9,1.3 -4.1,2.1 -0.9,5.3 5.8,5.8 19.4,5.8 25.2,0 3.2,-3.2 3,-3.9 -1.1,-5.4 -3.2,-1.1 -3.8,-1 -6.1,0.8 -3.4,2.6 -7.4,2.7 -10.7,0.1 -1.4,-1.1 -2.7,-2 -2.9,-1.9 -0.1,0.1 -1.8,0.6 -3.5,1.1 z"
id="path14"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 218,384.2 c 0,2.4 -0.4,2.8 -2.8,2.8 -5.3,0 -12.7,2.9 -15.9,6.2 -4.1,4.3 -5.3,7.6 -5.3,14.9 0,7.3 1.7,11.6 5.9,15.2 3.2,2.7 11.5,5.7 15.8,5.7 2,0 2.3,0.5 2.3,3.5 v 3.5 h 7 7 v -3.4 c 0,-3.3 0.1,-3.4 5.1,-4 8.8,-1.2 15.4,-5.7 17.9,-12.1 1.6,-4.2 1.5,-13.4 -0.3,-17.6 -0.8,-2 -2.8,-4.8 -4.3,-6.3 -3,-2.8 -10.8,-5.6 -15.6,-5.6 -2.4,0 -2.8,-0.4 -2.8,-2.8 0,-2.7 0,-2.7 -7,-2.7 -7,0 -7,0 -7,2.7 z m 1,23.8 v 10 h -2.6 c -3.9,0 -8.4,-5 -8.4,-9.5 0,-6.3 3.3,-10.4 8.3,-10.5 h 2.7 z m 20.4,-7.4 c 3.8,3.9 3.7,10.5 -0.3,14.5 -1.7,1.7 -4,2.9 -5.5,2.9 H 231 v -10 -10 h 2.9 c 1.7,0 3.8,1 5.5,2.6 z"
id="path16"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 148.1,383.1 c -17.1,3.2 -25.6,22.2 -17.9,40.2 5.1,11.8 20.9,18 32.6,12.7 l 4.2,-1.9 v -7.1 -7.2 l -3.5,2.2 c -4.4,2.7 -11.4,3 -15,0.6 -10.1,-6.6 -7.9,-23.5 3.5,-26.6 4.3,-1.2 9.2,0.1 12.8,3.4 l 2.3,2 -0.3,-7.8 -0.3,-7.9 -3.5,-1.2 c -5.4,-1.8 -10.1,-2.3 -14.9,-1.4 z"
id="path18"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 577.2,383.2 c -4.9,0.7 -11.2,3.2 -11.2,4.4 0,0.5 4,8.6 4.5,9.2 0.2,0.2 1.7,-0.4 3.4,-1.2 6.8,-3.5 14.7,-0.9 13.9,4.5 -0.4,3.1 -4.2,4.9 -10.6,4.9 h -5.3 l 0.3,4.7 0.3,4.8 6.6,0.5 c 9.4,0.7 12.6,4.3 7.9,9 -2.8,2.8 -7.7,2.5 -13.6,-0.6 -5.3,-2.8 -5.5,-2.8 -8.9,3.7 -1.3,2.4 -1.2,2.8 0.3,4.2 3.3,3 13.2,6.7 17.7,6.7 6.4,0 15,-3.5 17.9,-7.3 5,-6.5 4,-15.5 -2.1,-19.3 -1.5,-1 -2.9,-1.9 -3.1,-2 -0.2,-0.1 1.3,-1.8 3.4,-3.7 3.3,-3 3.7,-3.9 3.7,-8.1 0,-5.8 -2.4,-9.4 -8.4,-12.2 -5.5,-2.7 -9.9,-3.3 -16.7,-2.2 z"
id="path20"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 99,390 v 6 h 4 4 v 20 20 h 6.5 6.5 V 410 384 H 109.5 99 Z"
id="path22"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="M 262,409.9 V 436 h 7 7 v -8.5 -8.5 h 4.8 c 16.7,0 25.8,-12.5 19,-26 -3.7,-7.3 -6.8,-8.4 -23.5,-8.8 L 262,383.8 Z M 285.5,397 c 1.8,1.5 1.9,6 0.3,8.3 -0.8,1 -2.9,1.8 -5.3,2 l -4,0.2 -0.3,-6.4 -0.3,-6.4 4.1,0.6 c 2.2,0.3 4.7,1.1 5.5,1.7 z"
id="path24"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 307.5,408.7 c -4.8,13.7 -9,25.4 -9.3,26.1 -0.3,1 1.3,1.2 7.3,1 l 7.8,-0.3 1.5,-4.3 1.4,-4.2 h 8.8 8.8 l 1.4,4.2 1.3,4.3 7.7,0.3 7.7,0.3 -5.5,-15.8 c -3.1,-8.7 -7.2,-20.4 -9.1,-26.1 L 333.8,384 h -8.8 -8.7 z m 20.6,-2.2 c 1.4,4.6 2.4,8.7 2.1,9 -0.3,0.3 -3,0.5 -5.9,0.5 -6.2,0 -5.9,1.3 -2,-11.3 1.1,-3.7 2.4,-6.7 2.7,-6.7 0.3,0 1.7,3.8 3.1,8.5 z"
id="path26"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 356,410 v 26 h 7 7 V 425.5 415 h 9 9 v 10.5 10.5 h 7 7 v -26 -26 h -7 -7 v 9.5 9.6 l -8.7,-0.3 -8.8,-0.3 -0.3,-9.3 -0.3,-9.2 h -6.9 -7 z"
id="path28"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 408,395.2 c 0,12.3 0.8,14.8 5.3,18.2 2.3,1.7 4.6,2.2 12.8,2.4 l 9.9,0.4 v 9.9 9.9 h 7 7 v -26 -26 h -7 -6.9 l -0.3,10.2 -0.3,10.3 -4.5,0.3 c -7.3,0.5 -8.4,-1 -8.8,-11.7 l -0.4,-9.1 h -6.9 -6.9 z"
id="path30"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 471.5,385.2 c -0.3,0.7 -3.6,10.3 -7.4,21.3 -3.8,11 -7.7,22 -8.5,24.4 -0.9,2.4 -1.6,4.5 -1.6,4.8 0,0.2 3.5,0.3 7.7,0.1 l 7.6,-0.3 1.5,-4.3 1.4,-4.2 h 8.8 8.7 l 1.3,4.5 1.3,4.5 h 7.7 7.8 l -4.7,-13.3 c -2.5,-7.2 -6.6,-18.9 -9.1,-25.9 L 489.5,384 h -8.8 c -6.1,0 -8.9,0.4 -9.2,1.2 z m 12.6,21.3 c 1.5,4.6 2.4,8.7 2.1,9 -0.3,0.3 -3,0.5 -5.9,0.5 -6.2,0 -5.9,1.3 -2,-11.3 1.1,-3.7 2.3,-6.7 2.6,-6.7 0.4,0 1.8,3.8 3.2,8.5 z"
id="path32"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 511,410 v 26 h 7.3 7.2 l 9.5,-15.2 9.5,-15.1 0.5,14.9 0.5,14.9 6.8,0.3 6.7,0.3 V 410 383.9 l -7.2,0.3 -7.2,0.3 -9.5,15 -9.6,14.9 -0.3,-15.2 -0.3,-15.2 h -6.9 -7 z"
id="path34"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 609.5,385.3 c -0.3,0.7 -0.4,12.3 -0.3,25.7 l 0.3,24.5 7.1,0.3 7.1,0.3 9.4,-15 c 5.2,-8.3 9.7,-15 10.2,-15.1 0.4,0 0.7,6.7 0.7,15 v 15 h 6.5 6.5 v -26 -26 h -6.9 -6.8 l -9.2,14.5 c -5.1,7.9 -9.6,14.7 -10.2,15 -0.5,0.4 -0.9,-5.3 -0.9,-14.4 V 384 h -6.5 c -4.4,0 -6.7,0.4 -7,1.3 z"
id="path36"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 663.5,385.3 c -0.3,0.7 -0.4,12.3 -0.3,25.7 l 0.3,24.5 7.3,0.3 7.2,0.3 v -10.6 -10.6 l 8.8,0.3 8.7,0.3 0.3,10.3 0.3,10.2 h 7 6.9 l -0.2,-25.8 -0.3,-25.7 -6.7,-0.3 -6.7,-0.3 -0.3,9.3 -0.3,9.3 -8.7,0.3 -8.8,0.3 v -9.6 -9.5 h -7 c -4.8,0 -7.2,0.4 -7.5,1.3 z"
id="path38"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 717,410 v 26 h 7 7 l 0.2,-19.8 0.3,-19.7 8.3,-0.3 8.2,-0.3 V 390 384 H 732.5 717 Z"
id="path40"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 175.9,401.1 c -4.6,4.6 0.2,14.1 6.4,12.5 3.9,-0.9 5.7,-3.3 5.7,-7.6 0,-2.9 -0.6,-4.3 -2.2,-5.4 -3.1,-2.2 -7.4,-2 -9.9,0.5 z"
id="path42"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
<path
d="m 176.6,424.1 c -3.6,2.8 -3.6,8.1 0,11.4 3.3,3 5.3,3.1 8.8,0.4 2,-1.6 2.6,-2.9 2.6,-5.9 0,-3 -0.6,-4.3 -2.6,-5.9 -1.5,-1.2 -3.4,-2.1 -4.4,-2.1 -1,0 -2.9,0.9 -4.4,2.1 z"
id="path44"
style="stroke:none;stroke-width:0.1;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
public/2-юр.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

BIN
public/3-сб.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
public/4-ик.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

BIN
public/5-то.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

BIN
public/6-ас.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

4
public/address-bar.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

65
public/astralinux.svg Normal file
View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 253.8 82.8" style="enable-background:new 0 0 253.8 82.8;" xml:space="preserve">
<g>
<path d="M14.3,62.3h3.6l2.2-8.4h9.2l2.4,8.4h3.6L26.9,33h-4.3L14.3,62.3z M24.7,35.4L28.5,51h-7.7L24.7,35.4L24.7,35.4z"/>
<path d="M37.7,53c0,6.3,3.1,10,8.7,10c5.6,0,9-2.8,9-8.3c0-3.9-1.9-6.6-6.6-8.4l-4.7-1.7c-1.9-0.7-2.6-1.9-2.6-4.6
c0-2.4,1.2-4.6,4.8-4.6c3.3,0,4.8,2.1,4.8,5.4h3.3c-0.2-5.4-3.3-8.3-8.3-8.3c-4.8,0-8,2.9-8,7.6c0,4.6,2,6.7,4.7,7.7l4.3,1.6
c3,1.1,4.8,2.1,4.8,5.9c0,3.5-2.3,4.9-5.6,4.9c-4.3,0-5.5-2.7-5.5-7l0,0H37.7z"/>
<polygon points="75.6,33 57.2,33 57.2,36 64.8,36 64.8,62.3 68,62.3 68,36 75.6,36 "/>
<path d="M91.4,47.8L91.4,47.8c3.4-0.6,5.3-3.5,5.3-6.8c0-5.5-3.4-8-8.5-8h-8.9v29.3h3.3V49.4h5.3c3.6,0,5.4,2.2,5.4,6.1
c0,3.2,0.3,4.9,0.9,6.8h3.3v-0.7c-0.4-0.9-1-1.1-1-7.2C96.4,50.9,94.5,48.2,91.4,47.8z M82.5,46.5V36H88c2.9,0,5.3,0.9,5.3,5.2
c0,4.3-2.9,5.4-5.1,5.4H82.5z"/>
<path d="M109.1,33l-8.3,29.3h3.6l2.2-8.4h9.2l2.3,8.4h3.6L113.4,33H109.1z M107.3,51l3.9-15.6h0.1L115,51H107.3z"/>
<polygon points="137,33 137,62.3 152.2,62.3 152.2,59.4 140.3,59.4 140.3,33 "/>
<rect x="156.2" y="33" width="3.3" height="29.3"/>
<path d="M179,57l-8.3-24h-5.3v29.3h3.3V39c0-1.5,0-3-0.1-4.5h0.1c0.2,1.5,0.6,3,1.1,4.4l8.2,23.5h5.4V33H180V57
c0,1.1,0.1,2.2,0.1,3.3H180C179.6,58.9,179.4,58,179,57z"/>
<path d="M189.2,33v22.3c0,5.2,3.5,7.7,8.8,7.7c5.3,0,8.8-2.5,8.8-7.7V33h-3.3v21.1c0,2.3-0.3,6-5.5,6c-5.2,0-5.5-3.7-5.5-6V33
H189.2z"/>
<polygon points="214.6,62.3 220.9,50.1 227.2,62.3 230.9,62.3 222.9,47.3 230.7,33 227.1,33 221,44.5 214.8,33 211.2,33
219.1,47.3 211,62.3 "/>
<path d="M239.3,15.4H138.6c-0.9,0-1.7,0.7-1.7,1.6c0,0.9,0.7,1.7,1.6,1.7h100.8c6.2,0,11.2,5,11.2,11.2v0v34.6
c0,6.2-5,11.2-11.2,11.2h-61.9c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6h61.9c8,0,14.5-6.5,14.5-14.5V29.9
C253.8,21.9,247.3,15.4,239.3,15.4z"/>
<path d="M80.3,75.6H14.5c-6.2,0-11.2-5-11.2-11.2V29.9c0-6.2,5-11.2,11.2-11.2h100.9c0.9,0,1.7-0.8,1.6-1.7c0-0.9-0.8-1.6-1.7-1.6
H14.5C6.5,15.4,0,21.9,0,29.9v34.6c0,8,6.5,14.5,14.5,14.5c0,0,0,0,0,0h65.8c0.9,0,1.6-0.7,1.6-1.6C81.9,76.3,81.2,75.6,80.3,75.6z
"/>
<path d="M138.4,11.3l1.2-1.2L131,8.6l-3.3-6.9L126.9,0l-4.1,8.6l-8.6,1.5l6.2,6.7l-1.4,9.5l7.9-4.4l7.9,4.4l-1.4-9.5L138.4,11.3z
M133.5,24.3l-6.6-3.6l-6.6,3.6l1.2-7.9l-5.1-5.6l7.2-1.2l3.4-7.1l3.4,7.1l7.2,1.2l-5.1,5.6L133.5,24.3z"/>
<polygon points="127.9,11.4 131.7,17.5 131.5,16.1 132.7,14.8 131.1,11 133.1,14.4 135.9,11.3 129.8,10.2 126.9,4.2 124.1,10.2
117.9,11.3 122.3,16.1 122.1,17.8 124.4,21.1 125.5,20.5 121.5,12.3 126.7,19.8 126.9,19.7 128.7,20.7 124.7,11.9 131.6,22.3
132.5,22.8 132.3,21.8 "/>
<polygon points="121.3,22.8 123,21.9 121.8,19.5 "/>
<path d="M95.7,73.1c-0.4-0.5-1-0.8-1.8-1.1c-0.7-0.2-1.6-0.3-2.6-0.3h-3.4h-0.2v0.2v10.7v0.2h0.2h3.2c3.9,0,5.9-1.9,5.9-5.8
c0-0.8-0.1-1.6-0.3-2.3C96.5,74.1,96.2,73.5,95.7,73.1z M94.8,78.9c-0.1,0.5-0.4,0.9-0.7,1.2c-0.3,0.3-0.7,0.6-1.2,0.7
c-0.5,0.2-1.2,0.3-2,0.3h-1.4v-7.7h1.6c0.8,0,1.4,0.1,1.9,0.2c0.5,0.1,0.9,0.4,1.2,0.6c0.3,0.3,0.5,0.7,0.6,1.1
c0.1,0.5,0.2,1.1,0.2,1.8C95,77.8,95,78.4,94.8,78.9z"/>
<polygon points="101.6,71.7 101.4,71.7 101.4,71.9 101.4,82.6 101.4,82.8 101.6,82.8 107.9,82.8 108.2,82.8 108.2,82.6 108.2,81.3
108.2,81.1 107.9,81.1 103.2,81.1 103.2,77.9 107.5,77.9 107.7,77.9 107.7,77.7 107.7,76.4 107.7,76.2 107.5,76.2 103.2,76.2
103.2,73.4 107.9,73.4 108.2,73.4 108.2,73.2 108.2,71.9 108.2,71.7 107.9,71.7 "/>
<path d="M119.4,77.7c-0.2-0.3-0.5-0.5-0.8-0.7c-0.3-0.2-0.8-0.4-1.2-0.6l-0.4-0.2c-0.4-0.2-0.8-0.3-1.1-0.5
c-0.3-0.1-0.5-0.3-0.6-0.4c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.5,0.2-1.2,1.9-1.2c0.4,0,0.9,0,1.3,0.1
c0.4,0.1,0.8,0.2,1.1,0.3l0.3,0.1v-0.3v-1.3V72l-0.1-0.1c-0.3-0.1-0.7-0.2-1.1-0.3c-0.4-0.1-0.9-0.1-1.3-0.1
c-1.2,0-2.1,0.3-2.8,0.8c-0.7,0.5-1.1,1.3-1.1,2.2c0,0.4,0.1,0.8,0.2,1.1c0.1,0.3,0.3,0.6,0.5,0.9c0.2,0.2,0.5,0.5,0.8,0.6
c0.3,0.2,0.7,0.3,1.1,0.5l0.4,0.1c0.4,0.1,0.7,0.3,1,0.4c0.3,0.1,0.5,0.2,0.7,0.4c0.2,0.1,0.3,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.7
c0,0.5-0.2,0.9-0.5,1.1c-0.3,0.3-0.9,0.4-1.6,0.4c-0.3,0-0.5,0-0.8-0.1c-0.3,0-0.5-0.1-0.7-0.2c-0.2-0.1-0.4-0.1-0.6-0.2
c-0.2-0.1-0.3-0.2-0.5-0.2l-0.4-0.2v0.4v1.4v0.1l0.1,0.1c0.4,0.2,0.8,0.4,1.3,0.5c0.5,0.1,1,0.2,1.6,0.2c0.6,0,1.1-0.1,1.6-0.2
c0.5-0.1,0.9-0.4,1.2-0.6c0.3-0.3,0.6-0.6,0.8-1.1c0.2-0.4,0.3-0.9,0.3-1.4c0-0.4,0-0.7-0.1-1C119.8,78.3,119.6,78,119.4,77.7z"/>
<polygon points="127.7,76.9 132.8,72.1 133.2,71.7 132.6,71.7 130.7,71.7 126.1,76.2 126.1,71.9 126.1,71.7 125.9,71.7 124.5,71.7
124.3,71.7 124.3,71.9 124.3,82.6 124.3,82.8 124.5,82.8 125.9,82.8 126.1,82.8 126.1,82.6 126.1,77.8 130.8,82.8 130.9,82.8
131,82.8 132.9,82.8 133.5,82.8 133.1,82.4 "/>
<polygon points="135.9,73.4 139.2,73.4 139.2,82.8 141.1,82.8 141.1,73.4 144.4,73.4 144.4,71.7 135.9,71.7 "/>
<path d="M156.7,73c-0.4-0.5-1-0.9-1.7-1.1c-0.6-0.3-1.4-0.4-2.2-0.4c-0.8,0-1.5,0.1-2.2,0.4c-0.7,0.3-1.2,0.6-1.7,1.1
c-0.4,0.5-0.8,1.1-1,1.8c-0.2,0.7-0.3,1.5-0.3,2.4c0,0.9,0.1,1.7,0.3,2.4c0.2,0.7,0.6,1.3,1,1.8c0.4,0.5,1,0.9,1.7,1.1
c0.6,0.3,1.4,0.4,2.2,0.4c0.8,0,1.5-0.1,2.2-0.4c0.7-0.3,1.2-0.6,1.7-1.1c0.4-0.5,0.8-1.1,1-1.8c0.2-0.7,0.3-1.5,0.3-2.4
c0-0.9-0.1-1.7-0.3-2.4C157.5,74.1,157.2,73.5,156.7,73z M155.4,80.3c-0.6,0.7-1.4,1-2.5,1c-1.1,0-1.9-0.3-2.4-1
c-0.6-0.7-0.9-1.7-0.9-3c0-1.4,0.3-2.4,0.8-3.1c0.5-0.6,1.4-0.9,2.5-0.9c1.1,0,2,0.3,2.5,1c0.5,0.6,0.8,1.7,0.8,3.1
C156.2,78.6,155.9,79.6,155.4,80.3z"/>
<path d="M169,72.5c-0.7-0.6-1.7-0.8-3-0.8h-3.5v11.2h1.9v-3.9h1.5c1.4,0,2.5-0.3,3.1-0.9c0.7-0.6,1-1.5,1-2.7
C170,74,169.7,73.1,169,72.5z M168,76.1c-0.1,0.2-0.2,0.4-0.4,0.6c-0.2,0.2-0.4,0.3-0.7,0.3c-0.3,0.1-0.7,0.1-1.1,0.1h-1.5v-3.8
h1.5c0.4,0,0.8,0,1.1,0.1c0.3,0.1,0.5,0.2,0.7,0.3c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.5,0.1,0.9
C168.1,75.6,168.1,75.9,168,76.1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

5
public/burger-menu.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 18L20 18" stroke="#000000" stroke-width="2" stroke-linecap="round"/>
<path d="M4 12L20 12" stroke="#000000" stroke-width="2" stroke-linecap="round"/>
<path d="M4 6L20 6" stroke="#000000" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 353 B

9
public/buttons-menu.svg Normal file
View File

@@ -0,0 +1,9 @@
<svg width="104" height="36" viewBox="0 0 104 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="104" height="36" rx="18"/>
<circle cx="20" cy="18" r="9.5" stroke="#B7B7B7"/>
<path d="M24 19.6907L20 23M20 23L16 19.6907M20 23V13" stroke="#B7B7B7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M49.5186 11.5158L53.0371 8.49992M53.0371 8.49992L56.5557 11.5158M53.0371 8.49992V20.4629" stroke="#1E1E1E" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M51.225 13.426H49.5185H48C46.8954 13.426 46 14.3215 46 15.426V25.5001C46 26.6047 46.8954 27.5001 48 27.5001H58.0742C59.1788 27.5001 60.0742 26.6047 60.0742 25.5001V15.426C60.0742 14.3215 59.1788 13.426 58.0742 13.426H56.5556H54.7593" stroke="#1E1E1E" stroke-linecap="round"/>
<line x1="76.5742" y1="17.9736" x2="93.5742" y2="17.9736" stroke="#1E1E1E" stroke-linecap="round"/>
<line x1="85.0479" y1="26.5" x2="85.0479" y2="9.5" stroke="#1E1E1E" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 959 B

6
public/buttons-nav.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="64" height="36" viewBox="0 0 64 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="36" rx="18"/>
<path d="M16 25.5L10 18L16 10.5" stroke="#B7B7B7" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="32.5" y1="8.5" x2="32.5" y2="27.5" stroke="#D9D9D9" stroke-linecap="round"/>
<path d="M48 25.5L54 18L48 10.5" stroke="#B7B7B7" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 427 B

9
public/buttons-view.svg Normal file
View File

@@ -0,0 +1,9 @@
<svg width="74" height="36" viewBox="0 0 74 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="74" height="36" rx="18"/>
<rect x="10.5" y="8.5" width="27" height="19" rx="2.5" stroke="#1E1E1E"/>
<line x1="20.5" y1="8" x2="20.5" y2="28" stroke="#1E1E1E"/>
<line x1="13.5" y1="12.5" x2="17.5" y2="12.5" stroke="#1E1E1E" stroke-linecap="round"/>
<line x1="13.5" y1="15.5" x2="17.5" y2="15.5" stroke="#1E1E1E" stroke-linecap="round"/>
<line x1="13.5" y1="18.5" x2="17.5" y2="18.5" stroke="#1E1E1E" stroke-linecap="round"/>
<path d="M64 16L59 20L54 16" stroke="#1E1E1E" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 635 B

5
public/buttons.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="62" height="36" viewBox="0 0 62 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="18" r="5" fill="#FF0000"/>
<circle cx="31" cy="18" r="5" fill="#FFC400"/>
<circle cx="47" cy="18" r="5" fill="#63D219"/>
</svg>

After

Width:  |  Height:  |  Size: 244 B

5
public/csharp.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="29" height="33" viewBox="0 0 29 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1677 0L12.4724 0.97879L0 8.17975V24.5392L14.1677 32.719L28.3355 24.5392V8.17975L16.0085 1.06277L14.1677 0Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.2703 26.5215C8.67061 26.5215 4.1311 21.982 4.1311 16.3823C4.1311 10.7826 8.67061 6.24304 14.2703 6.24304C18.0173 6.24304 21.319 8.32694 23.0743 11.3497L19.0616 13.6678C18.116 11.9775 16.345 10.8539 14.2703 10.8539C11.2171 10.8539 8.74202 13.329 8.74202 16.3823C8.74202 19.4355 11.2171 21.9107 14.2703 21.9107C16.3314 21.9107 18.129 20.7828 19.0796 19.1106L23.0872 21.3924C21.3427 24.4559 18.0477 26.5215 14.2703 26.5215Z" fill="white"/>
<path d="M24.1862 15.8542L24.0095 16.7266H24.9796V17.5012H23.8628L23.5732 19.028H22.746L23.0393 17.5012H22.3098L22.024 19.028H21.2155L21.4938 17.5012H20.5988V16.7266H21.6404L21.8171 15.8542H20.8695V15.0683H21.9563L22.2458 13.5378H23.0694L22.7798 15.0683H23.5244L23.8177 13.5378H24.6262L24.3328 15.0683H25.2353V15.8542H24.1862ZM22.4564 16.7266H23.1934L23.3702 15.8542H22.6332L22.4564 16.7266Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/director.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

1
public/drweb.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 43.82 7.57"><path d="M13.80416.81818c2.13995 0 2.66171 1.5046 2.66171 2.66912 0 1.05128-.44626 2.62396-2.6617 2.62396H10.9008V.81818zm-.877 3.96946h.40816c.45367 0 .998-.13582.998-1.33068 0-1.22484-.50658-1.39136-.998-1.39136h-.40816zm5.74824-2.6386v.89959h.03033c.15099-.49883.5595-.99025 1.1945-.99025.09843 0 .21167.01517.3101.03775v1.58785c-.121-.03034-.25718-.06068-.393-.06068-.56726 0-1.02094.363-1.02094 1.05128v1.4365h-1.90535V2.14905zm1.53503 2.50627h1.64818v1.45946h-1.64818zm3.91749-.44964h.0303l.83926-3.37185h1.94345l.81668 3.37185h.03l.64276-3.37185h1.80728l-1.27035 5.2772h-2.17805l-.877-3.44769h-.03l-.8315 3.4477h-2.2232l-1.2326-5.2772h1.89793zM35.1699.8182v1.2474h-2.59327v.76412h2.48003v1.20932h-2.48003v.82444h2.64654v1.24778h-4.67254V.8182zm3.69958-.00002c1.65559 0 1.95792.88512 1.95792 1.37619 0 .60466-.41593 1.09643-1.0735 1.21708v.03034c.5288.07585 1.1945.42369 1.1945 1.25518 0 1.33844-1.51236 1.41429-2.18546 1.41429h-3.07692V.81818zm-1.26294 2.09444h.47625c.69532 0 .7634-.363.7634-.514 0-.21907-.15874-.50658-.7179-.50658h-.52175zm0 2.12443h.51364c.65052 0 .75671-.35525.75671-.54398 0-.53693-.62794-.53693-.80186-.53693h-.4685zM41.21545 2.133c0-.72356.5835-1.30282 1.30316-1.30282.71967 0 1.30316.57926 1.30316 1.30281s-.5835 1.30316-1.30316 1.30316c-.71966 0-1.30316-.57961-1.30316-1.30316m1.30316.8823c.4572 0 .83573-.3997.83573-.8823 0-.48225-.37853-.88194-.83573-.88194-.45755 0-.83608.3997-.83608.88194 0 .4826.37853.8823.83608.8823m.11924-1.46544c.16052 0 .42616.01834.42616.29916 0 .18344-.11889.26634-.23495.28786v.01059c.09877.0074.17392.09348.19755.1979l.07232.32773h-.42686l-.0374-.28045c-.01375-.09384-.08254-.11183-.12982-.11183h-.09595v.39228h-.40534V1.54985zm-.24518.48966h.09843c.04445 0 .16757 0 .16757-.12242 0-.115-.11325-.115-.15734-.115h-.10866zM5.03608 1.47636l1.55575.86925c.03845-.10548.05892-.2152.05892-.32915 0-.68262-.72038-1.23542-1.60726-1.23542-.8883 0-1.60796.5528-1.60796 1.23542 0 .11148.01975.21943.05503.3221zM7.7389 3.9925l1.2453.75-2.33328 2.82962zm.06518-.72204l-.1397-.62124 2.39818.70732-1.4873.79622.2046-.64664zm-.27947-1.02194l-.31644-.43885 2.1262-.6798-.52918 1.67427-.21872-.7708zm-.58533-.7785l-.4466-.47166.58595-.60008L6.43728 0h1.70145zM2.32361 3.9925l-1.2453.75 2.33362 2.82962zm-.06511-.72204l.1397-.62124L0 3.35654l1.48731.79622-.2046-.64664zm.2794-1.02194l.31643-.43885-2.12619-.6798.52916 1.67427.21872-.7708zm.58531-.7785l.44662-.47166-.58596-.60008L3.62522 0H1.92377z"/><path d="M4.4231 3.22523l.28716-.85126h.66145l.30375.85126h.01l.1771-.78422-.83115-.47379-.82727.47095.20814.78706z"/><path d="M7.28476 3.25182l-.86748-.4946-.31291.94898h-.774l-.2935-.871h-.0106l-.29315.871h-.77823l-.31326-.94827-.86678.49354s-.31609 1.1183.889 2.03694c.42263.32208.73801.53163 1.0213.6283l-.05222-.1591h.79551l-.05326.16156c.28292-.0949.59654-.30444 1.0167-.63076 1.19592-.92816.89288-2.03659.89288-2.03659M5.5184 5.4842h-.97613l-.10548-.31926h1.1871zm.19544-.59267H4.34648L4.241 4.57227h1.57797zm.19544-.59231h-1.7586l-.10548-.31926h1.9692z"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

1
public/favicon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
public/goal-BRVwp_WA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

21
public/goal.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 69 KiB

126
public/iPad-DqZn1B39.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.4 MiB

24
public/icons.svg Normal file
View File

@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="bluesky-icon" viewBox="0 0 16 17">
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
</symbol>
<symbol id="discord-icon" viewBox="0 0 20 19">
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
</symbol>
<symbol id="documentation-icon" viewBox="0 0 21 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
</symbol>
<symbol id="github-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
</symbol>
<symbol id="social-icon" viewBox="0 0 20 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
</symbol>
<symbol id="x-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
public/idea-BxLjsotP.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

21
public/idea.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 61 KiB

BIN
public/info-CE1fB6DT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

21
public/info.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 60 KiB

9
public/jkhsakha.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 183 KiB

10
public/js.svg Normal file
View File

@@ -0,0 +1,10 @@
<svg width="409" height="409" viewBox="0 0 409 409" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_5)">
<path d="M246.597 257.784C258.22 276.76 273.341 290.709 300.084 290.709C322.551 290.709 336.903 279.481 336.903 263.966C336.903 245.373 322.157 238.788 297.428 227.972L283.873 222.156C244.747 205.487 218.755 184.605 218.755 140.46C218.755 99.7954 249.739 68.839 298.161 68.839C332.635 68.839 357.418 80.8369 375.278 112.251L333.056 139.361C323.76 122.692 313.731 116.125 298.161 116.125C282.28 116.125 272.214 126.2 272.214 139.361C272.214 155.627 282.289 162.212 305.552 172.287L319.107 178.093C365.176 197.849 391.186 217.989 391.186 263.27C391.186 312.086 352.839 338.829 301.339 338.829C250.985 338.829 218.453 314.833 202.535 283.382L246.597 257.784ZM55.0609 262.482C63.5786 277.594 71.3268 290.37 89.9557 290.37C107.769 290.37 119.007 283.401 119.007 256.3V71.9346H173.227V257.033C173.227 313.176 140.31 338.728 92.2637 338.728C48.8513 338.728 23.7106 316.262 10.925 289.203L55.0609 262.482Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_1_5">
<rect width="409" height="409" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

23
public/kasperskylab.svg Normal file
View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.0"
width="1024"
height="233"
viewBox="-2.89248024 -2.89248024 448.70000048 102.20096848"
id="svg2628">
<defs
id="defs2630" />
<path
d="M 389.9707,77.93456 L 382.02636,62.04101 L 374.07226,77.93456 L 389.9707,77.93456 z M 211.8164,39.89746 L 195.92285,47.84178 L 211.8164,55.79101 L 211.8164,39.89746 z M 68.22266,57.82226 L 76.17188,73.71581 L 84.12598,57.82226 L 68.22266,57.82226 z M 431.75781,23.96483 C 429.10156,23.96483 426.51855,25.98632 426.51855,29.05761 C 426.51855,32.35351 429.1748,34.21875 431.75781,34.21875 C 434.63868,34.21875 437.10938,32.28027 437.10938,29.16991 C 437.10938,25.98632 434.52636,23.96483 431.79199,23.96483 L 431.75781,23.96483 z M 409.8584,40.21483 L 409.8584,34.0039 L 423.07129,34.0039 C 420.71289,31.79198 420.71289,28.833 420.71289,27.96875 C 420.71289,23.63281 423.82324,17.7539 431.68458,17.7539 C 439.16993,17.7539 442.91504,22.9541 442.91504,28.23241 C 442.91504,31.15722 441.49414,33.40331 439.99511,34.26268 L 442.19726,34.26268 L 442.19726,40.21483 L 409.8584,40.21483 z M 431.90918,61.05956 C 433.81348,61.05956 437.10938,59.63866 437.10938,55.89355 C 437.10938,53.68652 436.05958,52.33398 434.79004,51.54785 C 433.96485,51.02538 433.0664,50.76171 432.1289,50.68847 C 431.19629,50.61523 430.26368,50.80077 429.39941,51.21093 C 427.97851,51.88476 426.51855,53.30566 426.51855,55.93261 C 426.51855,59.49218 429.51173,61.05956 431.86524,61.05956 L 431.90918,61.05956 z M 442.19726,44.47265 L 442.19726,50.68847 L 439.95118,50.68847 C 441.98243,51.81152 442.91504,54.39452 442.91504,56.82616 C 442.91504,63.41796 437.74903,67.27538 431.79199,67.27538 C 424.98046,67.27538 420.71289,62.37303 420.71289,56.82616 C 420.71289,53.42285 422.3584,51.51366 423.63281,50.68847 L 421.42579,50.68847 L 421.42579,44.47265 L 442.19726,44.47265 z M 409.8584,77.93456 L 409.8584,71.71875 L 442.19726,71.71875 L 442.19726,77.93456 L 409.8584,77.93456"
id="path2524"
style="fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
d="M 275.43945,86.33788 L 280.07813,96.41601 C 302.09473,79.57518 306.14746,60.7666 291.8164,40.61035 C 280.46386,24.63866 292.95899,10.43456 296.71875,6.74316 L 288.29101,5.6843419e-14 C 282.7832,6.04491 268.33008,24.93652 280.9668,43.93553 C 293.21289,62.33886 291.94336,72.31445 275.43945,86.33788 z M 104.38965,86.33788 L 109.02832,96.41601 C 131.04493,79.57518 135.09765,60.7666 120.76172,40.61035 C 109.41406,24.63866 121.9043,10.43456 125.66406,6.74316 L 117.24121,5.6843419e-14 C 111.72852,6.04491 97.27539,24.93652 109.92188,43.93553 C 122.16309,62.33886 120.89356,72.31445 104.38965,86.33788 z M 395.9668,17.7539 L 382.02636,41.90428 L 368.07618,17.7539 L 356.72851,17.7539 L 382.02636,61.57226 L 407.32423,17.7539 L 395.9668,17.7539 z M 168.58399,21.16698 C 164.60938,18.833 159.74121,17.7539 153.26171,17.7539 L 139.05274,17.7539 L 139.05274,77.93456 L 150.41015,77.93456 L 150.41015,29.10643 L 153.26171,29.10643 C 161.12305,29.10643 166.51368,31.04491 166.51368,38.11035 C 166.51368,44.70702 160.01953,47.59765 152.49511,47.83202 C 152.26563,47.83691 151.4209,47.83691 150.85938,47.84178 L 150.85938,47.84178 L 158.40333,58.61816 C 162.13379,57.95898 165.4834,56.74803 168.28125,55.03417 C 168.48633,54.90233 168.6914,54.76073 168.89649,54.62402 C 174.60449,50.84961 177.87109,44.87303 177.87109,38.11035 C 177.87109,30.69823 174.57031,24.68261 168.58399,21.16698 z M 258.48633,54.62402 C 264.18945,50.84961 267.45605,44.87303 267.45605,38.11035 C 267.45605,30.69823 264.15528,24.68261 258.16406,21.16698 C 254.19923,18.833 249.32618,17.7539 242.84668,17.7539 L 228.6377,17.7539 L 228.6377,77.93456 L 239.99511,77.93456 L 239.99511,29.10643 L 242.84668,29.10643 C 250.70801,29.10643 256.10351,31.04491 256.10351,38.11035 C 256.10351,44.70702 249.60938,47.59765 242.08496,47.83202 C 241.8457,47.83691 241.01074,47.83691 240.44923,47.84178 L 240.44923,47.84178 L 261.51855,77.93456 L 274.80469,77.93456 L 258.48633,54.62402 z M 335.2002,47.84178 L 356.26953,17.7539 L 342.97851,17.7539 L 321.91406,47.84178 L 342.97851,77.93456 L 356.26953,77.93456 L 335.2002,47.84178 z M 321.45996,17.7539 L 310.10743,17.7539 L 310.10743,77.93456 L 321.45996,77.93456 L 321.45996,17.7539 z M 25.09766,47.84178 L 46.16699,17.7539 L 32.88086,17.7539 L 11.81153,47.84178 L 32.88086,77.93456 L 46.16699,77.93456 L 25.09766,47.84178 z M 11.35742,17.7539 L 0,17.7539 L 0,77.93456 L 11.35742,77.93456 L 11.35742,17.7539 z M 219.88281,29.10643 L 219.88281,17.7539 L 184.12109,17.7539 L 184.12109,77.93456 L 219.88281,77.93456 L 219.88281,66.58202 L 195.46875,66.58202 L 195.46875,29.10643 L 219.88281,29.10643 z M 105.3125,77.93456 L 93.95508,77.93456 L 76.17188,39.7998 L 58.39356,77.93456 L 47.03125,77.93456 L 76.17188,15.44921 L 105.3125,77.93456"
id="path2526"
style="fill-opacity:1;fill-rule:nonzero;stroke:none" />
</svg>
<!-- version: 20090314, original size: 442.91504 96.416008, border: 3% -->

After

Width:  |  Height:  |  Size: 5.1 KiB

9
public/logo-CVnLOkv3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 717 KiB

BIN
public/logo-commit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/money-DcU00l9G.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

21
public/money.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 68 KiB

9
public/python.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 127 KiB

9
public/rcit-BccMYqhE.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

9
public/safari-tab-1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 77 KiB

33
public/safari-tab-2.svg Normal file
View File

@@ -0,0 +1,33 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_558_1329)">
<path d="M5.67212 5.65595L6.57608 2.92065L9.17589 4.18679L5.67212 5.65595Z" fill="#115FF9"/>
<path d="M3.89302 9.67715L2.52576 7.24003L5.26706 6.08447L3.89347 9.67715H3.89302Z" fill="#115FF9"/>
<path d="M5.37624 13.9285L2.66577 12.916L3.90466 10.2317L5.37624 13.9285Z" fill="#115FF9"/>
<path d="M6.70085 17.1128L5.76062 14.3254L9.19021 15.7407L6.70085 17.1128Z" fill="#115FF9"/>
<path d="M9.11097 19.9998L5.91467 19.3206L6.67626 17.4866L9.11097 19.9998Z" fill="#115FF9"/>
<path d="M6.55046 2.55438L5.80627 0.72946L9.09635 0.00585938L6.55046 2.55438Z" fill="#115FF9"/>
<path d="M0.626135 13.6404L0.029541 10.4504L2.31301 12.9399L0.626135 13.6404Z" fill="#115FF9"/>
<path d="M0.0118408 9.71191L0.602633 6.43311L2.17573 7.21971L0.0118408 9.71191Z" fill="#115FF9"/>
<path d="M9.34953 4.00929L6.70923 2.72347L9.34953 0.0803223V4.00929Z" fill="#115FF9"/>
<path d="M9.34916 19.9134L6.82788 17.311L9.34924 15.9211L9.34916 19.9134Z" fill="#115FF9"/>
<path d="M6.477 17.1571L2.72599 17.0312L2.6283 13.1555L5.487 14.2225L6.477 17.1571Z" fill="#115FF9"/>
<path d="M5.70662 19.2307L2.99976 17.2786L6.46892 17.395L5.70662 19.2307Z" fill="#115FF9"/>
<path d="M2.48384 7.00084L2.70009 2.9929L6.35032 2.88184L5.38806 5.77208L2.48384 7.00084Z" fill="#115FF9"/>
<path d="M2.97102 2.74626L5.60066 0.825928L6.34191 2.64384L2.97102 2.74626Z" fill="#115FF9"/>
<path d="M9.34959 15.5511L5.65993 14.0284L4.03381 9.94332L5.55612 5.96256L9.34959 4.37036V15.5511Z" fill="#115FF9"/>
<path d="M2.4934 16.7319L0.711914 13.8609L2.40349 13.1584L2.4934 16.7319Z" fill="#115FF9"/>
<path d="M2.48069 12.7812L0 10.077L2.34231 7.37915L3.78464 9.94971L2.48069 12.7812Z" fill="#115FF9"/>
<path d="M2.25926 6.99777L0.68396 6.21013L2.45788 3.31763L2.25926 6.99777Z" fill="#115FF9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 12.3989V12.944L19.6825 8.27896C19.6532 8.1154 19.6238 7.94408 19.5871 7.78052L10.3906 12.3989Z" fill="#FF151C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 8.82402V11.5499L19.3887 7.02498C19.1558 6.23834 18.8326 5.48506 18.4265 4.78198L10.3906 8.82402Z" fill="#FF151C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 7.71797V8.21641L18.14 4.32233C18.0592 4.19769 17.9711 4.07309 17.8829 3.94849L10.3906 7.71797Z" fill="#F5F5F5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 4.37698V6.61218L17.2586 3.16202C16.7804 2.62467 16.2484 2.14416 15.672 1.729L10.3906 4.37698Z" fill="#115FF9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 0V2.93614L14.3718 0.93458C13.1244 0.320706 11.7659 0.00181075 10.3906 0Z" fill="#115FF9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3906 14.525L19.8221 9.78979V10.0001C19.8221 15.5063 15.5838 20.0001 10.3906 20.0001V14.525Z" fill="#009846"/>
</g>
<defs>
<clipPath id="clip0_558_1329">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

9
public/safari-tab-3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 728 KiB

5
public/safari-tab.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

46
public/safari-tabs.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 807 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
public/service-Bc6JVJNC.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

6
public/service.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="271" height="261" viewBox="0 0 271 261" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M198 0C202.418 0 206 3.58172 206 8V59C206 63.4183 202.418 67 198 67H8C3.58172 67 0 63.4183 0 59V8C7.08705e-07 3.58172 3.58172 4.0266e-08 8 0H198ZM32 27C28.134 27 25 30.134 25 34C25 37.866 28.134 41 32 41C35.866 41 39 37.866 39 34C39 30.134 35.866 27 32 27ZM56 27C52.134 27 49 30.134 49 34C49 37.866 52.134 41 56 41C59.866 41 63 37.866 63 34C63 30.134 59.866 27 56 27ZM80 27C76.134 27 73 30.134 73 34C73 37.866 76.134 41 80 41C83.866 41 87 37.866 87 34C87 30.134 83.866 27 80 27ZM139 28V40H181V28H139Z" fill="white"/>
<path d="M198 82C202.418 82 206 85.5817 206 90V141C206 145.418 202.418 149 198 149H8C3.58172 149 0 145.418 0 141V90C7.08705e-07 85.5817 3.58172 82 8 82H198ZM32 109C28.134 109 25 112.134 25 116C25 119.866 28.134 123 32 123C35.866 123 39 119.866 39 116C39 112.134 35.866 109 32 109ZM56 109C52.134 109 49 112.134 49 116C49 119.866 52.134 123 56 123C59.866 123 63 119.866 63 116C63 112.134 59.866 109 56 109ZM80 109C76.134 109 73 112.134 73 116C73 119.866 76.134 123 80 123C83.866 123 87 119.866 87 116C87 112.134 83.866 109 80 109ZM139 110V122H181V110H139Z" fill="white"/>
<path d="M171.133 179.389C169.889 180.733 169.716 182.75 170.714 184.286L175.076 191H139V203H162V219.043C162 219.984 162.332 220.895 162.938 221.616L169.98 230H8C3.58172 230 0 226.418 0 222V163H186.304L171.133 179.389ZM206 230H202L206 226V230ZM32 190C28.1341 190 25.0001 193.134 25 197C25 200.866 28.134 204 32 204C35.866 204 39 200.866 39 197C38.9999 193.134 35.8659 190 32 190ZM56 190C52.1341 190 49.0001 193.134 49 197C49 200.866 52.134 204 56 204C59.866 204 63 200.866 63 197C62.9999 193.134 59.8659 190 56 190ZM80 190C76.1341 190 73.0001 193.134 73 197C73 200.866 76.134 204 80 204C83.866 204 87 200.866 87 197C86.9999 193.134 83.8659 190 80 190ZM206 163.151L205.718 163H206V163.151Z" fill="white"/>
<path d="M226.38 163C228.435 163 230.156 164.557 230.36 166.602L231.441 177.412C234.346 178.258 237.096 179.465 239.641 180.981L248.189 173.987C249.78 172.686 252.098 172.802 253.551 174.255L259.745 180.449C261.198 181.902 261.314 184.22 260.013 185.811L252.764 194.669C254.083 197.115 255.124 199.734 255.844 202.483L267.398 203.64C269.443 203.844 271 205.565 271 207.62V216.38C271 218.435 269.443 220.156 267.398 220.36L255.556 221.544C254.791 224.141 253.738 226.614 252.433 228.926L260.013 238.189C261.314 239.78 261.198 242.098 259.745 243.551L253.551 249.745C252.098 251.198 249.78 251.314 248.189 250.013L238.926 242.433C236.614 243.738 234.141 244.791 231.544 245.556L230.36 257.398C230.156 259.443 228.435 261 226.38 261H217.62C215.565 261 213.844 259.443 213.64 257.398L212.483 245.844C209.735 245.124 207.116 244.083 204.67 242.764L195.81 250.013C194.22 251.314 191.902 251.198 190.449 249.745L184.255 243.551C182.802 242.098 182.686 239.78 183.987 238.189L190.981 229.641C189.465 227.096 188.258 224.346 187.412 221.441L176.602 220.36C174.557 220.156 173 218.435 173 216.38V207.62C173 205.565 174.557 203.844 176.602 203.64L187.128 202.586C187.92 199.525 189.11 196.624 190.64 193.941L183.987 185.811C182.686 184.22 182.802 181.902 184.255 180.449L190.449 174.255C191.902 172.802 194.22 172.686 195.81 173.987L203.941 180.64C206.624 179.11 209.525 177.92 212.586 177.128L213.64 166.602C213.844 164.557 215.565 163 217.62 163H226.38ZM222 194C212.059 194 204 202.059 204 212C204 221.941 212.059 230 222 230C231.941 230 240 221.941 240 212C240 202.059 231.941 194 222 194Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

35
public/tehnopark.svg Normal file
View File

@@ -0,0 +1,35 @@
<svg width="194" height="50" viewBox="0 0 194 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_642_806)">
<path d="M15.0312 14.14L17.4268 7.30176L24.3162 10.4671L15.0312 14.14Z" fill="black"/>
<path d="M10.3166 24.1926L6.69336 18.0998L13.9578 15.2109L10.3178 24.1926H10.3166Z" fill="black"/>
<path d="M14.2472 34.8211L7.06445 32.29L10.3475 25.5791L14.2472 34.8211Z" fill="black"/>
<path d="M17.7572 42.7819L15.2656 35.8135L24.354 39.3516L17.7572 42.7819Z" fill="black"/>
<path d="M24.144 49.9994L15.6738 48.3014L17.692 43.7163L24.144 49.9994Z" fill="black"/>
<path d="M17.3588 6.38595L15.3867 1.82365L24.1054 0.0146484L17.3588 6.38595Z" fill="black"/>
<path d="M1.6591 34.101L0.078125 26.126L6.12932 32.3497L1.6591 34.101Z" fill="black"/>
<path d="M0.03125 24.28L1.59685 16.083L5.76555 18.0495L0.03125 24.28Z" fill="black"/>
<path d="M24.7761 10.0231L17.7793 6.80855L24.7761 0.200684V10.0231Z" fill="black"/>
<path d="M24.7752 49.7833L18.0938 43.2774L24.7754 39.8027L24.7752 49.7833Z" fill="black"/>
<path d="M17.1639 42.8926L7.22373 42.5779L6.96484 32.8887L14.5404 35.5561L17.1639 42.8926Z" fill="black"/>
<path d="M15.1224 48.0767L7.94922 43.1963L17.1425 43.4874L15.1224 48.0767Z" fill="black"/>
<path d="M6.58223 17.5021L7.15528 7.48224L16.8284 7.20459L14.2784 14.4302L6.58223 17.5021Z" fill="black"/>
<path d="M7.87324 6.86576L14.8418 2.06494L16.8061 6.60973L7.87324 6.86576Z" fill="black"/>
<path d="M24.7763 38.8777L14.9987 35.071L10.6895 24.8582L14.7236 14.9063L24.7763 10.9258V38.8777Z" fill="black"/>
<path d="M6.60765 41.8296L1.88672 34.6522L6.36939 32.896L6.60765 41.8296Z" fill="black"/>
<path d="M6.57384 31.9528L0 25.1925L6.20711 18.4478L10.0293 24.8742L6.57384 31.9528Z" fill="black"/>
<path d="M5.98704 17.4943L1.8125 15.5252L6.51338 8.29395L5.98704 17.4943Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 30.9971V32.36L52.1588 20.6973C52.081 20.2884 52.0031 19.8601 51.9058 19.4512L27.5352 30.9971Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 22.0602V28.8749L51.3802 17.5626C50.7629 15.596 49.9065 13.7128 48.8303 11.9551L27.5352 22.0602Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 19.2948V20.5409L48.0711 10.8057C47.857 10.4941 47.6234 10.1826 47.3898 9.87109L27.5352 19.2948Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 10.9422V16.5302L45.7353 7.90482C44.468 6.56144 43.0582 5.36017 41.5308 4.32227L27.5352 10.9422Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 0V7.34034L38.0854 2.33645C34.7796 0.801764 31.1797 0.00452687 27.5352 0Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.5352 36.3126L52.5287 24.4746V25.0003C52.5287 38.7659 41.2972 50.0003 27.5352 50.0003V36.3126Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M62.4844 10.1264H75.546V11.353H69.6309V22.2597H68.3654V11.353H62.4844V10.1264ZM76.9856 22.2597V10.1264H87.6912V11.353H78.2303V15.383H87.4571V16.6097H78.2303V21.0489H87.7112V22.2756H76.9856V22.2597ZM101.146 10.1297L96.0457 15.2697L90.9454 10.1297H89.3491L94.9551 15.8347L88.5318 22.2597H90.2056L96.0448 16.4189L101.884 22.2597H103.557L97.1337 15.8347L102.817 10.1297H101.146ZM105 22.2597V10.1264H106.266V15.3639H117.013V10.1264H118.278V22.2597H117.013V16.633H106.266V22.2597H105ZM133.011 14.2181C133.023 13.5828 132.924 12.9504 132.719 12.3489C132.636 12.1418 132.51 11.9548 132.349 11.8003C132.187 11.6459 131.995 11.5275 131.785 11.4531C131.169 11.2551 130.523 11.1704 129.877 11.203H124.562C123.935 11.1819 123.308 11.2742 122.713 11.4755C122.272 11.6423 121.91 11.9698 121.701 12.3922C121.442 12.96 121.316 13.5792 121.331 14.203V18.078C121.323 18.5654 121.389 19.0511 121.526 19.5189C121.626 19.8646 121.822 20.1751 122.091 20.4147C122.375 20.6427 122.708 20.8026 123.064 20.8822C123.557 20.9862 124.06 21.0321 124.563 21.0189H129.878C130.541 21.0459 131.205 20.9672 131.844 20.7855C132.044 20.7191 132.228 20.6102 132.382 20.4664C132.537 20.3227 132.659 20.1473 132.739 19.9522C132.939 19.3566 133.032 18.7302 133.012 18.1022V14.2272L133.011 14.2181ZM134.261 18.093C134.27 18.8074 134.191 19.5202 134.027 20.2155C133.915 20.6985 133.657 21.135 133.288 21.4655C132.912 21.7795 132.464 21.9938 131.984 22.0889C131.297 22.2189 130.599 22.2776 129.901 22.2639H124.587C123.887 22.2736 123.188 22.2017 122.505 22.0497C121.997 21.9247 121.524 21.685 121.123 21.3489C120.756 21.003 120.487 20.5663 120.344 20.083C120.158 19.4446 120.073 18.781 120.094 18.1164V14.3389C120.083 13.6619 120.168 12.9868 120.344 12.3331C120.473 11.8359 120.728 11.3801 121.083 11.0089C121.468 10.6471 121.936 10.3863 122.446 10.2497C123.146 10.0787 123.866 10.0003 124.587 10.0164H129.9C130.738 9.98772 131.575 10.1065 132.372 10.3672C132.991 10.6035 133.493 11.0712 133.773 11.6714C134.124 12.5152 134.29 13.4246 134.26 14.338V18.093H134.261ZM136.304 22.2597V10.1264H149.58V22.2597H148.315V11.3922H137.567V22.2597H136.304ZM152.013 22.2597H150.612L156.899 10.1297H158.826L165.114 22.2597H163.654L162.097 19.2222H153.562L152.005 22.2597H152.013ZM154.251 17.9955H161.454L157.853 11.0055L154.251 17.9955ZM166.339 22.2397V10.1264H174.514C175.348 10.0945 176.18 10.22 176.967 10.4964C177.55 10.7142 178.034 11.1361 178.329 11.6839C178.647 12.3651 178.794 13.1137 178.758 13.8647C178.803 14.5788 178.655 15.2919 178.329 15.9289C178.037 16.4258 177.562 16.789 177.005 16.9414C176.194 17.162 175.354 17.2603 174.514 17.233H167.584V22.233L166.339 22.2397ZM167.589 16.0089H174.889C175.419 16.0219 175.948 15.9696 176.466 15.8531C176.635 15.8106 176.793 15.7332 176.931 15.6259C177.068 15.5185 177.182 15.3836 177.264 15.2297C177.443 14.7985 177.522 14.3326 177.497 13.8664C177.575 13.5223 177.564 13.1642 177.467 12.8251C177.37 12.4861 177.188 12.1771 176.94 11.9267C176.692 11.6763 176.384 11.4926 176.046 11.3926C175.708 11.2926 175.35 11.2796 175.005 11.3547H167.59V16.0097L167.589 16.0089ZM180.335 22.2589V10.1264H181.601V15.1264H183.625L191.859 10.1264H194L184.948 15.6556L193.922 22.2564H191.762L183.664 16.3572H181.6V22.2597L180.335 22.2589Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M73.9691 30.1614V33.8606H67.9932C67.7534 33.8855 67.511 33.8584 67.2825 33.7812C67.0541 33.704 66.845 33.5784 66.6694 33.4131C66.3608 33.0059 66.2088 32.5013 66.2412 31.9914C66.198 31.4918 66.3213 30.9919 66.5919 30.5698C66.7645 30.4071 66.9708 30.2843 67.1961 30.2103C67.4214 30.1363 67.6603 30.1128 67.8957 30.1414H73.9691V30.1614ZM76.8692 27.8639H67.6625C66.8802 27.8389 66.1004 27.9645 65.3656 28.2339C64.7359 28.4836 64.2128 28.9447 63.886 29.5381C63.4972 30.3436 63.3165 31.2338 63.3603 32.1273C63.3532 32.7063 63.4797 33.2793 63.7302 33.8014C63.9611 34.2986 64.3005 34.7376 64.7232 35.0864C65.1023 35.407 65.5475 35.6398 66.0271 35.7681L62.4863 39.9948H66.2628L69.1629 36.1614H73.9708V39.9948H76.8709V27.8614L76.8692 27.8639ZM78.7188 39.9939V27.8614H81.5997V32.3789H83.3143L88.6087 27.8614H92.9493L85.8053 33.5464L93.22 39.9914H88.9794L83.3734 34.7931H81.6022V39.9948H78.7213L78.7188 39.9939ZM104.975 27.8614H108.42L102.775 36.9739C102.308 37.6939 101.942 38.2398 101.646 38.6289C101.4 38.9578 101.105 39.2467 100.771 39.4856C100.477 39.6826 100.146 39.8153 99.7975 39.8747C99.3271 39.9456 98.8518 39.9782 98.3762 39.9723H97.2473V37.6748H97.8305C98.9402 37.6748 99.5042 37.4248 99.5042 36.9348C99.4818 36.7313 99.4081 36.5369 99.2901 36.3698L93.684 27.8223H97.1098L101.159 34.6556L104.974 27.8606L104.975 27.8614ZM109.474 27.8614H122.554V30.2781H117.435V39.9948H114.534V30.2756H109.474V27.8589V27.8614ZM139.529 39.9948V27.8614H134.663L127.265 37.5781H126.856V27.8614H123.956V39.9948H128.939L136.219 30.2789H136.628V39.9948H139.529ZM152.512 30.1614V33.8606H146.536C146.297 33.8849 146.055 33.8574 145.827 33.7799C145.599 33.7024 145.39 33.5767 145.215 33.4114C144.906 33.0043 144.754 32.4997 144.787 31.9898C144.743 31.4901 144.867 30.9903 145.137 30.5681C145.31 30.4054 145.516 30.2827 145.742 30.2086C145.967 30.1346 146.206 30.1111 146.441 30.1398H152.515L152.512 30.1614ZM155.412 27.8639H146.205C145.423 27.8389 144.643 27.9645 143.909 28.2339C143.279 28.4836 142.756 28.9447 142.429 29.5381C142.04 30.3436 141.859 31.2338 141.903 32.1273C141.896 32.7063 142.023 33.2793 142.273 33.8014C142.504 34.2985 142.843 34.7376 143.266 35.0864C143.645 35.407 144.091 35.6398 144.57 35.7681L141.028 39.9931H144.804L147.704 36.1598H152.512V39.9931H155.412V27.8614V27.8639Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_642_806">
<rect width="194" height="50" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

3
public/tesaldan.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg width="367" height="29" viewBox="0 0 367 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.000104383 24.24V1.91999H11.7001L18.5401 14.46L25.5001 1.91999H36.7201V24.24H28.2901V10.32L20.4601 24.24H16.1101L8.3101 10.32V24.24H0.000104383ZM67.8137 1.91999L56.4137 19.17C53.8637 23.01 52.8437 24.24 47.8937 24.24H43.4237V18.27H47.3537C47.9537 18.27 48.1337 18.09 48.1337 17.76V17.73C48.1337 17.46 48.0137 17.13 47.7437 16.8L36.7637 1.91999H46.6337L53.2037 11.61L59.1437 1.91999H67.8137ZM67.9386 24.24V1.91999H97.8786V24.24H89.3886V7.85999H76.4586V24.24H67.9386ZM117.517 24.24V8.00999H107.887V1.91999H135.667V8.00999H126.037V24.24H117.517ZM168.688 12.57V13.44C168.688 17.67 166.618 24.66 152.908 24.66H151.768C138.268 24.66 136.198 18.6 136.198 15.78V15.33H144.988C145.138 16.05 146.008 18.84 152.458 18.84C156.868 18.84 158.818 17.31 159.598 15.51H148.108V10.26H159.598C158.788 8.57999 156.898 7.28999 152.398 7.28999C146.158 7.28999 145.258 9.71999 145.018 10.56H136.228V10.23C136.228 7.46999 138.178 1.49999 151.768 1.49999H152.908C166.858 1.49999 168.688 8.30999 168.688 12.57ZM186.331 24.66H185.161C171.451 24.66 169.381 17.67 169.381 13.44V12.57C169.381 8.30999 171.241 1.49999 185.161 1.49999H186.331C199.891 1.49999 201.871 7.64999 201.871 10.53V10.92H193.021C192.841 10.32 192.151 7.49999 185.671 7.49999C179.521 7.49999 178.201 10.23 178.201 12.72V13.08C178.201 15.48 179.701 18.63 185.701 18.63C192.271 18.63 192.931 15.48 193.051 14.97H201.871V15.45C201.871 18.36 199.771 24.66 186.331 24.66ZM211.015 14.01C211.015 7.76999 213.955 3.11999 217.165 -1.06096e-05H221.245C218.965 3.62999 217.315 8.39999 217.315 14.01C217.315 19.62 218.995 24.48 221.245 28.17H217.165C213.895 24.96 211.015 20.37 211.015 14.01ZM240.13 15.06L236.38 7.37999L232.72 15.06H240.13ZM244.6 24.24L242.86 20.64H230.11L228.4 24.24H219.76L230.8 1.91999H242.26L253.93 24.24H244.6ZM268.438 24.24V13.02H262.858C262.768 17.7 262.618 19.74 261.868 21.3C260.998 23.22 259.228 24.24 255.958 24.24H252.898V19.11H253.258C254.188 19.11 254.788 18.72 255.058 17.67C255.358 16.59 255.568 15.3 255.568 8.09999H276.568V24.24H268.438ZM277.432 28.05V19.32H279.802C280.672 17.58 281.092 14.94 281.182 8.09999H303.232V19.32H306.412V28.05H298.942V24.24H284.902V28.05H277.432ZM287.422 19.32H295.192V12.87H288.352C288.262 15.66 287.992 17.73 287.422 19.32ZM321.639 17.31V16.62L316.239 17.58C314.829 17.82 314.259 18.15 314.259 18.96V18.99C314.259 19.74 314.799 20.64 316.809 20.64C319.809 20.64 321.639 18.99 321.639 17.31ZM321.789 22.08C321.009 22.86 318.939 24.54 314.229 24.54H313.899C308.499 24.54 306.429 21.99 306.429 19.35V18.99C306.429 16.29 308.169 14.7 312.969 14.31L320.739 13.62C321.429 13.53 321.639 13.29 321.639 12.84C321.639 12.24 321.309 11.61 318.129 11.61H318.009C314.559 11.61 314.469 12.75 314.379 13.26H306.819V13.08C306.819 10.92 307.479 7.67999 317.169 7.67999H318.849C328.929 7.67999 329.619 10.68 329.619 12.87V18.84C329.619 19.29 329.739 19.53 330.309 19.53H331.179V24.24H324.399C322.989 24.24 322.029 23.49 321.789 22.08ZM339.874 24.24H331.714V8.09999H339.874V13.74H347.824V8.09999H355.984V24.24H347.824V18.69H339.874V24.24ZM360.358 28.17H356.308C358.498 24.45 360.208 19.62 360.208 14.01C360.208 8.39999 358.558 3.62999 356.308 -1.06096e-05H360.358C363.568 3.11999 366.508 7.76999 366.508 14.01C366.508 20.37 363.658 24.96 360.358 28.17Z" fill="#1E1E1E"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

9
public/vodokanal.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 146 KiB

9
public/xk.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

9
public/xkvadrat.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/АСКУУТЭ.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
public/ИКС.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

BIN
public/Сбыт.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
public/Юрлица.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

223
src/App.tsx Normal file
View File

@@ -0,0 +1,223 @@
import { useState } from 'react'
import { motion, useMotionValueEvent, useScroll } from "motion/react"
import TypingEffect from './components/TypingEffect'
import CardsSection from './components/CardsSection'
import Section from './components/Section'
import Marquee from './components/Marquee'
import Navbar from './components/Navbar'
import ServicesSection from './components/ServicesSection'
import ProductsSection from './components/ProductsSection'
import CaseSection from './components/CaseSection'
import Footer from './components/Footer'
import AboutSection from './components/AboutSection'
import LicenseSection from './components/LicenseSection'
import MissionSection from './components/MissionSection'
import { TypingSpan } from './components/TypingSpan'
import DirectorSection from './components/DirectorSection'
function App() {
const { scrollY } = useScroll()
const [hidden, setHidden] = useState(false)
const [isAtTop, setIsAtTop] = useState(true)
useMotionValueEvent(scrollY, "change", (current) => {
const previous = scrollY.getPrevious() ?? 0
setIsAtTop(current === 0)
if (current > previous && current > 150) {
setHidden(true)
} else {
setHidden(false)
}
})
const partners = [
{
src: '/xkvadrat.svg'
},
{
src: '/rcit-BccMYqhE.svg'
},
{
src: '/vodokanal.svg'
},
{
src: '/tesaldan.svg'
},
{
src: '/tehnopark.svg'
},
{
src: '/sakhaspectrans-xe6pCR8Q.svg'
},
{
src: '/jkhsakha.svg'
},
]
const handleLink = () => {
const modal = document.getElementById('my_modal_2')
if (modal) {
(modal as HTMLDialogElement).close()
}
}
const languages = ['/python.svg', '/csharp.svg', '/js.svg', '/1c.svg']
const programs = ['/1c_franch.svg', '/astralinux.svg', '/drweb.svg', '/kasperskylab.svg']
return (
<main className='w-full flex flex-col sm:gap-8 items-center'>
<dialog id="my_modal_2" className="modal modal-end">
<div className="modal-box w-3/4 flex flex-col gap-8">
<div className='flex flex-row justify-between items-center'>
<div className="logo">
<img className="dark:invert dark:hue-rotate-180" width={180} src='/logo-commit.png' />
</div>
<form method="dialog">
<button className="btn btn-sm btn-circle btn-ghost p-2 text-2xl"></button>
</form>
</div>
<form method="dialog" className='flex flex-col gap-4'>
<a onClick={handleLink} href="#about" className='text-xl text-gray-500 hover:text-blue-500'>О компании</a>
<a onClick={handleLink} href="#products" className='text-xl text-gray-500 hover:text-blue-500'>Программные продукты</a>
<a onClick={handleLink} href="#services" className='text-xl text-gray-500 hover:text-blue-500'>Услуги</a>
<a onClick={handleLink} href="#case" className='text-xl text-gray-500 hover:text-blue-500'>Главный кейс</a>
<a onClick={handleLink} href="#contacts" className='text-xl text-gray-500 hover:text-blue-500'>Контакты</a>
</form>
</div>
<form method="dialog" className="modal-backdrop backdrop-blur-xs">
<button>close</button>
</form>
</dialog>
<Section>
<div className='h-full flex flex-col'>
<motion.header
className={`top-0 left-0 right-0 w-full backdrop-blur-2xl flex justify-center`}
initial={{ opacity: '0' }}
whileInView={{ opacity: '1' }}
>
<Navbar />
</motion.header>
<motion.header
className={`${isAtTop ? 'hidden' : ''} z-10 w-full fixed top-0 left-0 right-0 backdrop-blur-lg bg-base-100/70 flex justify-center`}
animate={{
y: hidden ? -140 : 0,
opacity: hidden ? 0 : 1,
}}
transition={{ duration: 0.3, ease: "easeInOut" }}
>
<Navbar />
</motion.header>
<div className='relative grid sm:grid-cols-2 h-auto grow gap-8 rounded-2xl bg-base-200 p-8'>
<div className='z-1 h-auto grow flex flex-col gap-4'>
<span className='text-xs text-gray-500 bg-base-100 rounded-2xl p-2 flex justify-center'>Все наши специалисты имеют профессиональное образование и опыт более 15 лет работы</span>
<div className='text-3xl grid grid-rows-[repeat(4,1fr)] md:grid-rows-[1fr_1fr]'>
<span className='row-span-2 md:row-span-1'>Программное обеспечение</span>
<div className='row-span-2 inline-flex flex-wrap w-full text-blue-400 h-min'>
<TypingSpan typingSpeed={40} deletingSpeed={20} pauseTime={2000} />
</div>
{/* <span> — полный цикл разработки и технической поддержки</span> */}
</div>
<span className='text-gray-500'>
Берём ответственность за ваши ИТ-решения, снимая риски и операционную нагрузку, выступая надёжным технологическим партнёром по разработке и сопровождению
</span>
<div className='flex flex-col gap-4'>
<span className='text-xs text-gray-500'>
Работаем с такими языками программирования, как:
</span>
<div className='flex flex-row'>
{languages.map((lang, index) => (
<div key={index} style={{ marginLeft: index === 0 ? '' : '-0.5rem' }} className='border-2 border-base-200 w-12.5 h-12.5 flex justify-center items-center p-2 rounded-full overflow-hidden bg-white'>
<img src={lang} />
</div>
))}
</div>
<span className='text-xs text-gray-500'>
Работаем с такими программами, как:
</span>
<div className='flex flex-row'>
{programs.map((lang, index) => (
<div key={index} style={{ marginLeft: index === 0 ? '' : '-0.5rem' }} className='border-2 border-base-200 w-12.5 h-12.5 flex justify-center items-center p-2 rounded-full overflow-hidden bg-white'>
<img src={lang} />
</div>
))}
</div>
</div>
</div>
<div className='absolute blur-xs sm:blur-none inset-0 sm:relative h-full w-full p-4'>
<TypingEffect text={`/*
Совет из продакшена:
если код "гениальный" — готовься его переписывать.
если код простой — скорее всего, он переживёт тебя.
*/
@font-face {
font-family: "HiddenFont";
src: local("Arial");
unicode-range: U+043F, U+043E, U+043C, U+043E, U+0433, U+0430, U+0435,
U+043C, U+0020, U+0441, U+0020, U+0440, U+0430, U+0437,
U+0440, U+0430, U+0431, U+043E, U+0442, U+043A, U+043E,
U+0439, U+043E, U+045E, U+048E, U+056E, U+068E, U+069E,
U+070E, U+074E, U+077E, U+079E, U+081E, U+083E, U+086E,
U+089E, U+091E, U+094E, U+095E, U+098E, U+099E, U+0533,
U+0536, U+0539, U+0555, U+0563, U+781, U+783, U+789;
body {
margin: 0;
font-family: Arial, sans-serif;
}
Если ты это читаешь:
— сборка прошла
— багов нет
/*
мы помогаем с разработкой программного обеспечения
и бережно сопровождаем на всех этапах работ
/*
TODO: не удалять — это не хаос, это философия */
`} speed={0.01} />
<div className='absolute inset-0 bg-linear-to-b from-base-200 to-transparent'></div>
</div>
</div>
</div>
</Section>
<CardsSection />
<AboutSection />
<div className="w-full overflow-hidden select-none py-8 bg-base-200">
<Marquee speed={20} items={partners} from={0} to={"-100%"} />
</div>
<DirectorSection />
<MissionSection />
<ProductsSection />
<ServicesSection />
<LicenseSection />
<CaseSection />
<Footer />
</main>
)
}
export default App

BIN
src/assets/hero.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

1
src/assets/react.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

1
src/assets/vite.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,127 @@
import Section from './Section'
import CompanyInfoMockup from './CompanyInfoMockup'
import Thesis from './Thesis'
const AboutSection = () => {
const actInfo = [
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M5.5 7.375C5.5 6.87772 5.69754 6.40081 6.04917 6.04917C6.40081 5.69754 6.87772 5.5 7.375 5.5H14.625C15.1223 5.5 15.5992 5.69754 15.9508 6.04917C16.3025 6.40081 16.5 6.87772 16.5 7.375V14.625C16.5 15.1223 16.3025 15.5992 15.9508 15.9508C15.5992 16.3025 15.1223 16.5 14.625 16.5H7.375C6.87772 16.5 6.40081 16.3025 6.04917 15.9508C5.69754 15.5992 5.5 15.1223 5.5 14.625V7.375ZM10.015 8.61C9.94469 8.53977 9.84938 8.50033 9.75 8.50033C9.65062 8.50033 9.55531 8.53977 9.485 8.61L7.36 10.735C7.28977 10.8053 7.25033 10.9006 7.25033 11C7.25033 11.0994 7.28977 11.1947 7.36 11.265L9.485 13.39C9.51933 13.4268 9.56073 13.4564 9.60673 13.4769C9.65273 13.4974 9.70239 13.5084 9.75274 13.5093C9.80309 13.5102 9.8531 13.5009 9.8998 13.4821C9.94649 13.4632 9.98891 13.4351 10.0245 13.3995C10.0601 13.3639 10.0882 13.3215 10.1071 13.2748C10.1259 13.2281 10.1352 13.1781 10.1343 13.1277C10.1334 13.0774 10.1224 13.0277 10.1019 12.9817C10.0814 12.9357 10.0518 12.8943 10.015 12.86L8.155 11L10.015 9.14C10.0852 9.06969 10.1247 8.97438 10.1247 8.875C10.1247 8.77562 10.0852 8.68031 10.015 8.61ZM12.515 8.61C12.4807 8.57316 12.4393 8.54361 12.3933 8.52311C12.3473 8.50261 12.2976 8.49159 12.2473 8.4907C12.1969 8.48982 12.1469 8.49908 12.1002 8.51794C12.0535 8.5368 12.0111 8.56487 11.9755 8.60048C11.9399 8.63609 11.9118 8.67851 11.8929 8.7252C11.8741 8.7719 11.8648 8.82191 11.8657 8.87226C11.8666 8.92261 11.8776 8.97227 11.8981 9.01827C11.9186 9.06427 11.9482 9.10567 11.985 9.14L13.845 11L11.985 12.86C11.9482 12.8943 11.9186 12.9357 11.8981 12.9817C11.8776 13.0277 11.8666 13.0774 11.8657 13.1277C11.8648 13.1781 11.8741 13.2281 11.8929 13.2748C11.9118 13.3215 11.9399 13.3639 11.9755 13.3995C12.0111 13.4351 12.0535 13.4632 12.1002 13.4821C12.1469 13.5009 12.1969 13.5102 12.2473 13.5093C12.2976 13.5084 12.3473 13.4974 12.3933 13.4769C12.4393 13.4564 12.4807 13.4268 12.515 13.39L14.64 11.265C14.7102 11.1947 14.7497 11.0994 14.7497 11C14.7497 10.9006 14.7102 10.8053 14.64 10.735L12.515 8.61Z" fill="white" />
</svg>,
title: 'Разработка программного обеспечения',
description: 'Веб-сервисы, корпоративные и прикладные решения под задачи бизнеса'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3294 5.25541C12.1135 5.16675 11.8394 5.16675 11.2916 5.16675C10.7439 5.16675 10.4703 5.16675 10.2539 5.25541C10.1115 5.3136 9.98197 5.39937 9.87285 5.50779C9.76373 5.61621 9.67712 5.74514 9.61802 5.88716C9.56319 6.01725 9.54219 6.1695 9.53344 6.39058C9.52928 6.55071 9.48448 6.70715 9.40326 6.84521C9.32203 6.98326 9.20705 7.09841 9.06911 7.17983C8.92837 7.25806 8.77017 7.2995 8.60916 7.30032C8.44815 7.30113 8.28954 7.2613 8.14802 7.1845C7.95086 7.08066 7.80794 7.0235 7.66677 7.00483C7.35795 6.96454 7.04568 7.04753 6.79761 7.23583C6.61211 7.377 6.47502 7.61266 6.20144 8.08342C5.92727 8.55416 5.79077 8.78925 5.75986 9.01966C5.71902 9.3265 5.80302 9.63683 5.99319 9.88241C6.07952 9.99441 6.20144 10.0883 6.38986 10.2062C6.66811 10.3794 6.84661 10.6746 6.84661 11.0001C6.84661 11.3256 6.66811 11.6207 6.39044 11.7934C6.20144 11.9118 6.07952 12.0057 5.99261 12.1177C5.89902 12.2392 5.83029 12.3779 5.79036 12.526C5.75042 12.674 5.74006 12.8285 5.75986 12.9805C5.79077 13.2103 5.92727 13.446 6.20144 13.9167C6.47561 14.3875 6.61211 14.6226 6.79761 14.7643C7.04494 14.9527 7.35761 15.0356 7.66677 14.9953C7.80794 14.9767 7.95086 14.9195 8.14802 14.8157C8.28961 14.7388 8.44833 14.6989 8.60946 14.6997C8.77058 14.7005 8.92889 14.742 9.06969 14.8203C9.35319 14.9837 9.52119 15.2841 9.53344 15.6096C9.54219 15.8312 9.56319 15.9829 9.61802 16.113C9.73702 16.3988 9.96569 16.6263 10.2539 16.7447C10.4697 16.8334 10.7439 16.8334 11.2916 16.8334C11.8394 16.8334 12.1135 16.8334 12.3294 16.7447C12.4718 16.6866 12.6012 16.6008 12.7104 16.4924C12.8195 16.384 12.9061 16.255 12.9652 16.113C13.02 15.9829 13.041 15.8312 13.0498 15.6096C13.0614 15.2841 13.23 14.9831 13.5141 14.8203C13.6548 14.7421 13.813 14.7007 13.9741 14.6998C14.1351 14.699 14.2937 14.7389 14.4352 14.8157C14.6324 14.9195 14.7753 14.9767 14.9164 14.9953C15.2256 15.0362 15.5383 14.9527 15.7856 14.7643C15.9711 14.6232 16.1082 14.3875 16.3818 13.9167C16.6559 13.446 16.7924 13.2109 16.8234 12.9805C16.8431 12.8284 16.8326 12.6739 16.7926 12.5259C16.7525 12.3779 16.6837 12.2392 16.59 12.1177C16.5037 12.0057 16.3818 11.9118 16.1934 11.794C15.9151 11.6207 15.7366 11.3256 15.7366 11.0001C15.7366 10.6746 15.9151 10.3794 16.1928 10.2067C16.3818 10.0883 16.5037 9.99441 16.5906 9.88241C16.6842 9.76096 16.7529 9.62224 16.7929 9.47421C16.8328 9.32617 16.8432 9.17171 16.8234 9.01966C16.7924 8.78983 16.6559 8.55416 16.3818 8.08342C16.1076 7.61266 15.9711 7.37758 15.7856 7.23583C15.5375 7.04753 15.2253 6.96454 14.9164 7.00483C14.7753 7.0235 14.6324 7.08066 14.4352 7.1845C14.2936 7.2614 14.1349 7.30129 13.9738 7.30048C13.8126 7.29966 13.6543 7.25816 13.5135 7.17983C13.3757 7.09834 13.2608 6.98316 13.1797 6.84511C13.0986 6.70705 13.0539 6.55065 13.0498 6.39058C13.041 6.16891 13.02 6.01725 12.9652 5.88716C12.9061 5.74514 12.8195 5.61621 12.7104 5.50779C12.6012 5.39937 12.4718 5.3136 12.3294 5.25541ZM11.2916 12.7501C12.2658 12.7501 13.055 11.9667 13.055 11.0001C13.055 10.0335 12.2652 9.25008 11.2916 9.25008C10.318 9.25008 9.52819 10.0335 9.52819 11.0001C9.52819 11.9667 10.318 12.7501 11.2916 12.7501Z" fill="white" />
</svg>
,
title: 'Техническое сопровождение',
description: 'Поддержка программного обеспечения, серверов и периферийной техники'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M16.8333 8.95842C16.8329 8.16887 16.586 7.39915 16.127 6.75668C15.6681 6.11421 15.0201 5.63103 14.2733 5.37456C13.5266 5.11809 12.7184 5.10113 11.9616 5.32604C11.2047 5.55095 10.537 6.00652 10.0515 6.62917C11.4824 6.68554 12.8359 7.29363 13.8284 8.32597C14.8208 9.35831 15.3751 10.7347 15.375 12.1668C15.375 12.2309 15.3738 12.2951 15.3715 12.3593L15.5658 12.4106C15.6943 12.445 15.8296 12.4449 15.958 12.4105C16.0865 12.3761 16.2037 12.3084 16.2978 12.2144C16.3919 12.1204 16.4596 12.0032 16.4941 11.8748C16.5286 11.7463 16.5287 11.611 16.4944 11.4825L16.4198 11.2048C16.3597 10.9803 16.3964 10.7434 16.4927 10.5323C16.7176 10.0381 16.8338 9.50137 16.8333 8.95842Z" fill="white" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.5001 12.1667C14.5003 12.9553 14.3007 13.731 13.9199 14.4215C13.5391 15.112 12.9895 15.6948 12.3225 16.1154C11.6555 16.536 10.8928 16.7807 10.1056 16.8267C9.31839 16.8727 8.53237 16.7185 7.82091 16.3784C7.61349 16.274 7.37558 16.2471 7.15008 16.3026L6.43433 16.4945C6.30581 16.5288 6.17052 16.5287 6.04205 16.4942C5.91359 16.4596 5.79646 16.3919 5.70243 16.2978C5.6084 16.2038 5.54077 16.0866 5.50634 15.9581C5.4719 15.8296 5.47187 15.6943 5.50625 15.5658L5.69758 14.8501C5.75307 14.6246 5.72618 14.3867 5.62175 14.1792C5.32015 13.5472 5.16465 12.8555 5.16677 12.1552C5.16889 11.455 5.32858 10.7641 5.634 10.134C5.93942 9.50383 6.38275 8.95049 6.93111 8.51498C7.47948 8.07947 8.11883 7.77295 8.80177 7.61815C9.48471 7.46334 10.1937 7.46421 10.8763 7.62071C11.5589 7.7772 12.1974 8.08529 12.7447 8.52216C13.292 8.95902 13.734 9.51346 14.0378 10.1444C14.3417 10.7753 14.4997 11.4665 14.5001 12.1667ZM7.79175 12.7501C7.94646 12.7501 8.09483 12.6886 8.20423 12.5792C8.31362 12.4698 8.37508 12.3214 8.37508 12.1667C8.37508 12.012 8.31362 11.8637 8.20423 11.7543C8.09483 11.6449 7.94646 11.5834 7.79175 11.5834C7.63704 11.5834 7.48866 11.6449 7.37927 11.7543C7.26987 11.8637 7.20841 12.012 7.20841 12.1667C7.20841 12.3214 7.26987 12.4698 7.37927 12.5792C7.48866 12.6886 7.63704 12.7501 7.79175 12.7501ZM9.83341 12.7501C9.98812 12.7501 10.1365 12.6886 10.2459 12.5792C10.3553 12.4698 10.4167 12.3214 10.4167 12.1667C10.4167 12.012 10.3553 11.8637 10.2459 11.7543C10.1365 11.6449 9.98812 11.5834 9.83341 11.5834C9.6787 11.5834 9.53033 11.6449 9.42094 11.7543C9.31154 11.8637 9.25008 12.012 9.25008 12.1667C9.25008 12.3214 9.31154 12.4698 9.42094 12.5792C9.53033 12.6886 9.6787 12.7501 9.83341 12.7501ZM11.8751 12.7501C12.0298 12.7501 12.1782 12.6886 12.2876 12.5792C12.397 12.4698 12.4584 12.3214 12.4584 12.1667C12.4584 12.012 12.397 11.8637 12.2876 11.7543C12.1782 11.6449 12.0298 11.5834 11.8751 11.5834C11.7204 11.5834 11.572 11.6449 11.4626 11.7543C11.3532 11.8637 11.2917 12.012 11.2917 12.1667C11.2917 12.3214 11.3532 12.4698 11.4626 12.5792C11.572 12.6886 11.7204 12.7501 11.8751 12.7501Z" fill="white" />
</svg>
,
title: 'ИТ-консалтинг',
description: 'Профессиональные консультации по компьютерным системам и ИТ-решениям'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M11 8.66658C11.1547 8.66658 11.3031 8.72804 11.4125 8.83744C11.5219 8.94684 11.5833 9.09521 11.5833 9.24992C11.5833 9.40463 11.5219 9.553 11.4125 9.6624C11.3031 9.77179 11.1547 9.83325 11 9.83325C10.8453 9.83325 10.6969 9.77179 10.5875 9.6624C10.4781 9.553 10.4167 9.40463 10.4167 9.24992C10.4167 9.09521 10.4781 8.94684 10.5875 8.83744C10.6969 8.72804 10.8453 8.66658 11 8.66658ZM16.25 10.4166C16.25 13.6541 14.01 16.6816 11 17.4166C7.99 16.6816 5.75 13.6541 5.75 10.4166V6.91659L11 4.58325L16.25 6.91659V10.4166ZM11 7.49992C10.5359 7.49992 10.0908 7.68429 9.76256 8.01248C9.43437 8.34067 9.25 8.78579 9.25 9.24992C9.25 10.0141 9.73417 10.6616 10.4167 10.9008V14.4999H11.5833V13.3333H12.75V12.1666H11.5833V10.9008C12.2658 10.6616 12.75 10.0141 12.75 9.24992C12.75 8.78579 12.5656 8.34067 12.2374 8.01248C11.9092 7.68429 11.4641 7.49992 11 7.49992Z" fill="white" />
</svg>
,
title: 'Продажа и аренда ПО',
description: 'Собственные решения и программное обеспечение по дилерской модели'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M15.5 15.5C15.5 15.7761 15.2761 16 15 16H7C6.72386 16 6.5 15.7761 6.5 15.5C6.5 15.2239 6.72386 15 7 15H15C15.2761 15 15.5 15.2239 15.5 15.5ZM16.5 12C16.5 13.1046 15.6046 14 14.5 14H7.5C6.39543 14 5.5 13.1046 5.5 12V8C5.5 6.89543 6.39543 6 7.5 6H14.5C15.6046 6 16.5 6.89543 16.5 8V12ZM13.1585 8.6345L11.7135 9.9825L10.627 8.9675L10.2855 8.6495L9.9445 8.968L8.1585 10.6345L7.7935 10.9755L8.4755 11.7065L8.8415 11.3655L10.2855 10.017L11.373 11.032L11.7145 11.3505L12.0555 11.0325L13.8415 9.3655L14.2065 9.0245L13.5245 8.2935L13.1585 8.6345Z" fill="white" />
</svg>
,
title: 'Цифровая трансформация',
description: 'Разработка стратегии, концепции цифровизации и внедрение изменений'
},
]
const whyInfo = [
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M5.75008 15.0834H6.33341V7.71011C6.33343 7.52645 6.39125 7.34744 6.49866 7.19846C6.60608 7.04947 6.75766 6.93807 6.93191 6.88003L11.5986 5.32487C11.7301 5.28106 11.8701 5.26913 12.0072 5.29006C12.1442 5.31098 12.2743 5.36417 12.3868 5.44523C12.4992 5.52629 12.5908 5.63291 12.654 5.7563C12.7171 5.87969 12.7501 6.01633 12.7501 6.15495V15.0834H13.3334V9.82761C13.3334 9.78448 13.343 9.74189 13.3615 9.70291C13.38 9.66393 13.4069 9.62953 13.4402 9.60219C13.4736 9.57485 13.5126 9.55525 13.5545 9.5448C13.5963 9.53436 13.6399 9.53333 13.6822 9.54178L14.9632 9.79845C15.1615 9.83808 15.34 9.94516 15.4682 10.1015C15.5965 10.2578 15.6666 10.4537 15.6667 10.6559V15.0834H16.2501C16.4048 15.0834 16.5532 15.1449 16.6626 15.2543C16.772 15.3637 16.8334 15.5121 16.8334 15.6668C16.8334 15.8215 16.772 15.9699 16.6626 16.0793C16.5532 16.1887 16.4048 16.2501 16.2501 16.2501H5.75008C5.59537 16.2501 5.447 16.1887 5.3376 16.0793C5.22821 15.9699 5.16675 15.8215 5.16675 15.6668C5.16675 15.5121 5.22821 15.3637 5.3376 15.2543C5.447 15.1449 5.59537 15.0834 5.75008 15.0834Z" fill="white" />
</svg>
,
title: 'Резидент ГАУ РС(Я) «Технопарк «Якутия»',
description: 'Работаем в экосистеме развития, где технологическая экспертиза превращается в практические решения'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M10.2999 11.9532L9.11059 10.7639C9.04525 10.699 8.96859 10.6646 8.88059 10.6606C8.79259 10.6566 8.71192 10.691 8.63859 10.7639C8.56525 10.8368 8.52836 10.9161 8.52792 11.0019C8.52747 11.0877 8.56436 11.167 8.63859 11.2399L9.92325 12.5279C10.0308 12.6359 10.1564 12.6899 10.2999 12.6899C10.4435 12.6899 10.5693 12.6359 10.6773 12.5279L13.3693 9.83591C13.4341 9.77102 13.4688 9.69391 13.4733 9.60458C13.4777 9.51524 13.443 9.43391 13.3693 9.36058C13.2955 9.28724 13.2161 9.25036 13.1313 9.24991C13.0464 9.24947 12.9673 9.28636 12.8939 9.36058L10.2999 11.9532ZM10.9999 16.8952C10.9395 16.8952 10.8759 16.8897 10.8093 16.8786C10.7426 16.8675 10.6801 16.8508 10.6219 16.8286C9.30947 16.3281 8.26659 15.4799 7.49325 14.2839C6.71992 13.0879 6.33325 11.7932 6.33325 10.3999V7.54458C6.33325 7.31791 6.39881 7.1128 6.52992 6.92924C6.66103 6.74569 6.82881 6.61236 7.03325 6.52924L10.6233 5.19591C10.753 5.1488 10.8786 5.12524 10.9999 5.12524C11.1213 5.12524 11.247 5.1488 11.3773 5.19591L14.9666 6.52924C15.171 6.61236 15.3388 6.74569 15.4699 6.92924C15.601 7.1128 15.6666 7.31791 15.6666 7.54458V10.3999C15.6666 11.7932 15.2799 13.0879 14.5066 14.2839C13.7333 15.4799 12.6904 16.3279 11.3779 16.8279C11.3201 16.8501 11.2579 16.8668 11.1913 16.8779C11.1246 16.889 11.0608 16.8946 10.9999 16.8946" fill="white" />
</svg>
,
title: 'Аккредитованная ИТ-компания',
description: 'Включены в реестр аккредитованных ИТ-организаций Минцифры РФ от 26.06.2024'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M15.9584 10.4166H15.0834V8.08325C15.0834 7.77383 14.9605 7.47709 14.7417 7.25829C14.5229 7.0395 14.2262 6.91659 13.9167 6.91659H11.5834V6.04159C11.5834 5.65481 11.4298 5.28388 11.1563 5.01039C10.8828 4.7369 10.5119 4.58325 10.1251 4.58325C9.73831 4.58325 9.36737 4.7369 9.09388 5.01039C8.82039 5.28388 8.66675 5.65481 8.66675 6.04159V6.91659H6.33341C6.024 6.91659 5.72725 7.0395 5.50846 7.25829C5.28966 7.47709 5.16675 7.77383 5.16675 8.08325V10.2999H6.04175C6.91675 10.2999 7.61675 10.9999 7.61675 11.8749C7.61675 12.7499 6.91675 13.4499 6.04175 13.4499H5.16675V15.6666C5.16675 15.976 5.28966 16.2727 5.50846 16.4915C5.72725 16.7103 6.024 16.8333 6.33341 16.8333H8.55008V15.9583C8.55008 15.0833 9.25008 14.3833 10.1251 14.3833C11.0001 14.3833 11.7001 15.0833 11.7001 15.9583V16.8333H13.9167C14.2262 16.8333 14.5229 16.7103 14.7417 16.4915C14.9605 16.2727 15.0834 15.976 15.0834 15.6666V13.3333H15.9584C16.3452 13.3333 16.7161 13.1796 16.9896 12.9061C17.2631 12.6326 17.4167 12.2617 17.4167 11.8749C17.4167 11.4881 17.2631 11.1172 16.9896 10.8437C16.7161 10.5702 16.3452 10.4166 15.9584 10.4166Z" fill="white" />
</svg>
,
title: 'Собственные программные продукты',
description: 'запатентованы и внесены в реестр отечественного программного обеспечения'
},
{
icon: <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="11" fill="#1C8EFF" />
<path d="M11 11C10.6317 11 10.2634 10.9346 9.97625 10.8039L5.92937 8.95852C5.74426 8.8743 5.3125 8.62793 5.3125 8.16281C5.3125 7.6977 5.74426 7.45187 5.92992 7.36656L10.0118 5.50527C10.5743 5.24824 11.423 5.24824 11.9857 5.50527L16.0701 7.36656C16.2557 7.45105 16.6875 7.69742 16.6875 8.16281C16.6875 8.6282 16.2557 8.87375 16.0701 8.95879L12.0232 10.8039C11.7366 10.9346 11.3683 11 11 11Z" fill="white" />
<path d="M16.0684 10.2018L15.6558 10.0156L14.5957 10.5007L12.0254 11.6765C11.7383 11.8077 11.3691 11.8731 11.0016 11.8731C10.6341 11.8731 10.2653 11.8077 9.97844 11.6765L7.40621 10.5007L6.34582 10.0156L5.92965 10.2027C5.74426 10.2871 5.3125 10.5352 5.3125 11C5.3125 11.4648 5.74426 11.7131 5.92937 11.7976L9.97625 13.6469C10.2617 13.7781 10.6306 13.8438 11 13.8438C11.3694 13.8438 11.7366 13.7781 12.0238 13.6471L16.0671 11.7984C16.2533 11.7139 16.6875 11.4673 16.6875 11C16.6875 10.5327 16.2563 10.2871 16.0684 10.2018Z" fill="white" />
<path d="M16.0684 13.0453L15.6558 12.8594L14.5957 13.3442L12.0254 14.5186C11.7383 14.6493 11.3691 14.7149 11.0016 14.7149C10.6341 14.7149 10.2653 14.6496 9.97844 14.5186L7.40621 13.3428L6.34582 12.8594L5.92965 13.0464C5.74426 13.1309 5.3125 13.3789 5.3125 13.8438C5.3125 14.3086 5.74426 14.5566 5.92937 14.6408L9.97625 16.489C10.2617 16.6197 10.632 16.6875 11 16.6875C11.368 16.6875 11.735 16.6197 12.0221 16.4887L16.0668 14.6411C16.2533 14.5569 16.6875 14.3102 16.6875 13.8438C16.6875 13.3773 16.2563 13.1309 16.0684 13.0453Z" fill="white" />
</svg>
,
title: 'Проекты цифровой трансформации',
description: 'реализация стратегических программ для госпредприятий'
},
]
return (
<Section id='about'>
<CompanyInfoMockup>
<div className='w-full sm:p-8 flex flex-col space-y-8 justify-center'>
<span className='text-4xl text-center my-4'>О компании</span>
<div className='grid grid-rows-2 sm:grid-rows-1 sm:grid-cols-2 gap-8 p-2 xl:p-0'>
<div className='p-8 flex flex-col space-y-4 bg-base-100 rounded-2xl'>
<span className='text-2xl'>Виды деятельности:</span>
<div className='flex flex-col space-y-4'>
{actInfo.map(info => (
<Thesis info={info} />
))}
</div>
</div>
<div className='p-8 flex flex-col space-y-4 bg-black/90 rounded-2xl text-white'>
<span className='text-2xl'>Почему мы?</span>
<div className='flex flex-col space-y-4'>
{whyInfo.map(info => (
<Thesis info={info} />
))}
</div>
</div>
</div>
</div>
</CompanyInfoMockup>
</Section>
)
}
export default AboutSection

View File

@@ -0,0 +1,109 @@
import { motion, useMotionValueEvent, useScroll, useTransform } from "motion/react"
import { useRef, useState } from "react"
const CardsSection = () => {
const containerRef = useRef(null)
const { scrollYProgress } = useScroll({
target: containerRef,
offset: ["start start", "end end"]
})
const leftValue = 100
const [xValue, setXvalue] = useState(leftValue)
const x = useTransform(scrollYProgress, [0, 1], [leftValue, 0])
useMotionValueEvent(x, "change", (latest) => setXvalue(latest))
const items = [
{ id: 1, color: "#ff0088", label: "Из идеи — в работающую концепцию", description: 'Мы погружаемся в задачу, формируем понятную и реализуемую концепцию и сразу определяем дальнейшие шаги', image: "/idea-BxLjsotP.png" },
{ id: 2, color: "#dd00ee", label: "Цены и процессы — без сюрпризов", description: 'Заранее фиксируем стоимость, этапы и зону ответственности, чтобы вы всегда понимали, за что платите и какой результат будет получен', image: "/money-DcU00l9G.png" },
{ id: 3, color: "#9911ff", label: "Ориентируемся на результат", description: 'Каждое решение мы строим так, чтобы приносить измеримый результат и реальную ценность вашему бизнесу', image: "/goal-BRVwp_WA.png" },
{ id: 4, color: "#0d63f8", label: "Контролируем сбои и устраняем", description: 'Мы оперативно реагируем на любые сбои, быстро устраняем их и гарантируем, что ваш проект всегда остаётся под полным контролем', image: "/info-CE1fB6DT.png" },
]
return (
<div ref={containerRef} style={{ height: "300vh" }} className='p-2 sm:p-0 flex justify-center overflow-clip'>
<div style={{ position: "sticky", top: 0, height: "100vh" }} className='py-16 sm:py-24 max-w-7xl overflow-clip'>
<div className='w-full flex justify-center mb-8'>
<span className='px-4 text-3xl sm:text-4xl sm:text-center'>
<span className='text-blue-400'>Преимущества</span> работы с нами
</span>
</div>
<motion.div
className='hidden sm:grid grid-cols-4 overflow-visible'
>
{items.map((item, index) => (
<motion.div
key={item.id}
className='relative grid grid-rows-[min-content_min-content_min-content_1fr] gap-2 px-8 pt-4 min-w-full w-full shrink-0 overflow-visible'
style={{
marginLeft: `${xValue * index}px`,
zIndex: index,
}}>
<span className="text-blue-500 text-xs">
{`{${index + 1}}`}
</span>
<span className='text-xl'>
{item.label}
</span>
<span className="text-gray-500">
{item.description}
</span>
<img className='mt-auto' src={item.image} />
<div className='absolute left-0 top-0 bottom-0 -right-8 rounded-2xl bg-base-200 outline-2 outline-base-100 -z-10 w-auto h-full'>
</div>
</motion.div>
))}
</motion.div>
<motion.div
className='relative flex flex-col sm:hidden w-full h-full overflow-visible'
>
{items.reverse().map((item, index) => {
const n = items.length;
const progress = Math.min(1, Math.max(0, (xValue - (index * 100) / n) * n / 100));
return (
<motion.div
key={item.id}
className="absolute grid grid-rows-[min-content_min-content_min-content_1fr] gap-2 w-full px-8 pt-4 h-min shrink-0 overflow-visible"
style={{
top: index === items.length - 1 ? '0%' : `${100 * (progress)+ (5 * (n - index - 1))}%`, // from bottom → top
zIndex: n - index,
}}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4 }}
viewport={{ once: true, margin: "-100px" }}
>
<span className="text-blue-500 text-xs">
{`{${n - index}}`}
</span>
<span className='text-xl'>
{item.label}
</span>
<span className="text-gray-500">
{item.description}
</span>
<img className="mt-auto" src={item.image} />
<div className="absolute left-0 top-0 right-0 bottom-0 rounded-2xl bg-base-200 outline-2 outline-base-100 -z-10 w-auto h-full" />
</motion.div>
);
})}
</motion.div>
</div>
</div>
)
}
export default CardsSection

View File

@@ -0,0 +1,106 @@
const CaseSection = () => {
return (
<section id='case' className='max-w-7xl w-full h-auto'>
<div className='w-full h-auto flex flex-col items-center mb-8 p-2 xl:p-0'>
<span className='px-4 text-3xl sm:text-4xl sm:text-center my-8'>
Главный <span className='text-blue-400'>кейс</span>
</span>
<div className='rounded-2xl h-full overflow-hidden grid grid-cols-1 sm:grid-cols-2 font-light'>
<div className='bg-blue-500 flex flex-col gap-6 '>
<div className="flex flex-col gap-6 p-10">
<div className='bg-base-300/50 py-2 px-4 flex w-min rounded-3xl'>
<span className='text-nowrap text-xs text-white'>Цифровая трансформация</span>
</div>
<span className='text-4xl text-white'>ГУП «ЖКХ РС(Я)»</span>
<span className='text-white'>Комплексная цифровизация жилищно-коммунального одного из крупных предприятий РС(Я)</span>
</div>
<div className='flex my-auto'>
<svg width="648" height="249" viewBox="0 0 648 249" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M478 232C478 236.971 482.029 241 487 241H663V249H486C477.163 249 470 241.837 470 233V202H478V232Z" fill="white" />
<path d="M171 232C171 236.971 175.029 241 180 241H356V249H179C170.163 249 163 241.837 163 233V202H171V232Z" fill="white" />
<path d="M446 232C446 236.971 441.971 241 437 241H261V249H438C446.837 249 454 241.837 454 233V202H446V232Z" fill="white" />
<path d="M496 223C496 225.209 497.791 227 500 227H681V234H499C492.925 234 488 229.075 488 223V187H496V223Z" fill="white" />
<path d="M189 223C189 225.209 190.791 227 193 227H374V235H191C185.477 235 181 230.523 181 225V188H189V223Z" fill="white" />
<path d="M428 223C428 225.209 426.209 227 424 227H243V235H426C431.523 235 436 230.523 436 225V188H428V223Z" fill="white" />
<path d="M516 212C516 213.105 516.895 214 518 214H701V222H516C511.582 222 508 218.418 508 214V175H516V212Z" fill="white" />
<path d="M209 212C209 213.105 209.895 214 211 214H394V222H209C204.582 222 201 218.418 201 214V175H209V212Z" fill="white" />
<path d="M408 212C408 213.105 407.105 214 406 214H223V222H408C412.418 222 416 218.418 416 214V175H408V212Z" fill="white" />
<path d="M526 199H393V138H526V199ZM404 154H429V145H404V154ZM433 154H458V145H433V154ZM462 154H487V145H462V154ZM491 145V154H516V145H491Z" fill="white" />
<path d="M201 155H159V61H201V155ZM164 151H168V142H164V151ZM170 151H174V142H170V151ZM164 138H168V129H164V138ZM170 138H174V129H170V138ZM164 125H168V116H164V125ZM170 125H174V116H170V125ZM176 125H180V116H176V125ZM164 112H168V103H164V112ZM170 112H174V103H170V112ZM176 112H180V103H176V112ZM164 99H168V90H164V99ZM170 99H174V90H170V99ZM176 99H180V90H176V99ZM182 99H186V90H182V99ZM164 86H168V77H164V86ZM170 86H174V77H170V86ZM176 86H180V77H176V86ZM182 77V86H186V77H182ZM164 73H168V64H164V73ZM170 73H174V64H170V73ZM176 73H180V64H176V73ZM182 73H186V64H182V73ZM188 73H192V64H188V73Z" fill="white" />
<path d="M237 199H123V157H237V199ZM129 193H154V187H129V193ZM158 193H183V187H158V193ZM187 193H212V187H187V193ZM129 181H154V175H129V181ZM158 181H183V175H158V181ZM187 181H212V175H187V181ZM129 169H154V163H129V169ZM158 169H183V163H158V169ZM187 163V169H212V163H187Z" fill="white" />
<path d="M152 155H83V86H152V155ZM89.0879 150.881H105.323V142.643H89.0879V150.881ZM109.383 150.881H125.617V142.643H109.383V150.881ZM129.677 142.643V150.881H145.912V142.643H129.677ZM89.0879 134.403H105.323V126.164H89.0879V134.403ZM109.383 134.403H125.617V126.164H109.383V134.403ZM129.677 134.403H145.912V126.164H129.677V134.403ZM89.0879 117.926H105.323V109.688H89.0879V117.926ZM109.383 117.926H125.617V109.688H109.383V117.926ZM129.677 117.926H145.912V109.688H129.677V117.926ZM89.0879 101.448H105.323V93.209H89.0879V101.448ZM109.383 101.448H125.617V93.209H109.383V101.448ZM129.677 101.448H145.912V93.209H129.677V101.448Z" fill="white" />
<path d="M121 199H83V154H121V199ZM89.1621 174V181H114.838V174H89.1621ZM89.1621 165H114.838V158H89.1621V165Z" fill="white" />
<rect x="122" y="67" width="18" height="17" fill="white" />
<path d="M131 53L142.258 65.75H119.742L131 53Z" fill="white" />
<path d="M108 84H81V199H72.5V134H37V11H108V84ZM41 125H49V113H41V125ZM52 125H60V113H52V125ZM41 109H49V97H41V109ZM52 109H60V97H52V109ZM63 109H71V97H63V109ZM41 93H49V81H41V93ZM52 93H60V81H52V93ZM63 93H71V81H63V93ZM41 77H49V65H41V77ZM52 77H60V65H52V77ZM63 77H71V65H63V77ZM74 77H82V65H74V77ZM41 61H49V49H41V61ZM52 61H60V49H52V61ZM63 61H71V49H63V61ZM74 61H82V49H74V61ZM41 45H49V33H41V45ZM52 45H60V33H52V45ZM63 45H71V33H63V45ZM74 45H82V33H74V45ZM85 33V45H93V33H85ZM41 29H49V17H41V29ZM52 29H60V17H52V29ZM63 29H71V17H63V29ZM74 29H82V17H74V29ZM85 29H93V17H85V29Z" fill="white" />
<path d="M40.5091 0H104.491L107 7H38L40.5091 0Z" fill="white" />
<rect x="470" y="37" width="8" height="98" fill="white" />
<rect x="484" y="37" width="8" height="98" fill="white" />
<rect x="498" y="37" width="8" height="98" fill="white" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M70 199H0V136H70V199ZM5 183C3.34315 183 2 184.343 2 186V197H10V186C10 184.343 8.65685 183 7 183H5ZM19 183C17.3431 183 16 184.343 16 186V197H24V186C24 184.343 22.6569 183 21 183H19ZM33 183C31.3431 183 30 184.343 30 186V197H38V186C38 184.343 36.6569 183 35 183H33ZM47 183C45.3431 183 44 184.343 44 186V197H52V186C52 184.343 50.6569 183 49 183H47ZM61 183C59.3431 183 58 184.343 58 186V197H66V186C66 184.343 64.6569 183 63 183H61ZM5 168C3.34315 168 2 169.343 2 171V182H10V171C10 169.343 8.65685 168 7 168H5ZM19 168C17.3431 168 16 169.343 16 171V182H24V171C24 169.343 22.6569 168 21 168H19ZM33 168C31.3431 168 30 169.343 30 171V182H38V171C38 169.343 36.6569 168 35 168H33ZM47 168C45.3431 168 44 169.343 44 171V182H52V171C52 169.343 50.6569 168 49 168H47ZM61 168C59.3431 168 58 169.343 58 171V182H66V171C66 169.343 64.6569 168 63 168H61ZM5 153C3.34315 153 2 154.343 2 156V167H10V156C10 154.343 8.65685 153 7 153H5ZM19 153C17.3431 153 16 154.343 16 156V167H24V156C24 154.343 22.6569 153 21 153H19ZM33 153C31.3431 153 30 154.343 30 156V167H38V156C38 154.343 36.6569 153 35 153H33ZM47 153C45.3431 153 44 154.343 44 156V167H52V156C52 154.343 50.6569 153 49 153H47ZM61 153C59.3431 153 58 154.343 58 156V167H66V156C66 154.343 64.6569 153 63 153H61ZM5 138C3.34315 138 2 139.343 2 141V152H10V141C10 139.343 8.65685 138 7 138H5ZM19 138C17.3431 138 16 139.343 16 141V152H24V141C24 139.343 22.6569 138 21 138H19ZM33 138C31.3431 138 30 139.343 30 141V152H38V141C38 139.343 36.6569 138 35 138H33ZM47 138C45.3431 138 44 139.343 44 141V152H52V141C52 139.343 50.6569 138 49 138H47ZM61 138C59.3431 138 58 139.343 58 141V152H66V141C66 139.343 64.6569 138 63 138H61Z" fill="white" />
</svg>
</div>
</div>
<div className='flex flex-col gap-4 bg-base-300 p-4'>
<div className='p-8 bg-base-100 flex flex-col gap-4 rounded-2xl'>
<span className='text-xl'>Основная задача:</span>
<span className='text-gray-500'>Реализация стратегии цифровой трансформации</span>
</div>
<div className='p-8 bg-base-100 rounded-2xl flex flex-col gap-4'>
<span className='text-xl'>Выполненные работы:</span>
<div className='flex flex-col gap-6'>
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>Модернизация биллинговых систем (физ. и юр. лица)</span>
</div>
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>Внедрение ПО «Топливо и транспорт»</span>
</div>
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>Запуск чат-бота и личного кабинета</span>
</div>
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>Модернизация серверного оборудования</span>
</div>
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>Внедрение IP-телефонии</span>
</div>
</div>
</div>
<div className='p-8 bg-black flex flex-col gap-4 rounded-2xl text-white'>
<span className='text-xl'>Результат:</span>
<span className=''>
Сокращение времени обработки платежей на 60%, полное импортозамещение базового ПО, интеграция с ГИС ЖКХ
</span>
</div>
</div>
</div>
</div>
</section>
)
}
export default CaseSection

View File

@@ -0,0 +1,55 @@
import { type PropsWithChildren } from 'react';
const CompanyInfoMockup = ({
children
}: PropsWithChildren) => {
return (
<div className='bg-base-300 w-full h-min rounded-2xl sm:border-8 sm:border-black'>
<div className='hidden sm:flex flex-col w-full'>
<div className='w-full grid grid-cols-3 p-2'>
<div className='flex space-x-2 overflow-hidden'>
<img src='/buttons.svg' />
<div className='bg-base-100 shrink-0 rounded-3xl'>
<img src='/buttons-view.svg' />
</div>
<div className='bg-base-100 shrink-0 rounded-3xl'>
<img src='/buttons-nav.svg' />
</div>
</div>
<div className='flex justify-center'>
<div className='flex grow bg-base-100 rounded-3xl justify-center items-center'>
<span className='text-xs'>commit-it.ru</span>
</div>
</div>
<div className='flex justify-end'>
<div className='bg-base-100 rounded-3xl'>
<img src='/buttons-menu.svg' />
</div>
</div>
</div>
<div className='flex p-2 space-x-2'>
<img className='bg-base-100 w-7 p-1 rounded-full' src='/safari-tab-1.svg' />
<img className='bg-base-100 w-7 p-1 rounded-full' src='/safari-tab-2.svg' />
<img className='bg-base-100 w-7 p-1 rounded-full' src='/safari-tab-3.svg' />
<div className='flex grow bg-base-100 rounded-2xl justify-center items-center'>
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.37499 14.0209L9.99999 12.4376L12.625 14.0418L11.9375 11.0418L14.25 9.04177L11.2083 8.77094L9.99999 5.93761L8.79166 8.75011L5.74999 9.02094L8.06249 11.0418L7.37499 14.0209ZM6.10416 15.7693L7.13749 11.3418L3.70166 8.36511L8.22749 7.97344L9.99999 3.79761L11.7725 7.97261L16.2975 8.36427L12.8617 11.3409L13.8958 15.7684L9.99999 13.4184L6.10416 15.7693Z" fill="#1E1E1E" />
</svg>
<span className='text-xs'>КОММИТ</span>
</div>
</div>
</div>
<div className='flex h-auto'>
{children}
</div>
</div>
)
};
export default CompanyInfoMockup;

View File

@@ -0,0 +1,35 @@
import React from 'react'
const DirectorSection = () => {
return (
<div className='w-full max-w-7xl grid grid-cols-3 gap-4 p-2 xl:p-2'>
<div className='col-span-1'>
<img src='/director.png' />
</div>
<div className='col-span-2 flex flex-col gap-2 sm:gap-8 font-light'>
<span className="text-blue-500 text-xs">
{`{ Наша миссия }`}
</span>
<div className='w-4 sm:w-10 flex'>
<svg className='h-auto w-auto' width="40" height="31" viewBox="0 0 40 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.55112 28.3277C1.24054 25.8481 0 23.067 0 18.5587C0 10.6257 5.51175 3.51546 13.527 0L15.5303 3.12335C8.0489 7.21225 6.58628 12.5183 6.00303 15.8638C7.20767 15.2337 8.7847 15.0138 10.3303 15.1589C14.3772 15.5374 17.5672 18.8942 17.5672 23.067C17.5672 25.1709 16.74 27.1887 15.2675 28.6765C13.7951 30.1642 11.798 31 9.71566 31C8.56407 30.99 7.42597 30.7485 6.36763 30.2897C5.30929 29.8309 4.35186 29.164 3.55112 28.3277ZM25.984 28.3277C23.6734 25.8481 22.4328 23.067 22.4328 18.5587C22.4328 10.6257 27.9446 3.51546 35.9598 0L37.9631 3.12335C30.4817 7.21225 29.0191 12.5183 28.4359 15.8638C29.6405 15.2337 31.2175 15.0138 32.7632 15.1589C36.8101 15.5374 40 18.8942 40 23.067C40 25.1709 39.1728 27.1887 37.7004 28.6765C36.2279 30.1642 34.2309 31 32.1485 31C30.9969 30.99 29.8588 30.7485 28.8005 30.2897C27.7421 29.8309 26.7847 29.164 25.984 28.3277Z" fill="black" />
</svg>
</div>
<span className='text-sm sm:text-3xl'>
Нашей стратегией является превращать сложные задачи сферы ЖКХ <span className='text-blue-500'>в эффективные цифровые решения</span>. Мы разрабатываем автоматизацию для жизненно важной отрасли.
</span>
<div className='flex flex-row justify-end mt-auto'>
<span className='flex flex-col gap-4 text-end mb-8'>
<span className='text-lg sm:text-xl'> Саввинов Николай Афанасьевич</span>
<span className='text-sm text-gray-500'>директор ООО «КОММИТ»</span>
</span>
</div>
</div>
</div>
)
}
export default DirectorSection

68
src/components/Footer.tsx Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,13 @@
const LicenseSection = () => {
return (
<section id='case' className='max-w-7xl w-full h-auto'>
<div className='w-full h-auto flex flex-col items-center mb-8'>
<span className='px-4 text-3xl sm:text-4xl sm:text-center my-8'>
<span className='text-blue-400'>Наши</span> лицензии и сертификаты
</span>
</div>
</section>
)
}
export default LicenseSection

View File

@@ -0,0 +1,35 @@
import { motion } from "motion/react";
export default function Marquee({speed = 10, items, from, to }: {
speed?: number,
items: { src: string }[],
from: number | string, to: number | string
}) {
return (
<div className="flex">
<motion.div
initial={{ x: `${from}` }}
animate={{ x: `${to}` }}
transition={{ duration: speed, repeat: Infinity, ease: "linear" }}
className="flex shrink-0"
>
{items.map((item, index: number) => {
return <img width={300} alt={`marqueImg${index}`}
className="dark:invert object-scale-down pr-0 sm:pr-16 max-h-16" src={item.src} key={index} />
})}
</motion.div>
<motion.div
initial={{ x: `${from}` }}
animate={{ x: `${to}` }}
transition={{ duration: speed, repeat: Infinity, ease: "linear" }}
className="flex shrink-0"
>
{items.map((item, index: number) => {
return <img width={300} alt={`marqueImg${index}`}
className="dark:invert object-scale-down pr-0 sm:pr-16 max-h-16" src={item.src} key={index} />;
})}
</motion.div>
</div>
);
};

View File

@@ -0,0 +1,9 @@
const MissionSection = () => {
return (
<div>
</div>
)
}
export default MissionSection

32
src/components/Navbar.tsx Normal file
View File

@@ -0,0 +1,32 @@
const Navbar = () => {
return (
<div className="flex flex-row p-4 w-full items-center max-w-7xl">
<div className="logo">
<img className="dark:invert dark:hue-rotate-180" width={200} src='/logo-commit.png' />
</div>
<nav className='p-4 hidden sm:flex'>
<a href="#about" className='text-sm mx-4 text-gray-500 hover:text-blue-500'>О компании</a>
<a href="#products" className='text-sm mx-4 text-gray-500 hover:text-blue-500'>Программные продукты</a>
<a href="#services" className='text-sm mx-4 text-gray-500 hover:text-blue-500'>Услуги</a>
<a href="#case" className='text-sm mx-4 text-gray-500 hover:text-blue-500'>Главный кейс</a>
<a href="#contacts" className='text-sm mx-4 text-gray-500 hover:text-blue-500'>Контакты</a>
</nav>
<nav className="ml-auto sm:hidden">
<div className="btn btn-square btn-ghost" onClick={() => {
const modal = document.getElementById('my_modal_2')
if (modal) {
(modal as HTMLDialogElement).showModal()
}
}}>
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 18L20 18" stroke="#000000" stroke-width="2" stroke-linecap="round" />
<path d="M4 12L20 12" stroke="#000000" stroke-width="2" stroke-linecap="round" />
<path d="M4 6L20 6" stroke="#000000" stroke-width="2" stroke-linecap="round" />
</svg>
</div>
</nav>
</div>
)
}
export default Navbar

View File

@@ -0,0 +1,105 @@
import { motion } from 'motion/react'
import Section from './Section'
const ProductsSection = () => {
const products = [
{
title: 'ПО «Квартплата»',
img: '/Квартплата.png',
descriptions: [
'Автоматизация начислений и приёма платежей физических лиц',
'Ведение лицевых счётов, работа с задолженностью, интеграция с ГИС ЖКХ'
]
},
{
title: 'ПО «Расчёты с юридическими лицами»',
img: '/Юрлица.png',
descriptions: [
'Учёт договоров на поставку коммунальных услуг, автоматический расчёт потребления',
'Формирование счетов-фактур, учёт централизованных организаций с филиалами'
]
},
{
title: 'ПО «СБЫТ»',
img: '/Сбыт.jpg',
descriptions: [
'Консолидация данных, формирование плана реализации и бюджета продаж',
'Анализ выпадающих доходов, подготовка форм ГКЦ РС(Я) (ТХ-1, ВС-1 и др.)'
]
},
{
title: 'ПО «Инженерно-картографическая система» ',
img: '/ИКС.png',
descriptions: [
'Графическое отображение сетей тепло- и водоснабжения, котельных',
'Графическое отображение сетей тепло- и водоснабжения, котельных',
'Расчёт параметров объектов, паспортизация сетей на карте'
]
},
{
title: 'ПО «Топливо и транспорт — FUEL»',
img: '/Топливо и Транспорт.jpg',
descriptions: [
'Учёт топливных ресурсов котельных, перемещений, остатков топлива',
'Формирование отчётности, путевых листов, учёт мест накоплений ТКО, аналитика расхода ТЭР',
]
},
{
title: 'ПО «АСКУУТЭ» ',
img: '/АСКУУТЭ.jpg',
descriptions: [
'Сбор показаний приборов учёта тепла, контроль поверок оборудования',
'Интеграция с разнородными системами сбора данных, автоматизация расчётов'
]
}
]
return (
<Section id='products'>
<div className='w-full p-2 flex flex-col space-y-8 justify-center'>
<div className='w-full flex justify-center mb-8'>
<span className='px-4 text-3xl sm:text-4xl sm:text-center'>
<span className='text-blue-400'>Ключевые программные</span> продукты собственной разработки
</span>
</div>
<div className='grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8'>
{products.map(product => (
<motion.div
whileHover={{
scale: '1.05',
boxShadow: '0 0 10px #00000050'
}}
initial={{
scale: '1',
boxShadow: 'none'
}}
className='p-2 bg-base-200 rounded-2xl grid grid-rows-[min-content_1fr] w-full h-full'>
<div className='rounded-2xl overflow-hidden'>
<img className='aspect-video object-cover' src={product.img} />
</div>
<div className='grid grid-rows-[min-content_auto] gap-4 p-4'>
<span className='text-xl'>{product.title}</span>
<div className='flex flex-col'>
{product.descriptions.map(description => (
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>{description}</span>
</div>
))}
</div>
</div>
</motion.div>
))}
</div>
</div>
</Section>
)
}
export default ProductsSection

View File

@@ -0,0 +1,17 @@
import type { PropsWithChildren } from "react"
interface SectionProps extends PropsWithChildren {
id?: string
}
const Section = ({ id, children }: SectionProps) => {
return (
<section id={id} className='min-h-screen h-auto w-full flex justify-center'>
<div className='max-w-7xl w-full h-auto'>
{children}
</div>
</section>
)
}
export default Section

View File

@@ -0,0 +1,126 @@
import { motion, useScroll, useTransform } from "motion/react"
import { useRef } from "react";
const ServiceItem = ({ service }: {
service: {
id: string;
title: string;
descriptions: string[];
}
}) => {
const ref = useRef(null)
const { scrollYProgress } = useScroll({
target: ref,
offset: ["end end", "start start"],
})
const opacity = useTransform(scrollYProgress, [0, 1], [0, 1])
const scale = useTransform(scrollYProgress, [0, 1], [0.9, 1])
return (
<motion.div
ref={ref}
style={{
scale: scale
}}
className='group p-8 bg-base-300 rounded-2xl grid grid-cols-[0.5fr_1fr_1fr_1fr] justify-start gap-8'
>
<motion.span
style={{
opacity: opacity
}}
className='col-span-1 text-5xl sm:text-8xl leading-12 sm:leading-20 text-blue-500 sm:text-gray-300 sm:group-hover:text-blue-500 transition-colors'>{service.id}</motion.span>
<span className='col-span-3 sm:col-span-1 text-2xl sm:text-xl'>{service.title}</span>
<div className='row-start-2 sm:row-start-1 col-span-4 sm:col-start-3 sm:col-span-2 flex flex-col gap-4'>
{service.descriptions.map(desc => (
<div className='flex flex-row gap-2'>
<svg className='shrink-0' width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 2.0625C6.07191 2.0625 2.0625 6.07191 2.0625 11C2.0625 15.9281 6.07191 19.9375 11 19.9375C15.9281 19.9375 19.9375 15.9281 19.9375 11C19.9375 6.07191 15.9281 2.0625 11 2.0625ZM15.6514 8.00465L9.87637 14.8796C9.81302 14.9551 9.73419 15.0161 9.64523 15.0584C9.55627 15.1007 9.45925 15.1234 9.36074 15.125H9.34914C9.25278 15.125 9.1575 15.1047 9.06948 15.0654C8.98147 15.0262 8.90269 14.9689 8.83824 14.8973L6.36324 12.1473C6.30039 12.0806 6.25149 12.002 6.21943 11.9162C6.18737 11.8304 6.17279 11.739 6.17655 11.6474C6.1803 11.5559 6.20232 11.466 6.24131 11.3831C6.2803 11.3002 6.33547 11.2259 6.40358 11.1646C6.47169 11.1033 6.55136 11.0563 6.63791 11.0262C6.72447 10.9961 6.81616 10.9837 6.9076 10.9896C6.99904 10.9954 7.08838 11.0195 7.17037 11.0604C7.25236 11.1013 7.32534 11.1582 7.38504 11.2277L9.33109 13.3899L14.5986 7.12035C14.7168 6.98375 14.884 6.89912 15.064 6.88478C15.244 6.87043 15.4225 6.92751 15.5608 7.04368C15.6991 7.15985 15.7861 7.32578 15.8031 7.5056C15.82 7.68542 15.7655 7.86469 15.6514 8.00465Z" fill="#1C8EFF" />
</svg>
<span className='text-gray-500'>{desc}</span>
</div>
))}
</div>
</motion.div>
)
}
const ServicesSection = () => {
const services = [
{
id: '01',
title: 'Разработка и сопровождение ПО',
descriptions: [
'Адаптация и модификация систем на базе 1С, с использованием СУБД MS SQL и PostgreSQL',
'Разработка аналитических отчётов и интеграционных решений'
]
},
{
id: '02',
title: 'ИТ-аутсорсинг и инфраструктура',
descriptions: [
'Обсуждение АРМ (ПК, моноблоки), серверов и оргтехники',
'Администрирование локальных сетей и IP-телефонии',
'Обеспечение ИТ-безопасности (антивирусная защита, резервное копирование)'
]
},
{
id: '03',
title: 'Импортозамещение',
descriptions: [
'Поставка оборудования (серверы, периферия) из Единого реестра российской радиоэлектронной продукции (ПП РФ № 878)',
'Перевод инфраструктуры на отечественное ПО (Astra Linux, P7-Офис и др.)'
]
},
{
id: '04',
title: '1С: Франчайзинг',
descriptions: [
'Продажа лицензий, внедрение и доработка конфигураций (1С: Управление холдингом, 1С: ЗУП, 1С: Бухгалтерия)'
]
}
]
return (
<section id='services' className='max-w-7xl w-full h-auto'>
<div className='w-full h-auto flex flex-col items-center mb-8'>
<span className='px-4 text-3xl sm:text-4xl sm:text-center my-8'>
<span className='text-blue-400'>Предоставляемые услуги</span> нашей компании
</span>
<div className='h-full grid grid-cols-1 sm:grid-cols-3 font-light sm:gap-4 p-2 xl:p-0'>
<div className='flex flex-col gap-8'>
<div className='bg-blue-500 flex flex-col gap-6 p-10 col-span-1 rounded-2xl overflow-hidden'>
<div className='bg-base-300/50 py-2 px-4 flex w-min rounded-3xl'>
<span className='text-nowrap text-xs text-white'>Цифровая надёжность</span>
</div>
<span className='text-4xl text-white'>ООО «КОММИТ»</span>
<span className='text-white'>
Разработка и сопровождение программного обеспечения для сферы ЖКХ и государственных организаций
</span>
<div className="flex justify-center p-4">
<img className="max-w-48" src='/service.svg' />
</div>
</div>
<div>
<span className='text-[1rem] text-gray-500'>
Наши услуги ориентированы на долгосрочную ценность: мы не просто реализуем отдельные задачи, a <span className='text-blue-500'>выстраиваем технологическую основу для роста, масштабирования и развития бизнеса.</span> Надёжность, контроль и ответственность ключевые принципы нашей работы.
</span>
</div>
</div>
<div className='my-8 sm:my-0 flex flex-col gap-4 col-span-2 rounded-2xl overflow-hidden'>
{services.map(service => (
<ServiceItem service={service} />
))}
</div>
</div>
</div>
</section>
)
}
export default ServicesSection

27
src/components/Thesis.tsx Normal file
View File

@@ -0,0 +1,27 @@
import { type JSX } from 'react'
const Thesis = ({ info }: {
info: {
icon: JSX.Element;
title: string;
description: string;
}
}) => {
return (
<div className='flex flex-row space-x-3'>
<div className='flex flex-col'>
<span className='flex justify-center items-center'>{info.icon}</span>
</div>
<div className='flex flex-col space-y-2'>
<span className='text-xl font-light leading-5'>{info.title}</span>
<span className='text-sm text-gray-500 font-light'>
{info.description}
</span>
</div>
</div>
)
}
export default Thesis

View File

@@ -0,0 +1,65 @@
import { useInView } from "motion/react";
import { useRef, useEffect, useState } from "react";
export default function TypingEffect({ text = 'Typing Effect', speed = 0.1 }: { text: string, speed?: number }) {
const ref = useRef<HTMLHeadingElement>(null);
const isInView = useInView(ref, { once: true });
const [visibleChars, setVisibleChars] = useState(0);
// Split text into lines
const lines = text.split('\n');
useEffect(() => {
if (!isInView) return;
let currentIndex = 0;
const totalChars = text.replace(/\n/g, '').length;
const interval = setInterval(() => {
if (currentIndex < totalChars) {
currentIndex++;
setVisibleChars(currentIndex);
} else {
clearInterval(interval);
}
}, speed * 1000);
return () => clearInterval(interval);
}, [isInView, text, speed]);
// Build visible text based on visible characters
let charsProcessed = 0;
const visibleLines: string[] = [];
for (const line of lines) {
const lineLength = line.length;
if (charsProcessed + lineLength <= visibleChars) {
// Full line is visible
visibleLines.push(line);
charsProcessed += lineLength;
} else {
// Partial line
const remainingChars = visibleChars - charsProcessed;
if (remainingChars > 0) {
visibleLines.push(line.slice(0, remainingChars));
}
break;
}
}
return (
<div className="relative max-h-full h-full overflow-hidden">
<h2
ref={ref}
className="text-sm text-left font-mono text-gray-400 tracking-tighter absolute bottom-0"
>
{visibleLines.map((line, index) => (
<div key={index}>
{line}
{index < visibleLines.length - 1 && <br />}
</div>
))}
</h2>
</div>
);
}

View File

@@ -0,0 +1,85 @@
import { useEffect, useState } from "react";
import { motion } from "framer-motion";
const phrases = [
"без рисков",
"под ключ",
// "с гарантией результата",
// "с полным сопровождением",
"для сложных задач",
"с доказанной надёжностью",
// "с индивидуальной архитектурой",
"с прозрачной стоимостью",
"с расчётом на рост",
"с отраслевой экспертизой",
"с защитой данных",
"с учётом вашей специфики",
"с долгосрочной поддержкой",
"готовое к внедрению",
// "с открытым кодом под заказчика",
// "с соблюдением всех регуляторных требований",
"с полным циклом согласования",
"с фиксированными сроками",
"с возможностью доработок",
"с фокусом на результат",
];
export function TypingSpan({
typingSpeed = 40,
deletingSpeed = 40,
pauseTime = 1200
}: {
typingSpeed?: number
deletingSpeed?: number
pauseTime?: number
}) {
const [phraseIndex, setPhraseIndex] = useState(0);
const [text, setText] = useState("");
const [isDeleting, setIsDeleting] = useState(false);
useEffect(() => {
const phrase = phrases[phraseIndex];
let timeout: NodeJS.Timeout;
if (!isDeleting && text.length < phrase.length) {
timeout = setTimeout(() => {
setText(phrase.slice(0, text.length + 1));
}, typingSpeed);
}
else if (!isDeleting && text.length === phrase.length) {
timeout = setTimeout(() => setIsDeleting(true), pauseTime);
}
else if (isDeleting && text.length > 0) {
timeout = setTimeout(() => {
setText(phrase.slice(0, text.length - 1));
}, deletingSpeed);
}
else if (isDeleting && text.length === 0) {
setIsDeleting(false);
setPhraseIndex((i) => (i + 1) % phrases.length);
}
return () => clearTimeout(timeout);
}, [text, isDeleting, phraseIndex]);
const words = text.split(" ");
return (
<>
{words.map((word, i) => (
<span key={i} className="mr-2 h-min leading-none">
{word}
</span>
))}
<motion.span
className="leading-none"
animate={{ opacity: [0, 1, 0] }}
transition={{ duration: 1, repeat: Infinity }}
>
|
</motion.span>
</>
);
}

7
src/index.css Normal file
View File

@@ -0,0 +1,7 @@
@import "tailwindcss";
@plugin "daisyui" {
themes: light --default;
}
@custom-variant dark (&:where(.dark, .dark *));

10
src/main.tsx Normal file
View File

@@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.tsx'
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
)

10
tailwind.config.ts Normal file
View File

@@ -0,0 +1,10 @@
module.exports = {
theme: {
extend: {
maxWidth: {
'8xl': '90rem', // 1440px
'9xl': '100rem' // 1600px
}
}
}
}

28
tsconfig.app.json Normal file
View File

@@ -0,0 +1,28 @@
{
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2023",
"useDefineForClassFields": true,
"lib": ["ES2023", "DOM", "DOM.Iterable"],
"module": "ESNext",
"types": ["vite/client"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "react-jsx",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["src"]
}

7
tsconfig.json Normal file
View File

@@ -0,0 +1,7 @@
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}

26
tsconfig.node.json Normal file
View File

@@ -0,0 +1,26 @@
{
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"target": "ES2023",
"lib": ["ES2023"],
"module": "ESNext",
"types": ["node"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"moduleDetection": "force",
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts"]
}

13
vite.config.ts Normal file
View File

@@ -0,0 +1,13 @@
import { defineConfig } from 'vite'
import react, { reactCompilerPreset } from '@vitejs/plugin-react'
import babel from '@rolldown/plugin-babel'
import tailwindcss from '@tailwindcss/vite'
// https://vite.dev/config/
export default defineConfig({
plugins: [
react(),
babel({ presets: [reactCompilerPreset()] }),
tailwindcss()
],
})