first commit

This commit is contained in:
2026-05-09 00:38:56 +03:00
commit 51a44ef13d
156 changed files with 9832 additions and 0 deletions

9
src/app/App.tsx Normal file
View File

@@ -0,0 +1,9 @@
import { RouterProvider, QueryProvider } from './providers'
export function App() {
return (
<QueryProvider>
<RouterProvider />
</QueryProvider>
)
}

View File

@@ -0,0 +1,8 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import type { ReactNode } from 'react'
const queryClient = new QueryClient()
export function QueryProvider({ children }: { children: ReactNode }) {
return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
}

View File

@@ -0,0 +1,27 @@
import { BrowserRouter, Route, Routes } from 'react-router-dom'
import { HomePage } from '@pages/home'
import { WalletPage } from '@pages/wallet'
import { SwapPage } from '@pages/swap'
import { ProfilePage } from '@pages/profile'
import { LoginPage } from '@pages/login'
import { RegisterPage } from '@pages/register'
import { SeedPhrasePage } from '@pages/seed-phrase'
import { ROUTES } from '@shared/config/routes'
import { ScrollToTop } from './ScrollToTop'
export function RouterProvider() {
return (
<BrowserRouter>
<ScrollToTop />
<Routes>
<Route path={ROUTES.HOME} element={<HomePage />} />
<Route path={ROUTES.WALLET} element={<WalletPage />} />
<Route path={ROUTES.SWAP} element={<SwapPage />} />
<Route path={ROUTES.PROFILE} element={<ProfilePage />} />
<Route path={ROUTES.LOGIN} element={<LoginPage />} />
<Route path={ROUTES.REGISTER} element={<RegisterPage />} />
<Route path={ROUTES.SEED_PHRASE} element={<SeedPhrasePage />} />
</Routes>
</BrowserRouter>
)
}

View File

@@ -0,0 +1,12 @@
import { useEffect } from 'react'
import { useLocation } from 'react-router-dom'
export function ScrollToTop() {
const { pathname } = useLocation()
useEffect(() => {
window.scrollTo(0, 0)
}, [pathname])
return null
}

View File

@@ -0,0 +1,2 @@
export { RouterProvider } from './RouterProvider'
export { QueryProvider } from './QueryProvider'

1
src/app/styles/fonts.css Normal file
View File

@@ -0,0 +1 @@
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&display=swap');

12
src/app/styles/global.css Normal file
View File

@@ -0,0 +1,12 @@
body {
font-family: var(--font-sans);
background: var(--bg-deep);
color: var(--text-primary);
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
#root {
min-height: 100vh;
}

34
src/app/styles/reset.css Normal file
View File

@@ -0,0 +1,34 @@
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
button {
font: inherit;
color: inherit;
background: none;
border: none;
cursor: pointer;
}
a {
color: inherit;
text-decoration: none;
}
input {
font: inherit;
}
img,
svg {
display: block;
max-width: 100%;
}

View File

@@ -0,0 +1,20 @@
:root {
--bg-deep: #0a0b2e;
--bg-mid: #1b1547;
--grad-edge: #3d2a8e;
--grad-center: #5b3db8;
--text-primary: #ffffff;
--text-secondary: #b5b0cc;
--interactive: #4a6dff;
--highlight: #00d4ff;
--success: #26a17b;
--error: #ff4466;
--glass-border: rgba(255, 255, 255, 0.08);
--glass-bg: rgba(255, 255, 255, 0.04);
--font-sans: 'Manrope', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', monospace;
}