refactor: chaange figma structure with single package
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
# 📁 Обзор файлов проекта
|
# 📁 Обзор файлов проекта
|
||||||
|
|
||||||
|
> **Обновление структуры:** документы по деплою перенесены в **`scripts/docs/`**; промпты и гайды для агентов — в **`.agents/skills/`** (этот каталог). Исходный код приложения — в **`src/`**.
|
||||||
|
|
||||||
## 🚀 НАЧНИТЕ С ЭТОГО ФАЙЛА
|
## 🚀 НАЧНИТЕ С ЭТОГО ФАЙЛА
|
||||||
**→ START-HERE.md** - Быстрый старт для деплоя на Netlify
|
**→ START-HERE.md** - Быстрый старт для деплоя на Netlify
|
||||||
|
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
# 🚀 НАЧНИТЕ ОТСЮДА
|
# 🚀 НАЧНИТЕ ОТСЮДА
|
||||||
|
|
||||||
|
> **Актуальная структура репозитория:** сборка в **`dist/`** (стандарт Vite). Документация по деплою — в **`scripts/docs/`**. Скрипты — в **`scripts/`**. Точка входа приложения — корневой **`index.html`** и **`src/main.tsx`**.
|
||||||
|
|
||||||
## Проект готов к деплою на Netlify!
|
## Проект готов к деплою на Netlify!
|
||||||
|
|
||||||
Все проблемы исправлены:
|
Все проблемы исправлены:
|
||||||
- ✅ Node.js зафиксирован на версии 18 LTS
|
- ✅ Node.js зафиксирован на версии 18 LTS
|
||||||
- ✅ Vite настроен на сборку в папку `build`
|
- ✅ Vite настроен на сборку в папку `dist`
|
||||||
- ✅ Netlify настроен на публикацию из `build`
|
- ✅ Netlify настроен на публикацию из `dist`
|
||||||
- ✅ Все конфигурации обновлены
|
- ✅ Все конфигурации обновлены
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -2,7 +2,7 @@ name: Deploy to GitHub Pages
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main ]
|
branches: [ master, main ]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
62
.gitignore
vendored
62
.gitignore
vendored
@@ -1,37 +1,37 @@
|
|||||||
.DS_Store
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
/build
|
dist
|
||||||
/package
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
.DS_Store
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
|
||||||
|
# Vite
|
||||||
vite.config.js.timestamp-*
|
vite.config.js.timestamp-*
|
||||||
vite.config.ts.timestamp-*
|
vite.config.ts.timestamp-*
|
||||||
|
|
||||||
.vscode/*
|
# TypeScript
|
||||||
!.vscode/settings.json
|
*.tsbuildinfo
|
||||||
/.idea
|
|
||||||
|
# Env
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
# Legacy / optional (keep if you use these tools)
|
||||||
|
/build
|
||||||
/coverage
|
/coverage
|
||||||
/test-results
|
/test-results
|
||||||
/allure-report
|
/playwright-report
|
||||||
/allure-results
|
/playwright/.cache
|
||||||
/.cache
|
|
||||||
*.log
|
|
||||||
/dist
|
|
||||||
/storybook-static
|
|
||||||
!.vscode/snippets.code-snippets
|
|
||||||
*.env
|
|
||||||
/test-results/
|
|
||||||
/playwright-report/
|
|
||||||
/playwright/.cache/
|
|
||||||
/infra/certs/
|
|
||||||
/.svelte-kit/**
|
|
||||||
!/.svelte-kit/tsconfig.json
|
|
||||||
src/i18n/*.json
|
|
||||||
|
|
||||||
### Playwright
|
|
||||||
|
|
||||||
/test-results/
|
|
||||||
/playwright-report/
|
|
||||||
/playwright/.cache/
|
|
||||||
results.json
|
|
||||||
/tests/**/*-darwin.png
|
|
||||||
/failed_tests.txt
|
|
||||||
__f2f_cookies.json
|
|
||||||
|
|||||||
24
README.md
24
README.md
@@ -1,11 +1,25 @@
|
|||||||
|
# SOFTCLICK corporate site
|
||||||
|
|
||||||
# Redesign Modern Website (Copy)
|
Vite + React + TypeScript + Tailwind CSS. Design source: [Figma — Redesign Modern Website (Copy)](https://www.figma.com/design/YgZy1khwB5JnJFfONCi1cA/Redesign-Modern-Website--Copy-).
|
||||||
|
|
||||||
This is a code bundle for Redesign Modern Website (Copy). The original project is available at https://www.figma.com/design/YgZy1khwB5JnJFfONCi1cA/Redesign-Modern-Website--Copy-.
|
## Setup
|
||||||
|
|
||||||
## Running the code
|
```bash
|
||||||
|
npm install
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
Run `npm i` to install the dependencies.
|
- **Build:** `npm run build` → output in `dist/`
|
||||||
|
- **Preview production build:** `npm run preview`
|
||||||
|
|
||||||
Run `npm run dev` to start the development server.
|
Node.js **18** or **20** LTS is recommended (`engines` in `package.json`).
|
||||||
|
|
||||||
|
## Deploy
|
||||||
|
|
||||||
|
- Shell helpers: `scripts/deploy.sh`, `scripts/check-build.sh` (and `.bat` variants on Windows).
|
||||||
|
- GitHub Pages: workflow in `.github/workflows/deploy.yml`.
|
||||||
|
- Extra platform notes: `scripts/docs/`.
|
||||||
|
|
||||||
|
## Agent / design notes
|
||||||
|
|
||||||
|
Prompts and guidelines for recreating or extending the design live under `.agents/skills/`.
|
||||||
|
|||||||
16
index.html
16
index.html
@@ -1,15 +1,17 @@
|
|||||||
|
<!doctype html>
|
||||||
<!DOCTYPE html>
|
<html lang="ru">
|
||||||
<html lang="en">
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<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" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Redesign Modern Website (Copy)</title>
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="SOFTCLICK - российская IT-компания, специализирующаяся на импортозамещении и внедрении отечественных решений"
|
||||||
|
/>
|
||||||
|
<title>SOFTCLICK - Российские IT-решения с 2021 года</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[build]
|
[build]
|
||||||
command = "npm run build"
|
command = "npm run build"
|
||||||
publish = "build"
|
publish = "dist"
|
||||||
|
|
||||||
[[redirects]]
|
[[redirects]]
|
||||||
from = "/*"
|
from = "/*"
|
||||||
115
package-lock.json
generated
115
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "Redesign Modern Website (Copy)",
|
"name": "figma-design",
|
||||||
"version": "0.1.0",
|
"version": "0.0.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "Redesign Modern Website (Copy)",
|
"name": "figma-design",
|
||||||
"version": "0.1.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@radix-ui/react-accordion": "^1.2.3",
|
"@radix-ui/react-accordion": "^1.2.3",
|
||||||
"@radix-ui/react-alert-dialog": "^1.1.6",
|
"@radix-ui/react-alert-dialog": "^1.1.6",
|
||||||
@@ -34,15 +34,13 @@
|
|||||||
"@radix-ui/react-toggle": "^1.1.2",
|
"@radix-ui/react-toggle": "^1.1.2",
|
||||||
"@radix-ui/react-toggle-group": "^1.1.2",
|
"@radix-ui/react-toggle-group": "^1.1.2",
|
||||||
"@radix-ui/react-tooltip": "^1.1.8",
|
"@radix-ui/react-tooltip": "^1.1.8",
|
||||||
"@vitejs/plugin-react": "*",
|
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "*",
|
"clsx": "^2.1.1",
|
||||||
"cmdk": "^1.1.1",
|
"cmdk": "^1.1.1",
|
||||||
"embla-carousel-react": "^8.6.0",
|
"embla-carousel-react": "^8.6.0",
|
||||||
"input-otp": "^1.4.2",
|
"input-otp": "^1.4.2",
|
||||||
"lucide-react": "^0.487.0",
|
"lucide-react": "^0.487.0",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"path": "*",
|
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-day-picker": "^8.10.1",
|
"react-day-picker": "^8.10.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
@@ -50,18 +48,23 @@
|
|||||||
"react-resizable-panels": "^2.1.7",
|
"react-resizable-panels": "^2.1.7",
|
||||||
"recharts": "^2.15.2",
|
"recharts": "^2.15.2",
|
||||||
"sonner": "^2.0.3",
|
"sonner": "^2.0.3",
|
||||||
"tailwind-merge": "*",
|
"tailwind-merge": "^2.6.0",
|
||||||
"tailwindcss": "*",
|
|
||||||
"tw-animate-css": "^1.3.8",
|
"tw-animate-css": "^1.3.8",
|
||||||
"vaul": "^1.1.2",
|
"vaul": "^1.1.2"
|
||||||
"vite": "*"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/vite": "4.1.12",
|
"@tailwindcss/vite": "^4.1.12",
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^20.11.19",
|
||||||
|
"@types/react": "^18.3.12",
|
||||||
|
"@types/react-dom": "^18.3.1",
|
||||||
"@vitejs/plugin-react": "^4.7.0",
|
"@vitejs/plugin-react": "^4.7.0",
|
||||||
"tailwindcss": "4.1.12",
|
"tailwindcss": "^4.1.12",
|
||||||
"vite": "6.3.5"
|
"typescript": "~5.6.3",
|
||||||
|
"vite": "^6.3.5"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0 <22.0.0",
|
||||||
|
"npm": ">=9.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
@@ -3266,6 +3269,34 @@
|
|||||||
"undici-types": "~6.21.0"
|
"undici-types": "~6.21.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/prop-types": {
|
||||||
|
"version": "15.7.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
|
||||||
|
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
|
||||||
|
"devOptional": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/react": {
|
||||||
|
"version": "18.3.28",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz",
|
||||||
|
"integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==",
|
||||||
|
"devOptional": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/prop-types": "*",
|
||||||
|
"csstype": "^3.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/react-dom": {
|
||||||
|
"version": "18.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
|
||||||
|
"integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
|
||||||
|
"devOptional": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/react": "^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@vitejs/plugin-react": {
|
"node_modules/@vitejs/plugin-react": {
|
||||||
"version": "4.7.0",
|
"version": "4.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
|
||||||
@@ -3784,12 +3815,6 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/inherits": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/input-otp": {
|
"node_modules/input-otp": {
|
||||||
"version": "1.4.2",
|
"version": "1.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz",
|
||||||
@@ -4212,16 +4237,6 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path": {
|
|
||||||
"version": "0.12.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
|
|
||||||
"integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"process": "^0.11.1",
|
|
||||||
"util": "^0.10.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
@@ -4271,15 +4286,6 @@
|
|||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/process": {
|
|
||||||
"version": "0.11.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
|
||||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prop-types": {
|
"node_modules/prop-types": {
|
||||||
"version": "15.8.1",
|
"version": "15.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
||||||
@@ -4595,9 +4601,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tailwind-merge": {
|
"node_modules/tailwind-merge": {
|
||||||
"version": "3.5.0",
|
"version": "2.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.1.tgz",
|
||||||
"integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==",
|
"integrity": "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -4690,6 +4696,20 @@
|
|||||||
"url": "https://github.com/sponsors/Wombosvideo"
|
"url": "https://github.com/sponsors/Wombosvideo"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "5.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
|
||||||
|
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "6.21.0",
|
"version": "6.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
@@ -4780,15 +4800,6 @@
|
|||||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/util": {
|
|
||||||
"version": "0.10.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
|
|
||||||
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"inherits": "2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/vaul": {
|
"node_modules/vaul": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz",
|
||||||
|
|||||||
38
package.json
38
package.json
@@ -1,8 +1,17 @@
|
|||||||
{
|
{
|
||||||
"name": "Redesign Modern Website",
|
"name": "figma-design",
|
||||||
"version": "0.1.0",
|
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0",
|
||||||
|
"npm": ">=9.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "tsc -b && vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@radix-ui/react-accordion": "^1.2.3",
|
"@radix-ui/react-accordion": "^1.2.3",
|
||||||
"@radix-ui/react-alert-dialog": "^1.1.6",
|
"@radix-ui/react-alert-dialog": "^1.1.6",
|
||||||
@@ -30,15 +39,13 @@
|
|||||||
"@radix-ui/react-toggle": "^1.1.2",
|
"@radix-ui/react-toggle": "^1.1.2",
|
||||||
"@radix-ui/react-toggle-group": "^1.1.2",
|
"@radix-ui/react-toggle-group": "^1.1.2",
|
||||||
"@radix-ui/react-tooltip": "^1.1.8",
|
"@radix-ui/react-tooltip": "^1.1.8",
|
||||||
"@vitejs/plugin-react": "*",
|
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "*",
|
"clsx": "^2.1.1",
|
||||||
"cmdk": "^1.1.1",
|
"cmdk": "^1.1.1",
|
||||||
"embla-carousel-react": "^8.6.0",
|
"embla-carousel-react": "^8.6.0",
|
||||||
"input-otp": "^1.4.2",
|
"input-otp": "^1.4.2",
|
||||||
"lucide-react": "^0.487.0",
|
"lucide-react": "^0.487.0",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"path": "*",
|
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-day-picker": "^8.10.1",
|
"react-day-picker": "^8.10.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
@@ -46,21 +53,18 @@
|
|||||||
"react-resizable-panels": "^2.1.7",
|
"react-resizable-panels": "^2.1.7",
|
||||||
"recharts": "^2.15.2",
|
"recharts": "^2.15.2",
|
||||||
"sonner": "^2.0.3",
|
"sonner": "^2.0.3",
|
||||||
"tailwind-merge": "*",
|
"tailwind-merge": "^2.6.0",
|
||||||
"tailwindcss": "*",
|
|
||||||
"tw-animate-css": "^1.3.8",
|
"tw-animate-css": "^1.3.8",
|
||||||
"vaul": "^1.1.2",
|
"vaul": "^1.1.2"
|
||||||
"vite": "*"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/vite": "4.1.12",
|
"@tailwindcss/vite": "^4.1.12",
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^20.11.19",
|
||||||
|
"@types/react": "^18.3.12",
|
||||||
|
"@types/react-dom": "^18.3.1",
|
||||||
"@vitejs/plugin-react": "^4.7.0",
|
"@vitejs/plugin-react": "^4.7.0",
|
||||||
"tailwindcss": "4.1.12",
|
"tailwindcss": "^4.1.12",
|
||||||
"vite": "6.3.5"
|
"typescript": "~5.6.3",
|
||||||
},
|
"vite": "^6.3.5"
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "vite build"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1
public/CNAME
Normal file
1
public/CNAME
Normal file
@@ -0,0 +1 @@
|
|||||||
|
your-domain.ru
|
||||||
|
Before Width: | Height: | Size: 260 B After Width: | Height: | Size: 260 B |
@@ -1,5 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
chcp 65001 >nul
|
chcp 65001 >nul
|
||||||
|
cd /d "%~dp0.."
|
||||||
|
|
||||||
echo 🔍 Проверка сборки SOFTCLICK...
|
echo 🔍 Проверка сборки SOFTCLICK...
|
||||||
echo.
|
echo.
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
echo "🔍 Проверка сборки SOFTCLICK..."
|
echo "🔍 Проверка сборки SOFTCLICK..."
|
||||||
echo ""
|
echo ""
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
chcp 65001 >nul
|
chcp 65001 >nul
|
||||||
|
cd /d "%~dp0.."
|
||||||
echo.
|
echo.
|
||||||
echo ====================================
|
echo ====================================
|
||||||
echo 🚀 ДЕПЛОЙ SOFTCLICK
|
echo 🚀 ДЕПЛОЙ SOFTCLICK
|
||||||
@@ -45,7 +46,7 @@ if %errorlevel% equ 0 (
|
|||||||
|
|
||||||
if "%choice%"=="3" (
|
if "%choice%"=="3" (
|
||||||
echo.
|
echo.
|
||||||
type DEPLOYMENT.md
|
type scripts\docs\DEPLOYMENT.md
|
||||||
)
|
)
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
@@ -59,10 +60,10 @@ if %errorlevel% equ 0 (
|
|||||||
echo 3. GitHub Pages - автоматически
|
echo 3. GitHub Pages - автоматически
|
||||||
echo.
|
echo.
|
||||||
echo 🇷🇺 РОССИЙСКИЕ:
|
echo 🇷🇺 РОССИЙСКИЕ:
|
||||||
echo 1. Яндекс.Облако - см. deploy-yandex-cloud.md
|
echo 1. Яндекс.Облако - см. scripts\docs\deploy-yandex-cloud.md
|
||||||
echo 2. Timeweb/Beget - см. deploy-traditional-hosting.md
|
echo 2. Timeweb/Beget - см. scripts\docs\deploy-traditional-hosting.md
|
||||||
echo.
|
echo.
|
||||||
echo 📄 Полная инструкция: DEPLOYMENT.md
|
echo 📄 Полная инструкция: scripts\docs\DEPLOYMENT.md
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
) else (
|
) else (
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
# Скрипт для деплоя SOFTCLICK сайта
|
# Скрипт для деплоя SOFTCLICK сайта (запускайте из корня репозитория или как scripts/deploy.sh)
|
||||||
# Использование: ./deploy.sh
|
|
||||||
|
|
||||||
echo "🚀 Начинаем деплой SOFTCLICK..."
|
echo "🚀 Начинаем деплой SOFTCLICK..."
|
||||||
|
|
||||||
@@ -54,8 +54,8 @@ if [ $? -eq 0 ]; then
|
|||||||
echo "📖 Инструкции по деплою:"
|
echo "📖 Инструкции по деплою:"
|
||||||
echo " - Netlify: см. netlify.toml"
|
echo " - Netlify: см. netlify.toml"
|
||||||
echo " - GitHub Pages: см. .github/workflows/deploy.yml"
|
echo " - GitHub Pages: см. .github/workflows/deploy.yml"
|
||||||
echo " - Яндекс.Облако: см. deploy-yandex-cloud.md"
|
echo " - Яндекс.Облако: см. scripts/docs/deploy-yandex-cloud.md"
|
||||||
echo " - Хостинг: см. deploy-traditional-hosting.md"
|
echo " - Хостинг: см. scripts/docs/deploy-traditional-hosting.md"
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "❌ Ошибка при сборке!"
|
echo "❌ Ошибка при сборке!"
|
||||||
@@ -92,7 +92,7 @@ npm run build
|
|||||||
|
|
||||||
**Linux/Mac:**
|
**Linux/Mac:**
|
||||||
```bash
|
```bash
|
||||||
./deploy.sh
|
`scripts/deploy.sh` (из корня репозитория)
|
||||||
```
|
```
|
||||||
|
|
||||||
**Windows:**
|
**Windows:**
|
||||||
116
src/README.md
116
src/README.md
@@ -1,116 +0,0 @@
|
|||||||
# SOFTCLICK - Корпоративный сайт
|
|
||||||
|
|
||||||
Современный корпоративный сайт российской IT-компании SOFTCLICK с фокусом на импортозамещение и российские решения.
|
|
||||||
|
|
||||||
## ⚠️ Требования
|
|
||||||
|
|
||||||
- **Node.js 18 LTS** (рекомендуется)
|
|
||||||
- npm 9 или выше
|
|
||||||
|
|
||||||
Проект настроен на Node.js 18 для максимальной совместимости. Node.js 22 может вызвать проблемы.
|
|
||||||
|
|
||||||
**Установка Node.js 18:**
|
|
||||||
```bash
|
|
||||||
# Если используете nvm
|
|
||||||
nvm install 18
|
|
||||||
nvm use 18
|
|
||||||
|
|
||||||
# Проверка версии
|
|
||||||
node -v # должно показать v18.x.x
|
|
||||||
```
|
|
||||||
|
|
||||||
## ⚠️ Важно: Проверка сборки
|
|
||||||
|
|
||||||
Перед деплоем проверьте, в какую папку собирается проект:
|
|
||||||
|
|
||||||
**Linux/Mac:**
|
|
||||||
```bash
|
|
||||||
chmod +x check-build.sh
|
|
||||||
./check-build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
**Windows:**
|
|
||||||
```cmd
|
|
||||||
check-build.bat
|
|
||||||
```
|
|
||||||
|
|
||||||
Скрипт покажет, создаётся папка `dist` или `build`. Используйте эту информацию для настройки деплоя.
|
|
||||||
|
|
||||||
## Технологии
|
|
||||||
|
|
||||||
- React 18
|
|
||||||
- TypeScript
|
|
||||||
- Vite
|
|
||||||
- Tailwind CSS v4
|
|
||||||
- Lucide Icons
|
|
||||||
|
|
||||||
## Установка и запуск
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Установка зависимостей
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# Запуск dev-сервера
|
|
||||||
npm run dev
|
|
||||||
|
|
||||||
# Сборка для продакшена
|
|
||||||
npm run build
|
|
||||||
|
|
||||||
# Предпросмотр продакшен-сборки
|
|
||||||
npm run preview
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Деплой
|
|
||||||
|
|
||||||
### Быстрый деплой (один клик)
|
|
||||||
|
|
||||||
**Linux/Mac:**
|
|
||||||
```bash
|
|
||||||
chmod +x deploy.sh
|
|
||||||
./deploy.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
**Windows:**
|
|
||||||
```cmd
|
|
||||||
deploy.bat
|
|
||||||
```
|
|
||||||
|
|
||||||
### Рекомендуемые платформы
|
|
||||||
|
|
||||||
#### ⭐ Netlify (самый простой - 2 минуты)
|
|
||||||
1. Зарегистрируйтесь на https://netlify.com
|
|
||||||
2. Подключите GitHub репозиторий
|
|
||||||
3. Готово! Автоматический деплой настроен
|
|
||||||
|
|
||||||
#### ⭐ Cloudflare Pages (самый быстрый)
|
|
||||||
1. Зарегистрируйтесь на https://pages.cloudflare.com
|
|
||||||
2. Build command: `npm run build`
|
|
||||||
3. Output: `dist`
|
|
||||||
|
|
||||||
#### ⭐ GitHub Pages (100% бесплатно)
|
|
||||||
1. Settings → Pages → Source: "GitHub Actions"
|
|
||||||
2. Автоматический деплой уже настроен!
|
|
||||||
|
|
||||||
#### 🇷🇺 Яндекс.Облако (российская платформа)
|
|
||||||
См. подробную инструкцию в `deploy-yandex-cloud.md`
|
|
||||||
|
|
||||||
#### 🇷🇺 Традиционный хостинг (Timeweb, Beget, Reg.ru)
|
|
||||||
См. инструкцию в `deploy-traditional-hosting.md`
|
|
||||||
|
|
||||||
### 📖 Полная документация по деплою
|
|
||||||
**Смотрите файл `DEPLOYMENT.md`** - там все варианты с пошаговыми инструкциями!
|
|
||||||
|
|
||||||
## Структура проекта
|
|
||||||
|
|
||||||
- `/components` - React компоненты
|
|
||||||
- `/pages` - Страницы приложения
|
|
||||||
- `/styles` - Глобальные стили и анимации
|
|
||||||
- `/App.tsx` - Главный компонент с роутингом
|
|
||||||
|
|
||||||
## Файлы конфигурации
|
|
||||||
|
|
||||||
- `netlify.toml` - конфигурация для Netlify
|
|
||||||
- `.github/workflows/deploy.yml` - GitHub Pages автодеплой
|
|
||||||
- `.github/workflows/deploy-yandex.yml` - Яндекс.Облако автодеплой
|
|
||||||
- `.htaccess` - для Apache хостинга
|
|
||||||
- `vercel.json` - для Vercel (опционально)
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
const ERROR_IMG_SRC =
|
const ERROR_IMG_SRC =
|
||||||
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='
|
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as AccordionPrimitive from "@radix-ui/react-accordion@1.2.3";
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
||||||
import { ChevronDownIcon } from "lucide-react@0.487.0";
|
import { ChevronDownIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog@1.1.6";
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { buttonVariants } from "./button";
|
import { buttonVariants } from "./button";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
|
import { cva, type VariantProps } from "class-variance-authority";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio@1.1.2";
|
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
|
||||||
|
|
||||||
function AspectRatio({
|
function AspectRatio({
|
||||||
...props
|
...props
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as AvatarPrimitive from "@radix-ui/react-avatar@1.1.3";
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Slot } from "@radix-ui/react-slot@1.1.2";
|
import { Slot } from "@radix-ui/react-slot";
|
||||||
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
|
import { cva, type VariantProps } from "class-variance-authority";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Slot } from "@radix-ui/react-slot@1.1.2";
|
import { Slot } from "@radix-ui/react-slot";
|
||||||
import { ChevronRight, MoreHorizontal } from "lucide-react@0.487.0";
|
import { ChevronRight, MoreHorizontal } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Slot } from "@radix-ui/react-slot@1.1.2";
|
import { Slot } from "@radix-ui/react-slot";
|
||||||
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
|
import { cva, type VariantProps } from "class-variance-authority";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react@0.487.0";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { DayPicker } from "react-day-picker@8.10.1";
|
import { DayPicker } from "react-day-picker";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { buttonVariants } from "./button";
|
import { buttonVariants } from "./button";
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import useEmblaCarousel, {
|
import useEmblaCarousel, {
|
||||||
type UseEmblaCarouselType,
|
type UseEmblaCarouselType,
|
||||||
} from "embla-carousel-react@8.6.0";
|
} from "embla-carousel-react";
|
||||||
import { ArrowLeft, ArrowRight } from "lucide-react@0.487.0";
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { Button } from "./button";
|
import { Button } from "./button";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as RechartsPrimitive from "recharts@2.15.2";
|
import * as RechartsPrimitive from "recharts";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as CheckboxPrimitive from "@radix-ui/react-checkbox@1.1.4";
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
||||||
import { CheckIcon } from "lucide-react@0.487.0";
|
import { CheckIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible@1.1.3";
|
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
||||||
|
|
||||||
function Collapsible({
|
function Collapsible({
|
||||||
...props
|
...props
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Command as CommandPrimitive } from "cmdk@1.1.1";
|
import { Command as CommandPrimitive } from "cmdk";
|
||||||
import { SearchIcon } from "lucide-react@0.487.0";
|
import { SearchIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu@2.2.6";
|
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
||||||
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as DialogPrimitive from "@radix-ui/react-dialog@1.1.6";
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
||||||
import { XIcon } from "lucide-react@0.487.0";
|
import { XIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Drawer as DrawerPrimitive } from "vaul@1.1.2";
|
import { Drawer as DrawerPrimitive } from "vaul";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu@2.1.6";
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
||||||
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as LabelPrimitive from "@radix-ui/react-label@2.1.2";
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
||||||
import { Slot } from "@radix-ui/react-slot@1.1.2";
|
import { Slot } from "@radix-ui/react-slot";
|
||||||
import {
|
import {
|
||||||
Controller,
|
Controller,
|
||||||
FormProvider,
|
FormProvider,
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
type ControllerProps,
|
type ControllerProps,
|
||||||
type FieldPath,
|
type FieldPath,
|
||||||
type FieldValues,
|
type FieldValues,
|
||||||
} from "react-hook-form@7.55.0";
|
} from "react-hook-form";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { Label } from "./label";
|
import { Label } from "./label";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as HoverCardPrimitive from "@radix-ui/react-hover-card@1.1.6";
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { OTPInput, OTPInputContext } from "input-otp@1.4.2";
|
import { OTPInput, OTPInputContext } from "input-otp";
|
||||||
import { MinusIcon } from "lucide-react@0.487.0";
|
import { MinusIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as LabelPrimitive from "@radix-ui/react-label@2.1.2";
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as MenubarPrimitive from "@radix-ui/react-menubar@1.1.6";
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
||||||
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu@1.2.5";
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
||||||
import { cva } from "class-variance-authority@0.7.1";
|
import { cva } from "class-variance-authority";
|
||||||
import { ChevronDownIcon } from "lucide-react@0.487.0";
|
import { ChevronDownIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
ChevronLeftIcon,
|
ChevronLeftIcon,
|
||||||
ChevronRightIcon,
|
ChevronRightIcon,
|
||||||
MoreHorizontalIcon,
|
MoreHorizontalIcon,
|
||||||
} from "lucide-react@0.487.0";
|
} from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { Button, buttonVariants } from "./button";
|
import { Button, buttonVariants } from "./button";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as PopoverPrimitive from "@radix-ui/react-popover@1.1.6";
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as ProgressPrimitive from "@radix-ui/react-progress@1.1.2";
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group@1.2.3";
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
||||||
import { CircleIcon } from "lucide-react@0.487.0";
|
import { CircleIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { GripVerticalIcon } from "lucide-react@0.487.0";
|
import { GripVerticalIcon } from "lucide-react";
|
||||||
import * as ResizablePrimitive from "react-resizable-panels@2.1.7";
|
import * as ResizablePrimitive from "react-resizable-panels";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area@1.2.3";
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as SelectPrimitive from "@radix-ui/react-select@2.1.6";
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
||||||
import {
|
import {
|
||||||
CheckIcon,
|
CheckIcon,
|
||||||
ChevronDownIcon,
|
ChevronDownIcon,
|
||||||
ChevronUpIcon,
|
ChevronUpIcon,
|
||||||
} from "lucide-react@0.487.0";
|
} from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as SeparatorPrimitive from "@radix-ui/react-separator@1.1.2";
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as SheetPrimitive from "@radix-ui/react-dialog@1.1.6";
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
||||||
import { XIcon } from "lucide-react@0.487.0";
|
import { XIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Slot } from "@radix-ui/react-slot@1.1.2";
|
import { Slot } from "@radix-ui/react-slot";
|
||||||
import { VariantProps, cva } from "class-variance-authority@0.7.1";
|
import { VariantProps, cva } from "class-variance-authority";
|
||||||
import { PanelLeftIcon } from "lucide-react@0.487.0";
|
import { PanelLeftIcon } from "lucide-react";
|
||||||
|
|
||||||
import { useIsMobile } from "./use-mobile";
|
import { useIsMobile } from "./use-mobile";
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as SliderPrimitive from "@radix-ui/react-slider@1.2.3";
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useTheme } from "next-themes@0.4.6";
|
import { useTheme } from "next-themes";
|
||||||
import { Toaster as Sonner, ToasterProps } from "sonner@2.0.3";
|
import { Toaster as Sonner, ToasterProps } from "sonner";
|
||||||
|
|
||||||
const Toaster = ({ ...props }: ToasterProps) => {
|
const Toaster = ({ ...props }: ToasterProps) => {
|
||||||
const { theme = "system" } = useTheme();
|
const { theme = "system" } = useTheme();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as SwitchPrimitive from "@radix-ui/react-switch@1.1.3";
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as TabsPrimitive from "@radix-ui/react-tabs@1.1.3";
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group@1.1.2";
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
||||||
import { type VariantProps } from "class-variance-authority@0.7.1";
|
import { type VariantProps } from "class-variance-authority";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
import { toggleVariants } from "./toggle";
|
import { toggleVariants } from "./toggle";
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as TogglePrimitive from "@radix-ui/react-toggle@1.1.2";
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
||||||
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
|
import { cva, type VariantProps } from "class-variance-authority";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as TooltipPrimitive from "@radix-ui/react-tooltip@1.1.8";
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
||||||
|
|
||||||
import { cn } from "./utils";
|
import { cn } from "./utils";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
@import 'tailwindcss' source(none);
|
|
||||||
@source './**/*.{js,ts,jsx,tsx}';
|
|
||||||
@import 'tw-animate-css';
|
|
||||||
@import './styles/globals.css';
|
|
||||||
|
|
||||||
@layer base {
|
|
||||||
html, body, #root { min-height: 100vh; height: 100%; margin: 0; }
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta name="description" content="SOFTCLICK - российская IT-компания, специализирующаяся на импортозамещении и внедрении отечественных решений" />
|
|
||||||
<title>SOFTCLICK - Российские IT-решения с 2021 года</title>
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
|
||||||
<script type="module" src="/main.tsx"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
1850
src/package-lock.json
generated
1850
src/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "softclick-corporate-website",
|
|
||||||
"private": true,
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "module",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18.0.0 <22.0.0",
|
|
||||||
"npm": ">=9.0.0"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "vite build",
|
|
||||||
"preview": "vite preview"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"react": "^18.3.1",
|
|
||||||
"react-dom": "^18.3.1",
|
|
||||||
"lucide-react": "^0.344.0",
|
|
||||||
"clsx": "^2.1.0",
|
|
||||||
"tailwind-merge": "^2.2.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^20.11.19",
|
|
||||||
"@types/react": "^18.2.56",
|
|
||||||
"@types/react-dom": "^18.2.19",
|
|
||||||
"@vitejs/plugin-react": "^4.2.1",
|
|
||||||
"autoprefixer": "^10.4.18",
|
|
||||||
"postcss": "^8.4.35",
|
|
||||||
"tailwindcss": "^4.0.0",
|
|
||||||
"typescript": "^5.2.2",
|
|
||||||
"vite": "^5.1.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
export default {
|
|
||||||
plugins: {
|
|
||||||
tailwindcss: {},
|
|
||||||
autoprefixer: {},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
your-domain.ru
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/** @type {import('tailwindcss').Config} */
|
|
||||||
export default {
|
|
||||||
content: [
|
|
||||||
"./index.html",
|
|
||||||
"./**/*.{js,ts,jsx,tsx}",
|
|
||||||
],
|
|
||||||
theme: {
|
|
||||||
extend: {},
|
|
||||||
},
|
|
||||||
plugins: [],
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"composite": true,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"module": "ESNext",
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"allowSyntheticDefaultImports": true
|
|
||||||
},
|
|
||||||
"include": ["vite.config.ts"]
|
|
||||||
}
|
|
||||||
1
src/vite-env.d.ts
vendored
Normal file
1
src/vite-env.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/// <reference types="vite/client" />
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { defineConfig } from 'vite';
|
|
||||||
import react from '@vitejs/plugin-react';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [react()],
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
'@': path.resolve(__dirname, './'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
outDir: 'build',
|
|
||||||
emptyOutDir: true,
|
|
||||||
sourcemap: false,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||||
"target": "ES2020",
|
"target": "ES2020",
|
||||||
"useDefineForClassFields": true,
|
"useDefineForClassFields": true,
|
||||||
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||||
@@ -12,10 +13,7 @@
|
|||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"jsx": "react-jsx",
|
"jsx": "react-jsx",
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noUnusedLocals": true,
|
|
||||||
"noUnusedParameters": true,
|
|
||||||
"noFallthroughCasesInSwitch": true
|
"noFallthroughCasesInSwitch": true
|
||||||
},
|
},
|
||||||
"include": ["**/*.ts", "**/*.tsx"],
|
"include": ["src"]
|
||||||
"references": [{ "path": "./tsconfig.node.json" }]
|
|
||||||
}
|
}
|
||||||
7
tsconfig.json
Normal file
7
tsconfig.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"files": [],
|
||||||
|
"references": [
|
||||||
|
{ "path": "./tsconfig.app.json" },
|
||||||
|
{ "path": "./tsconfig.node.json" }
|
||||||
|
]
|
||||||
|
}
|
||||||
11
tsconfig.node.json
Normal file
11
tsconfig.node.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
||||||
|
"target": "ES2022",
|
||||||
|
"lib": ["ES2023"],
|
||||||
|
"module": "ESNext",
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"moduleResolution": "bundler"
|
||||||
|
},
|
||||||
|
"include": ["vite.config.ts"]
|
||||||
|
}
|
||||||
7
vite.config.js
Normal file
7
vite.config.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
|
// https://vite.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [react(), tailwindcss()],
|
||||||
|
});
|
||||||
@@ -1,61 +1,8 @@
|
|||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
|
|
||||||
import { defineConfig } from 'vite';
|
// https://vite.dev/config/
|
||||||
import react from '@vitejs/plugin-react';
|
export default defineConfig({
|
||||||
import tailwindcss from '@tailwindcss/vite';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [react(), tailwindcss()],
|
plugins: [react(), tailwindcss()],
|
||||||
resolve: {
|
});
|
||||||
extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
|
|
||||||
alias: {
|
|
||||||
'vaul@1.1.2': 'vaul',
|
|
||||||
'sonner@2.0.3': 'sonner',
|
|
||||||
'recharts@2.15.2': 'recharts',
|
|
||||||
'react-resizable-panels@2.1.7': 'react-resizable-panels',
|
|
||||||
'react-hook-form@7.55.0': 'react-hook-form',
|
|
||||||
'react-day-picker@8.10.1': 'react-day-picker',
|
|
||||||
'next-themes@0.4.6': 'next-themes',
|
|
||||||
'lucide-react@0.487.0': 'lucide-react',
|
|
||||||
'input-otp@1.4.2': 'input-otp',
|
|
||||||
'embla-carousel-react@8.6.0': 'embla-carousel-react',
|
|
||||||
'cmdk@1.1.1': 'cmdk',
|
|
||||||
'class-variance-authority@0.7.1': 'class-variance-authority',
|
|
||||||
'@radix-ui/react-tooltip@1.1.8': '@radix-ui/react-tooltip',
|
|
||||||
'@radix-ui/react-toggle@1.1.2': '@radix-ui/react-toggle',
|
|
||||||
'@radix-ui/react-toggle-group@1.1.2': '@radix-ui/react-toggle-group',
|
|
||||||
'@radix-ui/react-tabs@1.1.3': '@radix-ui/react-tabs',
|
|
||||||
'@radix-ui/react-switch@1.1.3': '@radix-ui/react-switch',
|
|
||||||
'@radix-ui/react-slot@1.1.2': '@radix-ui/react-slot',
|
|
||||||
'@radix-ui/react-slider@1.2.3': '@radix-ui/react-slider',
|
|
||||||
'@radix-ui/react-separator@1.1.2': '@radix-ui/react-separator',
|
|
||||||
'@radix-ui/react-select@2.1.6': '@radix-ui/react-select',
|
|
||||||
'@radix-ui/react-scroll-area@1.2.3': '@radix-ui/react-scroll-area',
|
|
||||||
'@radix-ui/react-radio-group@1.2.3': '@radix-ui/react-radio-group',
|
|
||||||
'@radix-ui/react-progress@1.1.2': '@radix-ui/react-progress',
|
|
||||||
'@radix-ui/react-popover@1.1.6': '@radix-ui/react-popover',
|
|
||||||
'@radix-ui/react-navigation-menu@1.2.5': '@radix-ui/react-navigation-menu',
|
|
||||||
'@radix-ui/react-menubar@1.1.6': '@radix-ui/react-menubar',
|
|
||||||
'@radix-ui/react-label@2.1.2': '@radix-ui/react-label',
|
|
||||||
'@radix-ui/react-hover-card@1.1.6': '@radix-ui/react-hover-card',
|
|
||||||
'@radix-ui/react-dropdown-menu@2.1.6': '@radix-ui/react-dropdown-menu',
|
|
||||||
'@radix-ui/react-dialog@1.1.6': '@radix-ui/react-dialog',
|
|
||||||
'@radix-ui/react-context-menu@2.2.6': '@radix-ui/react-context-menu',
|
|
||||||
'@radix-ui/react-collapsible@1.1.3': '@radix-ui/react-collapsible',
|
|
||||||
'@radix-ui/react-checkbox@1.1.4': '@radix-ui/react-checkbox',
|
|
||||||
'@radix-ui/react-avatar@1.1.3': '@radix-ui/react-avatar',
|
|
||||||
'@radix-ui/react-aspect-ratio@1.1.2': '@radix-ui/react-aspect-ratio',
|
|
||||||
'@radix-ui/react-alert-dialog@1.1.6': '@radix-ui/react-alert-dialog',
|
|
||||||
'@radix-ui/react-accordion@1.2.3': '@radix-ui/react-accordion',
|
|
||||||
'@': path.resolve(__dirname, './src'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
target: 'esnext',
|
|
||||||
outDir: 'build',
|
|
||||||
},
|
|
||||||
server: {
|
|
||||||
port: 3000,
|
|
||||||
open: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user