🎨 Layout: Глобальные стили, favicon, корневой layout
This commit is contained in:
BIN
app/favicon.ico
Normal file
BIN
app/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
44
app/globals.css
Normal file
44
app/globals.css
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
:root {
|
||||||
|
/* Hiddify Colors */
|
||||||
|
--primary: #2fbea5;
|
||||||
|
--primary-dark: #005048;
|
||||||
|
--primary-light: #7df8dd;
|
||||||
|
|
||||||
|
--bg-app: #191f23;
|
||||||
|
--bg-card: #263238;
|
||||||
|
--bg-elevated: #37474f;
|
||||||
|
|
||||||
|
--text-primary: #e1e2e6;
|
||||||
|
--text-white: #ffffff;
|
||||||
|
|
||||||
|
--border: #37474f;
|
||||||
|
--outline: #4caf50;
|
||||||
|
|
||||||
|
--success: #44a334;
|
||||||
|
--idle: #4a4d8b;
|
||||||
|
--error: #f44336;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: var(--bg-app);
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Бегущая строка */
|
||||||
|
@keyframes marquee {
|
||||||
|
0% {
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-marquee {
|
||||||
|
animation: marquee 20s linear infinite;
|
||||||
|
}
|
||||||
52
app/layout.tsx
Normal file
52
app/layout.tsx
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import './globals.css';
|
||||||
|
import type { Metadata } from 'next';
|
||||||
|
import { Inter } from 'next/font/google';
|
||||||
|
|
||||||
|
const inter = Inter({ subsets: ['latin'] });
|
||||||
|
|
||||||
|
export const viewport = {
|
||||||
|
width: 'device-width',
|
||||||
|
initialScale: 1,
|
||||||
|
maximumScale: 1,
|
||||||
|
userScalable: false, // Отключаем зум для mini app
|
||||||
|
themeColor: '#191f23', // Цвет темы Umbrix
|
||||||
|
};
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Umbrix VPN',
|
||||||
|
description: 'Быстрый и безопасный VPN сервис',
|
||||||
|
openGraph: {
|
||||||
|
title: 'Umbrix VPN',
|
||||||
|
description: 'Быстрый и безопасный VPN сервис',
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: 'https://bolt.new/static/og_default.png',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
card: 'summary_large_image',
|
||||||
|
title: 'Umbrix VPN',
|
||||||
|
description: 'Быстрый и безопасный VPN сервис',
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: 'https://bolt.new/static/og_default.png',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<script src="https://telegram.org/js/telegram-web-app.js" async></script>
|
||||||
|
</head>
|
||||||
|
<body className={inter.className}>{children}</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user