From 61bbeb3347c74b76082eef47fcc653c66a687052 Mon Sep 17 00:00:00 2001 From: Georgiy Syralev Date: Sun, 14 Sep 2025 23:19:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8,=20=D0=BD=D0=B5=D0=B1=D0=B5=D0=B7=D0=BE=D0=BF=D0=B0?= =?UTF-8?q?=D1=81=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ospabhost/package-lock.json | 43 ++++++++ ospabhost/package.json | 1 + ospabhost/src/App.js | 49 ++++++--- ospabhost/src/components/Footer.tsx | 6 +- ospabhost/src/components/Navbar.tsx | 63 +++++++----- ospabhost/src/context/AuthContext.tsx | 48 +++++++++ ospabhost/src/index.tsx | 7 +- ospabhost/src/pages/dashboard/billing.tsx | 20 +++- ospabhost/src/pages/dashboard/index.tsx | 45 +++++---- ospabhost/src/pages/dashboard/servers.tsx | 14 ++- ospabhost/src/pages/dashboard/support.tsx | 20 +++- ospabhost/src/pages/index.tsx | 118 +++++++++++++++++++--- ospabhost/src/pages/login.tsx | 68 +++++++------ ospabhost/src/pages/pricing.tsx | 62 +++++++----- ospabhost/src/pages/register.tsx | 77 ++++++++++++++ 15 files changed, 499 insertions(+), 142 deletions(-) create mode 100644 ospabhost/src/context/AuthContext.tsx create mode 100644 ospabhost/src/pages/register.tsx diff --git a/ospabhost/package-lock.json b/ospabhost/package-lock.json index 10f4d95..0b2cbf1 100644 --- a/ospabhost/package-lock.json +++ b/ospabhost/package-lock.json @@ -12,6 +12,7 @@ "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", + "framer-motion": "^12.23.12", "react": "^19.1.1", "react-dom": "^19.1.1", "react-router-dom": "^7.9.1", @@ -8424,6 +8425,33 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.12.tgz", + "integrity": "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.12", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -11524,6 +11552,21 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/motion-dom": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.12.tgz", + "integrity": "sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/ospabhost/package.json b/ospabhost/package.json index 4e1253f..9b32c88 100644 --- a/ospabhost/package.json +++ b/ospabhost/package.json @@ -7,6 +7,7 @@ "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", + "framer-motion": "^12.23.12", "react": "^19.1.1", "react-dom": "^19.1.1", "react-router-dom": "^7.9.1", diff --git a/ospabhost/src/App.js b/ospabhost/src/App.js index e7fafc5..6510b2a 100644 --- a/ospabhost/src/App.js +++ b/ospabhost/src/App.js @@ -1,20 +1,37 @@ -import React from 'react'; -import { BrowserRouter, Routes, Route } from 'react-router-dom'; -import Index from './pages/index'; -import Pricing from './pages/pricing'; -import Login from './pages/login'; -import Dashboard from './pages/dashboard/index'; -import './styles/tailwind.css'; +import React from "react"; +import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; +import { AuthProvider } from "./context/AuthContext"; +import Navbar from "./components/Navbar"; +import Footer from "./components/Footer"; +import Home from "./pages/index"; +import Login from "./pages/login"; +import Register from "./pages/register"; +import Dashboard from "./pages/dashboard"; -export default function App() { +function App() { return ( - - - } /> - } /> - } /> - } /> - - + + +
+ {/* Навигация сверху */} + + + {/* Основной контент */} +
+ + } /> + } /> + } /> + } /> + +
+ + {/* Подвал */} +
+
+
+
); } + +export default App; diff --git a/ospabhost/src/components/Footer.tsx b/ospabhost/src/components/Footer.tsx index 233c109..1d8f4a5 100644 --- a/ospabhost/src/components/Footer.tsx +++ b/ospabhost/src/components/Footer.tsx @@ -1,7 +1,9 @@ const Footer: React.FC = () => { return ( -