Add next-intl
62
messages/en.json
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
"general": {
|
||||
"date": "Date",
|
||||
"address": "Address",
|
||||
"status": "Status",
|
||||
"description": "Description",
|
||||
"reviews": "Reviews",
|
||||
"rating": "Rating",
|
||||
"review": "Review",
|
||||
"write_comment": "Write Comment",
|
||||
"search": "Search",
|
||||
"search_for": "Search For",
|
||||
"city": "City",
|
||||
"added_roads": "Added Roads",
|
||||
"broken_roads": "Broken Roads",
|
||||
"accident_hotspots": "Accident Hotspots",
|
||||
"local_defects": "Local Defects",
|
||||
"repair_plans": "Repair Plans",
|
||||
"repaired": "Repaired",
|
||||
"fixed_local_defects": "Fixed Local Defects",
|
||||
"news": "News",
|
||||
"details": "Details",
|
||||
"navigation": "Navigation",
|
||||
"contacts": "Contacts",
|
||||
"download_our_app": "Download our app",
|
||||
"back": "Back",
|
||||
"save": "Save",
|
||||
"saving": "Saving",
|
||||
"cancel": "Cancel",
|
||||
"cancellation": "Cancellation",
|
||||
"save_changes": "Save Changes",
|
||||
"send": "Send",
|
||||
"receive": "Receive",
|
||||
"delete": "Delete",
|
||||
"show_on_map": "Show on Map",
|
||||
"author_of_appeal": "Author of Appeal",
|
||||
"enter_city": "Enter City",
|
||||
"page_not_found": "Page Not Found (404)",
|
||||
"incorrect_address_or_nonexistent_page": "Incorrect Address or Nonexistent Page.",
|
||||
"home": "Home",
|
||||
"first_name": "First Name",
|
||||
"last_name": "Last Name",
|
||||
"email": "Email"
|
||||
},
|
||||
"disclaimer": {
|
||||
"text": "This website is funded by the European Union. Its contents are the sole responsibility of Transparency International Kyrgyzstan and do not necessarily reflect the views of the European Union."
|
||||
},
|
||||
"navigation": {
|
||||
"home": "Home",
|
||||
"about_us": "About Us",
|
||||
"privacy": "Privacy Policy",
|
||||
"support": "Support",
|
||||
"statistics": "Statistics",
|
||||
"news": "News",
|
||||
"volunteers": "Volunteers",
|
||||
"profile": "Profile",
|
||||
"login": "Login"
|
||||
},
|
||||
"rights": {
|
||||
"text": "All rights reserved"
|
||||
}
|
||||
}
|
62
messages/kg.json
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
"general": {
|
||||
"date": "Күн",
|
||||
"address": "Дарек",
|
||||
"status": "Статус",
|
||||
"description": "Көйгөй",
|
||||
"reviews": "Комментарийлер",
|
||||
"rating": "Рейтинг",
|
||||
"review": "Комментарий",
|
||||
"write_comment": "Комментарий жазуу",
|
||||
"search": "Издөө",
|
||||
"search_for": "Издөө",
|
||||
"city": "Шаар",
|
||||
"added_roads": "Белгилөөлөр",
|
||||
"broken_roads": "Бузулган жолдор",
|
||||
"accident_hotspots": "Авариялык абалда",
|
||||
"local_defects": "Жергиликтүү кемчиликтер",
|
||||
"repair_plans": "Ремонттоо планында",
|
||||
"repaired": "Ремонттолгон",
|
||||
"fixed_local_defects": "Жергиликтүү оңдолгон жолдор",
|
||||
"news": "Жаңылыктар",
|
||||
"details": "Кененирээк маалымат",
|
||||
"navigation": "Навигация",
|
||||
"contacts": "Байланыш",
|
||||
"download_our_app": "Биздин колдонмону жүктөңүз",
|
||||
"back": "Артка",
|
||||
"save": "Сактоо",
|
||||
"saving": "Сакталат",
|
||||
"cancel": "Жокко чыгаруу",
|
||||
"cancellation": "Жокко чыгаруу",
|
||||
"save_changes": "Өзгөртүүлөрдү сактоо",
|
||||
"send": "Жиберүү",
|
||||
"receive": "Алуу",
|
||||
"delete": "Жок кылуу",
|
||||
"show_on_map": "Картада көрсөтүү",
|
||||
"author_of_appeal": "Өтүнүчтүн автору",
|
||||
"enter_city": "Жерликти киргизиңиз",
|
||||
"page_not_found": "Барак табылган жок (404)",
|
||||
"incorrect_address_or_nonexistent_page": "Дарек туура эмес же баракча жок",
|
||||
"home": "Башкы бет",
|
||||
"first_name": "Аты-жөнү",
|
||||
"last_name": "Фамилия",
|
||||
"email": "Электрондук почта"
|
||||
},
|
||||
"navigation": {
|
||||
"home": "Башкы бет",
|
||||
"about_us": "Биз жөнүндө",
|
||||
"privacy": "Купуялык саясаты",
|
||||
"support": "Колдоо",
|
||||
"statistics": "Статистика",
|
||||
"news": "Жаңылыктар",
|
||||
"volunteers": "Ыктыярчылар",
|
||||
"profile": "Профиль",
|
||||
"login": "Кирүү"
|
||||
},
|
||||
"disclaimer": {
|
||||
"text": "Бул веб-сайт Европа Биримдиги тарабынан каржыланат. Анын мазмуну үчүн Трансперенси Интернешнл Кыргызстан гана жоопкерчиликтүү жана ал Европа Биримдигинин көз карашын сөзсүз түрдө чагылдырбайт."
|
||||
},
|
||||
"rights": {
|
||||
"text": "Бардык укуктар корголгон"
|
||||
}
|
||||
}
|
62
messages/ru.json
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
"general": {
|
||||
"date": "Дата",
|
||||
"address": "Адрес",
|
||||
"status": "Статус",
|
||||
"description": "Описание",
|
||||
"reviews": "Комментарии",
|
||||
"rating": "Рейтинг",
|
||||
"review": "Комментарий",
|
||||
"write_comment": "Написать комментарий",
|
||||
"search": "Поиск",
|
||||
"search_for": "Искать",
|
||||
"city": "Город",
|
||||
"added_roads": "Добавлено дорог",
|
||||
"broken_roads": "Разбитых дорог",
|
||||
"accident_hotspots": "Очагов аварийности",
|
||||
"local_defects": "Локальных дефектов",
|
||||
"repair_plans": "В планах ремонта",
|
||||
"repaired": "Отремонтировано",
|
||||
"fixed_local_defects": "Локальных дефектов исправлено",
|
||||
"news": "Новости",
|
||||
"details": "Подробнее",
|
||||
"navigation": "Навигация",
|
||||
"contacts": "Контакты",
|
||||
"download_our_app": "Скачивай наше приложение",
|
||||
"back": "Назад",
|
||||
"save": "Сохранить",
|
||||
"saving": "Сохранение",
|
||||
"cancel": "Отменить",
|
||||
"cancellation": "Отмена",
|
||||
"save_changes": "Сохранить изменения",
|
||||
"send": "Отправить",
|
||||
"receive": "Получить",
|
||||
"delete": "Удалить",
|
||||
"show_on_map": "Показать на карте",
|
||||
"author_of_appeal": "Автор обращения",
|
||||
"enter_city": "Введите населенный пункт",
|
||||
"page_not_found": "Страница не найдена (404)",
|
||||
"incorrect_address_or_nonexistent_page": "Неправильно набран адрес или такой страницы не существует.",
|
||||
"home": "На главную",
|
||||
"first_name": "Имя",
|
||||
"last_name": "Фамилия",
|
||||
"email": "Электронная почта"
|
||||
},
|
||||
"navigation": {
|
||||
"home": "Главная",
|
||||
"about_us": "О нас",
|
||||
"privacy": "Политика конфиденциальности",
|
||||
"support": "Поддержка",
|
||||
"statistics": "Статистика",
|
||||
"news": "Новости",
|
||||
"volunteers": "Волонтеры",
|
||||
"profile": "Профиль",
|
||||
"login": "Войти"
|
||||
},
|
||||
"disclaimer": {
|
||||
"text": "Этот веб-сайт финансируется Европейским Союзом. Ответственность за его содержание лежит исключительно на Трансперенси Интернешнл Кыргызстан и не обязательно отражает точку зрения Европейского Союза."
|
||||
},
|
||||
"rights": {
|
||||
"text": "Все права защищены"
|
||||
}
|
||||
}
|
@ -1,4 +1,16 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {};
|
||||
import createNextIntlPlugin from "next-intl/plugin";
|
||||
const withNextIntl = createNextIntlPlugin();
|
||||
|
||||
export default nextConfig;
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: "https",
|
||||
hostname: "**",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export default withNextIntl(nextConfig);
|
||||
|
104
package-lock.json
generated
@ -9,6 +9,7 @@
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"next": "14.2.5",
|
||||
"next-intl": "^3.17.2",
|
||||
"react": "^18",
|
||||
"react-dom": "^18"
|
||||
},
|
||||
@ -91,6 +92,58 @@
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/ecma402-abstract": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
|
||||
"integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
|
||||
"dependencies": {
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
|
||||
"integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/fast-memoize": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
|
||||
"integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/icu-messageformat-parser": {
|
||||
"version": "2.7.8",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
|
||||
"integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/icu-skeleton-parser": "1.8.2",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/icu-skeleton-parser": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
|
||||
"integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-localematcher": {
|
||||
"version": "0.2.32",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz",
|
||||
"integrity": "sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array": {
|
||||
"version": "0.11.14",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
|
||||
@ -2464,6 +2517,17 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/intl-messageformat": {
|
||||
"version": "10.5.14",
|
||||
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
|
||||
"integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/fast-memoize": "2.2.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-arguments": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
||||
@ -3149,6 +3213,14 @@
|
||||
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
|
||||
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "14.2.5",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz",
|
||||
@ -3198,6 +3270,26 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/next-intl": {
|
||||
"version": "3.17.2",
|
||||
"resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.17.2.tgz",
|
||||
"integrity": "sha512-X2ly23e1lC5vdWHaJFBDZi/0iornEdFQQtqJmmPOb7WD+LDssm9vAnx+hJshYGjddaP3rUmyWaPgePCQqaxm1g==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/amannn"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"@formatjs/intl-localematcher": "^0.2.32",
|
||||
"negotiator": "^0.6.3",
|
||||
"use-intl": "^3.17.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/next/node_modules/postcss": {
|
||||
"version": "8.4.31",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||
@ -4647,6 +4739,18 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/use-intl": {
|
||||
"version": "3.17.2",
|
||||
"resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.17.2.tgz",
|
||||
"integrity": "sha512-9lPgt41nS8x4AYCLfIC9VKCmamnVxzPM2nze7lpp/I1uaSSQvIz5MQpYUFikv08cMUsCwAWahU0e+arHInpdcw==",
|
||||
"dependencies": {
|
||||
"@formatjs/fast-memoize": "^2.2.0",
|
||||
"intl-messageformat": "^10.5.14"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
|
11
package.json
@ -9,18 +9,19 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "14.2.5",
|
||||
"next-intl": "^3.17.2",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"next": "14.2.5"
|
||||
"react-dom": "^18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.2.5",
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.2.5"
|
||||
"typescript": "^5"
|
||||
}
|
||||
}
|
||||
|
3
src/app/[locale]/globals.css
Normal file
@ -0,0 +1,3 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
31
src/app/[locale]/layout.tsx
Normal file
@ -0,0 +1,31 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import { NextIntlClientProvider, useMessages } from "next-intl";
|
||||
import Footer from "../widgets/Footer/Footer";
|
||||
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Create Next App",
|
||||
description: "Generated by create next app",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
params,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
params: { locale: string };
|
||||
}>) {
|
||||
const messages = useMessages();
|
||||
|
||||
return (
|
||||
<html lang={params.locale}>
|
||||
<NextIntlClientProvider locale={params.locale} messages={messages}>
|
||||
<body className={inter.className}>{children}</body>
|
||||
<Footer />
|
||||
</NextIntlClientProvider>
|
||||
</html>
|
||||
);
|
||||
}
|
5
src/app/[locale]/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import Image from "next/image";
|
||||
|
||||
export default function Home() {
|
||||
return <main></main>;
|
||||
}
|
Before Width: | Height: | Size: 25 KiB |
@ -1,33 +0,0 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
:root {
|
||||
--foreground-rgb: 0, 0, 0;
|
||||
--background-start-rgb: 214, 219, 220;
|
||||
--background-end-rgb: 255, 255, 255;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--foreground-rgb: 255, 255, 255;
|
||||
--background-start-rgb: 0, 0, 0;
|
||||
--background-end-rgb: 0, 0, 0;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
color: rgb(var(--foreground-rgb));
|
||||
background: linear-gradient(
|
||||
to bottom,
|
||||
transparent,
|
||||
rgb(var(--background-end-rgb))
|
||||
)
|
||||
rgb(var(--background-start-rgb));
|
||||
}
|
||||
|
||||
@layer utilities {
|
||||
.text-balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
}
|
@ -1,22 +1,9 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import { ReactNode } from "react";
|
||||
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Create Next App",
|
||||
description: "Generated by create next app",
|
||||
type Props = {
|
||||
children: ReactNode;
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body className={inter.className}>{children}</body>
|
||||
</html>
|
||||
);
|
||||
export default function RootLayout({ children }: Props) {
|
||||
return children;
|
||||
}
|
||||
|
15
src/app/not-found.tsx
Normal file
@ -0,0 +1,15 @@
|
||||
"use client";
|
||||
|
||||
// import "./globals.scss";
|
||||
// import "@/shared/fonts/fonts.scss";
|
||||
import NotFound from "./widgets/NotFound/NotFound";
|
||||
|
||||
export default function NotFoundPage() {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>
|
||||
<NotFound />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
116
src/app/page.tsx
@ -1,113 +1,7 @@
|
||||
import Image from "next/image";
|
||||
import React from "react";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main className="flex min-h-screen flex-col items-center justify-between p-24">
|
||||
<div className="z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex">
|
||||
<p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30">
|
||||
Get started by editing
|
||||
<code className="font-mono font-bold">src/app/page.tsx</code>
|
||||
</p>
|
||||
<div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:size-auto lg:bg-none">
|
||||
<a
|
||||
className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
|
||||
href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
By{" "}
|
||||
<Image
|
||||
src="/vercel.svg"
|
||||
alt="Vercel Logo"
|
||||
className="dark:invert"
|
||||
width={100}
|
||||
height={24}
|
||||
priority
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
const page = () => {
|
||||
return <div>RootPage</div>;
|
||||
};
|
||||
|
||||
<div className="relative z-[-1] flex place-items-center before:absolute before:h-[300px] before:w-full before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-full after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 sm:before:w-[480px] sm:after:w-[240px] before:lg:h-[360px]">
|
||||
<Image
|
||||
className="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert"
|
||||
src="/next.svg"
|
||||
alt="Next.js Logo"
|
||||
width={180}
|
||||
height={37}
|
||||
priority
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="mb-32 grid text-center lg:mb-0 lg:w-full lg:max-w-5xl lg:grid-cols-4 lg:text-left">
|
||||
<a
|
||||
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
||||
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<h2 className="mb-3 text-2xl font-semibold">
|
||||
Docs{" "}
|
||||
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
||||
->
|
||||
</span>
|
||||
</h2>
|
||||
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
||||
Find in-depth information about Next.js features and API.
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
||||
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<h2 className="mb-3 text-2xl font-semibold">
|
||||
Learn{" "}
|
||||
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
||||
->
|
||||
</span>
|
||||
</h2>
|
||||
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
||||
Learn about Next.js in an interactive course with quizzes!
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
||||
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<h2 className="mb-3 text-2xl font-semibold">
|
||||
Templates{" "}
|
||||
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
||||
->
|
||||
</span>
|
||||
</h2>
|
||||
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
||||
Explore starter templates for Next.js.
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
||||
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<h2 className="mb-3 text-2xl font-semibold">
|
||||
Deploy{" "}
|
||||
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
||||
->
|
||||
</span>
|
||||
</h2>
|
||||
<p className="m-0 max-w-[30ch] text-balance text-sm opacity-50">
|
||||
Instantly deploy your Next.js site to a shareable URL with Vercel.
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
export default page;
|
||||
|
7
src/app/shared/config/navigation.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { createSharedPathnamesNavigation } from "next-intl/navigation";
|
||||
|
||||
export const locales = ["en", "ru", "kg"] as const;
|
||||
export const localePrefix = "always";
|
||||
|
||||
export const { Link, redirect, usePathname, useRouter } =
|
||||
createSharedPathnamesNavigation({ locales, localePrefix });
|
17
src/app/shared/variables/links_footer.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { useTranslations } from "next-intl";
|
||||
|
||||
export const LINKS = () => {
|
||||
const t = useTranslations("navigation");
|
||||
|
||||
const LINKS = [
|
||||
{ id: 1, pagename: t("home"), pathname: "/" },
|
||||
{ id: 2, pagename: t("about_us"), pathname: "/about-us" },
|
||||
{ id: 3, pagename: t("privacy"), pathname: "/privacy" },
|
||||
{ id: 3, pagename: t("support"), pathname: "/support" },
|
||||
{ id: 4, pagename: t("statistics"), pathname: "/statistics" },
|
||||
{ id: 5, pagename: t("news"), pathname: "/news" },
|
||||
{ id: 6, pagename: t("volunteers"), pathname: "/volunteers" },
|
||||
];
|
||||
|
||||
return LINKS;
|
||||
};
|
89
src/app/widgets/Footer/Footer.tsx
Normal file
@ -0,0 +1,89 @@
|
||||
import Image from "next/image";
|
||||
import youtube from "./assets/youtube.svg";
|
||||
import facebook from "./assets/facebook.svg";
|
||||
import instagram from "./assets/instagram.svg";
|
||||
import app_store_btn from "./assets/app-store-btn.svg";
|
||||
import play_market_btn from "./assets/play-market-btn.svg";
|
||||
import { Link } from "@/app/shared/config/navigation";
|
||||
import { useTranslations } from "next-intl";
|
||||
import { LINKS } from "@/app/shared/variables/links_footer";
|
||||
|
||||
const Footer = () => {
|
||||
const t = useTranslations("general");
|
||||
const tDisclaimer = useTranslations("disclaimer");
|
||||
const tRights = useTranslations("rights");
|
||||
return (
|
||||
<footer className="px-12 py-20 grid grid-cols-4 gap-[30px] bg-custom-dark">
|
||||
<div className="flex flex-col gap-6">
|
||||
<p className="text-white font-normal">© {tRights("text")}</p>
|
||||
<p className="text-white font-normal">{tDisclaimer("text")}</p>
|
||||
</div>
|
||||
<div className="flex flex-col gap-6">
|
||||
<h4 className="h-fit text-white flex justify-start text-base font-bold leading-[110%]">
|
||||
{t("navigation")}
|
||||
</h4>
|
||||
<ul className="flex flex-col gap-6">
|
||||
{LINKS().map((link) => (
|
||||
<li
|
||||
className="h-fit flex justify-start text-base text-[#e2e8f0] font-normal leading-[140%] items-center gap-4"
|
||||
key={link.id}
|
||||
>
|
||||
<Link
|
||||
className="h-fit text-white flex justify-start text-base "
|
||||
href={link.pathname}
|
||||
key={link.id}
|
||||
>
|
||||
{link.pagename}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col gap-6">
|
||||
<h4 className="h-fit text-white flex justify-start text-base font-bold leading-[110%]">
|
||||
{t("contacts")}
|
||||
</h4>
|
||||
<ul className="flex flex-col gap-6">
|
||||
<li className="h-fit flex justify-start text-base text-[#e2e8f0] font-normal leading-[140%] items-center gap-4">
|
||||
+9960312394038
|
||||
</li>
|
||||
|
||||
<li className="h-fit flex justify-start text-base text-[#e2e8f0] font-normal leading-[140%] items-center gap-4">
|
||||
{[youtube, facebook, instagram].map((net, i) => (
|
||||
<Link
|
||||
key={i}
|
||||
href="#"
|
||||
className="h-fit text-white flex justify-start text-base "
|
||||
>
|
||||
<Image src={net} alt="Net Icon" key={net} />
|
||||
</Link>
|
||||
))}
|
||||
</li>
|
||||
<li className="h-fit flex justify-start text-base text-[#e2e8f0] font-normal leading-[140%] items-center gap-4">
|
||||
Photo By ThomasG, CC BY-SA 3.0
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col gap-6">
|
||||
<h4 className="h-fit text-white flex justify-start text-base font-bold leading-[110%]">
|
||||
{t("download_our_app")}
|
||||
</h4>
|
||||
<div className="flex flex-col gap-6">
|
||||
{[app_store_btn, play_market_btn].map((app, i) => (
|
||||
<Link
|
||||
key={i}
|
||||
href="#"
|
||||
className="h-fit text-white flex justify-start text-base "
|
||||
>
|
||||
<Image src={app} alt="App Button" key={app} />
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
};
|
||||
|
||||
export default Footer;
|
31
src/app/widgets/Footer/assets/app-store-btn.svg
Normal file
@ -0,0 +1,31 @@
|
||||
<svg width="119.664062" height="40.000000" viewBox="0 0 119.664 40" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<desc>
|
||||
Created with Pixso.
|
||||
</desc>
|
||||
<defs/>
|
||||
<path id="Vector" d="M110.135 0L9.53467 0C9.16797 0 8.80566 0 8.43994 0.00195312C8.13379 0.00390625 7.83008 0.00976562 7.521 0.0146484C6.84961 0.0224609 6.17969 0.0820312 5.51709 0.191406C4.85547 0.303711 4.21484 0.514648 3.61621 0.818359C3.01855 1.125 2.47217 1.52246 1.99756 1.99707C1.52051 2.4707 1.12256 3.01855 0.819336 3.61816C0.515625 4.2168 0.304688 4.85938 0.194336 5.52148C0.0830078 6.18359 0.0229492 6.85254 0.0151367 7.52344C0.00585938 7.83008 0.00488281 8.1377 0 8.44434L0 31.5586C0.00488281 31.8691 0.00585938 32.1699 0.0151367 32.4805C0.0229492 33.1514 0.0830078 33.8213 0.194336 34.4824C0.304199 35.1455 0.515137 35.7881 0.819336 36.3867C1.12256 36.9854 1.52002 37.5303 1.99756 38.001C2.4707 38.4785 3.01709 38.876 3.61621 39.1797C4.21484 39.4844 4.85547 39.6973 5.51709 39.8105C6.17969 39.9199 6.84961 39.9785 7.521 39.9873C7.83008 39.9941 8.13379 39.998 8.43994 39.998C8.80566 40 9.16797 40 9.53467 40L110.135 40C110.494 40 110.859 40 111.219 39.998C111.523 39.998 111.836 39.9941 112.141 39.9873C112.811 39.9795 113.479 39.9199 114.141 39.8105C114.805 39.6963 115.448 39.4834 116.049 39.1797C116.647 38.876 117.193 38.4775 117.666 38.001C118.142 37.5283 118.541 36.9834 118.848 36.3867C119.149 35.7871 119.358 35.1455 119.467 34.4824C119.578 33.8203 119.64 33.1514 119.652 32.4805C119.656 32.1699 119.656 31.8691 119.656 31.5586C119.664 31.1953 119.664 30.834 119.664 30.4648L119.664 9.53613C119.664 9.16992 119.664 8.80664 119.656 8.44434C119.656 8.1377 119.656 7.83008 119.652 7.52344C119.64 6.85254 119.578 6.18359 119.467 5.52148C119.358 4.85938 119.149 4.21777 118.848 3.61816C118.23 2.41504 117.251 1.43652 116.049 0.818359C115.448 0.515625 114.804 0.304688 114.141 0.191406C113.479 0.0810547 112.811 0.0224609 112.141 0.0146484C111.836 0.00976562 111.523 0.00390625 111.219 0.00195312C110.859 0 110.494 0 110.135 0L110.135 0Z" fill="#A6A6A6" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M8.44482 39.125C8.14014 39.125 7.84277 39.1211 7.54053 39.1143C6.91455 39.1064 6.28955 39.0518 5.67139 38.9512C5.09521 38.8516 4.53662 38.667 4.01465 38.4033C3.49756 38.1416 3.02588 37.7979 2.61768 37.3867C2.20361 36.9795 1.85889 36.5078 1.59717 35.9902C1.33252 35.4688 1.14941 34.9102 1.0542 34.333C0.951172 33.7129 0.895508 33.0859 0.887695 32.458C0.881348 32.2471 0.873047 31.5449 0.873047 31.5449L0.873047 8.44434C0.873047 8.44434 0.881836 7.75293 0.887695 7.5498C0.895508 6.92285 0.950684 6.29688 1.05322 5.67773C1.14893 5.09961 1.33203 4.53906 1.59668 4.01562C1.85742 3.49805 2.2002 3.02539 2.61182 2.61816C3.02295 2.20605 3.49609 1.86035 4.01416 1.59473C4.53516 1.33203 5.09229 1.14844 5.66748 1.05176C6.2876 0.950195 6.91455 0.894531 7.54297 0.887695L8.44531 0.875L111.214 0.875L112.127 0.887695C112.75 0.895508 113.371 0.949219 113.985 1.0498C114.566 1.14941 115.129 1.33398 115.656 1.59766C116.694 2.13281 117.539 2.97949 118.071 4.01855C118.332 4.53711 118.512 5.09375 118.606 5.66699C118.71 6.29102 118.769 6.92188 118.78 7.55469C118.783 7.83691 118.783 8.1416 118.783 8.44434C118.791 8.81934 118.791 9.17578 118.791 9.53613L118.791 30.4648C118.791 30.8281 118.791 31.1826 118.783 31.54C118.783 31.8652 118.783 32.1631 118.779 32.4697C118.768 33.0908 118.71 33.71 118.608 34.3232C118.515 34.9043 118.333 35.4678 118.068 35.9932C117.805 36.5059 117.462 36.9736 117.053 37.3789C116.645 37.793 116.172 38.1377 115.653 38.4014C115.128 38.667 114.566 38.8525 113.985 38.9512C113.367 39.0518 112.743 39.1064 112.116 39.1143C111.823 39.1211 111.517 39.125 111.219 39.125L110.135 39.127L8.44482 39.125Z" fill="#000000" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="<Path>" d="M24.769 20.3018C24.7798 19.4668 25.0015 18.6484 25.4136 17.9219C25.8257 17.1963 26.4146 16.5859 27.1255 16.1494C26.6738 15.5039 26.0776 14.9727 25.3853 14.5986C24.6924 14.2236 23.9214 14.0166 23.1343 13.9912C21.4551 13.8154 19.8271 14.9961 18.9717 14.9961C18.0991 14.9961 16.7817 14.0088 15.3628 14.0381C14.4453 14.0684 13.5508 14.335 12.7671 14.8125C11.9834 15.291 11.3364 15.9639 10.8901 16.7666C8.95605 20.1143 10.3984 25.0352 12.2515 27.7422C13.1782 29.0674 14.2612 30.5479 15.6787 30.4951C17.0659 30.4375 17.584 29.6113 19.2583 29.6113C20.917 29.6113 21.4033 30.4951 22.8491 30.4619C24.3379 30.4375 25.2754 29.1309 26.1699 27.793C26.8359 26.8486 27.3481 25.8047 27.6885 24.7002C26.8237 24.335 26.0854 23.7227 25.5664 22.9404C25.0474 22.1582 24.77 21.2402 24.769 20.3018Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="<Path>" d="M22.0376 12.2109C22.8491 11.2373 23.249 9.98535 23.1519 8.7207C21.9121 8.85059 20.7671 9.44336 19.9443 10.3799C19.5425 10.8379 19.2344 11.3701 19.0381 11.9473C18.8418 12.5244 18.7612 13.1338 18.8008 13.7422C19.4209 13.748 20.0347 13.6133 20.5952 13.3486C21.1558 13.084 21.6489 12.6943 22.0376 12.2109Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M42.3022 27.1396L37.5688 27.1396L36.4321 30.4961L34.4272 30.4961L38.9106 18.0781L40.9937 18.0781L45.4771 30.4961L43.438 30.4961L42.3022 27.1396ZM38.0591 25.5908L41.811 25.5908L39.9614 20.1436L39.9097 20.1436L38.0591 25.5908Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M55.1597 25.9697C55.1597 28.7832 53.6538 30.5908 51.3813 30.5908C50.8057 30.6211 50.2334 30.4883 49.7295 30.208C49.2256 29.9277 48.811 29.5117 48.5327 29.0068L48.4897 29.0068L48.4897 33.4912L46.6313 33.4912L46.6313 21.4424L48.4302 21.4424L48.4302 22.9482L48.4644 22.9482C48.7554 22.4453 49.1772 22.0312 49.6846 21.749C50.1924 21.4678 50.7671 21.3291 51.3472 21.3477C53.645 21.3477 55.1597 23.1641 55.1597 25.9697ZM53.2495 25.9697C53.2495 24.1367 52.3022 22.9316 50.8569 22.9316C49.437 22.9316 48.4819 24.1621 48.4819 25.9697C48.4819 27.7939 49.437 29.0156 50.8569 29.0156C52.3022 29.0156 53.2495 27.8193 53.2495 25.9697Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M65.1245 25.9697C65.1245 28.7832 63.6187 30.5908 61.3462 30.5908C60.7705 30.6211 60.1982 30.4883 59.6943 30.208C59.1904 29.9277 58.7759 29.5117 58.4976 29.0068L58.4546 29.0068L58.4546 33.4912L56.5962 33.4912L56.5962 21.4424L58.395 21.4424L58.395 22.9482L58.4292 22.9482C58.7202 22.4453 59.1421 22.0312 59.6494 21.749C60.1572 21.4678 60.7314 21.3291 61.312 21.3477C63.6099 21.3477 65.1245 23.1641 65.1245 25.9697ZM63.2144 25.9697C63.2144 24.1367 62.2671 22.9316 60.8218 22.9316C59.4019 22.9316 58.4468 24.1621 58.4468 25.9697C58.4468 27.7939 59.4019 29.0156 60.8218 29.0156C62.2671 29.0156 63.2144 27.8193 63.2144 25.9697L63.2144 25.9697Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M71.7104 27.0361C71.8481 28.2676 73.0444 29.0762 74.6792 29.0762C76.2456 29.0762 77.3726 28.2676 77.3726 27.1572C77.3726 26.1934 76.6929 25.6162 75.0835 25.2207L73.4741 24.833C71.1938 24.2822 70.1353 23.2158 70.1353 21.4854C70.1353 19.3428 72.0024 17.8711 74.6538 17.8711C77.2778 17.8711 79.0767 19.3428 79.1372 21.4854L77.2612 21.4854C77.1489 20.2461 76.1245 19.498 74.6274 19.498C73.1304 19.498 72.106 20.2549 72.106 21.3564C72.106 22.2344 72.7603 22.751 74.3608 23.1465L75.729 23.4824C78.2769 24.085 79.3354 25.1084 79.3354 26.9248C79.3354 29.248 77.4849 30.7031 74.5415 30.7031C71.7876 30.7031 69.9282 29.2822 69.8081 27.0361L71.7104 27.0361Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M83.3462 19.2998L83.3462 21.4424L85.0679 21.4424L85.0679 22.9141L83.3462 22.9141L83.3462 27.9053C83.3462 28.6807 83.6909 29.042 84.4478 29.042C84.6523 29.0381 84.856 29.0244 85.0591 28.999L85.0591 30.4619C84.7188 30.5254 84.373 30.5547 84.0269 30.5479C82.1938 30.5479 81.479 29.8594 81.479 28.1035L81.479 22.9141L80.1626 22.9141L80.1626 21.4424L81.479 21.4424L81.479 19.2998L83.3462 19.2998Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M86.0649 25.9697C86.0649 23.1211 87.7427 21.3311 90.3589 21.3311C92.9839 21.3311 94.6538 23.1211 94.6538 25.9697C94.6538 28.8262 92.9927 30.6084 90.3589 30.6084C87.7261 30.6084 86.0649 28.8262 86.0649 25.9697ZM92.7603 25.9697C92.7603 24.0156 91.8647 22.8623 90.3589 22.8623C88.853 22.8623 87.9585 24.0244 87.9585 25.9697C87.9585 27.9316 88.853 29.0762 90.3589 29.0762C91.8647 29.0762 92.7603 27.9316 92.7603 25.9697L92.7603 25.9697Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M96.186 21.4424L97.9585 21.4424L97.9585 22.9834L98.0015 22.9834C98.1216 22.502 98.4033 22.0762 98.7998 21.7783C99.1968 21.4805 99.6836 21.3281 100.179 21.3477C100.394 21.3467 100.607 21.3701 100.816 21.417L100.816 23.1553C100.545 23.0723 100.264 23.0342 99.981 23.043C99.7109 23.0312 99.4419 23.0791 99.1919 23.1826C98.9424 23.2852 98.7173 23.4404 98.5337 23.6387C98.3496 23.8369 98.2104 24.0723 98.126 24.3281C98.0415 24.585 98.0137 24.8574 98.0444 25.126L98.0444 30.4961L96.186 30.4961L96.186 21.4424Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M109.384 27.8369C109.134 29.4805 107.534 30.6084 105.486 30.6084C102.852 30.6084 101.217 28.8438 101.217 26.0127C101.217 23.1729 102.861 21.3311 105.408 21.3311C107.913 21.3311 109.488 23.0518 109.488 25.7969L109.488 26.4336L103.093 26.4336L103.093 26.5459C103.064 26.8789 103.105 27.2148 103.216 27.5303C103.326 27.8467 103.502 28.1348 103.732 28.3779C103.963 28.6201 104.242 28.8115 104.552 28.9375C104.861 29.0635 105.194 29.123 105.529 29.1104C105.968 29.1514 106.409 29.0498 106.785 28.8203C107.162 28.5908 107.455 28.2461 107.62 27.8369L109.384 27.8369ZM103.102 25.1348L107.628 25.1348C107.645 24.835 107.6 24.5352 107.495 24.2539C107.39 23.9727 107.229 23.7168 107.02 23.501C106.812 23.2852 106.561 23.1143 106.283 23C106.006 22.8857 105.708 22.8301 105.408 22.8369C105.105 22.835 104.805 22.8936 104.525 23.0078C104.245 23.123 103.99 23.292 103.776 23.5059C103.562 23.7188 103.392 23.9727 103.276 24.2529C103.161 24.5322 103.101 24.832 103.102 25.1348L103.102 25.1348Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M37.8262 8.73047C38.2158 8.70215 38.6069 8.76172 38.9707 8.90234C39.335 9.04395 39.6631 9.26465 39.9316 9.54785C40.2002 9.83203 40.4028 10.1719 40.5239 10.543C40.6455 10.9141 40.6831 11.3076 40.6338 11.6953C40.6338 13.6016 39.6035 14.6973 37.8262 14.6973L35.6709 14.6973L35.6709 8.73047L37.8262 8.73047ZM36.5977 13.8535L37.7227 13.8535C38.001 13.8701 38.2798 13.8242 38.5381 13.7197C38.7969 13.6152 39.0288 13.4541 39.2173 13.249C39.4058 13.043 39.5459 12.7979 39.6279 12.5312C39.7095 12.2646 39.731 11.9834 39.6904 11.707C39.728 11.4326 39.7046 11.1523 39.6216 10.8877C39.5386 10.623 39.3979 10.3809 39.2095 10.1768C39.0215 9.97266 38.7905 9.8125 38.5337 9.70898C38.2764 9.60449 37.9995 9.55859 37.7227 9.57324L36.5977 9.57324L36.5977 13.8535Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M41.6812 12.4434C41.6528 12.1475 41.6865 11.8496 41.7803 11.5674C41.874 11.2852 42.0259 11.0254 42.2261 10.8057C42.4258 10.5859 42.6694 10.4102 42.9414 10.29C43.2134 10.1699 43.5073 10.1074 43.8047 10.1074C44.1016 10.1074 44.3955 10.1699 44.6675 10.29C44.9395 10.4102 45.1831 10.5859 45.3833 10.8057C45.583 11.0254 45.7349 11.2852 45.8286 11.5674C45.9224 11.8496 45.9565 12.1475 45.9282 12.4434C45.957 12.7402 45.9233 13.0391 45.8296 13.3213C45.7363 13.6045 45.5845 13.8643 45.3848 14.084C45.1846 14.3047 44.9409 14.4805 44.6685 14.6016C44.3965 14.7217 44.1021 14.7842 43.8047 14.7842C43.5068 14.7842 43.2124 14.7217 42.9404 14.6016C42.6685 14.4805 42.4243 14.3047 42.2246 14.084C42.0244 13.8643 41.8726 13.6045 41.7793 13.3213C41.6855 13.0391 41.6519 12.7402 41.6812 12.4434ZM45.0142 12.4434C45.0142 11.4678 44.5757 10.8965 43.8062 10.8965C43.0337 10.8965 42.5991 11.4678 42.5991 12.4434C42.5991 13.4277 43.0337 13.9941 43.8062 13.9941C44.5757 13.9941 45.0142 13.4238 45.0142 12.4434L45.0142 12.4434Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M51.5732 14.6973L50.6514 14.6973L49.7207 11.3809L49.6504 11.3809L48.7236 14.6973L47.8105 14.6973L46.5693 10.1943L47.4707 10.1943L48.2773 13.6299L48.3438 13.6299L49.2695 10.1943L50.1221 10.1943L51.0479 13.6299L51.1182 13.6299L51.9209 10.1943L52.8096 10.1943L51.5732 14.6973Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M53.8535 10.1943L54.709 10.1943L54.709 10.9092L54.7754 10.9092C54.8882 10.6523 55.0781 10.4365 55.3188 10.293C55.5596 10.1494 55.8394 10.084 56.1191 10.1074C56.3384 10.0908 56.5581 10.123 56.7627 10.2041C56.9673 10.2842 57.1514 10.4092 57.3013 10.5693C57.4507 10.7305 57.5625 10.9229 57.6274 11.1328C57.6929 11.3428 57.71 11.5645 57.6777 11.7822L57.6777 14.6963L56.7891 14.6963L56.7891 12.0049C56.7891 11.2812 56.4746 10.9219 55.8174 10.9219C55.6685 10.9141 55.52 10.9395 55.3818 10.9961C55.2441 11.0518 55.1196 11.1367 55.0176 11.2451C54.9155 11.3535 54.8379 11.4824 54.7905 11.624C54.7427 11.7646 54.7266 11.9141 54.7422 12.0625L54.7422 14.6973L53.8535 14.6973L53.8535 10.1943Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M59.0938 8.43652L59.9824 8.43652L59.9824 14.6973L59.0938 14.6973L59.0938 8.43652Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M61.2183 12.4443C61.1899 12.1475 61.2236 11.8496 61.3174 11.5674C61.4111 11.2852 61.563 11.0254 61.7632 10.8057C61.9629 10.5859 62.2065 10.4102 62.4785 10.29C62.7505 10.1699 63.0444 10.1074 63.3418 10.1074C63.6392 10.1074 63.9331 10.1699 64.2051 10.29C64.4771 10.4102 64.7207 10.5859 64.9204 10.8057C65.1206 11.0254 65.2725 11.2852 65.3662 11.5674C65.46 11.8496 65.4937 12.1475 65.4658 12.4443C65.4946 12.7402 65.4609 13.0391 65.3672 13.3213C65.2734 13.6045 65.1221 13.8643 64.9219 14.084C64.7222 14.3047 64.478 14.4805 64.2061 14.6016C63.9336 14.7217 63.6396 14.7842 63.3418 14.7842C63.0439 14.7842 62.75 14.7217 62.4775 14.6016C62.2056 14.4805 61.9614 14.3047 61.7617 14.084C61.5615 13.8643 61.4102 13.6045 61.3164 13.3213C61.2227 13.0391 61.1895 12.7402 61.2183 12.4443ZM64.5513 12.4443C64.5513 11.4678 64.1123 10.8975 63.3433 10.8975C62.5708 10.8975 62.1362 11.4678 62.1362 12.4443C62.1362 13.4277 62.5708 13.9941 63.3433 13.9941C64.1128 13.9941 64.5513 13.4238 64.5513 12.4443L64.5513 12.4443Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M66.4009 13.4238C66.4009 12.6133 67.0044 12.1455 68.0757 12.0791L69.2954 12.0088L69.2954 11.6201C69.2954 11.1445 68.981 10.876 68.3735 10.876C67.8774 10.876 67.5337 11.0586 67.4351 11.377L66.5747 11.377C66.6655 10.6035 67.3931 10.1074 68.4146 10.1074C69.5435 10.1074 70.1802 10.6689 70.1802 11.6201L70.1802 14.6973L69.3247 14.6973L69.3247 14.0645L69.2544 14.0645C69.1118 14.291 68.9111 14.4766 68.6738 14.6006C68.436 14.7246 68.1699 14.7842 67.9019 14.7715C67.7129 14.791 67.522 14.7705 67.3408 14.7119C67.1602 14.6533 66.9937 14.5576 66.8525 14.4307C66.7109 14.3037 66.5977 14.1484 66.52 13.9746C66.4424 13.8018 66.4019 13.6143 66.4009 13.4238ZM69.2954 13.0391L69.2954 12.6621L68.1958 12.7324C67.5757 12.7744 67.2944 12.9854 67.2944 13.3818C67.2944 13.7871 67.646 14.0234 68.1294 14.0234C68.271 14.0381 68.4141 14.0234 68.5503 13.9814C68.686 13.9395 68.8125 13.8701 68.9209 13.7783C69.0298 13.6865 69.1191 13.5742 69.1836 13.4463C69.2476 13.3193 69.2856 13.1807 69.2954 13.0391Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M71.3481 12.4443C71.3481 11.0215 72.0796 10.1201 73.2173 10.1201C73.4985 10.1064 73.7778 10.1738 74.0225 10.3145C74.2671 10.4541 74.4668 10.6602 74.5981 10.9092L74.6646 10.9092L74.6646 8.43652L75.5532 8.43652L75.5532 14.6973L74.7017 14.6973L74.7017 13.9854L74.6313 13.9854C74.4897 14.2334 74.2832 14.4375 74.0337 14.5762C73.7847 14.7139 73.5024 14.7822 73.2173 14.7715C72.0718 14.7715 71.3481 13.8701 71.3481 12.4443ZM72.2661 12.4443C72.2661 13.3994 72.7163 13.9736 73.4692 13.9736C74.2183 13.9736 74.6812 13.3906 74.6812 12.4482C74.6812 11.5098 74.2134 10.918 73.4692 10.918C72.7212 10.918 72.2661 11.4971 72.2661 12.4443L72.2661 12.4443Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M79.23 12.4434C79.2017 12.1475 79.2354 11.8496 79.3291 11.5674C79.4229 11.2852 79.5747 11.0254 79.7749 10.8057C79.9746 10.5859 80.2183 10.4102 80.4902 10.29C80.7622 10.1699 81.0562 10.1074 81.3535 10.1074C81.6504 10.1074 81.9443 10.1699 82.2163 10.29C82.4883 10.4102 82.7319 10.5859 82.9321 10.8057C83.1318 11.0254 83.2837 11.2852 83.3774 11.5674C83.4712 11.8496 83.5054 12.1475 83.4771 12.4434C83.5059 12.7402 83.4722 13.0391 83.3784 13.3213C83.2852 13.6045 83.1333 13.8643 82.9336 14.084C82.7334 14.3047 82.4897 14.4805 82.2173 14.6016C81.9453 14.7217 81.6509 14.7842 81.3535 14.7842C81.0557 14.7842 80.7612 14.7217 80.4893 14.6016C80.2173 14.4805 79.9731 14.3047 79.7734 14.084C79.5732 13.8643 79.4214 13.6045 79.3281 13.3213C79.2344 13.0391 79.2007 12.7402 79.23 12.4434ZM82.563 12.4434C82.563 11.4678 82.1245 10.8965 81.355 10.8965C80.5825 10.8965 80.1479 11.4678 80.1479 12.4434C80.1479 13.4277 80.5825 13.9941 81.355 13.9941C82.1245 13.9941 82.563 13.4238 82.563 12.4434Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M84.6694 10.1943L85.5249 10.1943L85.5249 10.9092L85.5913 10.9092C85.7041 10.6523 85.894 10.4365 86.1348 10.293C86.3755 10.1494 86.6553 10.084 86.9351 10.1074C87.1543 10.0908 87.374 10.123 87.5786 10.2041C87.7832 10.2842 87.9673 10.4092 88.1172 10.5693C88.2666 10.7305 88.3784 10.9229 88.4434 11.1328C88.5088 11.3428 88.5259 11.5645 88.4937 11.7822L88.4937 14.6963L87.605 14.6963L87.605 12.0049C87.605 11.2812 87.2905 10.9219 86.6333 10.9219C86.4844 10.9141 86.3359 10.9395 86.1978 10.9961C86.0601 11.0518 85.9355 11.1367 85.8335 11.2451C85.7314 11.3535 85.6538 11.4824 85.6064 11.624C85.5586 11.7646 85.5425 11.9141 85.5581 12.0625L85.5581 14.6973L84.6694 14.6973L84.6694 10.1943Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M93.5151 9.07324L93.5151 10.2148L94.4907 10.2148L94.4907 10.9639L93.5151 10.9639L93.5151 13.2793C93.5151 13.751 93.7095 13.957 94.1519 13.957C94.2651 13.957 94.3784 13.9502 94.4907 13.9365L94.4907 14.6768C94.3311 14.7051 94.1694 14.7207 94.0073 14.7217C93.019 14.7217 92.6255 14.374 92.6255 13.5059L92.6255 10.9629L91.9106 10.9629L91.9106 10.2148L92.6255 10.2148L92.6255 9.07324L93.5151 9.07324Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M95.7046 8.43652L96.5854 8.43652L96.5854 10.918L96.6558 10.918C96.7739 10.6582 96.9692 10.4424 97.2148 10.2979C97.4604 10.1533 97.7446 10.0879 98.0288 10.1113C98.2466 10.0996 98.4648 10.1357 98.667 10.2178C98.8691 10.2998 99.0508 10.4258 99.1987 10.5859C99.3472 10.7461 99.458 10.9375 99.5239 11.1455C99.5894 11.3535 99.6084 11.5732 99.5796 11.79L99.5796 14.6973L98.6899 14.6973L98.6899 12.0088C98.6899 11.29 98.355 10.9258 97.7271 10.9258C97.5742 10.9131 97.4209 10.9346 97.2769 10.9873C97.1333 11.04 97.0029 11.124 96.8945 11.2334C96.7866 11.3418 96.7036 11.4727 96.6519 11.6172C96.5996 11.7607 96.5796 11.915 96.5933 12.0674L96.5933 14.6973L95.7046 14.6973L95.7046 8.43652Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M104.761 13.4814C104.641 13.8926 104.379 14.249 104.022 14.4873C103.666 14.7256 103.237 14.8301 102.81 14.7842C102.514 14.792 102.219 14.7354 101.946 14.6182C101.674 14.5 101.43 14.3252 101.232 14.1035C101.034 13.8828 100.887 13.6211 100.8 13.3369C100.713 13.0537 100.689 12.7539 100.73 12.46C100.69 12.165 100.715 11.8652 100.801 11.5801C100.888 11.2959 101.035 11.0332 101.231 10.8096C101.428 10.5869 101.671 10.4092 101.942 10.2871C102.214 10.166 102.509 10.1045 102.806 10.1074C104.059 10.1074 104.815 10.9639 104.815 12.3779L104.815 12.6875L101.635 12.6875L101.635 12.7373C101.622 12.9023 101.642 13.0693 101.696 13.2256C101.75 13.3828 101.837 13.5264 101.95 13.6475C102.062 13.7695 102.2 13.8652 102.352 13.9307C102.504 13.9961 102.669 14.0293 102.834 14.0273C103.047 14.0527 103.263 14.0146 103.453 13.917C103.644 13.8203 103.802 13.6689 103.906 13.4814L104.761 13.4814ZM101.635 12.0303L103.91 12.0303C103.921 11.8789 103.9 11.7275 103.85 11.585C103.798 11.4424 103.718 11.3115 103.614 11.2012C103.51 11.0918 103.383 11.0049 103.243 10.9473C103.104 10.8887 102.953 10.8604 102.801 10.8643C102.647 10.8623 102.495 10.8906 102.353 10.9482C102.21 11.0068 102.081 11.0928 101.973 11.2012C101.864 11.3096 101.778 11.4395 101.72 11.582C101.662 11.7236 101.633 11.877 101.635 12.0303L101.635 12.0303Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
</svg>
|
After Width: | Height: | Size: 20 KiB |
14
src/app/widgets/Footer/assets/facebook.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="24.000000" height="24.000000" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<desc>
|
||||
Created with Pixso.
|
||||
</desc>
|
||||
<defs>
|
||||
<clipPath id="clip161_49334">
|
||||
<rect id="icon / jam-icons / outline & logos / facebook" width="24.000000" height="24.000000" fill="white" fill-opacity="0"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect id="icon / jam-icons / outline & logos / facebook" width="24.000000" height="24.000000" fill="#FFFFFF" fill-opacity="0"/>
|
||||
<g clip-path="url(#clip161_49334)">
|
||||
<path id="Vector" d="M9.04639 5.86523L9.04639 8.61328L7.03223 8.61328L7.03223 11.9727L9.04639 11.9727L9.04639 21.959L13.1802 21.959L13.1802 11.9736L15.9551 11.9736C15.9551 11.9736 16.2153 10.3633 16.3413 8.60059L13.1973 8.60059L13.1973 6.30273C13.1973 5.95996 13.6475 5.49805 14.0933 5.49805L16.3472 5.49805L16.3472 2L13.2832 2C8.94336 2 9.04639 5.36328 9.04639 5.86523Z" fill="#E2E8F0" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1007 B |
16
src/app/widgets/Footer/assets/instagram.svg
Normal file
@ -0,0 +1,16 @@
|
||||
<svg width="24.000000" height="24.000000" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<desc>
|
||||
Created with Pixso.
|
||||
</desc>
|
||||
<defs>
|
||||
<clipPath id="clip161_49336">
|
||||
<rect id="icon / jam-icons / outline & logos / instagram" width="24.000000" height="24.000000" fill="white" fill-opacity="0"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect id="icon / jam-icons / outline & logos / instagram" width="24.000000" height="24.000000" fill="#FFFFFF" fill-opacity="0"/>
|
||||
<g clip-path="url(#clip161_49336)">
|
||||
<path id="Vector" d="M16.0171 2L7.94678 2C6.37012 2.00195 4.8584 2.62891 3.74365 3.74414C2.62842 4.85938 2.00146 6.37109 2 7.94824L2 16.0176C2.00195 17.5947 2.62891 19.1064 3.74414 20.2217C4.85938 21.3359 6.37109 21.9639 7.94824 21.9648L16.0181 21.9648C17.5947 21.9629 19.1064 21.3359 20.2217 20.2207C21.3364 19.1055 21.9634 17.5938 21.9648 16.0166L21.9648 7.94727C21.9634 6.37012 21.3359 4.8584 20.2207 3.74316C19.1055 2.62891 17.5938 2.00195 16.0171 2L16.0171 2ZM19.957 16.0166C19.957 16.5342 19.855 17.0469 19.6572 17.5244C19.459 18.0029 19.1689 18.4375 18.8032 18.8027C18.437 19.1689 18.0029 19.459 17.5249 19.6572C17.0469 19.8555 16.5342 19.957 16.0171 19.957L7.94678 19.957C6.90234 19.957 5.90039 19.542 5.16162 18.8027C4.42285 18.0635 4.00781 17.0615 4.00781 16.0166L4.00781 7.94727C4.0083 6.90234 4.42334 5.90039 5.16211 5.16211C5.90137 4.42285 6.90332 4.00781 7.94824 4.00781L16.0181 4.00781C17.063 4.00781 18.0645 4.42383 18.8032 5.16211C19.542 5.90137 19.957 6.90332 19.957 7.94824L19.957 16.0176L19.957 16.0166Z" fill="#E2E8F0" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M11.9819 6.81934C10.6133 6.82129 9.30127 7.36621 8.3335 8.33398C7.36621 9.30176 6.82178 10.6133 6.81982 11.9824C6.82129 13.3516 7.36572 14.6641 8.3335 15.6318C9.30176 16.5996 10.6138 17.1445 11.9829 17.1465C13.3521 17.1445 14.6646 16.6006 15.6328 15.6318C16.6006 14.6641 17.145 13.3516 17.147 11.9824C17.1445 10.6133 16.5996 9.30078 15.6313 8.33398C14.6631 7.36621 13.3506 6.82129 11.9819 6.82031L11.9819 6.81934ZM11.9819 15.1387C11.145 15.1387 10.3428 14.8057 9.75098 14.2139C9.15918 13.623 8.82666 12.8203 8.82666 11.9834C8.82666 11.1465 9.15918 10.3438 9.75098 9.75195C10.3428 9.16113 11.145 8.82812 11.9819 8.82812C12.8184 8.82812 13.6211 9.16113 14.2129 9.75195C14.8042 10.3438 15.1367 11.1465 15.1367 11.9834C15.1367 12.8203 14.8042 13.623 14.2129 14.2139C13.6211 14.8057 12.8184 15.1387 11.9819 15.1387Z" fill="#E2E8F0" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
<path id="Vector" d="M18.3931 6.8584C18.3931 7.54102 17.8394 8.09473 17.1558 8.09473C16.4727 8.09473 15.9189 7.54102 15.9189 6.8584C15.9189 6.1748 16.4727 5.62109 17.1558 5.62109C17.8394 5.62109 18.3931 6.1748 18.3931 6.8584Z" fill="#E2E8F0" fill-opacity="1.000000" fill-rule="evenodd"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
15
src/app/widgets/Footer/assets/play-market-btn.svg
Normal file
After Width: | Height: | Size: 16 KiB |
14
src/app/widgets/Footer/assets/youtube.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="24.000000" height="24.000000" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<desc>
|
||||
Created with Pixso.
|
||||
</desc>
|
||||
<defs>
|
||||
<clipPath id="clip161_49333">
|
||||
<rect id="icon / jam-icons / outline & logos / youtube" width="24.000000" height="24.000000" fill="white" fill-opacity="0"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect id="icon / jam-icons / outline & logos / youtube" width="24.000000" height="24.000000" fill="#FFFFFF" fill-opacity="0"/>
|
||||
<g clip-path="url(#clip161_49333)">
|
||||
<path id="Vector" d="M17.812 5.0166L6.14502 5.0166C3.85498 5.0166 2 6.85156 2 9.11523L2 14.8838C2 17.1475 3.85596 18.9834 6.14502 18.9834L17.812 18.9834C20.1021 18.9834 21.957 17.1475 21.957 14.8838L21.957 9.11523C21.957 6.85156 20.1011 5.01562 17.812 5.01562L17.812 5.0166ZM15.0088 12.2793L9.55176 14.8545C9.51855 14.8711 9.48193 14.8779 9.44482 14.876C9.4082 14.874 9.37256 14.8623 9.34082 14.8428C9.30957 14.8232 9.28369 14.7959 9.26562 14.7637C9.24756 14.7314 9.23828 14.6953 9.23779 14.6582L9.23779 9.34961C9.23877 9.3125 9.24854 9.27637 9.26709 9.24414C9.28564 9.21191 9.31201 9.18457 9.34375 9.16504C9.37549 9.14648 9.41162 9.13574 9.44873 9.13379C9.48584 9.13184 9.52295 9.13965 9.55615 9.15625L15.0142 11.8916C15.0503 11.9102 15.0811 11.9375 15.1021 11.9727C15.123 12.0068 15.1343 12.0469 15.1338 12.0879C15.1328 12.1279 15.1211 12.168 15.0991 12.2021C15.0771 12.2363 15.0459 12.2637 15.0088 12.2803L15.0088 12.2793Z" fill="#E2E8F0" fill-opacity="1.000000" fill-rule="nonzero"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
30
src/app/widgets/NotFound/NotFound.tsx
Normal file
@ -0,0 +1,30 @@
|
||||
import Link from "next/link";
|
||||
import not_found from "./assets/not-found.svg";
|
||||
|
||||
const NotFound = () => {
|
||||
return (
|
||||
<div className="p-4 mb-50 flex flex-col items-center">
|
||||
<img
|
||||
src={not_found.src}
|
||||
alt="Not Found Image"
|
||||
className="w-full h-[497px] aspect-w-1 aspect-h-1"
|
||||
/>
|
||||
<div className="flex flex-col items-center gap-4 text-center">
|
||||
<h2 className="text-custom-dark text-xl font-extrabold leading-6">
|
||||
Страница не найдена (404)
|
||||
</h2>
|
||||
<p className="text-[#838282] text-xl font-normal leading-6">
|
||||
Неправильно набран адрес или такой страницы не существует.
|
||||
</p>
|
||||
</div>
|
||||
<Link
|
||||
className="max-w-[320px] w-full h-[55px] mt-[62px] flex items-center justify-center text-[#ffffff] text-lg font-extrabold leading-6 rounded-[13px] bg-custom-blue"
|
||||
href="/"
|
||||
>
|
||||
На главную
|
||||
</Link>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default NotFound;
|
16
src/app/widgets/NotFound/assets/not-found.svg
Normal file
@ -0,0 +1,16 @@
|
||||
<svg width="560" height="497" viewBox="0 0 560 497" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="294.5" cy="261.5" r="175.5" fill="#F0F5FE"/>
|
||||
<circle cx="130" cy="143" r="11" fill="#F0F5FE"/>
|
||||
<circle cx="414.5" cy="99.5" r="20.5" fill="#F0F5FE"/>
|
||||
<circle cx="133.5" cy="374.5" r="19.5" fill="#F0F5FE"/>
|
||||
<circle cx="482.5" cy="355.5" r="19.5" fill="#F0F5FE"/>
|
||||
<circle cx="444.5" cy="377.5" r="9.5" fill="#F0F5FE"/>
|
||||
<path d="M270.308 296.62L268.543 297.188L269.958 298.242L282.135 307.321L282.142 307.327L282.15 307.333C289.224 312.512 291.962 316.136 291.5 318.444L291.496 318.462L291.494 318.48C291.189 320.741 288.071 323.024 281.218 325.226C276.575 326.719 272.166 326.931 267.861 326.137C263.431 325.319 258.568 323.336 253.307 319.895C251.495 318.711 250.274 317.819 249.57 317.198L249.527 317.16L249.481 317.124L238.595 308.611L236.965 307.336L234.857 308.014C207.222 316.895 186.182 323.575 171.733 328.056L171.72 328.06L171.708 328.064C168.182 329.197 163.583 329.328 157.571 328.279C151.698 327.254 146.234 325.164 141.179 321.858C138.205 319.913 135.658 317.64 133.564 315.023C120.573 298.391 108.813 278.479 98.2963 255.277C96.0874 250.353 95.6916 246.72 96.8513 244.267L96.8536 244.262L96.8558 244.257C97.9905 241.751 102.074 239.23 109.718 236.773C113.66 235.506 117.053 235.188 119.95 235.512L120.005 235.518L120.059 235.523C123.249 235.813 125.855 236.635 128.053 238.073C130.558 239.711 132.283 241.652 133.154 243.94L133.161 243.96L133.17 243.979C144.494 269.62 155.587 289.754 166.462 304.349L167.779 306.117L170.498 305.243L214.526 291.093L216.2 290.555L214.955 289.532C201.712 278.649 190.082 267.989 180.059 257.551C176.547 253.829 175.268 250.725 175.939 248.172L175.943 248.154L175.947 248.136C176.453 245.557 179.359 243.318 185.119 241.466C189.749 239.978 193.749 239.554 197.169 239.894C200.494 240.224 203.822 241.333 207.18 243.53C209.305 244.919 210.607 245.956 211.249 246.676L211.286 246.719L211.33 246.761C222.166 257.202 233.971 267.902 246.742 278.861L248.334 280.228L250.55 279.516L260.842 276.208C265.669 274.657 269.84 274.2 273.404 274.54C276.863 274.871 280.293 276.006 283.727 278.252C289.486 282.018 291.206 284.911 290.016 287.15C288.736 289.559 284.38 292.098 276.312 294.69L270.308 296.62Z" fill="#CAE1FB" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M469.021 231.365L467.255 231.932L468.67 232.987L476.197 238.599L476.205 238.605L476.213 238.611C480.563 241.796 482.045 243.888 481.796 245.13L481.793 245.148L481.79 245.166C481.626 246.383 479.925 247.712 475.765 249.049C473.05 249.921 470.607 250.009 468.307 249.584C465.88 249.136 463.058 248.018 459.877 245.938C458.768 245.213 458.055 244.689 457.661 244.342L457.619 244.304L457.572 244.268L450.843 239.005L449.213 237.73L447.105 238.408C430.022 243.898 417.019 248.026 408.092 250.795L408.079 250.799L408.066 250.803C406.142 251.421 403.602 251.515 400.107 250.905C396.75 250.32 393.568 249.118 390.56 247.151C388.801 246 387.279 244.646 386.019 243.072C378.015 232.824 370.76 220.543 364.267 206.218C362.914 203.203 362.703 201.039 363.376 199.616L363.378 199.612L363.38 199.607C364.019 198.195 366.363 196.702 371.023 195.204C373.364 194.451 375.236 194.309 376.693 194.472L376.748 194.478L376.802 194.483C378.479 194.636 379.818 195.055 380.992 195.823C382.409 196.75 383.41 197.863 383.921 199.206L383.929 199.225L383.937 199.245C390.942 215.105 397.812 227.579 404.561 236.638L405.878 238.405L408.597 237.531L435.815 228.784L437.489 228.246L436.244 227.222C428.077 220.511 420.907 213.94 414.731 207.507C412.619 205.269 411.898 203.453 412.282 201.989L412.287 201.972L412.29 201.954C412.574 200.507 414.204 199.208 417.635 198.105C420.41 197.214 422.666 197.006 424.455 197.184C426.148 197.352 427.957 197.92 429.908 199.196C431.2 200.041 431.936 200.637 432.275 201.018L432.313 201.06L432.356 201.102C439.065 207.566 446.372 214.189 454.276 220.972L455.868 222.339L458.084 221.627L464.447 219.582C467.345 218.65 469.71 218.423 471.59 218.603C473.366 218.772 475.233 219.357 477.228 220.661C480.684 222.922 481.532 224.535 480.902 225.72C480.182 227.076 477.67 228.585 472.732 230.172L469.021 231.365Z" fill="#CAE1FB" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M337.384 222.018C353.059 229.83 365.498 240.199 372.969 250.555C380.501 260.998 382.678 270.934 379.013 278.288C375.347 285.643 366.103 289.887 353.231 290.16C340.464 290.43 324.696 286.741 309.02 278.929C293.344 271.116 280.906 260.747 273.435 250.391C265.903 239.949 263.726 230.013 267.391 222.658C271.057 215.304 280.301 211.06 293.173 210.787C305.94 210.517 321.708 214.205 337.384 222.018Z" fill="#DDEBFF" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M261.097 188.743L293 268.5L298.5 272.5L307 277.5L314.5 280.5L278.494 187.279C278.196 186.508 277.455 186 276.628 186L262.954 186C261.539 186 260.572 187.429 261.097 188.743Z" fill="#DDEBFF" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M296.897 171.111L344.285 289.463C344.418 289.795 344.718 290.031 345.072 290.082L347.93 290.49C347.976 290.497 348.024 290.5 348.071 290.5L355 290.5L358.923 290.009C358.974 290.003 359.025 289.993 359.074 289.979L362.5 289L365.084 287.893C365.59 287.676 365.826 287.09 365.61 286.582L315.864 169.519C315.7 169.133 315.313 168.891 314.895 168.911L297.777 169.741C297.09 169.774 296.641 170.473 296.897 171.111Z" fill="#DDEBFF" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M286.168 201.956L313.171 193.293C314.673 192.811 316.282 193.638 316.764 195.141C317.246 196.643 316.419 198.252 314.916 198.734L287.914 207.398L286.168 201.956Z" fill="#CAE1FB" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M297.429 230.854L323.957 220.829C325.433 220.271 327.082 221.016 327.64 222.492C328.198 223.968 327.453 225.617 325.977 226.175L299.45 236.2L297.429 230.854Z" fill="#CAE1FB" stroke="#CAE1FB" stroke-width="4"/>
|
||||
<path d="M309.081 258.52L332.472 248.859C333.931 248.256 335.602 248.95 336.204 250.409C336.807 251.868 336.112 253.538 334.654 254.141L311.262 263.802L309.081 258.52Z" fill="#CAE1FB" stroke="#CAE1FB" stroke-width="4"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
12
src/i18n.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import { notFound } from "next/navigation";
|
||||
import { getRequestConfig } from "next-intl/server";
|
||||
// Can be imported from a shared config
|
||||
const locales = ["en", "ru", "kg"];
|
||||
|
||||
export default getRequestConfig(async ({ locale }) => {
|
||||
if (!locales.includes(locale as any)) notFound();
|
||||
|
||||
return {
|
||||
messages: (await import(`../messages/${locale}.json`)).default,
|
||||
};
|
||||
});
|
13
src/middleware.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import createMiddleware from "next-intl/middleware";
|
||||
|
||||
export default createMiddleware({
|
||||
// A list of all locales that are supported
|
||||
locales: ["en", "ru", "kg"],
|
||||
// Used when no locale matches
|
||||
defaultLocale: "ru",
|
||||
});
|
||||
|
||||
export const config = {
|
||||
// Match only internationalized pathnames
|
||||
matcher: ["/", "/(en|ru|kg)/:path*"],
|
||||
};
|
@ -14,6 +14,11 @@ const config: Config = {
|
||||
"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
|
||||
},
|
||||
},
|
||||
colors: {
|
||||
"custom-dark": "#0b2f33",
|
||||
"custom-blue": "#3998e8",
|
||||
white: "#fff",
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
|