@@ -0,0 +1,30 @@ +.footer { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 18px; +} + +@media (max-width: 1024px) { + .footer { + margin-top: 12px; + flex-direction: column; + align-items: center; + gap: 12px; + } +} + +.footerLink { + font-size: 12px; + color: #A4AAB5CC; + text-decoration: none; + transition: color 0.15s ease; + padding: 6px 10px; + border-radius: 16px; +} + +.footerLink:hover { + color: #fff; + background-color: #272729; +} + @@ -5,9 +5,12 @@ import { useRouter } from 'next/router' import { NextPageWithLayout } from '#/pages/_app' import { useAppSelector } from '#/app/store/store' import { getDeviceType } from '#/shared/lib/helpers/get-type-device' +import { staticLinks } from '#/widgets/navigation-search/config/static-links' import { PromoCardsList } from './promo-cards-list' import type { PromoCardType } from './promo-card' +import styles from './home.module.scss' + export interface HomePageProps {} const Home: NextPageWithLayout = () => { @@ -53,30 +56,31 @@ const Home: NextPageWithLayout = () => { routerlink: '/videos', buttonText: 'Попробовать', }, - // { - // title: 'Копирайтинг', - // image: '/images/promo-cards/copyright.png', - // description: 'Создавайте уникальные, качественные тексты для бизнеса, блогов и рекламы.', - // routerlink: '/chat-bot', - // buttonText: 'Скоро будет доступно', - // buttonDisabled: true, - // }, - // { - // title: 'Улучшение фото', - // image: '/images/promo-cards/image-enhancement.png', - // description: 'Улучшайте качество, устраняйте шум и добавляйте детали с помощью ИИ.', - // routerlink: '/images/nanobanana', - // buttonText: 'Скоро будет доступно', - // buttonDisabled: true, - // }, ] + const footerLinks = React.useMemo(() => staticLinks.filter((l) => l.external), []) + return ( + + + {footerLinks.map((link) => ( + + {link.label.trim()} + + ))} + ) @@ -21,6 +21,30 @@ export const staticLinks: NavigationSearchLink[] = [ url: '/api-keys', category: 'Навигация', }, + { + label: 'Лендинг', + url: 'https://air.fail', + category: 'Навигация', + external: true, + }, + { + label: 'Согласие на обработку данных', + url: 'https://air.fail/consent', + category: 'Навигация', + external: true, + }, + { + label: 'Политика обработки данных', + url: 'https://air.fail/personal', + category: 'Навигация', + external: true, + }, + { + label: 'Контакты ', + url: 'https://air.fail/contacts', + category: 'Навигация', + external: true, + }, { label: 'Реквизиты', url: 'https://air.fail/requisites', @@ -1,5 +1,5 @@ import * as React from 'react' -import { useEffect, useMemo } from 'react' +import { useEffect, useMemo, useState } from 'react' import { Box, Tooltip, Typography, useMediaQuery } from '@mui/material' import MuiDrawer from '@mui/material/Drawer' import List from '@mui/material/List' @@ -15,7 +15,6 @@ import { useSession } from 'next-auth/react' import { useNextStep } from 'nextstepjs' import { useAppSelector } from '#/app/store/store' -import { useUserSettingsContext } from '#/entities/user-account' import { BUSINESS_ERROR_REPORT, ERROR_REPORT, getModalById } from '#/features/modals' import '../styles/styles.module.css' @@ -121,7 +120,6 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' export const SideMenu = ({}) => { const { status } = useSession() const { pathname, asPath } = useRouter() - const { getOptionValue, settings, updateSettings } = useUserSettingsContext() const account_type = useAppSelector((state) => state.user.account_type) const { isNextStepVisible } = useNextStep() @@ -129,11 +127,11 @@ export const SideMenu = ({}) => { const business_error_report = getModalById(BUSINESS_ERROR_REPORT) const match = useMediaQuery('(min-height:800px)') - const open = useMemo(() => getOptionValue('sidemenu', { sidemenu_state: 'opened' }).sidemenu_state, [settings]) + const [open, setOpen] = useState(false) useEffect(() => { - if (isNextStepVisible) updateSettings('sidemenu', { sidemenu_state: 'closed' }) - }, [isNextStepVisible, updateSettings]) + if (isNextStepVisible) setOpen(false) + }, [isNextStepVisible]) const filteredMenuListTop = useMemo(() => { return menuListTop.filter((item) => { @@ -146,18 +144,16 @@ export const SideMenu = ({}) => { }, [account_type]) const handleCloseDrawer = () => { - if (!isNextStepVisible) updateSettings('sidemenu', { sidemenu_state: 'closed' }) + if (!isNextStepVisible) setOpen(false) } const handleToggleOpen = () => { - if (!isNextStepVisible) { - updateSettings('sidemenu', { sidemenu_state: open === 'opened' ? 'closed' : 'opened' }) - } + if (!isNextStepVisible) setOpen((prev) => !prev) } return ( <> - {open === 'opened' && ( + {open && ( { }} variant='permanent' anchor='left' - open={open === 'opened'} + open={open} > { marginLeft: -1, marginRight: 5, transition: 'transform 0.4s ease', - transform: open === 'closed' ? 'rotate(180deg)' : 'rotate(0deg)', + transform: open ? 'rotate(0deg)' : 'rotate(180deg)', }} src={'/arrow-left.svg'} width={20} @@ -218,7 +214,7 @@ export const SideMenu = ({}) => { return ( { return ( { }} > { }} > { /> { /> - - {open === 'opened' && ( - - - - Реквизиты - - - - )} - )}