diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603fea78041071d125a30db58d79b3d49217..0000000000000000000000000000000000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/fruit-tella-next.iml b/.idea/fruit-tella-next.iml deleted file mode 100644 index 24643cc37449b4bde54411a80b8ed61258225e34..0000000000000000000000000000000000000000 --- a/.idea/fruit-tella-next.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml deleted file mode 100644 index 7dc124965d28403ec2545a24d7d1cd1fec1f57d8..0000000000000000000000000000000000000000 --- a/.idea/git_toolbox_blame.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 5e29ecead7f8434cde38b4d90a6fea536c178fa3..0000000000000000000000000000000000000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/jsLinters/jshint.xml b/.idea/jsLinters/jshint.xml deleted file mode 100644 index d60e3e80b051281dd1cae432e71b29eb7e68d91b..0000000000000000000000000000000000000000 --- a/.idea/jsLinters/jshint.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index abd1199c434083376c668ee433b97c82eca24305..0000000000000000000000000000000000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - Angular - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 9841ecf084de00e7200c0212231be3bbcea20438..0000000000000000000000000000000000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7f4cb416c083d265558da75d457237d671..0000000000000000000000000000000000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts deleted file mode 100644 index 8c098953bc4a43c534bfe2b878038aacb0dbcb03..0000000000000000000000000000000000000000 --- a/app/api/auth/[...nextauth]/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Referring to the auth.ts we just created -import {handlers} from "@/shared/api/model/auth/auth"; - -export const {GET, POST} = handlers \ No newline at end of file diff --git a/app/api/file/upload/route.ts b/app/api/file/upload/route.ts deleted file mode 100644 index 3878f82c6f807a488a19167c6caf9288d7a9b8f9..0000000000000000000000000000000000000000 --- a/app/api/file/upload/route.ts +++ /dev/null @@ -1,116 +0,0 @@ -import {NextRequest, NextResponse} from "next/server"; -import {auth} from "@/shared/api/model/auth/auth"; -import {ApiResponse} from "@/shared/types/types"; -import {errorMessages} from "@/shared/config"; - -export async function POST(req: NextRequest) { - - try { - const session = await auth(); - - const url = process.env.DB_HOST + `/upload/` - - const referer = req.headers.get("referer"); - const isHost = referer?.includes(String(process.env.HOST)) ?? false; - - if(!isHost) { - return NextResponse.json( - {message: "Доступ ограничен", status: 400}, - {status: 400} - ); - } - - - const body = await req.formData(); - - const response = await fetch(url, { - method: "POST", - headers: { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-expect-error - Authorization: `Bearer ${session?.accessToken || ""}`, - }, - cache: "no-store", - body, - }); - - - - if (!response.ok) { - const contentType = response.headers.get("Content-Type"); - const customMessage = errorMessages[response.status] || `Ошибка ${response.status}`; - - if (response.status === 204) { - return NextResponse.json({ - message: "Операция выполнена успешно (204 No Content).", - status: response.status, - data: null, - }, { - status: response.status, - }); - } - - if (contentType && contentType.includes("text/html")) { - const errorHtml = await response.text(); - return NextResponse.json({ - message: `Ошибка на сервере (${response.status}). Возможно, проблема на стороне API.`, - status: response.status, - data: errorHtml, - }, { - status: response.status, - }); - } - - try { - const data = await response.json(); - return NextResponse.json({ - message: data?.success || data?.error || customMessage, // Используем серверное сообщение или дефолтное - status: response.status, - data, - }, { - status: response.status, - }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - } catch (error) { - return NextResponse.json({ - message: customMessage, - status: response.status, - }, { - status: response.status, - }); - } - } - - try { - const data = await response.json(); - return NextResponse.json({ - message: data?.success || data?.error || "Успешный ответ", - status: response.status, - data, - }, { - status: response.status, - }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - } catch (error) { - return NextResponse.json({ - message: "Запрос выполнен, но данных нет.", - status: response.status, - data: null, - }, { - status: response.status, - }); - } - - - } catch (error) { - return NextResponse.json( - { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore - message: error.message || "Internal Server Error", - status: 500, - }, - {status: 500} - ); - } -} diff --git a/app/faq/page.tsx b/app/faq/page.tsx deleted file mode 100644 index c2b01efdc2c5a655d8feffba1d90c40eb71cd304..0000000000000000000000000000000000000000 --- a/app/faq/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export const dynamic = 'force-static'; - -export {default} from "@/views/faq" \ No newline at end of file diff --git a/app/favicon.ico b/app/favicon.ico deleted file mode 100644 index 44b063475488995135c0976a9900c0411bce9d3a..0000000000000000000000000000000000000000 Binary files a/app/favicon.ico and /dev/null differ diff --git a/package.json b/package.json index e055d28fe4dbd6cc0c8d2f7d68a7a1e539fad06d..5498b508c19ea2297459042336e62bba639092eb 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,10 @@ "lint": "next lint" }, "dependencies": { - "@tanstack/react-query": "^5.66.4", - "@tanstack/react-query-devtools": "^5.66.4", "@types/react-scroll": "^1.8.10", "@types/sanitize-html": "^2.13.0", "clsx": "^2.1.1", "next": "15.1.7", - "next-auth": "^5.0.0-beta.25", "react": "^19.0.0", "react-device-detect": "^2.2.3", "react-dom": "^19.0.0", diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index adf68f9d08156e9c769563b3a46e3c9352bc3f54..b6224b485d35a52f60ccfb1ddc4188252ad7fcb8 100644 Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png index 132763cb668f14480601b807a1e9c89be698935e..b6224b485d35a52f60ccfb1ddc4188252ad7fcb8 100644 Binary files a/public/favicon-96x96.png and b/public/favicon-96x96.png differ diff --git a/public/favicon.ico b/public/favicon.ico index 9b729758426e37fb847a561152733d858ee7c313..cd691b5e465d565dc9ae8b0bca7ebf9ae2fa3ed4 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg index d6ed30f26894de3c1c3f447bdca83dbd3ac1d4ac..06a9e531b1199f1894a903e7e8233f61dd2ee37d 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,3 +1,25 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/media/about/b-f-lg.png b/public/media/about/b-f-lg.png index 5b4f24e0331d00297b2356d9ace5e16ff191053a..f0e047aff51e59d339c0e73224abe39a8d5756e0 100644 Binary files a/public/media/about/b-f-lg.png and b/public/media/about/b-f-lg.png differ diff --git a/public/media/about/b-f-sm.png b/public/media/about/b-f-sm.png index 7fdda4c554168a646f0ac6cbc505a58dcc7b6f90..a82848496d4c50dfcb68c4f69b87dd82e26dd8e8 100644 Binary files a/public/media/about/b-f-sm.png and b/public/media/about/b-f-sm.png differ diff --git a/public/media/about/b-l-lg.png b/public/media/about/b-l-lg.png index 2cfad1373d56237fc567de89423811d510cff84d..0ee9074388314648faae488d12d7bc58b9330864 100644 Binary files a/public/media/about/b-l-lg.png and b/public/media/about/b-l-lg.png differ diff --git a/public/media/about/b-r-lg.png b/public/media/about/b-r-lg.png index 38eec342002ee24a533516e10f69e48e72978671..addaca2a3e6c7ab44bd2a91705cb4203c2ee54dc 100644 Binary files a/public/media/about/b-r-lg.png and b/public/media/about/b-r-lg.png differ diff --git a/public/media/about/b-r-sm.png b/public/media/about/b-r-sm.png index f00386236f37eb52c789655eed9e1685436fc85d..abeb4492b7ef38a9e07f5fdb2c766a07bd2163dd 100644 Binary files a/public/media/about/b-r-sm.png and b/public/media/about/b-r-sm.png differ diff --git a/public/media/cards/frame-closed.png b/public/media/cards/frame-closed.png index 954d289b932cccb89ea86dad243510f634761f4e..e2fc37c6e6d5c9fe3e3a5fe7ca0630b33178600d 100644 Binary files a/public/media/cards/frame-closed.png and b/public/media/cards/frame-closed.png differ diff --git a/public/media/cards/main-card.jpg b/public/media/cards/main-card.jpg index 8ad0bf484480e683725e5b49f0394bec14fd5833..c4ab771459a17163235266bec81c9a6787d93e34 100644 Binary files a/public/media/cards/main-card.jpg and b/public/media/cards/main-card.jpg differ diff --git a/public/media/cards/quiz/1.jpg b/public/media/cards/quiz/1.jpg index daa8fe68bf7cee398652983859ab781d27e6d6ca..1c3d2a5bad8c1a11c06811d5f0498875c46e2ce7 100644 Binary files a/public/media/cards/quiz/1.jpg and b/public/media/cards/quiz/1.jpg differ diff --git a/public/media/cards/quiz/2.jpg b/public/media/cards/quiz/2.jpg index ce94b6629a134a717fd66f3c0e645e29310d8082..3fa420d08469ee31bbc8fba984d065448cb89b75 100644 Binary files a/public/media/cards/quiz/2.jpg and b/public/media/cards/quiz/2.jpg differ diff --git a/public/media/cards/quiz/3.jpg b/public/media/cards/quiz/3.jpg index af0b26ce2a7bb082793441afce1c24cb41a3c947..1c4557148d9b8df477c2fcaacfd7789e913f445a 100644 Binary files a/public/media/cards/quiz/3.jpg and b/public/media/cards/quiz/3.jpg differ diff --git a/public/media/cards/quiz/4.jpg b/public/media/cards/quiz/4.jpg index 4088e6b3cf4b4ac1ffee6640dfd3fe996d33eecc..062bd372bf527162bd2615ea274461debc4e2770 100644 Binary files a/public/media/cards/quiz/4.jpg and b/public/media/cards/quiz/4.jpg differ diff --git a/public/media/cards/quiz/5.jpg b/public/media/cards/quiz/5.jpg index 73214309336dc827d4e99c37f1eed021310d7863..4d0231cf1805c02fa24292a3bc495d565f00e9ae 100644 Binary files a/public/media/cards/quiz/5.jpg and b/public/media/cards/quiz/5.jpg differ diff --git a/public/media/cards/quiz/6.jpg b/public/media/cards/quiz/6.jpg index e71f8cb84a6355ecc999d823ceed4e6be1e40b5a..bdd059ecc1d84f318d94e53ea6380562394cdce2 100644 Binary files a/public/media/cards/quiz/6.jpg and b/public/media/cards/quiz/6.jpg differ diff --git a/public/media/cards/quiz/7.jpg b/public/media/cards/quiz/7.jpg index c5381332bbd2133c1d8561f69db1b5bdd2b6b934..469dbc94861f283841e012c2506192a87d01afe4 100644 Binary files a/public/media/cards/quiz/7.jpg and b/public/media/cards/quiz/7.jpg differ diff --git a/public/media/cards/quiz/8.jpg b/public/media/cards/quiz/8.jpg index 6cb5901d12c95ecf7fcac6b5cdaf52081322a5c2..be29b85378da7c7656a4db036b4c1f4c3b14cad4 100644 Binary files a/public/media/cards/quiz/8.jpg and b/public/media/cards/quiz/8.jpg differ diff --git a/public/media/faq/b-f-lg.png b/public/media/faq/b-f-lg.png deleted file mode 100644 index bd6521ba85c24545311c3c58f705ef06a5690f8f..0000000000000000000000000000000000000000 Binary files a/public/media/faq/b-f-lg.png and /dev/null differ diff --git a/public/media/faq/b-f-sm.png b/public/media/faq/b-f-sm.png deleted file mode 100644 index 7ad81f8e09db6929eac2190309b825f5a02cecb3..0000000000000000000000000000000000000000 Binary files a/public/media/faq/b-f-sm.png and /dev/null differ diff --git a/public/media/faq/b-r-sm.png b/public/media/faq/b-r-sm.png deleted file mode 100644 index f85ab46d438d6fe1beee3931360f0e94938c1556..0000000000000000000000000000000000000000 Binary files a/public/media/faq/b-r-sm.png and /dev/null differ diff --git a/public/media/home/b-lg.png b/public/media/home/b-lg.png deleted file mode 100644 index 428cd959729f0d3b5ab8d0d1fc6df92dabd2ebd9..0000000000000000000000000000000000000000 Binary files a/public/media/home/b-lg.png and /dev/null differ diff --git a/public/media/home/b-sm.png b/public/media/home/b-sm.png index 0267f143c2451e78693693fa7c86a2bd6d2dfec3..70a275f56b7b72a6471665c768352842945e33e7 100644 Binary files a/public/media/home/b-sm.png and b/public/media/home/b-sm.png differ diff --git a/public/media/home/f-lg.png b/public/media/home/f-lg.png index ead2419d1a964621899ffb5d39dff1724c1d2bf2..ebee7e08ea18d2ddcde219a596462434c869bf4a 100644 Binary files a/public/media/home/f-lg.png and b/public/media/home/f-lg.png differ diff --git a/public/media/home/f-sm.png b/public/media/home/f-sm.png deleted file mode 100644 index 931ae5ca573eed4cead5df102b2e8e5c626d3b1c..0000000000000000000000000000000000000000 Binary files a/public/media/home/f-sm.png and /dev/null differ diff --git a/public/media/home/h-lg.png b/public/media/home/h-lg.png index 756f79fc560522bd7243e1cbf2c183e4b7320aed..b768648dc33ab0f0c619d338e1d0944a161afa5d 100644 Binary files a/public/media/home/h-lg.png and b/public/media/home/h-lg.png differ diff --git a/public/media/home/h-sm.png b/public/media/home/h-sm.png index f1c8290adb4eeed5f8d399f1fb0ba77c40ffa525..a8e5445b7d136200239bc7c58b110712e7ccc4d2 100644 Binary files a/public/media/home/h-sm.png and b/public/media/home/h-sm.png differ diff --git a/public/media/home/sketch.png b/public/media/home/sketch.png new file mode 100644 index 0000000000000000000000000000000000000000..76e520022118453cc784454e53754fa86138350c Binary files /dev/null and b/public/media/home/sketch.png differ diff --git a/public/media/layout/footer-desktop.png b/public/media/layout/footer-desktop.png index b047e6f5676641c7096f470f9f4ed5060d25c21b..2451aa214ec09d90fdfb785572bc7658e14ac487 100644 Binary files a/public/media/layout/footer-desktop.png and b/public/media/layout/footer-desktop.png differ diff --git a/public/media/layout/l-lg.png b/public/media/layout/l-lg.png index fe970127b2c947ea614606c363ce1f97e3a3bdc4..113f78687e13f571be1a33266d397df609da65a7 100644 Binary files a/public/media/layout/l-lg.png and b/public/media/layout/l-lg.png differ diff --git a/public/media/layout/l-sm.png b/public/media/layout/l-sm.png index 85a8127ffe10e56268e8a71b8aaa598742f9fe36..c27dbc3cee7de49e2b50f6993754c6d9361c445b 100644 Binary files a/public/media/layout/l-sm.png and b/public/media/layout/l-sm.png differ diff --git a/public/media/layout/t-sm.png b/public/media/layout/t-sm.png index f51c7e5d379558ab6d6c198269691dcb70ff2d75..214bb230f728f8a7af7db1784f36ed58fc6f36a0 100644 Binary files a/public/media/layout/t-sm.png and b/public/media/layout/t-sm.png differ diff --git a/public/media/layout/top-slime.png b/public/media/layout/top-slime.png index 1dc5b67a4391c4389524da3a2625d603ccaf05a3..a5ca5e13dce5b2f11a4079ca53722ead88dd4a6a 100644 Binary files a/public/media/layout/top-slime.png and b/public/media/layout/top-slime.png differ diff --git a/public/media/menu/j.png b/public/media/menu/j.png new file mode 100644 index 0000000000000000000000000000000000000000..0e22f8b36ffef16e689d75139ffe80ba8b46bc27 Binary files /dev/null and b/public/media/menu/j.png differ diff --git a/public/media/not-found/b-f-lg.png b/public/media/not-found/b-f-lg.png index 75586297c05807e597752e0bafe2c7922b4f7880..98c34588ba740a84b3ab9e9077a924a74f88b8c3 100644 Binary files a/public/media/not-found/b-f-lg.png and b/public/media/not-found/b-f-lg.png differ diff --git a/public/media/not-found/b-f-sm.png b/public/media/not-found/b-f-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6ee3d9b86aa6f46e787468fbfe95e7a861245b Binary files /dev/null and b/public/media/not-found/b-f-sm.png differ diff --git a/public/media/prize/prize.png b/public/media/prize/prize.png deleted file mode 100644 index bbf273cb0cb3db7a34718cff6edc01d2175ec2d5..0000000000000000000000000000000000000000 Binary files a/public/media/prize/prize.png and /dev/null differ diff --git a/public/media/prize/underline.png b/public/media/prize/underline.png deleted file mode 100644 index 3273ba2b4f1d92e39542c060d245bed6b5e4a80f..0000000000000000000000000000000000000000 Binary files a/public/media/prize/underline.png and /dev/null differ diff --git a/public/media/step/arrow-1.png b/public/media/step/arrow-1.png deleted file mode 100644 index f7f1460cf0da804e12d55043d584b7c4b327a243..0000000000000000000000000000000000000000 Binary files a/public/media/step/arrow-1.png and /dev/null differ diff --git a/public/media/step/arrow-2.png b/public/media/step/arrow-2.png deleted file mode 100644 index f39ea2aab31f040375b3848347bf318dedad2c05..0000000000000000000000000000000000000000 Binary files a/public/media/step/arrow-2.png and /dev/null differ diff --git a/public/media/step/sketch.png b/public/media/step/sketch.png deleted file mode 100644 index 93408569b93d8e477eacbd51fe1c63edc2ff7c49..0000000000000000000000000000000000000000 Binary files a/public/media/step/sketch.png and /dev/null differ diff --git a/public/media/utils/arrow-link-video-trigger.png b/public/media/utils/arrow-link-video-trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..5122b490b96fea337e10251d22b502add5c7fa74 Binary files /dev/null and b/public/media/utils/arrow-link-video-trigger.png differ diff --git a/public/media/utils/navlink-line-dark.png b/public/media/utils/navlink-line-dark.png index d98342b38484fd1dd5e812e8310241ca2f38d4dc..271b953d125ee592b69f5f741ba78d01c2747e9e 100644 Binary files a/public/media/utils/navlink-line-dark.png and b/public/media/utils/navlink-line-dark.png differ diff --git a/public/media/utils/package-lg.png b/public/media/utils/package-lg.png new file mode 100644 index 0000000000000000000000000000000000000000..a39fddb27af1b6ac9424689b78930c9a71d2e95e Binary files /dev/null and b/public/media/utils/package-lg.png differ diff --git a/public/media/utils/package-sm.png b/public/media/utils/package-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2bb2e02da17549dc3ba9b364eabca5aba05a2e Binary files /dev/null and b/public/media/utils/package-sm.png differ diff --git a/public/media/utils/package.png b/public/media/utils/package.png deleted file mode 100644 index bc3ac9b3c986eff059fc5296bd9e681bd1479b4e..0000000000000000000000000000000000000000 Binary files a/public/media/utils/package.png and /dev/null differ diff --git a/public/media/utils/play-disabled.svg b/public/media/utils/play-disabled.svg new file mode 100644 index 0000000000000000000000000000000000000000..6c74050b2b0ff4afb3b48d79f365331cb98c5e0c --- /dev/null +++ b/public/media/utils/play-disabled.svg @@ -0,0 +1,8 @@ + +
+ + + + + +
diff --git a/public/media/utils/play.svg b/public/media/utils/play.svg new file mode 100644 index 0000000000000000000000000000000000000000..98c055bfa14c24b2fb2e761eb65991008adb9324 --- /dev/null +++ b/public/media/utils/play.svg @@ -0,0 +1,7 @@ + +
+ + + + +
diff --git a/public/media/utils/video-preview.jpg b/public/media/utils/video-preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a9dfcaed92c89c08443c54251e02a5120e834d5 Binary files /dev/null and b/public/media/utils/video-preview.jpg differ diff --git a/public/media/video/video.MOV b/public/media/video/video.MOV new file mode 100644 index 0000000000000000000000000000000000000000..ec95dc9b06ca11813a5b41d456d33bc41d9c5dfa Binary files /dev/null and b/public/media/video/video.MOV differ diff --git a/public/rules/Rules_promotion_competition_Fruittella_Creative_family_competition.pdf b/public/rules/Rules_promotion_competition_Fruittella_Creative_family_competition.pdf index e5af3a061d4a94844fd648d9cfe6b108b8419b5c..c346d5eb53eeadd9d098fa76677dce47277b141c 100644 Binary files a/public/rules/Rules_promotion_competition_Fruittella_Creative_family_competition.pdf and b/public/rules/Rules_promotion_competition_Fruittella_Creative_family_competition.pdf differ diff --git a/public/rules/User_agreement.pdf b/public/rules/User_agreement.pdf index 945eda1f52469deec216da9e3d7c7302f8e9d86a..1f705d460e17b6dac3a7d01a627706a93639e99f 100644 Binary files a/public/rules/User_agreement.pdf and b/public/rules/User_agreement.pdf differ diff --git a/public/sharing.png b/public/sharing.png new file mode 100644 index 0000000000000000000000000000000000000000..82757ae2c7afe65e7148995833430c91c7906f0f Binary files /dev/null and b/public/sharing.png differ diff --git a/public/site.webmanifest b/public/site.webmanifest index 40ce4f819bcdfab7201cd3bbb21ac5ae70ff702c..cf4bac0c3e39f73fbfe39b9363bec74272eb8156 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -3,13 +3,13 @@ "short_name": "Fruit-tella", "icons": [ { - "src": "/web-app-manifest-192x192.png", + "src": "/web-app-manifest-192x192-06.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/web-app-manifest-512x512.png", + "src": "/web-app-manifest-512x512-06.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/public/web-app-manifest-192x192.png b/public/web-app-manifest-192x192.png deleted file mode 100644 index 5996ea61bc3467790742577e295e8f1516022c5b..0000000000000000000000000000000000000000 Binary files a/public/web-app-manifest-192x192.png and /dev/null differ diff --git a/public/web-app-manifest-512x512.png b/public/web-app-manifest-512x512.png index 9a33577f7311e4ac849542a5a7880a0ad6eecf19..22612e23c739a477554799f3f1a9c266db1529f3 100644 Binary files a/public/web-app-manifest-512x512.png and b/public/web-app-manifest-512x512.png differ diff --git a/src/app/appEntry.tsx b/src/app/appEntry.tsx index 294807aabd237af2fbb5fe3680ed63a0a039321e..f9800f6c4eb539b55042e73904d6131d2ac9f8fb 100644 --- a/src/app/appEntry.tsx +++ b/src/app/appEntry.tsx @@ -1,14 +1,9 @@ -import {QueryClientProvider} from "@/app/providers"; + import {Fragment, ReactNode} from "react"; import {BaseLayout} from "@/app/layouts/base-layout"; -import {ModalView} from "@/feature/modal-view"; -import {SignUp} from "@/widgets/sign-up"; -import {UploadError, UploadSuccess, AuthError} from "@/widgets/modal-status"; import {CookieAlert} from "@/feature/cookie-alert"; -import {NextAuthProvider} from "@/app/providers/NextAuthProvider"; import {QuizDetailed} from "@/widgets/quiz-detailed/ui/QuizDetailed"; -import {UploadFile} from "@/widgets/upload-file"; -import {PreviewFile} from "@/widgets/preview-file"; +import {VideoModal} from "@/widgets/video-modal"; export default function RootLayout(props: Readonly<{ children: ReactNode }>) { @@ -20,12 +15,11 @@ export default function RootLayout(props: Readonly<{ children: ReactNode }>) { - + + - - @@ -60,35 +54,14 @@ export default function RootLayout(props: Readonly<{ children: ReactNode }>) { style={{position: "absolute", left: "-9999px"}} alt=""/> - - - - - {children} - - - - - - - - - - - - - - - - - - - - - - - - + + + {children} + + + + + ); diff --git a/src/app/layouts/base-layout/ui/Menu/Menu.tsx b/src/app/layouts/base-layout/ui/Menu/Menu.tsx index ab38e977833c2d4ec3e951ca79449ac55b338871..48251d42e5f1e220c0cdac10d4b08802cef3e272 100644 --- a/src/app/layouts/base-layout/ui/Menu/Menu.tsx +++ b/src/app/layouts/base-layout/ui/Menu/Menu.tsx @@ -32,9 +32,9 @@ export const Menu = () => { - Правила + Статьи @@ -61,9 +61,9 @@ export const Menu = () => { - Правила + Статьи diff --git a/src/app/layouts/base-layout/ui/config/consts.ts b/src/app/layouts/base-layout/ui/config/consts.ts index 6a56239f6656da40c621a3c9aa4d8eb699e1d90f..39fdf5d9fae4ca807aab2abea5710fa93c533145 100644 --- a/src/app/layouts/base-layout/ui/config/consts.ts +++ b/src/app/layouts/base-layout/ui/config/consts.ts @@ -9,10 +9,10 @@ export const MENU_LINK_ARRAY = [ href: paths.ABOUT, label: "О продукте" }, - { - href: paths.FAQ, - label: "FAQ" - }, + // { + // href: paths.FAQ, + // label: "FAQ" + // }, // { // href: '', // label: "Правила" diff --git a/src/app/layouts/base-layout/ui/index.module.scss b/src/app/layouts/base-layout/ui/index.module.scss index a8066d2e6cafc9e9b76ab9fbc2e6ac727f922d29..bdc4d4d108a1bda791a9ee8e9a0f044597cd5448 100644 --- a/src/app/layouts/base-layout/ui/index.module.scss +++ b/src/app/layouts/base-layout/ui/index.module.scss @@ -1,12 +1,12 @@ .base { - @apply flex flex-col min-h-dvh; + @apply flex flex-col min-h-screen; @apply relative; @media (max-width: 1024px) { background-image: url("/media/layout/t-sm.png"); - background-size: 40%; + background-size: 80%; background-repeat: no-repeat; } diff --git a/src/app/middleware.ts b/src/app/middleware.ts deleted file mode 100644 index 6bf03b874d90c9344215b110959eec030aa3f815..0000000000000000000000000000000000000000 --- a/src/app/middleware.ts +++ /dev/null @@ -1 +0,0 @@ -export { auth as middleware } from "@/shared/api/model/auth/auth" \ No newline at end of file diff --git a/src/app/providers/NextAuthProvider.tsx b/src/app/providers/NextAuthProvider.tsx deleted file mode 100644 index c63a470378cc2327f6071077bbc05bd4cea47501..0000000000000000000000000000000000000000 --- a/src/app/providers/NextAuthProvider.tsx +++ /dev/null @@ -1,10 +0,0 @@ -'use client'; - -import {SessionProvider} from 'next-auth/react'; -import {ReactNode} from 'react'; - -export function NextAuthProvider({children}: { - children: ReactNode; -}) { - return {children}; -} \ No newline at end of file diff --git a/src/app/providers/QueryClientProvider.tsx b/src/app/providers/QueryClientProvider.tsx deleted file mode 100644 index dbe53d5075fe3b83dd1d5e1c7379d4064cc4e0d4..0000000000000000000000000000000000000000 --- a/src/app/providers/QueryClientProvider.tsx +++ /dev/null @@ -1,15 +0,0 @@ -'use client' -import {QueryClientProvider as Provider} from '@tanstack/react-query' -import type * as React from 'react' -import {getQueryClient} from "@/shared/api/get-query-client"; -import {ReactQueryDevtools} from "@tanstack/react-query-devtools"; - -export function QueryClientProvider({children}: { children: React.ReactNode }) { - const queryClient = getQueryClient() - return ( - - - {children} - - ) -} \ No newline at end of file diff --git a/src/app/providers/index.ts b/src/app/providers/index.ts deleted file mode 100644 index 6cd77d4d74554cb8c34b2d0550656a4ee6ef9ea5..0000000000000000000000000000000000000000 --- a/src/app/providers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./QueryClientProvider" \ No newline at end of file diff --git a/src/app/styles/_app.scss b/src/app/styles/_app.scss index f01db3d18b4cee89a3580fc8ee62dd0aef20f310..8bbb61f82af5ad57a6f4a3c0cd29a5dfa719beae 100644 --- a/src/app/styles/_app.scss +++ b/src/app/styles/_app.scss @@ -2,9 +2,6 @@ padding: 0; margin: 0; box-sizing: border-box; - - //scrollbar-width: thin; - //scrollbar-color: #B6E353 transparent; } ::-webkit-scrollbar { @@ -13,7 +10,7 @@ } ::-webkit-scrollbar-thumb { - background: #B6E353; + background: #ff9ab7; border-radius: 3px; } @@ -26,24 +23,17 @@ --size: 16; - --h-menu: 4.25rem; - - //@media (min-width: 768px) { - // --index: 768; - // --size: 16; - //} + --h-menu: 3.75rem; @media (min-width: 1024px) { --index: 1200; --size: 10; --h-menu: 6.125rem; - } } - html { - background: #096833; + background: #f99fc9; overflow-x: hidden; font-size: calc(var(--size) * 100vw / var(--index)); } @@ -54,21 +44,28 @@ a { display: inline-block; } - -::selection { - @apply text-white; - @apply bg-green1; -} - body { position: relative; overflow-x: hidden; - font-family: 'Gotham Pro', sans-serif; + font-family: "Gotham Pro", sans-serif; font-weight: 400; - background: linear-gradient(158.04deg, #096833 29.53%, #005B28 83.37%); + color: #fff; min-height: 100vh; + background: radial-gradient( + 65.64% 50.73% at 84.53% 20.94%, + #ffb8d9 0%, + #f99fc9 100% + ); + + @media (min-width: 1024px) { + background: radial-gradient( + 32.84% 112.53% at 70.26% 29.9%, + #ffc6e1 0%, + #f99fc9 100% + ); + } &::before { content: ""; @@ -79,10 +76,9 @@ body { height: 100%; background: url("/media/layout/l-sm.png"); background-size: 100%; - mix-blend-mode: exclusion; + //mix-blend-mode: exclusion; pointer-events: none; - @media (min-width: 1024px) { background: url("/media/layout/l-lg.png"); background-size: 100%; @@ -90,7 +86,6 @@ body { } } - button { @apply cursor-pointer border-0; @apply outline-0; @@ -109,7 +104,4 @@ button { @apply overflow-visible; //-webkit-overflow-scrolling: touch; /* Улучшает плавность на iOS */ //touch-action: pan-y; /* Разрешает вертикальный скролл */ - } - - diff --git a/src/entities/file/api/file.service.ts b/src/entities/file/api/file.service.ts deleted file mode 100644 index 92fb13f4dc37de7c1481dfb0cb756bf3309cd0e3..0000000000000000000000000000000000000000 --- a/src/entities/file/api/file.service.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {ApiResponse} from "@/shared/types/types"; - -class FileService { - async postFile(formData: FormData): Promise> { - const url = '/api/file/upload'; - try { - const res = await fetch(url, { - method: "POST", - body: formData - }) - - if (!res.ok) { - const errorResponse = await res.json(); // Парсим ошибку из ответа - const errorMessage = `Error POST ${url}, status: ${res.status}`; - throw { - message: errorResponse?.error || errorMessage, - status: res.status, - }; - } - - return (await res.json()); - } catch (error) { - const errorMessage = `Error POST ${url}`; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - throw new Error(error?.message || errorMessage); - } - } -} - - -export const apiFile = new FileService(); \ No newline at end of file diff --git a/src/entities/file/api/index.ts b/src/entities/file/api/index.ts deleted file mode 100644 index b91afe4ac422af98c68897d07412ae56522d2c27..0000000000000000000000000000000000000000 --- a/src/entities/file/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./file.service" \ No newline at end of file diff --git a/src/entities/file/index.ts b/src/entities/file/index.ts deleted file mode 100644 index d52f88510702aaa73ff3eea10de1b4916fd1a11f..0000000000000000000000000000000000000000 --- a/src/entities/file/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./api" \ No newline at end of file diff --git a/src/feature/card-start/CardStart.tsx b/src/feature/card-start/CardStart.tsx deleted file mode 100644 index da7bc12a62bd0dafb52956b42fcfbf2a61a6a6fa..0000000000000000000000000000000000000000 --- a/src/feature/card-start/CardStart.tsx +++ /dev/null @@ -1,33 +0,0 @@ -'use client' -import styles from "./index.module.scss" -import clsx from "clsx"; -import {Button} from "@/shared/ui/Inputs/Button"; -import {scroller} from "react-scroll"; - -export const CardStart = () => { - - - const scrollToSection = () => { - scroller.scrollTo("steps-upload", { - smooth: true, - duration: 1200, - }); - }; - - return ( -
-
-
- - - -
-
-
- -
-
- ) -}; \ No newline at end of file diff --git a/src/feature/card-start/index.module.scss b/src/feature/card-start/index.module.scss deleted file mode 100644 index c781cbab285eebaca357127f8d5b9c869f48f9c3..0000000000000000000000000000000000000000 --- a/src/feature/card-start/index.module.scss +++ /dev/null @@ -1,80 +0,0 @@ -.base { - @apply relative w-full overflow-hidden; - - max-width: 7rem; - height: 10rem; - border-radius: 0.75rem; - border: 1px solid #fff; - - - transform: rotate(-28deg); - - - @media (min-width: 1024px) { - transform: rotate(0); - @apply relative; - max-width: 13rem; - height: 18rem; - border-radius: 1.2rem; - border: 2px solid #fff; - } - - - background: linear-gradient(0deg, #F8BA00, #F8BA00); - - &::before { - content: ""; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: url("/media/cards/frame-start-card.png"); - background-size: 100%; - background-blend-mode: color; - pointer-events: none; - } -} - - -.card-closed { - @apply w-full relative; - - @apply flex items-center justify-center; - - @media (min-width: 1024px) { - max-width: 13rem; - height: 18rem; - } -} - -.bottom { - - @apply absolute; - @apply -translate-x-1/2 -translate-y-1/2; - @apply left-1/2 top-1/2; - - @media (min-width: 1024px) { - @apply absolute bottom-2 left-1/2 top-auto; - @apply -translate-x-1/2 translate-y-1/2; - } -} - -.sketch { - @apply w-full; - @apply absolute; - max-width: 3.5rem; - @apply -right-7 -top-8; - - @media (min-width: 1024px) { - @apply absolute; - @apply -right-12 -top-14; - @apply pointer-events-none; - max-width: 6rem; - - } - - img { - @apply w-full block; - } -} \ No newline at end of file diff --git a/src/feature/card-start/index.ts b/src/feature/card-start/index.ts deleted file mode 100644 index cd55c56a9cdc11f03bc642fadcf5f0245e8b0a75..0000000000000000000000000000000000000000 --- a/src/feature/card-start/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./CardStart" \ No newline at end of file diff --git a/src/feature/cookie-alert/CookieAlert.tsx b/src/feature/cookie-alert/CookieAlert.tsx index cccf9c0082272a74279290e2d4cfcb462ff4ea9f..6ccad587ab37c4768281b3643f665289f37951bc 100644 --- a/src/feature/cookie-alert/CookieAlert.tsx +++ b/src/feature/cookie-alert/CookieAlert.tsx @@ -37,12 +37,12 @@ export const CookieAlert = () => {

- На Сайте используются файлы cookie и похожие технологии (в т.ч., пиксельные теги, + На Сайте используются файлы cookie и похожие технологии (в т. ч. пиксельные теги, веб-маяки, прозрачные файлы GIF, JavaScript и локальное хранение данных) для удобства Пользователей, обеспечения и повышения эффективности работы Сайта, а также для получения аналитической - информации. Далее в настоящем уведомлении файлы cookie и похожие технологии именуются - + информации. Далее в настоящем уведомлении файлы cookie и похожие технологии именуются файлы cookie.

@@ -54,14 +54,13 @@ export const CookieAlert = () => { необходимой информации о Пользователе.

- Администрация может использовать аналитические инструменты и соответствующие - cookie-файлы - следующих поставщиков услуг: + Администрация может использовать аналитические инструменты и
+ соответствующие cookie-файлы следующих поставщиков услуг:

Яндекс.Метрика: - Политика конфиденциальности Яндекс + Политика конфиденциальности Яндекса

@@ -72,7 +71,7 @@ export const CookieAlert = () => { или ограничение (блокирование) приема cookie-файлов может серьезно затруднить или сделать невозможной использование части функционала и инструментов Сайта. Продолжая использовать - Сайт, Пользователь соглашается с использованием файлов cookie. + Сайт, Пользователь соглашается с использованием cookie-файлов.

diff --git a/src/feature/prize-info/index.module.scss b/src/feature/prize-info/index.module.scss deleted file mode 100644 index 1df7e7e6c08715558727c1bcac6e98fb231f0b4a..0000000000000000000000000000000000000000 --- a/src/feature/prize-info/index.module.scss +++ /dev/null @@ -1,54 +0,0 @@ -.base { - - - @apply absolute; - @apply -right-2 bottom-36; - - - @media (min-width: 1024px) { - @apply -right-20 bottom-28; - } -} - -.in { - @apply w-full mx-auto; - max-width: 22rem; - @media (min-width: 1024px) { - max-width: 30rem; - } - - - img { - @apply w-full block; - } -} - -.name { - @apply text-white; - @apply relative pb-2.5 w-fit; - @apply -mb-5 ml-10; - font-family: "Caveat", sans-serif; - font-size: 1.75rem; - - &::before { - content: ""; - background-image: url("/media/prize/underline.png"); - background-position: left bottom; - background-size: contain; - background-repeat: no-repeat; - height: 1.125rem; - @apply left-0 right-0 bottom-0; - @apply w-full absolute; - } - - - @media (min-width: 1024px) { - font-size: 2.5rem; - @apply pb-4; - @apply -mb-7 ml-14; - &::before { - content: ""; - @apply h-7; - } - } -} \ No newline at end of file diff --git a/src/feature/prize-info/ui/PrizeInfo.tsx b/src/feature/prize-info/ui/PrizeInfo.tsx deleted file mode 100644 index f0a6830b2714c071553356549f3c2ac9844a3738..0000000000000000000000000000000000000000 --- a/src/feature/prize-info/ui/PrizeInfo.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import styles from "./../index.module.scss" -import clsx from "clsx"; - -export const PrizeInfo = () => { - return ( -
-
- блендер-соковыжималка -
-
- - - -
-
- ) -} \ No newline at end of file diff --git a/src/feature/prize-info/ui/index.ts b/src/feature/prize-info/ui/index.ts deleted file mode 100644 index 753cd02ec539200bff26a5e46be5711321e9851d..0000000000000000000000000000000000000000 --- a/src/feature/prize-info/ui/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./PrizeInfo" \ No newline at end of file diff --git a/src/feature/product-link/index.module.scss b/src/feature/product-link/index.module.scss index 6db326ef6a1bee393fcd6bc3117c1fdefbb2fdc4..5f3795b8fac3ad524934b5def3a967283497020a 100644 --- a/src/feature/product-link/index.module.scss +++ b/src/feature/product-link/index.module.scss @@ -1,28 +1,26 @@ .base { @apply relative; - @apply w-fit z-10; + @apply z-10; @apply flex flex-col; -} + @apply items-center w-full; -.in { - @apply inline-flex items-start gap-2; - transform-origin: right top; - @apply whitespace-nowrap; - &:nth-child(2) { - .link { - @apply ml-4 mt-2; - } + @media (min-width: 1024px) { + @apply w-fit; } +} - animation: upInDown 4s ease-in-out infinite; +.in { + @apply inline-flex items-start gap-2; + @apply whitespace-nowrap; + transform-origin: right top; + animation: upInDown 4s ease-in-out infinite; @media (min-width: 1024px) { - @apply gap-5; + @apply inline-flex gap-5; @apply w-fit; - &:nth-child(2) { .link { @apply ml-0 mt-0; @@ -33,8 +31,8 @@ } .arrow { - @apply w-9; - @apply lg:w-20; + @apply w-9 hidden; + @apply lg:w-20 lg:block; @media (min-width: 1024px) { transform: rotate(0) translateY(0); } @@ -43,7 +41,6 @@ @apply w-full block; } - &__last { transform: rotate(-30deg) translateY(-30%); @media (min-width: 1024px) { @@ -55,13 +52,12 @@ .link { @apply text-white; - @apply relative pb-px; - font-size: 1.125rem; + @apply relative pb-px px-2; + font-size: 1.8rem; @apply leading-normal; font-family: "Caveat", sans-serif; @media (min-width: 1024px) { font-size: 2.75rem; - //@apply pb-4; } &::before, @@ -87,14 +83,15 @@ .product { @apply w-full absolute; - max-width: 9rem; - @apply bottom-0 -right-32; + @apply lg:block; + max-width: 19rem; + @apply top-28 right-5; @media (min-width: 1024px) { - max-width: 19rem; - @apply bottom-0 left-full right-auto; + @apply bottom-0 left-full right-auto top-auto; } + img { @apply w-full block; } @@ -103,12 +100,12 @@ @keyframes upInDown { from { - transform: rotate(-3deg); + transform: rotate(-2deg); } 50% { - transform: rotate(2deg); + transform: rotate(1deg); } to { - transform: rotate(-3deg); + transform: rotate(-2deg); } } \ No newline at end of file diff --git a/src/feature/product-link/ui/ProductLink.tsx b/src/feature/product-link/ui/ProductLink.tsx index 9eac4d2822b75faa4e039c1d16cd3aa353fc68c5..03444bfd7bff12e03cba73e3aa17df728ba81b09 100644 --- a/src/feature/product-link/ui/ProductLink.tsx +++ b/src/feature/product-link/ui/ProductLink.tsx @@ -8,7 +8,7 @@ export const ProductLink = () => { Купить в Пятёрочке @@ -22,7 +22,7 @@ export const ProductLink = () => { Купить в Перекрёстке @@ -34,7 +34,8 @@ export const ProductLink = () => {
- + +
diff --git a/src/feature/upload-file/api/index.ts b/src/feature/upload-file/api/index.ts deleted file mode 100644 index 0cef1e1260e0e9740b3e91d1ad7e613d4f038d26..0000000000000000000000000000000000000000 --- a/src/feature/upload-file/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./useUploadFile" \ No newline at end of file diff --git a/src/feature/upload-file/api/useUploadFile.ts b/src/feature/upload-file/api/useUploadFile.ts deleted file mode 100644 index 27cd77d2b6bddef42ab7a6c8ef2289f28c6dcadc..0000000000000000000000000000000000000000 --- a/src/feature/upload-file/api/useUploadFile.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {useMutation} from "@tanstack/react-query"; -import {apiFile} from "@/entities/file"; -import {useModal} from "@/shared/store/modal-store"; - -export const useUploadFile = () => { - - const {onOpen} = useModal(); - - return useMutation({ - mutationFn: apiFile.postFile, - onError: async (error) => { - console.log(error?.message) - onOpen("error") - }, - onSuccess: async (data) => { - console.log(data?.message); - onOpen("success") - } - }) -} \ No newline at end of file diff --git a/src/feature/upload-file/index.ts b/src/feature/upload-file/index.ts deleted file mode 100644 index 86816149576802d570519dd3e4816efbdf8fa4b0..0000000000000000000000000000000000000000 --- a/src/feature/upload-file/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./ui" -export * from "./api" \ No newline at end of file diff --git a/src/feature/upload-file/ui/UploadFile.tsx b/src/feature/upload-file/ui/UploadFile.tsx deleted file mode 100644 index 949a4b4dd694ffb0abd9a3e272ec7249b9828529..0000000000000000000000000000000000000000 --- a/src/feature/upload-file/ui/UploadFile.tsx +++ /dev/null @@ -1,27 +0,0 @@ -'use client' -import {Button} from "@/shared/ui/Inputs/Button"; -import {useModal} from "@/shared/store/modal-store"; -import {useSession} from "next-auth/react"; - -export const UploadFile = () => { - - const {onOpen} = useModal(); - - const session = useSession(); - - const onClickButton = () => { - if (session?.status === "unauthenticated") { - onOpen("auth") - } - - if (session?.status === "authenticated") { - onOpen("upload") - } - }; - - return ( - - ) -}; \ No newline at end of file diff --git a/src/feature/upload-file/ui/index.ts b/src/feature/upload-file/ui/index.ts deleted file mode 100644 index f86f238bd25e6fafb3b0854f3ba217af41fb2987..0000000000000000000000000000000000000000 --- a/src/feature/upload-file/ui/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./UploadFile" \ No newline at end of file diff --git a/src/feature/video-trigger/index.module.scss b/src/feature/video-trigger/index.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..8c2661ed93acbf2ea053de3fc8e3d99827301707 --- /dev/null +++ b/src/feature/video-trigger/index.module.scss @@ -0,0 +1,95 @@ +.base { + @apply absolute; + @apply z-10; + @apply w-full; + + + max-width: 14.375rem; + + border-radius: 0 500px 500px 0; + + + background: linear-gradient(258.91deg, #FF3D6C 31.4%, #E30512 87.92%); + box-shadow: 3.59px 3.59px 17.97px 0px #D11A5F66; + + + @apply flex items-center flex-row-reverse; + @apply left-0 gap-3 p-2 bottom-32; + + @media (min-width: 1024px) { + height: 35.75rem; + max-width: 17.5rem; + + @apply bottom-0; + + border-radius: 33rem; + @apply translate-y-1/4 left-32; + @apply p-5; + + @apply flex-col gap-5; + + background: linear-gradient(306.11deg, #FF3D6C 29.49%, #E30512 73.03%); + box-shadow: 9.49px 9.49px 47.46px 0px #D11A5F66; + + } +} + +.circle { + @apply relative; + @apply rounded-full border-2; + @apply border-white overflow-hidden; + + height: 5.625rem; + aspect-ratio: 1/1; + + + @media (min-width: 1024px) { + @apply border-4; + @apply w-full h-auto; + aspect-ratio: 1/1; + } + + img { + @apply w-full h-full object-cover block; + } +} + +.play { + @apply absolute z-10 cursor-pointer; + transition: .4s all ease; + + @apply left-1/2 top-1/2; + + will-change: transform; + + transform: translate(-50%, -50%) scale(0.5); + + @apply w-7; + + @media (min-width: 1024px) { + width: 4.74rem; + @media (hover: hover) { + &:hover { + transform: translate(-50%, -50%) scale(1); + } + } + } + + + &:active { + transform: translate(-50%, -50%) scale(.95); + } + + img { + @apply w-full block; + } +} + + +.label { + @apply text-white font-medium; + font-size: .75rem; + @media (min-width: 1024px) { + @apply text-left text-2xl leading-tight; + } +} \ No newline at end of file diff --git a/src/feature/prize-info/index.ts b/src/feature/video-trigger/index.ts similarity index 100% rename from src/feature/prize-info/index.ts rename to src/feature/video-trigger/index.ts diff --git a/src/feature/video-trigger/ui/VideoTrigger.tsx b/src/feature/video-trigger/ui/VideoTrigger.tsx new file mode 100644 index 0000000000000000000000000000000000000000..99244b386b3ace5c7fba864b5488be2503b5c91d --- /dev/null +++ b/src/feature/video-trigger/ui/VideoTrigger.tsx @@ -0,0 +1,35 @@ +'use client' +import styles from "./../index.module.scss" +import clsx from "clsx"; +import {useModal} from "@/shared/store/modal-store"; + +export const VideoTrigger = () => { + + const {onOpen} = useModal(); + + return ( +
+
+
onOpen?.("video")} className={clsx(styles.play)}> + +
+ + + +
+
onOpen?.("video")} className={clsx(styles.circle, "lg:hidden")}> +
+ +
+ + + +
+
+ Смотрите, как
+ мы проводим
+ моменты вместе! +
+
+ ) +}; \ No newline at end of file diff --git a/src/feature/video-trigger/ui/index.ts b/src/feature/video-trigger/ui/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..69b1daa7889ef78e1c4c53492745cfc055a83360 --- /dev/null +++ b/src/feature/video-trigger/ui/index.ts @@ -0,0 +1 @@ +export * from "./VideoTrigger" \ No newline at end of file diff --git a/src/shared/api/get-query-client.ts b/src/shared/api/get-query-client.ts deleted file mode 100644 index 3b89fbac37eb55d9c3c8856db7a6a50708689d84..0000000000000000000000000000000000000000 --- a/src/shared/api/get-query-client.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { - QueryClient, - defaultShouldDehydrateQuery, - isServer, -} from '@tanstack/react-query' - -function makeQueryClient() { - return new QueryClient({ - defaultOptions: { - queries: { - staleTime: 30 * 1000, - }, - dehydrate: { - // include pending queries in dehydration - shouldDehydrateQuery: (query) => - defaultShouldDehydrateQuery(query) || - query.state.status === 'pending', - }, - }, - }) -} - -let browserQueryClient: QueryClient | undefined = undefined - -export function getQueryClient() { - if (isServer) { - // Server: always make a new query client - return makeQueryClient() - } else { - // Browser: make a new query client if we don't already have one - // This is very important, so we don't re-make a new client if React - // suspends during the initial render. This may not be needed if we - // have a suspense boundary BELOW the creation of the query client - if (!browserQueryClient) browserQueryClient = makeQueryClient() - return browserQueryClient - } -} \ No newline at end of file diff --git a/src/shared/api/model/auth/auth.ts b/src/shared/api/model/auth/auth.ts deleted file mode 100644 index d19da00b020958042bdb695acf9566a6e5a711bd..0000000000000000000000000000000000000000 --- a/src/shared/api/model/auth/auth.ts +++ /dev/null @@ -1,5 +0,0 @@ -import NextAuth from "next-auth"; -import {authOptions} from "@/shared/api/model"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-expect-error -export const {handlers, signIn, signOut, auth} = NextAuth(authOptions) \ No newline at end of file diff --git a/src/shared/api/model/auth/authOptions.ts b/src/shared/api/model/auth/authOptions.ts deleted file mode 100644 index 5d791deb3bb9e4e992fb087525d857da0b3ee9ac..0000000000000000000000000000000000000000 --- a/src/shared/api/model/auth/authOptions.ts +++ /dev/null @@ -1,70 +0,0 @@ -import Credentials from "next-auth/providers/credentials"; - -export const authOptions = { - providers: [ - Credentials({ - name: "credentials", - credentials: { - full_name: {label: "full_name", type: "text"}, - phone_email: {label: "phone_email", type: "text"}, - }, - authorize: async (credentials) => { - if (!credentials) return null; - - const res = await fetch(process.env.DB_HOST + `/register/ `, { - method: "POST", - body: JSON.stringify({ - full_name: credentials?.full_name, - phone_email: credentials?.phone_email - }), - headers: {"Content-Type": "application/json"}, - }); - if (!res?.ok) { - return null; - } - - const user = await res.json(); - - if (!user?.access) { - return null; - } - - return user; - }, - }), - ], - session: { - maxAge: 60 * 60 * 4, - strategy: "jwt", - }, - secret: process.env.AUTH_SECRET, - callbacks: { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - authorized({auth}) { - const isAuthenticated = !!auth?.user; - return isAuthenticated; - }, - // Колбэк для JWT токенов - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - async jwt({token, user}) { - // Если это начальная авторизация, добавляем токен из API в токен сессии - if (user) { - token.accessToken = user?.access; - } - return token; - }, - - // Колбэк для сессий - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - async session({session, token}) { - // Добавляем accessToken в сессию - if (token) { - session.accessToken = token.accessToken; - } - return session; - }, - }, -}; \ No newline at end of file diff --git a/src/shared/api/model/index.ts b/src/shared/api/model/index.ts deleted file mode 100644 index f5e11c103af9d7039d7bf78cdd10a59bd6998798..0000000000000000000000000000000000000000 --- a/src/shared/api/model/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./auth/authOptions" \ No newline at end of file diff --git a/src/shared/config/consts.ts b/src/shared/config/consts.ts index ff3e85af59cf5842ab1fc1786a60f27cbdf70193..d48f2c3aa01ec70b8d1900e9704cca25d2c888e2 100644 --- a/src/shared/config/consts.ts +++ b/src/shared/config/consts.ts @@ -1,14 +1,18 @@ export const errorMessages: Record = { - 400: "Ошибка запроса (400 Bad Request). Проверьте введенные данные.", - 401: "Ошибка авторизации (401 Unauthorized). Войдите в систему.", - 403: "Доступ запрещен (403 Forbidden).", - 404: "Ресурс не найден (404 Not Found).", - 413: "Ошибка: Загружаемый файл слишком большой (413 Payload Too Large).", - 429: "Слишком много запросов (429 Too Many Requests). Попробуйте позже.", - 500: "Внутренняя ошибка сервера (500 Internal Server Error).", - 502: "Проблема с сервером (502 Bad Gateway).", - 503: "Сервер временно недоступен (503 Service Unavailable).", - 504: "Сервер не отвечает (504 Gateway Timeout).", + 400: "Ошибка запроса (400 Bad Request). Проверьте введенные данные.", + 401: "Ошибка авторизации (401 Unauthorized). Войдите в систему.", + 403: "Доступ запрещен (403 Forbidden).", + 404: "Ресурс не найден (404 Not Found).", + 413: "Ошибка: Загружаемый файл слишком большой (413 Payload Too Large).", + 429: "Слишком много запросов (429 Too Many Requests). Попробуйте позже.", + 500: "Внутренняя ошибка сервера (500 Internal Server Error).", + 502: "Проблема с сервером (502 Bad Gateway).", + 503: "Сервер временно недоступен (503 Service Unavailable).", + 504: "Сервер не отвечает (504 Gateway Timeout).", }; -export const MAX_FILE_SIZE_MB = 10 * 1024 * 1024; \ No newline at end of file +export const MAX_FILE_SIZE_MB = 10 * 1024 * 1024; + +export const ERID_CODE = "2VtzqxMTjhn"; + +export const INN_CODE = "5017051394"; diff --git a/src/shared/config/paths.ts b/src/shared/config/paths.ts index a21118c32a125bce3747b05c05b116ac5f2af005..d1d3b18e1088807b64a5e93f8be511fbf69f2f7a 100644 --- a/src/shared/config/paths.ts +++ b/src/shared/config/paths.ts @@ -1,5 +1,5 @@ export const paths = { HOME: '/', ABOUT: '/about', - FAQ: '/faq' + //FAQ: '/faq' }; \ No newline at end of file diff --git a/src/shared/store/modal-store.ts b/src/shared/store/modal-store.ts index d95aca83905e8624f19e7c87ffdcf25b00313610..55d98905ce9961fa29146133103c9ef8a846dc1b 100644 --- a/src/shared/store/modal-store.ts +++ b/src/shared/store/modal-store.ts @@ -9,7 +9,7 @@ interface ModalStoreType { } export type ModalType = string | "auth" | "upload" | "success" | "error" | "cookies" - | "quiz" | "auth-error" | "preview" + | "quiz" | "auth-error" | "preview" | "video" export const useModal = create((set) => ({ diff --git a/src/shared/ui/DataDisplay/Card/index.module.scss b/src/shared/ui/DataDisplay/Card/index.module.scss index 3efc49c35cd6a325ccccb25004270e4baf14aa6f..2f373d1a36e81fd47e261fb3cb999fb48d16ebee 100644 --- a/src/shared/ui/DataDisplay/Card/index.module.scss +++ b/src/shared/ui/DataDisplay/Card/index.module.scss @@ -1,14 +1,12 @@ .base { perspective: 1200px; - max-width: 12rem; + max-width: 11rem; @media (min-width: 1024px) { - max-width: 22.5rem; + max-width: 22rem; } } - .sm { - &.base { max-width: 11rem; @media (min-width: 1024px) { @@ -16,7 +14,6 @@ } } - .container { min-height: 16.375rem; border-radius: 1.125rem; @@ -54,21 +51,21 @@ } .in { - @apply flex flex-col gap-1; + @apply flex flex-col gap-2; + @apply lg:gap-1; } - .container { @apply relative; box-shadow: 3.51px 3.51px 27.18px 0 #00000040; @apply bg-white w-full font-medium; - min-height: 16.8rem; + min-height: 16.25rem; border-radius: 1.125rem; @media (min-width: 1024px) { border-radius: 2.25rem; - min-height: 34rem; + min-height: 32.75rem; @apply p-5; } @@ -76,7 +73,6 @@ transition: transform 0.6s ease-in-out; } - .flipped { transform: rotateY(-180deg); transition-delay: 0s; @@ -89,7 +85,7 @@ height: 10.75rem; @media (min-width: 1024px) { @apply rounded-3xl; - height: 20.85rem; + height: 21.9rem; } img { @@ -98,7 +94,6 @@ } } - .star { @apply absolute z-20; @apply right-0 top-0; @@ -118,7 +113,7 @@ } .body { - @apply flex flex-col gap-2; + @apply flex flex-col gap-1.5; @media (min-width: 1024px) { @apply gap-3; } @@ -127,10 +122,10 @@ .label { @apply relative; @apply text-center text-danger; - font-size: 0.7rem; + font-size: 0.65rem; @apply leading-none whitespace-pre-line; @apply py-1.5; - @apply font-medium; + @apply font-bold; &::before { content: ""; @apply absolute; @@ -142,7 +137,7 @@ @media (min-width: 1024px) { @apply py-3; line-height: 1.1 !important; - font-size: 1.6rem; + font-size: 1.3rem; &::before { @apply h-0.5; } @@ -153,7 +148,7 @@ @apply text-center text-danger; @apply leading-none whitespace-pre-line; - font-size: 0.6rem; + font-size: 0.5rem; ul { list-style-type: disc; @@ -162,8 +157,8 @@ } @media (min-width: 1024px) { - font-size: 1.2rem; - line-height: 1; + font-size: 1rem; + line-height: 1.1; ul { @apply pl-6 my-2; @@ -177,9 +172,9 @@ @apply left-0 top-0; @apply h-full w-full; @apply overflow-hidden; - background: linear-gradient(169.8deg, #C4EB6B 2.13%, #8ECF02 123.83%); - background-size: 100%; + background: linear-gradient(169.8deg, #c4eb6b 2.13%, #8ecf02 123.83%); + background-size: 100%; &::before { content: ""; @@ -190,7 +185,7 @@ height: 100%; pointer-events: none; background: url("/media/cards/frame-closed.png"); - background-size: 100%; + background-size: cover; background-blend-mode: color; } @@ -208,8 +203,6 @@ } .front { - - @apply cursor-pointer; border-radius: 1.125rem; @apply absolute overflow-hidden; @apply left-0 top-0 w-full h-full; @@ -217,7 +210,6 @@ border-radius: 2.25rem; } - &__in { @apply p-2.5; @media (min-width: 1024px) { @@ -239,14 +231,11 @@ max-width: 5rem; - @media (min-width: 1024px) { max-width: 10rem; } - img { @apply w-full block; } } - diff --git a/src/shared/ui/DataDisplay/Card/model/types.ts b/src/shared/ui/DataDisplay/Card/model/types.ts index c4602e4bbccf966f83ca6d430a96c885fab97f5a..538898a16deff2bedf02b4c26d2734e5f3f371bb 100644 --- a/src/shared/ui/DataDisplay/Card/model/types.ts +++ b/src/shared/ui/DataDisplay/Card/model/types.ts @@ -7,4 +7,6 @@ export interface CardProps extends HTMLAttributes{ text?: string isStar?: boolean size?: "sm" | "lg" + isBadge?: boolean + isPointer?: boolean } \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Card/ui/Card.tsx b/src/shared/ui/DataDisplay/Card/ui/Card.tsx index 0dccf4bf56b1e2d434845f6a5509a48125a0303d..7992219f71aa5ab3734e255e056d8ac1e55c2f55 100644 --- a/src/shared/ui/DataDisplay/Card/ui/Card.tsx +++ b/src/shared/ui/DataDisplay/Card/ui/Card.tsx @@ -14,6 +14,8 @@ export const Card = (props: CardProps) => { text, size, isStar = false, + isBadge = false, + isPointer = false, ...rest } = props; @@ -26,9 +28,11 @@ export const Card = (props: CardProps) => {
-
+
{ - !isStar &&
+ isBadge &&
diff --git a/src/shared/ui/DataDisplay/Spinner/index.module.scss b/src/shared/ui/DataDisplay/Spinner/index.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..ba399e6cc298f37cd4f703e71f77b1948eda3194 --- /dev/null +++ b/src/shared/ui/DataDisplay/Spinner/index.module.scss @@ -0,0 +1,10 @@ +.base { + width: 3.375rem; + height: 3.375rem; + @apply lg:w-28 h-28; + + svg { + @apply w-full h-full; + @apply inline animate-spin fill-[#8ECF02]; + } +} \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/index.ts b/src/shared/ui/DataDisplay/Spinner/index.ts similarity index 100% rename from src/shared/ui/DataDisplay/Step/index.ts rename to src/shared/ui/DataDisplay/Spinner/index.ts diff --git a/src/shared/ui/DataDisplay/Spinner/ui/Spinner.tsx b/src/shared/ui/DataDisplay/Spinner/ui/Spinner.tsx new file mode 100644 index 0000000000000000000000000000000000000000..29b778661636530f1bb4da53a1a667c513af5356 --- /dev/null +++ b/src/shared/ui/DataDisplay/Spinner/ui/Spinner.tsx @@ -0,0 +1,21 @@ +import styles from "./../index.module.scss" +import clsx from "clsx"; + +export const Spinner = () => { + return ( +
+ +
+ ) +} \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Spinner/ui/index.ts b/src/shared/ui/DataDisplay/Spinner/ui/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..d56b6b3df9573536ea97f73757e4f3bfc2e75fd0 --- /dev/null +++ b/src/shared/ui/DataDisplay/Spinner/ui/index.ts @@ -0,0 +1 @@ +export * from "./Spinner" \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/index.module.scss b/src/shared/ui/DataDisplay/Step/index.module.scss deleted file mode 100644 index d8aaba19f263db9990d3b50aa6e2084eee913ff1..0000000000000000000000000000000000000000 --- a/src/shared/ui/DataDisplay/Step/index.module.scss +++ /dev/null @@ -1,49 +0,0 @@ -.base { - @apply relative w-full bg-white; - box-shadow: 3px 3px 0px 0px #FDCE0E; - - @apply flex flex-col justify-center; - - max-width: 10.25rem; - @apply p-3; - @apply rounded-xl; - - @media (min-width: 1024px) { - box-shadow: 7px 7px 0 0 #FDCE0E; - max-width: 23.125rem; - @apply p-6; - border-radius: 1.875rem; - height: 12rem; - } -} - -.badge { - background: linear-gradient(99.59deg, #FF3D6C 34.52%, #E30512 86.33%); - @apply text-white text-center uppercase; - @apply max-w-fit mx-auto font-bold; - border-radius: 500px; - @apply relative; - - font-size: 0.625rem; - height: 1.125rem; - line-height: 2; - @apply px-2.5; - - @media (min-width: 1024px) { - @apply text-xl h-10 px-6; - line-height: 2.2; - } - -} - -.body { - color: #FF3D6C; - @apply mt-1.5 text-center leading-none; - @apply font-medium; - font-size: 0.625rem; - line-height: 1.2; - @media (min-width: 1024px) { - font-size: 1.375rem; - @apply mt-4; - } -} \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/model/index.ts b/src/shared/ui/DataDisplay/Step/model/index.ts deleted file mode 100644 index a58d5755e7d4b8bacbfff2f88136a5045bcac2dc..0000000000000000000000000000000000000000 --- a/src/shared/ui/DataDisplay/Step/model/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./types" \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/model/types.ts b/src/shared/ui/DataDisplay/Step/model/types.ts deleted file mode 100644 index d319ead812b6ce31883d779dccb227914f0225e0..0000000000000000000000000000000000000000 --- a/src/shared/ui/DataDisplay/Step/model/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -import {HTMLAttributes} from "react"; - -export interface StepProps extends HTMLAttributes{ - number: number - -} \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/ui/Step.tsx b/src/shared/ui/DataDisplay/Step/ui/Step.tsx deleted file mode 100644 index 84e4c77d5f24eabdc928af1ebb41bf11f7c35d87..0000000000000000000000000000000000000000 --- a/src/shared/ui/DataDisplay/Step/ui/Step.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import styles from "./../index.module.scss" -import clsx from "clsx"; -import {StepProps} from "./../model"; -import {PropsWithChildren} from "react"; - -export const Step = (props: PropsWithChildren) => { - - const { - className, - children, - number, - ...rest - } = props; - - return ( -
-
- ШАГ {number} -
-
- {children} -
-
- ) -} \ No newline at end of file diff --git a/src/shared/ui/DataDisplay/Step/ui/index.ts b/src/shared/ui/DataDisplay/Step/ui/index.ts deleted file mode 100644 index 68647eeb9e72cfd731533ab9e7597bd8f776d873..0000000000000000000000000000000000000000 --- a/src/shared/ui/DataDisplay/Step/ui/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Step" \ No newline at end of file diff --git a/src/shared/ui/Navigation/NavBar/ui/Menu.tsx b/src/shared/ui/Navigation/NavBar/ui/Menu.tsx index 242421b2f228ec6c644306536cb8850d36248126..315ed2e3e10ead293586dfad64d6043d6cc860b3 100644 --- a/src/shared/ui/Navigation/NavBar/ui/Menu.tsx +++ b/src/shared/ui/Navigation/NavBar/ui/Menu.tsx @@ -4,7 +4,7 @@ import clsx from "clsx"; import {Fragment, PropsWithChildren, useEffect} from "react"; import {useMenu} from "@/shared/ui/Navigation/NavBar/model"; import {usePathname} from "next/navigation"; -import {paths} from "@/shared/config"; + export const Menu = (props: PropsWithChildren) => { @@ -23,11 +23,7 @@ export const Menu = (props: PropsWithChildren) => { { isOpen &&
setIsOpen(false)} className={clsx(styles.overlay)}/> -
+
    {children}
@@ -35,5 +31,6 @@ export const Menu = (props: PropsWithChildren) => {
} + ) } \ No newline at end of file diff --git a/src/shared/ui/Navigation/NavBar/ui/index.module.scss b/src/shared/ui/Navigation/NavBar/ui/index.module.scss index 8fcb797fe627c39b8d2be2837612dcde4ee49666..daea844b76432846313360fd710955c601690999 100644 --- a/src/shared/ui/Navigation/NavBar/ui/index.module.scss +++ b/src/shared/ui/Navigation/NavBar/ui/index.module.scss @@ -4,7 +4,7 @@ .in { @apply flex items-center justify-between; - @apply py-3; + @apply py-2; height: var(--h-menu); @media (min-width: 1024px) { @@ -13,7 +13,7 @@ } .content { - @apply flex items-center gap-10; + @apply flex items-center gap-8; @apply list-none; } @@ -87,39 +87,17 @@ color: #04602C; - } -} - -.is-home { - background-image: url("/media/menu/s.png"), - url("/media/menu/b.png"), - url("/media/menu/l.png"); - background-size: 20%, 16%, 42%; - background-position: right 8%, left 94%, right bottom; - - background-repeat: no-repeat; -} + background-image: url("/media/menu/m.png"), + url("/media/menu/s.png"), + url("/media/menu/j.png"); + background-size: 16%, 20%, 25%; + background-position: left 80%, right 10%, 85% 95%; + background-repeat: no-repeat; -.is-about { - background-image: url("/media/menu/m.png"), - url("/media/menu/s.png"), - url("/media/menu/o.png"); - background-size: 16%, 20%, 70%; - background-position: left 25%, right center, -50% 130%; - - background-repeat: no-repeat; -} - -.is-faq { - background-image: url("/media/menu/s.png"), - url("/media/menu/b.png"), - url("/media/menu/o.png"); - background-size: 20%, 16%, 60%; - background-position: right 10%, left 90%, 142% 120%; + } - background-repeat: no-repeat; } .overlay { diff --git a/src/views/about/ui/Content/Content.tsx b/src/views/about/ui/Content/Content.tsx index f474a89bf2623eb407969f0fdbd7d7e4b1c8d8d6..0476f7a3d58918d14cf82bfa6fee9851a674b357 100644 --- a/src/views/about/ui/Content/Content.tsx +++ b/src/views/about/ui/Content/Content.tsx @@ -29,7 +29,7 @@ export const Content = () => { Мы верим, что сладости должны быть
- не только
вкусными и яркими. Именно
вкусными, но и яркими. Именно
поэтому наши
жевательные конфеты
@@ -45,7 +45,7 @@ export const Content = () => { В нашей новинке — фигурном жевательном
- мармеладе Fruittella со вкусом клубники
+ мармеладе Fruittella со вкусом клубники
и малины —
содержится фруктовое пюре.
@@ -60,10 +60,11 @@ export const Content = () => { Мы внимательно подходим к составу
и не используем
искусственные красители
- и ароматизаторы. При этом
каждая пачка
- мармеладок или жевательных конфет
- содержит море оттенков и форм для вашего
+ и ароматизаторы. + + + При этом каждая пачка мармеладок или жевательных конфет + содержит море оттенков и форм для вашего
настроения.
@@ -81,7 +82,7 @@ export const Content = () => { У жевательных конфет и мармелада
- Fruittella —
удобный формат упаковки,
удобный формат упаковки,
которую легко брать
с собой: будь
diff --git a/src/views/about/ui/index.module.scss b/src/views/about/ui/index.module.scss index 8335ce9eea819fe97372fa0fa1d1fb8aefce051f..e3ec326289c16278f1beb9d42c09dabb2c880f36 100644 --- a/src/views/about/ui/index.module.scss +++ b/src/views/about/ui/index.module.scss @@ -19,16 +19,18 @@ background-image: url("/media/about/b-f-sm.png"), url("/media/about/b-r-sm.png"); - background-size: 100%, 31.5%; - background-position: bottom, calc(100% - .5rem) 1rem; + background-size: 100%, 32%; + background-position: bottom, calc(100% - .5rem) 1.25rem; background-repeat: no-repeat, no-repeat; @media (min-width: 1024px) { + @apply top-0; background-image: + url("/media/layout/top-slime.png"), url("/media/about/b-l-lg.png"), url("/media/about/b-r-lg.png"), url("/media/about/b-f-lg.png"); - background-position: left 16%, right top, right calc(100% + 2rem); - background-size: 52%, 54%, 100%; + background-position: right top, left 24%, right top, right calc(100% + 1rem); + background-size: 77rem, 52%, 54%, 100%; background-repeat: no-repeat, no-repeat, no-repeat; } @@ -50,7 +52,7 @@ .subtitle { font-size: 1.625rem; @apply font-medium; - color: #B6E353; + color: #038947; line-height: 1.1; @media (min-width: 1024px) { @apply text-4xl; @@ -80,8 +82,5 @@ } .footer { - min-height: 26rem; - @media (min-width: 1024px) { - min-height: 30rem; - } + min-height: 32rem; } \ No newline at end of file diff --git a/src/views/about/ui/page.tsx b/src/views/about/ui/page.tsx index ae6668cd0011416fb15d2f1d6796e043d1ca12a7..3f92c682935355b74edb4442ddbfc343aae7bac9 100644 --- a/src/views/about/ui/page.tsx +++ b/src/views/about/ui/page.tsx @@ -1,19 +1,17 @@ -import {Content} from "@/views/about/ui/Content"; -import {PageLayout} from "@/widgets/page-layout"; -import {Fragment} from "react"; +import { Content } from "@/views/about/ui/Content"; +import { PageLayout } from "@/widgets/page-layout"; +import { Fragment } from "react"; import clsx from "clsx"; -import styles from "./index.module.scss" +import styles from "./index.module.scss"; export default async function About() { - return ( - -
- - - - - - ) -} \ No newline at end of file + return ( + +
+ + + + + + ); +} diff --git a/src/views/faq/index.module.scss b/src/views/faq/index.module.scss deleted file mode 100644 index 559d6eec4f60ed4e318414878f5e55a5a32bdf8e..0000000000000000000000000000000000000000 --- a/src/views/faq/index.module.scss +++ /dev/null @@ -1,67 +0,0 @@ -.base { - @apply relative; -} - -.bg { - @apply absolute inset-0 pointer-events-none; - @apply z-0; - background-image: url("/media/faq/b-f-sm.png"), url("/media/faq/b-r-sm.png"); - background-size: 100%, 10%; - background-repeat: no-repeat, no-repeat; - background-position: bottom, 90% 30%; - @media (min-width: 1024px) { - background-image: url("/media/faq/b-f-lg.png"); - background-position: right calc(100% + 2rem); - background-repeat: no-repeat; - } -} - -.in { - max-width: 744px; - @apply w-full; - @media (min-width: 1024px) { - max-width: 36rem - } -} - -.items { - @apply flex flex-col gap-5; - @media (min-width: 1024px) { - @apply gap-8; - } -} - -.item { - @apply space-y-2; - - @media (min-width: 1024px) { - @apply space-y-3; - } -} - -.subtitle { - line-height: 1.2; - color: #B6E353; - @apply font-normal; - font-size: 1.125rem; - @media (min-width: 1024px) { - font-size: 1.9rem; - } -} - -.text { - @apply text-sm text-white font-normal; - @apply whitespace-pre-line; - - @media (min-width: 1024px) { - @apply text-xl; - } -} - - -.footer { - min-height: 13rem; - @media (min-width: 1024px) { - min-height: 16rem; - } -} \ No newline at end of file diff --git a/src/views/faq/index.ts b/src/views/faq/index.ts deleted file mode 100644 index 420c9d2c0a229d13e16f406c4ce3d7cd4a5f8722..0000000000000000000000000000000000000000 --- a/src/views/faq/index.ts +++ /dev/null @@ -1 +0,0 @@ -export {default} from "./ui" \ No newline at end of file diff --git a/src/views/faq/ui/Content/Content.tsx b/src/views/faq/ui/Content/Content.tsx deleted file mode 100644 index aead9eb854b7b48894a1d14b51d7df69f08f2f8e..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Content/Content.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import styles from "@/views/faq/index.module.scss" -import clsx from "clsx"; -import {Subtitle} from "@/views/faq/ui/Subtitle"; -import {Text} from "@/views/faq/ui/Text"; - -export const Content = () => { - - return ( -
-
-
-
-
- - Когда станет известен победитель? - - - Победитель конкурса будет определён
- не позднее
31 марта 2025 года. В период
- с 31 марта по 7 апреля
будут осуществлены
- информирование победителя
и передача
- ему приза. -
-
- -
- - Мою конкурсную работу
- отклонили, что делать? -
- - Убедитесь, что ваша конкурсная работа
- в хорошем
качестве, в полном объёме
- отражает суть конкурсного
задания
- и не нарушает Правила проведения
- конкурса.
Ознакомиться с правилами
- можно в разделе меню
«Правила». -
-
- -
- - Остались вопросы? - - - Спрашивайте об участии в конкурсе
- от Fruittella
через почту
- fruit.moments2025@yahoo.com -
-
-
-
-
-
- ) -}; \ No newline at end of file diff --git a/src/views/faq/ui/Content/index.ts b/src/views/faq/ui/Content/index.ts deleted file mode 100644 index d041b19b597e1906b6b46eebb2043b1e2ef8f92b..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Content/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Content" \ No newline at end of file diff --git a/src/views/faq/ui/Subtitle/Subtitle.tsx b/src/views/faq/ui/Subtitle/Subtitle.tsx deleted file mode 100644 index fe7808f4425609a65cc632cb1e66f73a0350c69c..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Subtitle/Subtitle.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import {PropsWithChildren} from "react"; -import styles from "@/views/faq/index.module.scss" -import clsx from "clsx"; - -export const Subtitle = (props: PropsWithChildren) => { - return ( -

- {props.children} -

- ) -}; \ No newline at end of file diff --git a/src/views/faq/ui/Subtitle/index.ts b/src/views/faq/ui/Subtitle/index.ts deleted file mode 100644 index 8d73a1563830cf07e628303a53128ad74400f6d8..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Subtitle/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Subtitle" \ No newline at end of file diff --git a/src/views/faq/ui/Text/Text.tsx b/src/views/faq/ui/Text/Text.tsx deleted file mode 100644 index 7ebd195b8867fed27622a28a2cfd4f6ff06f330b..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Text/Text.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import {PropsWithChildren} from "react"; -import styles from "@/views/faq/index.module.scss" -import clsx from "clsx"; - -export const Text = (props: PropsWithChildren) => { - return ( -

- {props.children} -

- ) -}; \ No newline at end of file diff --git a/src/views/faq/ui/Text/index.ts b/src/views/faq/ui/Text/index.ts deleted file mode 100644 index a379e13a9275994fcea91444d24c258a872694d8..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/Text/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Text" \ No newline at end of file diff --git a/src/views/faq/ui/index.ts b/src/views/faq/ui/index.ts deleted file mode 100644 index 0338610bbcb8318e65224b6e1e5b5fdf91bb7b9b..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/index.ts +++ /dev/null @@ -1 +0,0 @@ -export {default} from "./page" \ No newline at end of file diff --git a/src/views/faq/ui/page.tsx b/src/views/faq/ui/page.tsx deleted file mode 100644 index 6c16160486bcabd8a20548cd76e0569adce2a660..0000000000000000000000000000000000000000 --- a/src/views/faq/ui/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import {Content} from "@/views/faq/ui/Content"; -import {PageLayout} from "@/widgets/page-layout"; -import clsx from "clsx"; -import styles from "@/views/faq/index.module.scss" -import {Fragment} from "react"; - -export default async function Faq() { - return ( - -
- - - - - - ) -} \ No newline at end of file diff --git a/src/views/home/index.module.scss b/src/views/home/index.module.scss index 4cf6a7776d136fd0b62f9b2a97ead102220ed680..7eb9f1d3db9f1d4e33fcd2ae9204ff3625f3e09e 100644 --- a/src/views/home/index.module.scss +++ b/src/views/home/index.module.scss @@ -1,22 +1,32 @@ .base { - @apply relative; - + @apply relative flex flex-col; + @apply flex-grow overflow-hidden; + margin-top: calc(var(--h-menu) * -1); + padding-top: calc(1rem + var(--h-menu)); + padding-bottom: 32rem; + @media (min-width: 1024px) { + //padding-top: calc(8.25rem + var(--h-menu)); + padding-top: calc(6rem + var(--h-menu)); + min-height: 67rem; + @apply pb-0; + } } .bg { - background-image: url("/media/home/h-sm.png"), url("/media/home/b-sm.png"); - background-position: left 6%, left 77%; background-size: 100%, 100%; - background-repeat: no-repeat, no-repeat; + background-repeat: no-repeat; + background-position: left 16%, left bottom; + @apply absolute pointer-events-none; + @apply left-0 right-0 bottom-0 top-0 z-0; @media (min-width: 1024px) { - background-image: url("/media/home/h-lg.png"), url("/media/home/b-lg.png"), url("/media/home/f-lg.png"); - background-position: left top, center 32rem, center calc(100% - 14rem); - background-size: 96%, 100%, 92%; + background-image: url("/media/home/h-lg.png"), url("/media/home/f-lg.png"); + background-size: 100%; + background-position: left top, left bottom; background-repeat: no-repeat; } } \ No newline at end of file diff --git a/src/views/home/layout/Body/Body.tsx b/src/views/home/layout/Body/Body.tsx deleted file mode 100644 index acb73699341995bad944f6622e183985c9bbff64..0000000000000000000000000000000000000000 --- a/src/views/home/layout/Body/Body.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import {Step} from "@/shared/ui/DataDisplay/Step"; -import clsx from "clsx"; -import styles from "./index.module.scss" -import {Card} from "@/shared/ui/DataDisplay/Card"; -import {UploadFile} from "@/feature/upload-file"; -import {ElementView} from "@/feature/element-view"; - -export const Body = () => { - return ( - -
-
-
-
- - Участвуйте в конкурсе! - -
-
- - Нарисуйте с ребёнком рисунок на тему, как - мы проводим время всей семьёй - - - Загрузите фото -
- с рисунком -
- - Получите шанс выиграть
- - блендер-соковыжималку - -
-
-
- -
-
-
-
-
- ) -}; \ No newline at end of file diff --git a/src/views/home/layout/Body/index.module.scss b/src/views/home/layout/Body/index.module.scss deleted file mode 100644 index b5e9fa45f3f38770d5f0c64579e500d1c2000920..0000000000000000000000000000000000000000 --- a/src/views/home/layout/Body/index.module.scss +++ /dev/null @@ -1,145 +0,0 @@ -.base { - @apply relative; - - @apply mt-12; - - @media (min-width: 1024px) { - //background-image: url("/media/home/b-lg.png"); - //background-size: 100%; - //@apply bg-no-repeat; - margin-top: 22rem; - } -} - - -.in { - @apply relative; - @media (min-width: 1024px) { - @apply flex justify-between items-start; - @apply flex-wrap; - padding-left: 5.75rem; - padding-right: 2.625rem; - @apply gap-2; - } -} - -.card-container { - - - & > * { - @apply mx-auto; - } - - @media (min-width: 1024px) { - @apply flex-grow; - - & > * { - @apply ml-0; - } - } -} - - -.steps { - - @apply mt-12; - - @apply relative; - @apply w-full flex flex-col; - @apply gap-5 px-5; - @media (min-width: 1024px) { - max-width: 59.75rem; - @apply flex-row mt-0; - @apply flex-wrap px-0; - @apply justify-between gap-15; - & > :nth-child(2) { - order: 3; - @apply mx-auto; - } - } -} - - -.step { - - @apply relative; - - &::before, - &::after{ - content: ""; - @apply absolute; - @apply pointer-events-none; - @apply bg-no-repeat bg-contain; - @apply w-full; - } - - &-1 { - &::before { - background-image: url("/media/step/arrow-1.png"); - background-position: center; - @apply left-full top-2 ml-6; - max-width: 6rem; - height: 6rem; - } - } - - &-2 { - @apply ml-auto; - &::before { - background-image: url("/media/step/arrow-2.png"); - background-position: top center; - max-width: 8rem; - height: 8rem; - @apply right-8; - top: 80%; - transform: rotate(90deg) scale(1, -1); - } - &::after { - max-width: 3rem; - height: 2rem; - background-image: url("/media/step/sketch.png"); - @apply bottom-full -right-4; - } - } - - @media (min-width: 1024px) { - &-1 { - &::before { - @apply top-16; - @apply ml-4; - max-width: 12rem; - height: 14rem; - } - &::after { - max-width: 8.75rem; - height: 6.125rem; - background-image: url("/media/step/sketch.png"); - @apply bottom-full -right-20; - } - } - &-2 { - @apply ml-0; - &::before { - @apply -right-48 -top-28; - transform: rotate(0) scale(1); - max-width: 14rem; - height: 16rem; - background-image: url("/media/step/arrow-2.png"); - background-position: top center; - } - &::after { - @apply hidden; - } - } - } -} - -.btn-container { - @apply relative; - @apply w-full mt-10; - @apply flex justify-center; - @media (min-width: 1024px) { - max-width: 59.75rem; - @apply ml-auto mt-0; - } -} \ No newline at end of file diff --git a/src/views/home/layout/Body/index.ts b/src/views/home/layout/Body/index.ts deleted file mode 100644 index 6568bb80defac0d56af46f6f4da5b617ebc42466..0000000000000000000000000000000000000000 --- a/src/views/home/layout/Body/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Body" \ No newline at end of file diff --git a/src/views/home/layout/Footer/Footer.tsx b/src/views/home/layout/Footer/Footer.tsx index 04e7ece8571166fd9bb1b1241b92254900ea65ad..df99613e3c8a717b8a26df5695bfa2890589ca73 100644 --- a/src/views/home/layout/Footer/Footer.tsx +++ b/src/views/home/layout/Footer/Footer.tsx @@ -1,21 +1,14 @@ -import styles from "./index.module.scss" +import { ERID_CODE, INN_CODE } from "@/shared/config"; +import styles from "./index.module.scss"; import clsx from "clsx"; -import {PrizeInfo} from "@/feature/prize-info"; - export const Footer = () => { - return ( -
- -
-

- *Общий срок акции с 17 марта 2025 года по 7 апреля 2025 года. - Внешний вид призов может отличаться от представленных - изображений.
Информация об организаторе акции, о правилах ее - проведения, количестве призов, сроках, месте и порядке их получения размещена в разделе «Правила» -

- Реклама. ООО "Перфетти Ван Мелле", ИНН: 5017051394, Erid: 2VtzqvCy3z7 -

-
-
- ) -} \ No newline at end of file + return ( +
+
+
+ Реклама. ООО «Перфетти Ван Мелле», ИНН: {INN_CODE}, Erid: {ERID_CODE} +
+
+
+ ); +}; diff --git a/src/views/home/layout/Footer/index.module.scss b/src/views/home/layout/Footer/index.module.scss index 336957162db3b460f9670b86a859602a1b4f26a5..4c8a3e8537368bb9d3d042f942255e5104d1c6c6 100644 --- a/src/views/home/layout/Footer/index.module.scss +++ b/src/views/home/layout/Footer/index.module.scss @@ -1,36 +1,14 @@ .base { - @apply relative mt-15; + @apply absolute right-0 left-0; + @apply bottom-0; + @apply z-10; - @apply flex flex-col justify-end; - background-image: url("/media/home/f-sm.png"); - background-size: 100%; - background-repeat: no-repeat; - background-position-y: bottom; - min-height: 27rem; + @apply text-xs text-center py-2; + @apply font-light; @media (min-width: 1024px) { - @apply mt-0; - background-size: 100%; - background-repeat: no-repeat; - background-position-y: bottom; - background-image: url("/media/layout/footer-desktop.png"); - min-height: 20rem; + @apply py-7 text-right text-sm; } -} - -.footnote { - color: #05622E; - - font-size: 0.625rem; - @apply pb-10; - line-height: 1.1; - @apply text-center; - - - @media (min-width: 1024px) { - @apply text-sm py-5; - } -} - +} \ No newline at end of file diff --git a/src/views/home/layout/Header/Header.tsx b/src/views/home/layout/Header/Header.tsx index 402f1d8609adb575f82e7ffc0350c2e5ba4e6541..02fc8cc1a8f2946967d65b7dca21ea795ebc593a 100644 --- a/src/views/home/layout/Header/Header.tsx +++ b/src/views/home/layout/Header/Header.tsx @@ -2,7 +2,6 @@ import styles from "./index.module.scss" import clsx from "clsx"; import {CardsSlider} from "@/widgets/cards-slider"; import {ProductLink} from "@/feature/product-link"; -import {CardStart} from "@/feature/card-start"; export const Header = () => { return ( @@ -19,13 +18,15 @@ export const Header = () => {
-

- Участвуйте в творческом семейном
- конкурсе и получите шанс выиграть
- блендер-соковыжималку! -

-
- +
+

+ Покупайте продукцию Fruittella
+ и выполняйте вкусные задания
+ всей семьёй! +

+ + +
@@ -33,9 +34,6 @@ export const Header = () => {
-
- -
diff --git a/src/views/home/layout/Header/index.module.scss b/src/views/home/layout/Header/index.module.scss index abe88e30c0383a556d3b35e0933766d64f7ca417..3d20afbc2802bba9296546da26c973a21adaf33a 100644 --- a/src/views/home/layout/Header/index.module.scss +++ b/src/views/home/layout/Header/index.module.scss @@ -1,13 +1,5 @@ .base { @apply relative; - - margin-top: calc(var(--h-menu) * -1); - padding-top: calc(1rem + var(--h-menu)); - - //margin-top: calc(var(--h-menu) * -1); - @media (min-width: 1024px) { - padding-top: calc(5.25rem + var(--h-menu)); - } } .title { @@ -37,16 +29,46 @@ .subtitle { font-family: "Caveat", sans-serif; - @apply text-2xl mt-3; - line-height: 1; + @apply text-lg mt-3; + @apply relative inline-block; + line-height: 0.9; + @media (min-width: 1024px) { + @apply text-4xl mt-4; + line-height: 1; + } + + + p { + @apply relative z-10; + } +} + + +.sketch { + @apply absolute; + @apply z-0; + + @apply -top-6 -left-25; + + transform: scale(-0.95, 1) rotate(3deg); + + width: 21.5rem; + @media (min-width: 1024px) { - @apply text-5xl mt-4; + transform: scale(1, 1) rotate(0); + width: 40.5rem; + @apply -left-25 -top-10; + } + + + img { + @apply w-full block; } } .in { - @apply flex flex-col gap-10; + @apply flex flex-col gap-8; @media (min-width: 1024px) { @apply grid grid-cols-5 gap-0; } @@ -61,25 +83,19 @@ } .slider { + @apply relative z-10; @media (min-width: 1024px) { - @apply col-span-2; + @apply col-span-2 -mt-20; } } -.card { - @apply mt-12; - - @media (min-width: 1024px) { - @apply mt-14 pb-14; - } -} .target { - @apply mt-36; + @apply mt-6; @apply pl-0; @media (min-width: 1024px) { - @apply mt-10; - @apply pl-0; + @apply mt-5; + @apply pl-6; } } \ No newline at end of file diff --git a/src/views/home/layout/index.ts b/src/views/home/layout/index.ts index 1f9651fb0c16ca5ebc4564cba5df7e05310d8cd8..3cabe83229d60c72df7e2cc71b8baeed522da0d7 100644 --- a/src/views/home/layout/index.ts +++ b/src/views/home/layout/index.ts @@ -1,3 +1,2 @@ export * from "./Header" -export * from "./Body" export * from "./Footer" \ No newline at end of file diff --git a/src/views/home/ui/page.tsx b/src/views/home/ui/page.tsx index e38d3a4d37fb982e7d8986f8b133272174fbc721..0ee69da86334fe39723de6527c202f062ced0566 100644 --- a/src/views/home/ui/page.tsx +++ b/src/views/home/ui/page.tsx @@ -1,15 +1,15 @@ import styles from "@/views/home/index.module.scss" import clsx from "clsx"; -import {Body, Footer, Header} from "../layout" +import {Header, Footer} from "../layout" +import {VideoTrigger} from "@/feature/video-trigger"; export default function Home() { return (
-
-
- -
-
+
+