{"version":3,"file":"static/chunks/pages/_site/[city]/domrubonus-04a5c91321b28098.js","mappings":"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","sources":["webpack://_N_E/?840c","webpack://_N_E/./src/features/domru-bonus/components/AccCard/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/AccCard/index.tsx","webpack://_N_E/./src/features/domru-bonus/components/FaqBlock/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/FaqBlock/index.tsx","webpack://_N_E/./src/features/domru-bonus/components/SpendCard/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/SpendCard/index.tsx","webpack://_N_E/./src/features/domru-bonus/components/RuleCard/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/RuleCard/index.tsx","webpack://_N_E/./src/features/domru-bonus/data.tsx","webpack://_N_E/./src/features/domru-bonus/sections/BonusRules/styled.tsx","webpack://_N_E/./src/features/domru-bonus/sections/BonusRules/index.tsx","webpack://_N_E/./src/features/domru-bonus/sections/PopupResponse/styled.ts","webpack://_N_E/./src/features/domru-bonus/sections/PopupResponse/index.tsx","webpack://_N_E/./src/features/domru-bonus/sections/FooterForm/styled.tsx","webpack://_N_E/./src/features/domru-bonus/sections/FooterForm/index.tsx","webpack://_N_E/./src/features/domru-bonus/sections/Header/styled.tsx","webpack://_N_E/./src/features/domru-bonus/sections/Header/index.tsx","webpack://_N_E/./src/features/domru-bonus/index.tsx","webpack://_N_E/./pages/_site/[city]/domrubonus.tsx","webpack://_N_E/./src/api/content/faq.ts","webpack://_N_E/./src/api/content/geography/get-city-info.ts","webpack://_N_E/./src/api/requests/contentRequest.js","webpack://_N_E/./src/features/domru-bonus/components/Carusel/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/PartnerCard/styled.tsx","webpack://_N_E/./src/features/domru-bonus/components/PartnerCard/index.tsx","webpack://_N_E/./src/features/domru-bonus/constants/abnVariants.ts","webpack://_N_E/./src/features/domru-bonus/sections/Partners/index.tsx","webpack://_N_E/./src/features/domru-bonus/styled.tsx","webpack://_N_E/../../packages/api-domru/src/api-content/v1/shop/items/index.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/shop/items/requestDto.ts","webpack://_N_E/../../packages/api-domru/src/api-loyalty/v1/program/registration.ts","webpack://_N_E/../../packages/ui-react/src/components/costs/Cost/format.ts","webpack://_N_E/../../packages/ui-react/src/components/costs/helpers/divideByThousand.ts","webpack://_N_E/../../packages/ui-react/src/deprecated/Accordion/themes.js","webpack://_N_E/../../packages/ui-react/src/deprecated/Accordion/index.js"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/domrubonus\",\n function () {\n return require(\"private-next-pages/_site/[city]/domrubonus.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/domrubonus\"])\n });\n }\n ","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { FlexBoxCol } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nexport const CardWrapper = styled(FlexBoxCol)`\n width: 433px;\n padding: 32px 143px 32px 40px;\n border-radius: 16px;\n color: ${COLORS.white};\n background: radial-gradient(63.45% 90.07% at 28.3% 105.36%, #ED3D3D 0%, rgba(237, 61, 61, 0) 100%),\n linear-gradient(105.23deg, #B9CF31 15.62%, #FA00FF 106.65%);\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: 340px;\n padding: 24px 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n max-width: unset;\n width: 100%;\n margin-bottom: 12px;\n }\n\n &:not(:last-child) {\n margin-right: 32px;\n\n @media (max-width: ${breakPoints.laptop}) {\n margin-right: 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-right: 0;\n margin-bottom: 12px;\n }\n }\n`;\n\nexport const CardTitle = styled.p`\n ${FONTS.L};\n margin-bottom: 16px;\n`;\n\nexport const CardText = styled.p`\n ${FONTS.XS};\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 250px;\n }\n`;\n","import * as AC from './styled';\n\ninterface IProps {\n title: string,\n text: string,\n}\n\nconst AccumulateCard = ({ title, text }: IProps): JSX.Element => {\n return (\n \n \n {text}\n \n );\n};\n\nexport default AccumulateCard;\n","import styled from 'styled-components';\n\nimport Accordion from '@r1-frontend/ui-react/deprecated/Accordion';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const FaqContainer = styled.div`\n > * {\n margin-bottom: 2em;\n }\n\n > *:last-child {\n margin-bottom: 10em;\n }\n`;\n\nexport const SAccordion = styled(Accordion)`\n margin-bottom: 16px;\n`;\n\nexport const AccordionContent = styled.div`\n display: block;\n\n a {\n ${FONTS.Medium}\n color: ${COLORS.Link};\n transition: 0.3s;\n\n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n }\n`;\n","import { useMemo, useRef } from 'react';\n\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { IFaqArticle } from '~/src/api/content/faq';\n\nimport * as ST from './styled';\n\ninterface IProps {\n faq?: IFaqArticle[],\n}\n\ntype TRequiredFaqArticle = Required>;\n\nconst FaqBlock = ({ faq = [] }: IProps): JSX.Element | null => {\n const accordionTitleRef = useRef(null);\n\n const preparedFaq = useMemo(\n () => faq.reduce((acc: TRequiredFaqArticle[], item) => {\n const { faq_id, question, answer } = item;\n\n if (faq_id && question && answer) {\n acc.push({ faq_id, question, answer });\n }\n\n return acc;\n }, []),\n [faq],\n );\n\n if (!preparedFaq.length) {\n return null;\n }\n\n return (\n <>\n \n \n Частые вопросы\n \n \n \n {preparedFaq.map(({ faq_id, question, answer }) => (\n \n \n \n ))}\n \n >\n );\n};\n\nexport default FaqBlock;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { FlexBoxCol } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nconst ICON_SIZE = '65px';\nconst ICON_PATH = '/static/images/icons/';\n\nexport const CardWrapper = styled(FlexBoxCol)`\n width: 433px;\n padding: 32px 20px 32px 43px;\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n border-radius: 16px;\n background: ${COLORS.white};\n\n @media (max-width: ${breakPoints.laptop}) {\n width: 340px;\n flex-direction: column;\n align-items: flex-start;\n padding: 23px 20px 16px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n padding: 24px 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: unset;\n width: 100%;\n margin-bottom: 12px;\n }\n\n &:not(:last-child) {\n margin-right: 32px;\n\n @media (max-width: ${breakPoints.laptop}) {\n margin-right: 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-right: 0;\n margin-bottom: 12px;\n }\n }\n`;\n\nexport const CardIcon = styled.div<{ icon: string }>`\n min-width: ${ICON_SIZE};\n height: ${ICON_SIZE};\n margin-right: 23px;\n background: url(${p => ICON_PATH + p.icon}) 0 0 / cover no-repeat;\n\n @media (max-width: ${breakPoints.laptop}) {\n margin-bottom: 23px;\n }\n`;\n\nexport const CardText = styled.div`\n ${FONTS.M};\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 250px;\n }\n`;\n","import { ReactNode } from 'react';\n\nimport * as SC from './styled';\n\ninterface IProps {\n icon: string,\n children: ReactNode,\n}\n\nconst SpendCard = ({ icon, children }: IProps): JSX.Element => {\n return (\n \n \n {children}\n \n );\n};\n\nexport default SpendCard;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nexport const CardWrapper = styled.div`\n width: 433px;\n padding: 32px 40px 28px;\n border-radius: 16px;\n background-color: ${COLORS.white};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 328px;\n height: 100%;\n padding: 32px 20px 20px 40px;\n }\n\n @media (max-width: ${breakPoints.laptop}) {\n width: auto;\n min-width: 256px;\n max-width: 100%;\n margin-right: 16px;\n padding: 24px 16px 18px 20px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: auto;\n min-width: 272px;\n max-width: 100%;\n margin-right: 12px;\n padding: 24px 12px 24px 20px;\n }\n`;\n\nexport const CardTitle = styled.p`\n ${FONTS.S};\n margin-bottom: 12px;\n white-space: pre-wrap;\n\n @media (max-width: ${breakPoints.laptop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.S};\n }\n`;\n\nexport const CardDescription = styled.p`\n ${FONTS.M};\n white-space: pre-wrap;\n\n @media (max-width: ${breakPoints.laptop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.M};\n }\n`;\n\nexport const CardLink = styled.a`\n ${FONTS.MediumS};\n color: ${COLORS.blue};\n margin-top: 6px;\n\n &:focus,\n &:visited {\n color: ${COLORS.blue};\n }\n`;\n","import Link from 'next/link';\n\nimport * as CS from './styled';\n\nexport interface IRuleCardProps {\n title: string,\n desc: string,\n link?: {\n text: string,\n path: string,\n },\n}\n\nconst RuleCard = ({ title, desc, link }: IRuleCardProps): JSX.Element => {\n return (\n \n {title}\n {desc}\n {link &&\n \n {link.text}\n \n }\n \n );\n};\n\nexport default RuleCard;\n","import { format } from '@r1-frontend/ui-react/components/costs';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const rules = (cashback: string, isAbnProgramTermsEnabled?: boolean) => [\n {\n title: 'Зарегистрируйтесь в программе',\n desc: 'Для вступления в программу необходимо быть пользователем одной или нескольких услуг Дом.ру.',\n link: {\n text: 'Подробнее о программе',\n path: '/policy/loyaltyprogramm',\n },\n },\n {\n title: 'Получайте бонусы',\n desc: isAbnProgramTermsEnabled\n ? `Участник программы при единовременной оплате от ${format(3000)} получает кешбэк в виде бонусов в размере ${cashback} от абонентской платы.`\n : `Участник программы получает кешбэк в виде бонусов в размере ${cashback} от Абонентской платы, приобретенного товара или услуги.`,\n },\n {\n title: 'Управляйте бонусным счетом',\n desc: 'Получить информацию о состоянии бонусного счета можно в мобильном приложении «Мой Дом.ру» или на сайте Дом.ру.',\n },\n];\n","import styled from 'styled-components';\n\nimport { BonusCarousel } from '~/src/features/domru-bonus/components/Carusel/styled';\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nexport const CustomCarousel = styled(BonusCarousel)`\n & > div {\n & > div {\n width: 100%;\n & > div {\n &:not(:last-child) {\n position: relative;\n height: 100%;\n\n &:after {\n content: '';\n position: absolute;\n height: 22px;\n width: 15%;\n top: 30px;\n right: -20px;\n background: url('/static/images/icons/gradient-right-arrow.svg') 0 0 / contain no-repeat;\n z-index: 1;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n top: 35px;\n right: -15px;\n }\n\n @media (max-width: ${breakPoints.laptop}) {\n top: 25px;\n right: -15px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n top: 22px;\n right: -15px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n top: 28px;\n right: -15px;\n width: 35px;\n }\n }\n }\n }\n }\n }\n`;\n","import { useMemo } from 'react';\n\nimport RuleCard, { IRuleCardProps } from '~/src/features/domru-bonus/components/RuleCard';\nimport { getIsAbnLoyaltyProgramEnabled } from '~/src/features/domru-bonus/constants/abnVariants';\nimport { rules } from '~/src/features/domru-bonus/data';\n\nimport * as RS from './styled';\n\nconst breakpoints = [\n { width: 0, slidesToShow: 1 },\n { width: 768, slidesToShow: 2 },\n { width: 1024, slidesToShow: 3 },\n];\n\ninterface Iprops {\n cashback: string,\n}\n\nconst Rules = ({ cashback }: Iprops): JSX.Element => {\n const isAbnProgramTermsEnabled = useMemo(getIsAbnLoyaltyProgramEnabled, []);\n\n return (\n \n {rules(cashback, isAbnProgramTermsEnabled).map((rule: IRuleCardProps, index: number) => {\n const { title, desc, link } = rule;\n return (\n \n );\n })}\n \n );\n};\n\nexport default Rules;\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nconst ICON_SIZE = '58px';\nconst ICON_SIZE_MOBILE = '65px';\n\nexport const IconBlock = styled.div`\n width: ${ICON_SIZE};\n height: ${ICON_SIZE};\n margin-right: 19px;\n background: url('/static/images/icons/bonus-rings.svg') 0 0 / cover no-repeat;\n\n @media (max-width: ${breakPoints.mobile}) {\n width: ${ICON_SIZE_MOBILE};\n height: ${ICON_SIZE_MOBILE};\n margin-right: 0;\n margin-bottom: 19px;\n }\n`;\n\nexport const ResponsePopup = styled(DefaultPopup)`\n padding: 50px;\n width: calc(100% - 20px) !important;\n max-width: 896px !important;\n @media (max-width: 1024px) {\n max-width: 690px !important;\n }\n @media (max-width: 800px) {\n max-width: 530px !important;\n }\n`;\n\nexport const Title = styled.div`\n display: block;\n margin-top: 20px;\n ${FONTS.H2};\n\n @media (max-width: 767px) {\n ${FONTS.H4};\n }\n`;\n\nexport const Text = styled.div`\n display: block;\n margin-top: 5px;\n ${FONTS.S};\n\n @media (max-width: 767px) {\n ${FONTS.XS};\n }\n`;\n\nexport const Button = styled(BaseButton)`\n margin-top: 30px;\n max-width: 220px;\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: unset;\n width: 230px;\n }\n`;\n","import React, { FC } from 'react';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport OpenChat from '~/src/components/OpenChatLink';\nimport { NON_BREAKING_SPACE } from '~/src/constants/simbols';\n\nimport * as ST from './styled';\n\ninterface IPopupResponseProps {\n type: string,\n isOpen: boolean,\n onClose: () => void,\n title: string,\n message?: string,\n}\n\nconst PopupResponse: FC = ({ type, title, message, isOpen, onClose }) => {\n return (\n \n \n {title}\n {message || ''}\n {type === 'error' &&\n \n {`Пожалуйста, попробуйте позднее. В случае повторения ошибки, напишите нам в${NON_BREAKING_SPACE}`}\n \n \n }\n {type === 'success' &&\n \n Начать\n \n }\n \n );\n};\n\nexport default PopupResponse;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, { phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { FlexBoxRow } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nconst inputPhone = phoneDecorator(InputSimple);\n\nconst ICON_SIZE = '58px';\nconst ICON_SIZE_MOBILE = '65px';\n\nexport const InfoBlock = styled.div`\n display: flex;\n margin-bottom: 45px;\n align-items: center;\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n margin-bottom: 33px;\n align-items: flex-start;\n }\n`;\n\nexport const IconBlock = styled.div`\n min-width: ${ICON_SIZE};\n height: ${ICON_SIZE};\n margin-right: 19px;\n background: url('/static/images/icons/bonus-rings.svg') 0 0 / cover no-repeat;\n\n @media (max-width: ${breakPoints.mobile}) {\n min-width: ${ICON_SIZE_MOBILE};\n height: ${ICON_SIZE_MOBILE};\n margin-right: 0;\n margin-bottom: 19px;\n }\n`;\n\nexport const FormText = styled.div`\n ${FONTS.S};\n white-space: pre-wrap;\n`;\n\nexport const FormRow = styled(FlexBoxRow)`\n max-width: 84.75%;\n display: flex;\n align-items: flex-start;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n justify-content: space-between;\n max-width: unset;\n width: 100%;\n }\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: 500px;\n }\n`;\n\nexport const PhoneInput = styled(inputPhone)``;\n\nexport const Button = styled(BaseButton)`\n margin: 0 auto 20px 0;\n max-width: 220px;\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: unset;\n width: 230px;\n }\n`;\n\nexport const FormPolicy = styled.p`\n ${FONTS.XS};\n color: ${COLORS.middleGray};\n margin-bottom: 20px;\n white-space: pre-wrap;\n`;\n\nexport const PolicyLink = styled.a`\n color: ${COLORS.middleGray};\n ${FONTS.MediumXS};\n text-decoration: underline;\n`;\n","import { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { IRegistrationResponse, registration } from '@r1-frontend/api-domru/api-loyalty/v1/program/registration';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport Input from '@r1-frontend/ui-react/components/input';\nimport { FlexBoxCol } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\n\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nimport PopupResponse from '../PopupResponse';\n\nimport * as ST from './styled';\n\nconst initPopupState = {\n title: '',\n text: '',\n type: 'success',\n isOpen: false,\n};\n\ntype TField = {\n value: string,\n isValid: boolean,\n clearInput: () => void,\n}\n\ninterface IProps {\n scrollRef: React.RefObject,\n}\n\nconst FooterForm = ({ scrollRef }: IProps): JSX.Element => {\n const providerId = useSelector(selectProviderId);\n\n const [popupState, setPopupState] = useState(initPopupState);\n\n const emailInput = useRef() as React.MutableRefObject;\n const [phone, setPhone] = useState();\n const [email, setEmail] = useState();\n const [isValidInputs, setIsValidInputs] = useState(false);\n\n useEffect(() => {\n const emailRef = emailInput?.current;\n const emailHasError = email ? emailRef.state.hasError : false;\n const isValid = !!(phone?.value && phone?.isValid && !emailHasError);\n setIsValidInputs(isValid);\n }, [phone, email]);\n\n const onSubmit = async() => {\n if (isValidInputs) {\n const resp = await doRequest.apiLoyalty(\n registration(providerId, {\n phone: phone?.value || '',\n email,\n }),\n );\n if (resp.isSuccess) {\n setPopupState({\n title: 'Спасибо за регистрацию!',\n text: 'Получайте кешбэк бонусами и скидки от партнеров',\n type: 'success',\n isOpen: true,\n });\n } else {\n setPopupState({\n title: 'Произошла ошибка',\n text: '',\n type: 'error',\n isOpen: true,\n });\n }\n }\n };\n\n const buttonText = 'Зарегистрироваться';\n\n return (\n <>\n \n \n \n {'Проверьте информацию и актуализируйте данные.\\nНомер телефона является обязательным для заполнения.'}\n \n \n \n \n \n \n \n \n \n \n \n {buttonText}\n \n \n \n \n \n \n setPopupState(initPopupState)}\n />\n >\n );\n};\n\nexport default FooterForm;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { FlexBoxCol, FlexBoxRow } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nexport const HeadWrapper = styled.div`\n width: 100%;\n height: 600px;\n margin-bottom: 124px;\n background: url('/static/images/loyalty/domru-bonus/head-bg.png') 0 0 / cover no-repeat;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n height: 510px;\n margin-bottom: 116px;\n }\n\n @media (max-width: ${breakPoints.laptop}) {\n height: 380px;\n margin-bottom: 111px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 300px;\n margin-bottom: 64px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n height: auto;\n padding-top: 36px;\n padding-bottom: 28px;\n background: url('/static/images/loyalty/domru-bonus/head-bg-mobile.png') 0 0 / cover no-repeat;\n }\n`;\n\nexport const Row = styled(FlexBoxRow)`\n width: 100%;\n justify-content: space-between;\n align-items: center;\n flex-wrap: nowrap;\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column-reverse;\n }\n`;\n\nexport const Col = styled(FlexBoxCol)`\n display: flex;\n flex-direction: column;\n color: ${COLORS.white};\n`;\n\nexport const Title = styled.h1`\n ${FONTS.H2};\n margin-bottom: 12px;\n\n @media (max-width: ${breakPoints.laptop}) {\n ${FONTS.H4};\n margin-bottom: 8px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H3};\n margin-bottom: 4px;\n }\n`;\n\nexport const SubTitle = styled.p`\n max-width: 400px;\n ${FONTS.XXL};\n margin-bottom: 24px;\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: 300px;\n ${FONTS.S};\n margin-bottom: 30px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: unset;\n ${FONTS.M};\n margin-bottom: 28px;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n width: auto;\n max-width: 200px;\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 100%;\n }\n`;\n\nexport const Image = styled.img`\n width: 100%;\n max-width: 500px;\n height: auto;\n margin-top: 10%;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 360px;\n margin-top: 20%;\n }\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: 270px;\n margin-top: 10%;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 230px;\n margin-top: 10%;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 100%;\n margin-top: 0;\n }\n`;\n","import { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport GridContainer from '@r1-frontend/ui-react/components/layouts/gridContainer';\n\nimport * as HS from './styled';\n\ninterface IProps {\n headerClickHandler: () => void,\n}\n\nconst Header = ({ headerClickHandler }: IProps): JSX.Element => {\n return (\n \n \n \n \n Программа лояльности\n Получайте бонусы и увеличивайте кешбэк с каждым годом\n \n Стать участником\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Header;\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { format } from '@r1-frontend/ui-react/components/costs';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { IFaqArticle } from '~/src/api/content/faq';\nimport { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\nimport AccumulateCard from '~/src/features/domru-bonus/components/AccCard';\nimport FaqBlock from '~/src/features/domru-bonus/components/FaqBlock';\nimport SpendCard from '~/src/features/domru-bonus/components/SpendCard';\nimport Rules from '~/src/features/domru-bonus/sections/BonusRules';\nimport FooterForm from '~/src/features/domru-bonus/sections/FooterForm';\nimport Header from '~/src/features/domru-bonus/sections/Header';\nimport Partners from '~/src/features/domru-bonus/sections/Partners';\nimport { TState } from '~/src/store/index';\n\nimport { getIsAbnLoyaltyProgramEnabled } from './constants/abnVariants';\n\nimport * as ST from './styled';\n\ninterface IProps {\n partners: IShopItem[],\n loyaltyIsRegistered: boolean,\n loyaltyIsAvailable: boolean,\n cashback: string,\n faq?: IFaqArticle[],\n companyName: string,\n}\n\nconst DomruBonus = ({ partners, loyaltyIsRegistered, loyaltyIsAvailable, cashback, faq, companyName }: IProps): JSX.Element => {\n const router = useRouter();\n\n const isAbnProgramTermsEnabled = useMemo(getIsAbnLoyaltyProgramEnabled, []);\n\n const isAuth = useSelector((state: TState) => state.auth.isAuth);\n const footerFormRef = useRef(null);\n\n const headerClickHandler = useCallback(() => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.loyaltyProgramLanding,\n action: ACTIONS.click,\n label: 'become a member',\n });\n\n if (isAuth) {\n footerFormRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n if (loyaltyIsRegistered) {\n router.push('lk/aboutdomrubonus');\n }\n } else {\n router.push(`${USER_LOGIN_ROUTE}?referrer=/domrubonus`);\n }\n }, []);\n\n useEffect(() => {\n if (partners.length) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.loyaltyProgramLanding,\n action: ACTIONS.view,\n label: 'partners',\n });\n }\n }, [partners.length]);\n\n return (\n \n \n\n \n Как работает программа лояльности?\n \n \n \n \n\n \n Как копить бонусы?\n \n \n \n \n \n\n \n Как потратить бонусы?\n \n \n Бонусами можно оплатить до 100% стоимости абонентской платы. {\n isAbnProgramTermsEnabled\n ? <>100 бонусов = {format(20)}>\n : <>1 бонус = {format(1)}>\n }.\n \n \n \n\n {partners && !isAbnProgramTermsEnabled &&\n \n Партнеры программы\n {partners.length\n ? \n \n \n : Предложения от партнёров {companyName} доступны только участникам программы лояльности\n }\n \n }\n\n {isAuth && loyaltyIsAvailable && !loyaltyIsRegistered &&\n \n Зарегистрируйтесь в программе лояльности\n \n \n \n \n }\n \n \n \n \n );\n};\n\nexport default DomruBonus;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport type { NextPage } from 'next';\n\nimport { shopItems } from '@r1-frontend/api-domru/api-content/v1/shop/items';\nimport { EExpandShopItems, EShopCategory } from '@r1-frontend/api-domru/api-content/v1/shop/items/requestDto';\nimport { availability, EAvailability, IAvailability } from '@r1-frontend/api-domru/api-loyalty/v1/program/availability';\n\nimport { EPlaces, getFaqArticles, IFaqArticle } from '~/src/api/content/faq';\nimport { getCityInfo } from '~/src/api/content/geography/get-city-info';\nimport { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport Layout from '~/src/features/_layout';\nimport DomruBonus from '~/src/features/domru-bonus';\nimport { initialProps } from '~/src/helpers/basePageFunc';\nimport getRequester from '~/src/helpers/getRequester';\nimport { nonPermanentRedirect } from '~/src/helpers/url';\nimport { getCurrentCity, selectCompanyName } from '~/src/store/selectors/city';\n\ninterface IProps {\n loyaltyIsAvailable?: boolean,\n loyaltyIsRegistered?: boolean,\n partners?: IShopItem[],\n faq?: IFaqArticle[],\n}\n\nconst DomruBonusPage: NextPage = ({\n loyaltyIsAvailable,\n loyaltyIsRegistered,\n partners = [],\n faq,\n}) => {\n const currentCity = useSelector(getCurrentCity);\n const companyName = useSelector(selectCompanyName);\n\n const cashback = currentCity.loyaltyProgramCashback;\n\n return (\n <>\n \n \n \n >\n );\n};\n\nDomruBonusPage.getInitialProps = async(options) => {\n const { validatedAccessToken } = await initialProps(options, { isNeedAuthData: true });\n const { res, store } = options;\n const state = store.getState();\n const { city: { currentCity: city, provider: { providerId } } } = state;\n const doRequest = getRequester(options.req);\n\n const respPl = await getCityInfo({ providerId, filter: ['pl_available'], active: false });\n const isAvailableOnCity = (respPl.ok && respPl.data?.pl_available) ? !!respPl.data?.pl_available : false;\n\n const [faqData] = await Promise.all([\n getFaqArticles({\n places: [EPlaces.Loyalty],\n providerId,\n }),\n ]);\n if (!isAvailableOnCity) {\n nonPermanentRedirect({ res, location: validatedAccessToken ? '/lk' : '/' });\n } else {\n const partners =\n await doRequest.apiContent<{ items: IShopItem[] }>(\n shopItems(\n providerId,\n validatedAccessToken ?? '',\n [EShopCategory.LoyaltyProgram],\n [EExpandShopItems.Category, EExpandShopItems.Advertising],\n ),\n );\n\n if (city.plAvailable) {\n const result: IProps = {\n partners: partners.isSuccess ? partners.payload.items : undefined,\n faq: faqData.items,\n };\n\n if (validatedAccessToken) {\n const loyaltyAvailableResp = await doRequest.apiLoyalty(\n availability(providerId),\n );\n\n if (loyaltyAvailableResp?.isSuccess) {\n const { payload: { available } = {} } = loyaltyAvailableResp;\n\n result.loyaltyIsAvailable = available === EAvailability.AVAILABLE;\n result.loyaltyIsRegistered = available === EAvailability.REGISTRED;\n }\n }\n\n return result;\n } else {\n return ({\n partners: partners.isSuccess ? partners.payload.items : undefined,\n faq: faqData.items,\n });\n }\n }\n\n return ({\n faq: faqData.items,\n });\n};\n\nexport default DomruBonusPage;\n","import { captureException } from '@sentry/node';\nimport get from 'lodash/get';\n\nimport { isAxiosError } from '@r1-frontend/do-request/guards/isAxiosError';\n\nimport contentRequest from '~/src/api/requests/contentRequest';\nimport { IItem } from '~/src/features/service/knowledgebase/list';\n\n// Коды страниц на которых должны выводится вопросы\nexport enum EPlaces {\n Main = 3,\n Question = 13,\n Search = 23,\n Loyalty = 33,\n}\n\ninterface ICategoriesParams {\n providerId: number,\n places?: Array,\n}\n\ninterface ICategory {\n category_id: number,\n category_name: string,\n slug: string,\n}\nexport interface ICategoryResp {\n ok: boolean,\n items: ICategory[],\n error: string | undefined | null,\n}\n\nexport interface IResultSearch {\n search: IItem[],\n error: unknown,\n basePath: string,\n}\n\n/**\n * Список категорий\n */\nexport async function getFaqCategories(params: ICategoriesParams): Promise {\n try {\n const resp = await contentRequest.get('/v2/faq-categories', { params });\n const { items } = resp.data;\n return ({\n ok: true,\n items,\n error: null,\n });\n } catch (err) {\n if (isAxiosError(err)) {\n return ({\n ok: false,\n items: [],\n error: err.response?.statusText,\n });\n }\n\n captureException(err);\n\n return ({\n ok: false,\n items: [],\n error: 'Внутренняя ошибка сервера',\n });\n }\n}\n\n// ------------------------------------------------------------------------- //\nexport enum EExpand {\n Categories = 'categories',\n Places = 'places',\n FaqType = 'faqType',\n FaqChild = 'faqChild',\n FaqParent = 'faqParent',\n}\n\nexport enum EFields {\n Answer = 'answer',\n Question = 'question',\n FaqId = 'faq_id',\n Updated = 'updated',\n Slug = 'slug',\n}\n\ninterface IArticlesParams {\n slug?: string,\n category_slug?: string,\n places?: Array,\n find?: string,\n fields?: Array,\n expand?: Array,\n providerId?: number,\n}\n\ninterface IFaqParams {\n slug?: string,\n places?: Array,\n find?: string,\n fields?: string,\n expand?: string,\n category_slug?: string,\n providerId?: number,\n}\n\nexport interface IFaqArticle {\n slug: string,\n faq_id?: number,\n question?: string,\n answer?: string,\n [key:string]: any,\n}\nexport interface IArticlesResp {\n ok: boolean,\n items: IFaqArticle[],\n error: string | undefined | null,\n}\n\nfunction convertParams(incParams?:IArticlesParams):IFaqParams {\n const params:IFaqParams = {};\n if (!incParams) {\n return params;\n}\n\n if (incParams.fields) {\n params.fields = incParams.fields.join(',');\n }\n if (incParams.expand) {\n params.expand = incParams.expand.join(',');\n }\n if (incParams.slug) {\n params.slug = incParams.slug;\n }\n if (incParams.category_slug) {\n params.category_slug = incParams.category_slug;\n }\n if (incParams.places) {\n params.places = incParams.places;\n }\n if (incParams.find) {\n params.find = incParams.find;\n }\n if (incParams.providerId) {\n params.providerId = incParams.providerId;\n }\n\n return params;\n}\n\n/**\n * Список вопросов\n * https://gitlab.ertelecom.ru/web/api-content#%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B-%D0%B8-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%8B\n * - описание\n * /perm/v2/faqs?fields=faq_id,expand=categories&Cquestion&places[]=23&categories[]=31&find=счет - пример\n * categories - массив id - категорий\n * places - массив id - мест\n * find - строка поиска (по заголовку и содержимому статьи)\n * fields - массив полей в ответе, если пусто - все поля\n * expand - дополнительные поля ответа\n * @return {Promise}\n */\nexport async function getFaqArticles(incParams?:IArticlesParams):Promise {\n\n const params = convertParams(incParams);\n\n try {\n const resp = await contentRequest.get('/v2/faqs', { params });\n const { data } = resp;\n\n return ({\n ok: true,\n items: data,\n error: null,\n });\n } catch (err) {\n if (isAxiosError(err)) {\n return ({\n ok: false,\n items: [],\n error: err.response?.statusText,\n });\n }\n\n captureException(err);\n\n return ({\n ok: false,\n items: [],\n error: 'Внутренняя ошибка сервера',\n });\n }\n}\n\nexport function getSearchFormattedResult(result: IArticlesResp): IResultSearch {\n const { items = [], error } = result;\n const search: IItem[] = items.map((article) => ({\n id: article.faq_id,\n name: article.question,\n slug: article.slug,\n categorySlug: get(article, 'categories[0].slug'),\n }));\n\n return { error, search, basePath: '/service/knowledgebase' };\n}\n\n// ------------------------------------------------------------------------- //\n// Вопросы и ответы, получение записи по id\ninterface IFaqArticleParams {\n providerId: number,\n expand?: Array,\n slug: string,\n}\n\nexport interface IArticleResp {\n ok: boolean,\n data: IFaqArticle | null,\n error: string | undefined | null,\n}\n\n/**\n * Вопросы и ответы, получение записи по id или slug\n * @return {Promise}\n */\nexport async function getFaqArticleById(\n articleId: number,\n incParams?: Omit,\n):Promise {\n const params = convertParams(incParams);\n\n try {\n const resp = await contentRequest.get(`/v2/faqs${articleId ? `/${articleId}` : ''}`, { params });\n const { data } = resp;\n return ({\n ok: true,\n data,\n error: null,\n });\n } catch (err) {\n if (isAxiosError(err)) {\n return ({\n ok: false,\n data: null,\n error: err.response?.statusText,\n });\n }\n\n captureException(err);\n\n return ({\n ok: false,\n data: null,\n error: 'Внутренняя ошибка сервера',\n });\n }\n}\n\n/**\n * Вопросы и ответы, получение записи по slug\n * @return {Promise}\n */\nexport async function getFaqArticle(incParams?:IFaqArticleParams): Promise {\n return getFaqArticleById(0, incParams);\n}\n","import cookie from 'react-cookies';\nimport { captureException } from '@sentry/node';\n\nimport { isAxiosError } from '@r1-frontend/do-request/guards/isAxiosError';\nimport { ResponseDto } from '@r1-frontend/api-domru/api-content/v1/geography/get-city-info';\n\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport contentRequest from '~/src/api/requests/contentRequest';\nimport { COOKIE_DOMAIN, COOKIE_MAX_AGE_LONG, PROVIDER_ID_COOKIE } from '~/src/constants';\nimport { IServResponseWithCookie } from '~/src/helpers/cookie';\n\nexport enum ECityInfoExpand {\n Promolines = 'promolines',\n}\n\ninterface IParams {\n domain?: string,\n city_id?: number,\n filter?: Array,\n active?: boolean,\n providerId?: number,\n expand?: Array,\n}\n\ninterface IResp {\n ok: boolean,\n data: ResponseDto | null,\n error: string,\n}\n\n/**\n * GET-запрос свойств города\n *\n * /v1/geography/get-city-info?filter=city_id,id,domain&city_id=1&onlyActive=true\n * @param providerId - айди провайдера\n * @param domain - домен города\n * @param filter - возвращаемые поля, если не указано то вернет все\n * @param active - искать в только активных или во всех городах\n * @param expand - специальные поля\n * @returns {Promise}\n */\nexport const getCityInfo = async({ providerId, city_id, domain, filter, active = false, expand }: IParams): Promise => {\n const params = {\n providerId,\n city_id,\n domain,\n filter: filter?.join(','),\n onlyActive: active,\n expand: expand?.join(','),\n };\n\n try {\n const resp = await contentRequest.get('/v1/geography/get-city-info', { params });\n\n return {\n ok: true,\n data: resp.data,\n error: '',\n };\n } catch (err) {\n if (isAxiosError(err)) {\n return {\n ok: false,\n data: null,\n error: err.response?.statusText || '',\n };\n }\n\n captureException(err);\n\n return {\n ok: false,\n data: null,\n error: 'Внутренняя ошибка сервера',\n };\n }\n};\n\nexport const setProviderIdCookie = (providerId: number, response?: IServResponseWithCookie): void => {\n const cookieConfig = {\n maxAge: COOKIE_MAX_AGE_LONG,\n domain: COOKIE_DOMAIN,\n path: '/',\n };\n\n if (isServerSide()) {\n response?.cookie(PROVIDER_ID_COOKIE, providerId, cookieConfig);\n } else {\n cookie.save(PROVIDER_ID_COOKIE, providerId, cookieConfig);\n }\n};\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\nimport axios from 'axios';\nimport { stringify } from 'qs';\nimport cookies from 'react-cookies';\n\nimport { ACCESS_TOKEN_COOKIE, NO_CACHE_COOKIE } from '~/src/constants';\n\n/**\n * Запрос в ApiContent\n */\nconst axiosContent = axios.create({\n baseURL: isServerSide()\n ? process.env.NEXT_PUBLIC_HOST_API_CONTENT_INNER || process.env.NEXT_PUBLIC_HOST_API_CONTENT\n : process.env.NEXT_PUBLIC_HOST_API_CONTENT,\n});\n\naxiosContent.interceptors.request.use(\n (config) => {\n const token = cookies.load(ACCESS_TOKEN_COOKIE);\n const noCacheKey = cookies.load(NO_CACHE_COOKIE);\n\n const headers = {\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (!config.headers['Authorization'] && token) {\n headers['Authorization'] = `Bearer ${ token }`;\n }\n\n if (noCacheKey) {\n headers['no-cache-key'] = noCacheKey;\n }\n config.headers = { ...config.headers, ...headers };\n\n return config;\n },\n (error) => Promise.reject(error),\n);\n\n/**\n * @deprecated\n * @type {AxiosInstance}\n */\nconst contentRequest = Object.create(axiosContent);\n\ncontentRequest.get = async(url, options) => {\n if (options) {\n options.paramsSerializer = params => {\n return stringify(params);\n };\n }\n return axiosContent.get(url, options);\n};\nexport default contentRequest;\n","import styled from 'styled-components';\n\n// @ts-ignore\nimport Carousel from '@r1-frontend/ui-react/deprecated/carousel';\n\nimport { breakPoints } from '~/src/features/domru-bonus/styled';\n\nexport const BonusCarousel = styled(Carousel)`\n & > div {\n padding-bottom: 0;\n & > div {\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 75%;\n }\n @media (max-width: ${breakPoints.tablet}) {\n width: 100%;\n }\n @media (max-width: ${breakPoints.mobile}) {\n touch-action: auto;\n pointer-events: initial;\n }\n }\n }\n`;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n width: calc(100% - 20px);\n max-width: 300px;\n min-height: 371px;\n padding: 16px;\n border-radius: 16px;\n background: ${COLORS.BgMain};\n`;\n\nexport const CardImg = styled.div`\n position: relative;\n width: 100%;\n height: 131px;\n background: none;\n margin-bottom: 12px;\n\n img {\n object-fit: contain;\n object-position: center;\n width: 80%;\n height: auto;\n margin: 0 auto;\n }\n`;\n\nexport const CardTitle = styled.p`\n ${FONTS.L};\n margin-bottom: 6px;\n white-space: pre-wrap;\n`;\n\nexport const CardDesc = styled.div`\n flex: 1 1 auto;\n ${FONTS.XS};\n white-space: pre-wrap;\n p {\n margin-top: 1.5em;\n }\n\n a {\n ${FONTS.MediumS};\n color: ${COLORS.Link};\n transition: 0.3s;\n\n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n }\n`;\n","import { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\n\nimport * as PC from './styled';\n\nexport interface IPartnerProps {\n image: string,\n title: string,\n body: string,\n advertiserName: string,\n advertiserErid: string,\n}\n\nconst PartnerCard = ({ image, title, body, advertiserName, advertiserErid }: IPartnerProps): JSX.Element => {\n return (\n \n \n \n {advertiserName && advertiserErid &&\n \n \n \n }\n \n {title}\n \n \n );\n};\n\nexport default PartnerCard;\n","import { getABNVariant } from '~/src/helpers/abn-tests';\n\nexport const LOYALTY_PROGRAM_TERMS = {\n testName: 'loyalty_program_terms',\n variants: {\n on: 'lpt_on',\n off: 'lpt_off',\n },\n};\n\nexport const getIsAbnLoyaltyProgramEnabled = () => {\n return getABNVariant(LOYALTY_PROGRAM_TERMS.testName) === LOYALTY_PROGRAM_TERMS.variants.on;\n};\n","import { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport PartnerCard from '~/src/features/domru-bonus/components/PartnerCard';\n\nimport { BonusCarousel } from '~/src/features/domru-bonus/components/Carusel/styled';\n\nconst breakpoints = [\n { width: 0, slidesToShow: 1 },\n { width: 680, slidesToShow: 2 },\n { width: 1024, slidesToShow: 3 },\n { width: 1599, slidesToShow: 4 },\n];\n\ninterface IProps {\n partners: IShopItem[],\n}\n\nconst Partners = ({ partners }: IProps):JSX.Element => {\n return (\n \n {partners.map((partner) => {\n const { id, title, body, image, advertising } = partner;\n return (\n \n );\n })}\n \n );\n};\n\nexport default Partners;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { FlexBoxRow } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport GridContainer from '@r1-frontend/ui-react/components/layouts/gridContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const breakPoints = {\n sDesktop: '1599px',\n laptop: '1365px',\n tablet: '1023px',\n mobile: '767px',\n};\n\nexport const Wrapper = styled.div`\n width: 100%;\n overflow: hidden;\n background: ${COLORS.lightGrey};\n`;\n\nexport const Grid = styled(GridContainer)`\n display: flex;\n flex-direction: column;\n margin-bottom: 116px;\n\n @media (max-width: ${breakPoints.laptop}) {\n margin-bottom: 112px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-bottom: 64px;\n }\n`;\n\nexport const CaruselRow = styled(FlexBoxRow)`\n width: 100%;\n z-index: 0;\n`;\n\nexport const SectionRow = styled(FlexBoxRow)`\n flex-wrap: nowrap;\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n }\n z-index: 1;\n`;\n\nexport const FormRow = styled(FlexBoxRow)`\n flex-direction: column;\n background: ${COLORS.white};\n border-radius: 16px;\n padding: 32px;\n`;\n\nexport const Title = styled.p`\n ${FONTS.XXL};\n margin-bottom: 32px;\n\n @media (max-width: ${breakPoints.laptop}) {\n max-width: 240px;\n ${FONTS.L};\n margin-bottom: 20px;\n }\n`;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { EExpandShopItems, EShopCategory } from './requestDto';\n\nexport const shopItems = (providerId: number, accessToken: string, category?: EShopCategory[], expand?: EExpandShopItems[]): IRequest => ({\n uri: '/v1/shop/items',\n method: 'GET',\n headers: {\n 'ProviderId': `${providerId}`,\n 'Authorization': `Bearer ${accessToken}`,\n },\n queryParams: {\n category: category?.join(','),\n expand: expand?.join(','),\n },\n});\n\n","export enum EShopCategory {\n Antiviruses = 'antiviruses',\n SpeedBonuses = 'speed-bonuses',\n Routers = 'routers',\n Intercom = 'intercom',\n Sale = 'special-offers',\n PartnerServices = 'partner-service-with-phone-check',\n Decoders = 'decoders',\n BonusToAll = 'bonus-to-all',\n YandexStation = 'yandex-stanciya',\n YandexStationLite = 'yandex-stanciya-lite',\n SafeKids = 'safe-kids',\n LoyaltyProgram = 'loyalty-program',\n Products = 'products',\n Subscriptions = 'subscriptions',\n Multibundle = 'multibundle',\n Videocontrol = 'videocontrol',\n}\n\nexport enum EExpandShopItems {\n Advertising = 'advertising',\n Category = 'category',\n Props = 'props',\n Labels = 'labels',\n CategoryProps = 'category.props',\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IRegistrationResponse {\n loyaltyId: number,\n loyaltyNumber: number,\n welcomeBonus: number,\n}\n\ninterface IRegistrationRequest {\n phone: string,\n email?: string,\n}\n\n/*\n* Регистрация в программе лояльности\n* https://master.api-loyalty.sandbox.d2c.r-one.io/docs/v1#/Loyalty%20Program/5c4fe33f98b84c5b4989aef001289340\n* */\nexport const registration = (providerId: number, { email = '', phone }: IRegistrationRequest): IRequest => ({\n uri: '/v1/program/registration',\n method: 'POST',\n withAuth: true,\n headers: { providerId: `${providerId}` },\n body: JSON.stringify({\n phoneNumber: phone,\n email,\n }),\n});\n","import divideByThousand from '@r1-frontend/ui-react/components/costs/helpers/divideByThousand';\nimport { NBSP, RubleSymbol } from '@r1-frontend/ui-react/tokens/symbols';\n\ntype TMonthlyProps = {\n /**\n * Цена в месяц\n */\n monthly: boolean,\n annually?: never,\n}\n\ntype TAnnuallyProps = {\n monthly?: never,\n /**\n * Цена в год\n */\n annually: boolean,\n}\n\nexport type TFormatProps = TMonthlyProps | TAnnuallyProps;\n\nconst format = (cost: number | string, is?: TFormatProps) => {\n const period = !is ? '' : is.monthly ? '/мес' : '/год';\n\n return `${divideByThousand(cost)}${NBSP}${RubleSymbol}${period}`;\n};\n\nexport default format;\n","const divideByThousand = (cost: number | string): string => {\n if (typeof cost === 'string') {\n cost = parseFloat(cost);\n }\n\n return new Intl.NumberFormat('ru', {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(cost);\n};\n\nexport default divideByThousand;\n","import { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst themes = {\n bordered: {\n background: COLORS.BgMain,\n borderWidth: '1px',\n radius: '4px',\n padding: '20px',\n mobilePadding: '15px',\n color: COLORS.TextPrimary,\n },\n simple: {\n background: 'transparent',\n borderWidth: '1px 0',\n radius: '0px',\n padding: '20px 0',\n mobilePadding: '15px 0',\n color: COLORS.TextPrimary,\n },\n light: {\n border: COLORS.BgLight,\n background: COLORS.BgLight,\n color: COLORS.TextPrimary,\n colorArrow: COLORS.GRAY_DARK,\n backgroundIcon: COLORS.BgSecondary,\n borderIcon: COLORS.BgSecondary,\n colorArrowIsOpen: COLORS.GRAY_DARK,\n backgroundIconIsOpen: COLORS.Outline_Light,\n borderIconIsOpen: COLORS.Outline_Light,\n radius: BorderRadius.componentRadius,\n padding: '20px 24px',\n mobilePadding: '15px',\n storyColor: COLORS.BgMain,\n },\n dark: {\n border: COLORS.Control,\n background: COLORS.Control,\n color: COLORS.TextWhite,\n colorArrow: COLORS.Control,\n backgroundIcon: COLORS.GRAY_DARK,\n borderIcon: COLORS.GRAY_DARK,\n colorArrowIsOpen: COLORS.Control,\n backgroundIconIsOpen: COLORS.TextWhite,\n borderIconIsOpen: COLORS.TextWhite,\n radius: BorderRadius.componentRadius,\n padding: '20px 24px',\n mobilePadding: '15px',\n storyColor: '#3D3D3D',\n },\n};\n\nexport default themes;\n","import { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled, { ThemeProvider } from 'styled-components';\n\nimport themes from './themes.js';\n\nconst Wrapper = styled.div`\n flex-direction: column;\n width: 100%;\n background: ${props => props.theme.background};\n border: 1px solid ${({ theme }) => theme.border ? theme.border : COLORS.GRAY_LIGHT};\n border-width: ${props => props.theme.borderWidth};\n border-radius: ${props => props.theme.radius};\n padding: ${props => props.theme.padding};\n color: ${({ theme }) => theme.color ? theme.color : COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: ${props => props.theme.mobilePadding};\n }\n`;\n\nconst AccordionTitle = styled.div`\n ${FONTS.L};\n width: 100%;\n justify-content: space-between;\n align-items: center;\n flex-wrap: nowrap;\n cursor: pointer;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.S};\n }\n`;\n\nconst Title = styled.div`\n flex-grow: 1;\n width: calc(100% - 53px); \n ${props => props.theme.desktopFont || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: calc(100% - 39px);\n ${props => props.theme.mobileFont || ''};\n }\n`;\n\nconst Icon = styled.span`\n position:relative;\n margin-left: 20px;\n flex: 0 0 36px;\n height: 36px;\n border-radius: 50%;\n transform: ${props => props.open ? 'none' : 'scaleY(-1)'};\n transition: all 0.2s ease-in;\n svg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n circle {\n stroke: ${({ borderIcon }) => borderIcon ? borderIcon : COLORS.GRAY_DARK};\n fill: ${({ backgroundIcon }) => backgroundIcon ? backgroundIcon : COLORS.GRAY_LIGHT};\n }\n path {\n stroke: ${({ colorArrow }) => colorArrow ? colorArrow : COLORS.GRAY_DARK};\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-left: 15px;\n background-size: contain;\n }\n`;\n\nconst Border = styled.div`\n height: 1px;\n width: 100%;\n background: transparent;\n margin: 8px 0;\n`;\n\nconst AccordionBody = styled.div`\n width: 100%;\n max-height: ${props => props.open ? '100%' : '0'};\n ${FONTS.S};\n overflow: hidden;\n transition: max-height 0.2s ${props => props.open ? 'ease-in' : 'ease-out'};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n\nconst DEFAULT_THEME = 'light';\n\n/**\n * @deprecated\n * use instead @r1-frontend/ui-react/src/components/accordions/Accordion\n */\nexport default class Accordion extends React.Component {\n static propTypes = {\n defaultOpen: PropTypes.bool,\n open: PropTypes.bool,\n withDividingBorder: PropTypes.bool,\n toggle: PropTypes.func,\n customTheme: PropTypes.object,\n };\n\n static defaultProps = {\n defaultOpen: false,\n withDividingBorder: true,\n theme: DEFAULT_THEME,\n customTheme: {},\n toggle: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n open: props.defaultOpen,\n };\n }\n\n toggle = () => {\n this.props.toggle();\n this.setState(state => ({\n open: !state.open,\n }));\n }\n\n render() {\n const { children, title, open = this.state.open, onOpen = this.toggle, theme, customTheme, withDividingBorder, ...rest } = this.props;\n let colors = themes[theme] || themes[DEFAULT_THEME];\n if (customTheme) {\n colors = { ...colors, ...customTheme };\n }\n return (\n \n \n \n {title}\n \n \n \n \n \n \n \n \n {withDividingBorder && }\n {children}\n \n \n \n );\n }\n}\n"],"names":["window","__NEXT_P","push","CardWrapper","styled","FlexBoxCol","COLORS","breakPoints","CardTitle","FONTS","CardText","title","text","AC","dangerouslySetInnerHTML","__html","FaqContainer","SAccordion","Accordion","AccordionContent","faq","accordionTitleRef","useRef","preparedFaq","useMemo","reduce","acc","item","faq_id","question","answer","length","IndentContainer","$united","H3","$withIndent","id","ref","ST","map","data-test","ICON_SIZE","CardIcon","p","icon","children","SC","CardDescription","CardLink","desc","link","CS","Link","href","path","passHref","rules","cashback","isAbnProgramTermsEnabled","format","CustomCarousel","BonusCarousel","breakpoints","width","slidesToShow","getIsAbnLoyaltyProgramEnabled","RS","visibleCardWidth","responsive","showArrows","showDots","showTransparent","hideArrow","rule","index","RuleCard","ICON_SIZE_MOBILE","IconBlock","ResponsePopup","DefaultPopup","Title","Text","Button","BaseButton","type","message","isOpen","onClose","NON_BREAKING_SPACE","span","onClick","OpenChat","btnTypes","inputPhone","phoneDecorator","InputSimple","InfoBlock","FormText","FormRow","FlexBoxRow","PhoneInput","initPopupState","scrollRef","providerId","useSelector","selectProviderId","useState","popupState","setPopupState","emailInput","phone","setPhone","email","setEmail","isValidInputs","setIsValidInputs","useEffect","emailRef","current","emailHasError","state","hasError","isValid","value","onSubmit","doRequest","registration","isSuccess","buttonText","xs","sm","md","required","onChange","placeholder","errorMessage","aria-label","name","autoComplete","className","Input","disabled","PolicyNote","agreeUrl","POLICY_PAGE_LINK","PopupResponse","HeadWrapper","Row","Col","SubTitle","Image","headerClickHandler","HS","GridContainer","src","alt","partners","loyaltyIsRegistered","loyaltyIsAvailable","companyName","router","useRouter","isAuth","auth","footerFormRef","useCallback","dataLayerPush","event","EVENTS","category","CATEGORIES","action","ACTIONS","label","scrollIntoView","behavior","block","USER_LOGIN_ROUTE","Header","Rules","AccumulateCard","SpendCard","Partners","div","FooterForm","FaqBlock","DomruBonusPage","currentCity","getCurrentCity","selectCompanyName","loyaltyProgramCashback","Layout","cityIn","description","withMenu","withChat","withFooter","DomruBonus","getInitialProps","options","respPl","validatedAccessToken","res","store","city","isAvailableOnCity","faqData","result","loyaltyAvailableResp","available","initialProps","isNeedAuthData","getState","provider","getRequester","req","getCityInfo","filter","active","ok","data","pl_available","Promise","all","getFaqArticles","places","EPlaces","nonPermanentRedirect","location","apiContent","shopItems","EShopCategory","EExpandShopItems","plAvailable","payload","items","undefined","apiLoyalty","availability","EAvailability","getFaqCategories","params","resp","err","contentRequest","error","isAxiosError","response","statusText","captureException","convertParams","incParams","fields","join","expand","slug","category_slug","find","getSearchFormattedResult","search","article","categorySlug","get","basePath","getFaqArticleById","articleId","getFaqArticle","Main","Question","Search","Loyalty","EExpand","EFields","ECityInfoExpand","city_id","domain","onlyActive","axiosContent","axios","baseURL","isServerSide","process","interceptors","request","use","config","token","cookies","ACCESS_TOKEN_COOKIE","noCacheKey","NO_CACHE_COOKIE","headers","reject","Object","create","url","paramsSerializer","stringify","Carousel","CardImg","CardDesc","image","body","advertiserName","advertiserErid","PC","img","NonStaticContainer","$top","$right","AdvertisingLabelWithTooltip","erid","tooltip","position","LOYALTY_PROGRAM_TERMS","on","off","getABNVariant","partner","advertising","PartnerCard","sDesktop","laptop","tablet","mobile","Wrapper","Grid","CaruselRow","SectionRow","accessToken","uri","method","queryParams","withAuth","JSON","phoneNumber","cost","is","period","monthly","NBSP","divideByThousand","RubleSymbol","parseFloat","Intl","NumberFormat","style","minimumFractionDigits","maximumFractionDigits","bordered","background","borderWidth","radius","padding","mobilePadding","color","simple","light","border","colorArrow","backgroundIcon","borderIcon","colorArrowIsOpen","backgroundIconIsOpen","borderIconIsOpen","BorderRadius","storyColor","dark","props","theme","wideBreakpoints","AccordionTitle","desktopFont","mobileFont","Icon","open","Border","AccordionBody","DEFAULT_THEME","toggle","setState","defaultOpen","render","this","onOpen","customTheme","withDividingBorder","rest","colors","themes","ThemeProvider","itemProp","svg","viewBox","fill","xmlns","circle","cx","cy","r","strokeWidth","transform","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","itemScope","itemType","React","propTypes","PropTypes","defaultProps"],"sourceRoot":""}