+
+ IQ-COFFEE
+ coffee roasters
+
+
+
+ Заказ
+
+ на сайте
+
+ без очереди
+
+ #iqcoffeetmn
+
+
+ miss you ^^
+
+
+);
diff --git a/src/components/content-main/index.ts b/src/components/content-main/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3f4dcb7057cd33cfd31ab69a114a76592030a900
--- /dev/null
+++ b/src/components/content-main/index.ts
@@ -0,0 +1 @@
+export * from './content-main';
diff --git a/src/components/content-main/styled.tsx b/src/components/content-main/styled.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..1d0daa29ae39685e7658509fcaed25844d74cc7d
--- /dev/null
+++ b/src/components/content-main/styled.tsx
@@ -0,0 +1,169 @@
+import styled from 'styled-components';
+
+import { devices } from '@/styles';
+
+export const ContentMain = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ width: 100%;
+ height: 100vh;
+ background-color: var(--white);
+ border-top-left-radius: 20px;
+ border-bottom-left-radius: 20px;
+
+ @media ${devices.tablet} {
+ display: none;
+ }
+`;
+
+export const Title = styled.h1`
+ margin-top: 120px;
+ margin-left: 120px;
+ font-family: ${(props) => props.theme.fonts};
+ font-size: 180px;
+ font-weight: 800;
+ line-height: 160px;
+ color: var(--black);
+
+ @media ${devices.desktopMd} {
+ margin-left: 100px;
+ font-size: 116px;
+ line-height: 120px;
+ }
+
+ @media ${devices.desktop} {
+ margin-top: 100px;
+ margin-left: 80px;
+ font-size: 89px;
+ line-height: 100px;
+ }
+
+ @media ${devices.tablet} {
+ margin-left: 8px;
+ font-size: 70px;
+ line-height: 70px;
+ }
+`;
+
+export const Subtitle = styled.p`
+ margin-top: 4px;
+ margin-left: 120px;
+ font-family: ${(props) => props.theme.fonts};
+ font-size: 32px;
+ font-weight: 800;
+ line-height: 44px;
+ color: var(--gray-plus);
+
+ @media ${devices.desktopMd} {
+ margin-left: 100px;
+ font-size: 24px;
+ line-height: 36px;
+ }
+
+ @media ${devices.desktop} {
+ margin-left: 80px;
+ font-size: 18px;
+ line-height: 26px;
+ }
+
+ @media ${devices.tablet} {
+ margin-left: 8px;
+ }
+`;
+
+export const Content = styled.h2`
+ margin-left: 120px;
+ font-family: Comfortaa, sans-serif;
+ font-size: 80px;
+ font-weight: 700;
+ line-height: 80px;
+ color: var(--black);
+ text-transform: uppercase;
+
+ @media ${devices.desktopMd} {
+ margin-left: 100px;
+ font-size: 60px;
+ line-height: 60px;
+ }
+
+ @media ${devices.desktop} {
+ margin-left: 80px;
+ font-size: 56px;
+ line-height: 56px;
+ }
+
+ @media ${devices.tablet} {
+ margin-left: 8px;
+ font-size: 40px;
+ line-height: 40px;
+ }
+`;
+
+export const Highlight = styled.span`
+ color: var(--pink);
+`;
+
+export const HashTag = styled.p`
+ margin: 74px 0 40px 80px;
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 26px;
+ color: var(--pink);
+
+ @media ${devices.desktopMd} {
+ margin: 68px 0 28px 52px;
+ font-size: 16px;
+ line-height: 22px;
+ }
+`;
+export const Background = styled.div`
+ position: absolute;
+ top: 179px;
+ right: 0;
+ width: 600px;
+ height: calc(100% - 251px);
+ max-height: 686px;
+ background-color: var(--black);
+ border-top-left-radius: 20px;
+ border-bottom-left-radius: 20px;
+
+ @media ${devices.desktopMd} {
+ top: 245px;
+ height: calc(100% - 317px);
+ max-height: 512px;
+ }
+
+ @media ${devices.desktop} {
+ top: 160px;
+ width: 480px;
+ height: calc(100% - 210px);
+ max-height: 487px;
+ }
+`;
+
+export const BackgroundText = styled.p`
+ position: absolute;
+ top: 102px;
+ left: -59px;
+ font-family: ${(props) => props.theme.fonts};
+ font-size: 32px;
+ font-weight: 800;
+ line-height: 44px;
+ color: var(--white);
+ text-transform: uppercase;
+ letter-spacing: 0;
+ transform: rotate(-90deg);
+
+ @media ${devices.desktopMd} {
+ top: 98px;
+ left: -63px;
+ }
+
+ @media ${devices.desktop} {
+ top: 90px;
+ left: -56px;
+ font-size: 28px;
+ line-height: 40px;
+ }
+`;
diff --git a/src/components/footer/footer.tsx b/src/components/footer/footer.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..222e137e036048593401d364197ecdef617f0400
--- /dev/null
+++ b/src/components/footer/footer.tsx
@@ -0,0 +1,89 @@
+'use client';
+
+import React, { useState } from 'react';
+import { AnimatePresence } from 'framer-motion';
+import { usePathname } from 'next/navigation';
+
+import { Icon, LayoutModal, Overlay, Portal } from '@/shared';
+import { CurrentStylebookContext } from '@/contexts';
+import { REGEX_FOOTER, REGEX_FOOTER_ICON } from '@/utils';
+import { useAppSelector } from '@/hooks';
+import { basketSelector } from '@/store';
+
+import { Cart } from '../cart';
+import * as Styled from './styled';
+
+export const Footer = () => {
+ const { stylebook } = React.useContext(CurrentStylebookContext);
+ const pathname = usePathname();
+
+ const basket = useAppSelector(basketSelector);
+ const shop =
+ Object.keys(basket).find(
+ (shopSlug) => basket[shopSlug]?.items?.length > 0,
+ ) || '';
+ const isEmpty = !(basket[shop]?.items?.length > 0);
+
+ const [modalIsOpen, setModalIsOpen] = useState(false);
+ const handleToPayClick = () => {
+ setModalIsOpen(true);
+ };
+ const handleCloseCart = () => {
+ setModalIsOpen(false);
+ };
+
+ if (!REGEX_FOOTER.test(pathname)) return null;
+
+ return (
+