{"version":3,"file":"static/chunks/pages/_site/[city]/about-7a877651e5a9180f.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/lodash/map.js","webpack://_N_E/?845f","webpack://_N_E/../../packages/api-domru/src/api-content/v1/page/view/index.ts","webpack://_N_E/./src/features/about/content.js","webpack://_N_E/./src/features/about/styled.js","webpack://_N_E/./src/features/about/index.js","webpack://_N_E/./src/features/aboutV2/components/Header/styled.ts","webpack://_N_E/./src/features/aboutV2/components/Header/index.tsx","webpack://_N_E/./src/features/aboutV2/components/History/styled.ts","webpack://_N_E/./src/features/aboutV2/components/History/index.tsx","webpack://_N_E/./src/features/aboutV2/components/Apps/data.ts","webpack://_N_E/./src/features/aboutV2/components/Apps/styled.ts","webpack://_N_E/./src/features/aboutV2/components/Apps/index.tsx","webpack://_N_E/./src/features/aboutV2/components/ContentBlock/styled.ts","webpack://_N_E/./src/features/aboutV2/components/ContentBlock/index.tsx","webpack://_N_E/./src/features/aboutV2/components/Disclaimer/data.ts","webpack://_N_E/./src/features/aboutV2/components/Disclaimer/index.tsx","webpack://_N_E/./src/features/aboutV2/components/Join/styled.ts","webpack://_N_E/./src/features/aboutV2/components/Join/index.tsx","webpack://_N_E/./src/features/aboutV2/components/Products/data.ts","webpack://_N_E/./src/features/aboutV2/components/Products/styled.ts","webpack://_N_E/./src/features/aboutV2/components/Products/index.tsx","webpack://_N_E/./src/features/aboutV2/components/Stats/styled.ts","webpack://_N_E/./src/features/aboutV2/components/Stats/index.tsx","webpack://_N_E/./src/features/aboutV2/styled.ts","webpack://_N_E/./src/features/aboutV2/index.tsx","webpack://_N_E/./src/features/aboutV2/constants/abnVariants.ts","webpack://_N_E/./pages/_site/[city]/about.tsx","webpack://_N_E/./src/features/aboutV2/helpers/index.ts","webpack://_N_E/./src/helpers/hooks/useValueByBreakpoint.ts","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultDots/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultDots/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/SlideCarousel/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/SlideCarousel/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Body.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Header.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Wrapper.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/helpers/image.ts","webpack://_N_E/../../packages/ui-react/src/components/typography/TextWrapper/index.ts","webpack://_N_E/../../packages/ui-react/src/components/typography/formatting/index.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/BlockContainer.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/arrow.svg"],"sourcesContent":["var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/about\",\n function () {\n return require(\"private-next-pages/_site/[city]/about.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/about\"])\n });\n }\n ","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { TAdvertising, TContentBlock, TResponseDto } from './dto/ResponseDto';\n/*\n* Данные страницы\n* https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B/get_v1_page_view\n*/\nconst pageView = (providerId: number, id: string): IRequest => ({\n uri: 'v1/page/view',\n method: 'GET',\n queryParams: { providerId, id },\n});\n\nexport default pageView;\n\nexport type {\n TAdvertising,\n TContentBlock,\n TResponseDto,\n};\n","export const stat = [\n {\n green: '№1 в России',\n text: 'по средней скорости доступа в интернет — 93 мбит/с',\n },\n {\n green: '1258',\n text: 'населенных пунктов подключено',\n },\n {\n green: '13,4 млн',\n text: 'домохозяйств в сети',\n },\n];\n\nexport const story = [\n {\n year: '2022 — новое начало',\n text: 'Дом.ру проводит ребрендинг. Теперь мы — проводник в осознанный цифровой мир. ' +\n 'Совместно с «Ростехом» завершается сделка по приобретению «АКАДО Холдинг». ' +\n 'Масштабные инвестиции стали частью стратегии компании по развитию на рынке Москвы и Московской области.',\n },\n {\n year: '2021 — новые продукты и пакетные предложения',\n text: 'Вышла новая линейка пакетных тарифов «Засмотрись», с подпиской на популярные онлайн-кинотеатры, ' +\n 'скоростным интернетом, более сотней телеканалов и новой ТВ-приставкой с голосовым поиском на выгодных ' +\n 'условиях, позволяющих клиентам сэкономить более 40%. Можно выбрать пакет с Кинопоиском и Яндекс.Плюс ' +\n 'или с онлайн-кинотеатром IVI. Онлайн-кинотеатры Start и Amediateka входят в оба пакета. ' +\n 'Киберспортсмены оценили новые скорости игровых тарифов Дом.ру до 600 Мбит/с на первом открытом чемпионате по ' +\n 'CounterStrike среди 38 городов Российской Федерации. Призовой фонд кибертурнира Дом.ру составил 500 000 рублей. ' +\n 'С нашей поддержкой в Перми провели первый Международный кинофестиваль «Форма жизни» («SHAPE OF LIFE»), ' +\n 'посвященный вопросам сохранения окружающей среды и всех форм жизни, представленных на планете. Дом.ру ' +\n 'выступил партнером Двадцатых молодежных Дельфийских игр России, оказав масштабную телеком-поддержку гостям, ' +\n 'участникам и организаторам.',\n },\n {\n year: '2020 — бесконтактное развитие',\n text: 'Дом.ру запустил сервис дистанционной видео поддержки клиентов и внедрил бесконтактное подключение телеком-услуг.' +\n ' «Дом.ру пригласил поклонников компьютерных игр к участию в турнире #ИграемДома, ' +\n 'организованном Федерацией компьютерного спорта России. В рамках партнерства «Дом.ру ' +\n 'показал трансляцию финала игр по Dota 2 и провел прямой эфир с киберспортивным ' +\n 'талантом студии аналитики RuHub Ярославом NS Кузнецовым. ' +\n 'Компания поддержала Ночь музеев, пригласив клиентов на авторские онлайн-экскурсии по городам и музеям, ' +\n 'мастер-классы по живописи.',\n },\n {\n year: '2019 — год рождения приставки Movix ',\n text: 'Представлена первая «умная» цифровая ТВ-приставка на базе Android — Movix Pro. Дом.ру ' +\n 'первым среди операторов платного ТВ в России запускает собственное приложение для ' +\n 'очков виртуальной реальности. На виртуальном экране доступно 20 телеканалов. Проведен второй ' +\n 'открытый собственный чемпионат России по Dota 2 с призовым фондом 1 млн рублей.',\n },\n {\n year: '2018 — переходим на новый уровень',\n text: 'Дом.ру запускает мультиплатформенное ТВ «Дом.ру Movix, которое можно смотреть с ' +\n 'экрана телевизора через приложение для Smart TV, с мобильных устройств или на сайте movix.ru. ' +\n 'Запускается новая линейка высокоскоростных Wi-Fi роутеров, поддерживающих скорость от 100 Мбит/c и ' +\n 'работающих в 2 диапазонах частот. Проект «Умные домофоны» запущен в 25 городах. Монтированная емкость сети Дом.ру ' +\n 'увеличена на 465 тысяч квартир.',\n },\n {\n year: '2017 — поддержка Чемпионата мира',\n text: 'В преддверии Чемпионата мира по футболу и Кубка Конфедераций в Санкт-Петербурге разворачивается ' +\n 'многофункциональная инфраструктура, включающая общедоступную Wi-Fi сеть, систему видеомониторинга на ' +\n 'улицах города и оповещения на спортивных объектах. Запущены пилотные проекты в нефтедобывающей, ' +\n 'сельскохозяйственной и энергетической отраслях. Завершаются сделки по приобретению крупных федеральных и ' +\n 'региональных операторов ООО «Новотелеком», АО «ТКС-Нева» и АО «Акадо-Екатеринбург», ООО «Коламбия Телеком».',\n },\n {\n year: '2016 — очень быстрый рост',\n text: 'Дом.ру признан самым быстрорастущим оператором связи в России. Международное рейтинговое агентство ' +\n 'Standard and Poor’s присвоило холдингу рейтинг B+, а Moody’s улучшили прогноз по текущему ' +\n 'рейтингу B2 на позитивный. В Москве запущена городская Wi-Fi сеть из 1100 точек доступа внутри Садового кольца.',\n },\n {\n year: '2015 — год запуска Дом.ру TV Mini',\n text: 'Корейские HUMAX и KAON, французская Ekinops — сотрудничают с Дом.ру. Запуск серийного производства ' +\n 'ТВ-приставки «Дом.ру TV Mini» в Перми. Расширение возможностей сервиса мультискрин «Дом.ру TV to Go» ' +\n 'позволило смотреть ТВ-программы и шоу с экранов гаджетов в любой точке России, где есть беспроводной ' +\n 'доступ в интернет.',\n },\n {\n year: '2014 — новые умные устройства',\n text: 'Представлены 2 новых устройства для подключения к цифровому ТВ. Инновационная ТВ-приставка «Дом.ру TV» с ' +\n 'сервисами, как multiscreen, catch-up, видеотека, многоуровневый поиск контента, мобильный пульт. ' +\n 'Второе устройство «Дом.ру TV Mini» можно подключить к любому телевизору и устаревшим моделям. 163 телеканала, ' +\n 'из них 56 каналов в HD-формате, что является максимумом на российском рынке.',\n },\n {\n year: '2013 — самые-самые во многом',\n text: 'Укрепили позиции по самому большому количеству HD-каналов в России, увеличив их число с 35 до 50. ' +\n 'Еще более 100 каналов работает в стандартном цифровом формате. Wi-Fi сеть провайдера интернета ' +\n 'Дом.ру — самая большая в России: 56 городов, 5 000 бесплатных точек.',\n },\n {\n year: '2012 — выходим на b2b рынок',\n text: 'Запуск Дом.ру Бизнес для корпоративных клиентов. Запуск нового формата HD-телевидения ' +\n '«Дом.ру TV» в 19 городах. Ускорение до 100 Мбит/c. В ноябре Дом.ру подключил 5-миллионного абонента.',\n },\n {\n year: '2011 — год стартапа',\n text: 'Запущено 15 start up-проектов: в Уфе, Кургане, Туле, Ульяновске, Магнитогорске, Дзержинске, Сызрани, ' +\n 'Рязани, Иркутске, Томске, Брянске, Чебоксарах, Твери, Курске и Ростове-на-Дону.',\n },\n {\n year: '2010 — начало пути',\n text: 'Начало реализации лидерской стратегии Дом.ру.',\n },\n];\n\nexport const description = [\n {\n icon: '',\n title: 'Подарки и скидки',\n text:'Бесплатно и каждый месяц новые. ТВ-каналы, каталоги с фильмами и сериалами, антивирусы, бонусы скорости и многое другое.',\n },\n {\n icon: '',\n title: 'Простое управление услугами',\n text:'Решайте вопросы в личном кабинете и мобильном приложении. Легко меняйте тариф, подключайте или приостанавливайте услуги.',\n link:'',\n },\n {\n icon: '',\n title: 'Круглосуточную техподдержку',\n text:'Ответим в любое время и поможем решить все вопросы. Общаемся в чате на сайте, в мобильном приложении и по телефону.',\n link:'',\n },\n {\n icon: '',\n title: 'Надежную интернет-сеть',\n text:'Используем надежную технологию FTTB и мониторим сеть 24/7. Интернет, который не подведет вас.',\n link:'',\n },\n];\n\nexport const business = [\n {\n icon: '',\n title: 'Интернет в квартиру и частный дом',\n text:'Одинаково мощный на всех устройствах. Смотрите фильмы онлайн на ноутбуке, скачивайте файлы и играйте без перебоев.',\n link:{\n text: 'Посмотреть тарифы интернета',\n href: '/internet',\n },\n },\n {\n icon: '',\n title: 'Засмотрись всей семьей',\n text:'Кино и сериалы из топовых онлайн-кинотеатров, мощный интернет и ТВ-каналы на любой вкус в высоком качестве.',\n link: {\n text: 'Узнать больше про цифровое ТВ',\n href: '/movix-new',\n },\n },\n {\n icon: '',\n title: 'Все, что вам важно — под присмотром',\n text:'Узнавайте как дела дома прямо с экрана собственного смартфона. Смотрите телеархив и получайте уведомления от камер.',\n link:{\n text: 'Узнать больше про мобильное ТВ',\n href: '/domru-tv/mobile',\n },\n },\n];\n","import { COLORS as COLORS_OLD } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport GridContainer from '@r1-frontend/ui-react/components/layouts/gridContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled from 'styled-components';\n\nconst breakPoint = {\n DESKTOP: '1600px',\n LAPTOP: '1187px',\n TABLET: '980px',\n MOBILE: '640px',\n};\n\nexport const About = styled.div`\n flex-direction: column;\n width: 100%;\n`;\n\nexport const Section = styled.section`\n width: 100%;\n background-color: ${p => p.bgColor || 'transparent'};\n`;\n\nexport const Grid = styled(GridContainer)`\n padding: 80px 0 80px;\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n max-width: 985px;\n min-width: 280px;\n align-items: flex-start;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n padding: 40px 20px 40px;\n }\n\n @media (max-width: ${breakPoint.LAPTOP}) {\n padding: 80px 7% 80px;\n }\n`;\n\nexport const LastGrid = styled(Grid)`\n padding: 80px 7% 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const ContentRow = styled.div`\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: start;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n width: 100%;\n min-width: 0;\n }\n`;\n\nexport const TopSection = styled.section`\n width: 100%;\n background: url('/static/images/about/head_backfon-min.jpg');\n background-repeat: no-repeat;\n vertical-align: top;\n object-fit: contain;\n transition: opacity .5s ease-out;\n min-height: 80vh;\n\n @media (min-width: ${breakPoint.LAPTOP}) {\n background-size: 100%;\n }\n`;\n\nexport const TopContent = styled.div`\n margin: 0 auto;\n max-width: 985px;\n height: 100%;\n justify-content: center;\n align-items: center;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n width: 100%;\n min-width: 0;\n }\n`;\n\nexport const Frame = styled.div`\n padding: 50px;\n background: rgba(255,255,255,.9);\n text-align: center;\n vertical-align: baseline;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n position: relative;\n bottom: auto;\n margin-top: 250px;\n padding: 40px 20px;\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.XXL};\n`;\n\nexport const TextMB20 = styled(Text)`\n margin-bottom: 20px;\n`;\n\nexport const MainTitle = styled.h1`\n margin: 0 auto 5px;\n ${FONTS.H1};\n\n @media (max-width: ${breakPoint.MOBILE}) {\n margin-bottom: 20px;\n ${FONTS.H2};\n }\n`;\n\nexport const SectionHeading = styled.h2`\n ${FONTS.H1};\n margin-bottom: 40px;\n width: 100%;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n margin-bottom: 20px;\n ${FONTS.H2};\n }\n`;\n\nexport const BlockTitle = styled.h3`\n margin-bottom: 0;\n ${FONTS.H2};\n vertical-align:baseline;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n margin-bottom: 10px;\n ${FONTS.H4};\n }\n`;\n\nexport const SubTitle = styled.h4`\n ${FONTS.H4};\n text-align: center;\n margin: 0 auto 40px;\n`;\n\nexport const MainText = styled(Text)`\n ${FONTS.L};\n margin: 20px auto;\n`;\n\nexport const GreenText = styled(Text)`\n color: #00993b;\n ${FONTS.H1};\n text-align: center;\n margin-bottom: 20px;\n vertical-align: baseline;\n\n @media (max-width: ${breakPoint.LAPTOP}){\n ${FONTS.H1};\n }\n`;\n\nexport const Paragraph = styled.p`\n margin-bottom: 20px;\n ${FONTS.XXL};\n\n @media (max-width: ${breakPoint.LAPTOP}) {\n ${FONTS.L};\n }\n`;\n\nexport const ImageAdv = styled.img`\n width: 191px;\n height: 562px;\n`;\n\nexport const Image = styled.img`\n width: 100%;\n object-fit: contain;\n`;\n\nexport const ImageTeam = styled(Image)`\n margin-top: 30px;\n margin-bottom: -55px;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n margin-top: 0;\n }\n`;\n\nexport const Gif = styled.img`\n width: 690px;\n object-fit: contain;\n margin: 0 auto;\n\n @media (max-width: ${breakPoint.TABLET}) {\n width: 100%;;\n }\n`;\n\nexport const BlockWithIcon = styled.div`\n margin-bottom: 30px;\n flex-direction: row;\n flex-wrap: nowrap;\n`;\n\nexport const Icon = styled.div`\n display: inline-block;\n font-family: icomoon;\n font-style: normal;\n font-weight: 400;\n font-variant: normal;\n text-transform: none;\n text-decoration: none;\n width: 50px;\n font-size: 50px;\n color: ${COLORS.TextPrimary};\n float: left;\n\n @media (max-width: ${breakPoint.LAPTOP}) {\n width: 30px;\n height: 30px;\n font-size: 30px;\n}\n`;\n\nexport const TextContent = styled.div`\n max-width: 700px;\n padding-left: 20px;\n padding-top: 15px;\n line-height: 25px;\n flex-direction: column;\n align-items: flex-start;\n float: right;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n padding-top: 5px;\n }\n\n @media (max-width: ${breakPoint.LAPTOP}) {\n padding-left: 15px;\n padding-top: 3px;\n }\n`;\n\nexport const TextContentAdv = styled(TextContent)`\n max-width: 600px;\n`;\n\nexport const AdvWrapper = styled.div`\n width: auto;\n`;\n\nexport const ImageWrapper = styled.div`\n\n @media (max-width: ${breakPoint.MOBILE}) {\n display: none;\n }\n`;\n\nexport const Link = styled.a`\n ${FONTS.MediumS};\n padding-bottom: 1px;\n border-bottom: 1px solid #1e81d6;\n cursor: pointer;\n margin-bottom: 10px;\n color: ${COLORS_OLD.blue};\n transition: all 0.2s linear;\n\n &:hover {\n color: ${COLORS_OLD.red};\n border-color: ${COLORS_OLD.red};\n }\n`;\n\nexport const StoryBlock = styled.div`\n margin-bottom: 40px;\n flex-direction: column;\n`;\n\nexport const StatBlock = styled.div`\n text-align: center;\n flex-direction: column;\n`;\n\nexport const StatBlockWrapper = styled.div`\n flex-direction: row;\n width: 100%;\n justify-content: space-between;\n flex-wrap: nowrap;\n\n @media (max-width: ${breakPoint.MOBILE}) {\n flex-direction: column;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n cursor: pointer;\n text-align: center;\n margin-bottom: 3px;\n`;\n","import { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport Link from 'next/link';\nimport React from 'react';\n\nimport { business, description, stat, story } from './content';\nimport * as ST from './styled';\n\nconst About = () => {\n return (\n \n \n \n \n О Дом.ру\n Мы делаем информацию доступной, общение приятным, а связь с близкими — постоянной.\n \n \n \n \n \n Дом.ру — ведущий провайдер телекоммуникационных услуг и сервисов в России\n \n {stat.map(({ green, text }, index) => {\n return (\n \n {green}\n {text}\n \n );\n })}\n \n \n \n \n \n История Дом.ру\n {story.map(({ year, text }, index) => {\n return (\n \n {year}\n {text}\n \n );\n })}\n \n \n \n \n \n Для бизнеса и частных лиц\n {business.map(({ icon, title, text, link }, index) => {\n return (\n \n {icon}\n \n {title}\n {text}\n {link.text}\n \n \n );\n })}\n \n \n \n \n \n Вместе с подключением к Дом.ру вы получите\n \n \n {description.map(({ icon, title, text, link }, index) => {\n if (link) {\n return (\n \n {icon}\n \n {title}\n {text}\n {link.text}\n \n \n );\n } else {\n return (\n \n {icon}\n \n {title}\n {text}\n \n \n );\n }\n })}\n \n \n \n \n \n Отзывы о нашей сети\n \n \n \n \n Отчетность\n \n Как одна из крупнейших российских компаний, при работе с инвесторами и акционерамы мы\n стремимся предоставлять наиболее актуальную и важную информацию о деятельности компании.\n \n \n \n \n \n \n Заходите в гости\n Наши офисы — в 57 городах России. Найти ближайший к вам офис можно в разделе\n «\n Контакты\n ».\n \n \n \n \n \n \n Присоединяйтесь к команде\n У нас работает 22 000 сотрудников. Возможность обучения и развития как для начинающих, так и для опытных специалистов.\n \n \n \n \n \n );\n};\n\nexport default About;\n","import styled from 'styled-components';\n\nimport { progressiveBackground } from '@r1-frontend/ui-react/components/helpers/image';\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Header = styled.section<{ backgroundImage: string, backgroundImageWebp: string }>`\n width: 100%;\n height: 614px;\n ${({ backgroundImage, backgroundImageWebp }) => progressiveBackground({\n src: backgroundImage,\n webpSrc: backgroundImageWebp,\n })};\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n height: 460px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 364px;\n background-position: top;\n }\n`;\n\nexport const Container = styled(WideContainer)`\n position: relative;\n padding-top: 130px;\n justify-content: center;\n text-align: center;\n`;\n\nexport const AgeRating = styled.p`\n position: absolute;\n top: 0;\n right: 0;\n margin-top: 16px;\n ${FONTS.L};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-right: 16px;\n }\n`;\n","import { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H1 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph2, Paragraph3 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { useValueByBreakpoint } from '~/src/helpers/hooks/useValueByBreakpoint';\n\nimport * as ST from './styled';\n\nconst imgPath = '/static/images/about/v2/header-bg-';\nconst paragraphText = `Ваш надёжный помощник в${NBSP}мире цифровых технологий с${NBSP}2001 года`;\n\nconst Header = () => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n const backgroundWebpUrl = useValueByBreakpoint({\n desktop: imgPath + 'desktop.webp',\n laptop: imgPath + 'laptop.webp',\n mobile: imgPath + 'mobile.webp',\n });\n\n const backgroundUrl = useValueByBreakpoint({\n desktop: imgPath + 'desktop.png',\n laptop: imgPath + 'laptop.png',\n mobile: imgPath + 'mobile.png',\n });\n\n return (\n \n \n 18+\n \n

Дом.ру

\n {isMobile\n ? {paragraphText}\n : {paragraphText}}\n
\n
\n
\n );\n};\n\nexport default Header;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { H2, H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { BlockContainer, RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nexport const History = styled.section`\n width: 100%;\n margin-bottom: 96px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 64px;\n }\n`;\n\nexport const SBlockContainer = styled(BlockContainer)`\n display: grid;\n grid-template-columns: 0.3fr 1fr;\n grid-template-rows: repeat(auto-fill, 52px);\n grid-template-areas: 'img title' 'img text';\n column-gap: 56px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n align-items: center;\n grid-template-rows: auto;\n grid-template-areas: 'img title' 'text text';\n gap: 16px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: 1fr;\n grid-template-areas: 'img' 'title' 'text';\n gap: 12px;\n }\n`;\n\nexport const ButtonText = styled(H3)<{customColor: string}>`\n color: ${({ customColor }) => customColor};\n`;\n\nexport const SH2 = styled(H2)`\n grid-area: title;\n`;\n\nexport const SPre = styled(Pre)`\n grid-area: text;\n`;\n\nexport const ImageWrapper = styled(RounderContainer)`\n grid-area: img;\n height: 200px;\n width: 320px;\n\n img, picture {\n display: block;\n height: auto;\n width: 100%;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n height: 160px;\n width: 256px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: auto;\n margin: -16px -16px 0;\n width: calc(100% + 32px);\n margin-bottom: 12px;\n }\n`;\n","import { useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport SlideCarousel from '@r1-frontend/ui-react/components/SlideCarousel';\nimport { H2 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph3 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMedia, useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { TPreparedContentBlocks } from '~/src/features/aboutV2/helpers';\n\nimport * as ST from './styled';\n\ninterface IProps {\n history: TPreparedContentBlocks[],\n}\n\nconst History = ({ history }: IProps) => {\n const isLaptop = useMatchMedia(`(max-width: ${wideBreakpoints.laptop}) and (min-width: ${wideBreakpoints.mobile})`);\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n const [activeCard, setActiveCard] = useState(history[0]);\n\n const handleSlideClick = (id: number) => () => {\n const selectedHistory = history.find(el => el.id === id);\n if (selectedHistory) {\n setActiveCard(selectedHistory);\n }\n };\n\n return (\n \n

История Дом.ру

\n \n \n {history.map(({ alias, id }) => (\n activeCard.id === id\n ? (\n \n )\n : (\n \n )\n ))}\n \n \n \n \n \n {'Изображение,\n \n \n \n \n \n \n \n
\n );\n};\n\nexport default History;\n","const imgPath = '/static/images/about/v2/apps/';\n\nexport type TApp = {\n id: number,\n title: string,\n text: string,\n imgLogo: string,\n imgQr: string,\n imgLogoAlt: string,\n imgQrAlt: string,\n btnLink: string,\n}\n\nexport const appsData: TApp[] = [\n {\n id: 1,\n title: 'Мой Дом.ру',\n text: 'Мобильный личный кабинет. Управляйте услугами и роутером, пополняйте баланс договора и узнавайте о персональных предложениях',\n imgLogo: `${imgPath}1-dom.png`,\n imgQr: `${imgPath}1-dom-qr.png`,\n imgLogoAlt: 'Логотип приложения Мой Дом.ру',\n imgQrAlt: 'QR-код для скачивания приложения Мой Дом.ру',\n btnLink: 'https://app.dom.ru/company',\n },\n {\n id: 2,\n title: 'Умный Дом.ру',\n text: 'Безопасность вашего дома. Открывайте дверь подъезда, отвечайте на звонки и просматривайте камеру на домофоне с телефона. ' +\n 'Подключайте и настраивайте камеры видеонаблюдения',\n imgLogo: `${imgPath}2-smart-dom.png`,\n imgQr: `${imgPath}2-smart-dom-qr.png`,\n imgLogoAlt: 'Логотип приложения Умный Дом.ру',\n imgQrAlt: 'QR-код для скачивания приложения Умный Дом.ру',\n btnLink: 'https://redirect.appmetrica.yandex.com/serve/316337496852019161',\n },\n {\n id: 3,\n title: 'Movix — ТВ и фильмы онлайн',\n text: 'Смотрите телеканалы, фильмы и сериалы из онлайн-кинотеатров в одном приложении',\n imgLogo: `${imgPath}3-movix.png`,\n imgQr: `${imgPath}3-movix-qr.png`,\n imgLogoAlt: 'Логотип приложения Movix — ТВ и фильмы онлайн',\n imgQrAlt: 'QR-код для скачивания приложения Movix — ТВ и фильмы онлайн',\n btnLink: 'https://r663z.app.goo.gl/vV1a',\n },\n];\n","import styled from 'styled-components';\n\nimport { mobileFirstBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const ImageWrapper = styled.div<{ $size: number }>`\n width: ${({ $size }) => `${$size}px`};\n height: ${({ $size }) => `${$size}px`};;\n flex-shrink: 0;\n\n img {\n display: block;\n height: 100%;\n width: 100%;\n }\n`;\n\nexport const AppCard = styled.div`\n position: relative;\n\n & > div {\n &::before {\n content: '';\n width: 16px;\n height: 16px;\n position: absolute;\n left: -7px;\n bottom: 1px;\n background-image: url('/static/images/about/v2/apps/down-side.png');\n background-size: contain;\n }\n }\n\n & > div:last-of-type {\n display: none;\n }\n\n @media (min-width: ${mobileFirstBreakpoints.tablet}) {\n & div {\n pointer-events: none;\n transition: opacity 0.2s;\n }\n\n & > div:last-of-type {\n display: flex;\n opacity: 0;\n position: absolute;\n }\n\n &:hover > div:first-of-type {\n opacity: 0;\n }\n\n &:hover > div:last-of-type {\n opacity: 1;\n }\n }\n`;\n","import Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H3, H5 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer, FullWidthListContainer, IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { appsData } from './data';\n\nimport * as ST from './styled';\n\nconst Apps = () => {\n const isTablet = useMatchMediaByWidth(wideBreakpoints.tablet);\n\n return (\n \n \n

Три приложения для управления сервисами от Дом.ру

\n
\n \n {appsData.map(({ id, title, text, imgLogo, imgLogoAlt, imgQr, imgQrAlt, btnLink }) => (\n \n \n {isTablet\n ? <>\n \n \n {imgLogoAlt}\n \n
{title}
\n
\n \n \n \n \n \n \n \n \n \n : \n \n {imgLogoAlt}\n \n
\n
{title}
\n \n
\n
}\n
\n \n \n \n {imgQrAlt}\n \n
\n
{title}
\n Отсканируйте qr-код и скачайте приложение\n
\n
\n
\n
\n ))}\n
\n
\n );\n};\n\nexport default Apps;\n","import styled from 'styled-components';\n\nexport const ImageWrapper = styled.div<{contentReverse: boolean}>`\n width: 100%;\n order: ${({ contentReverse }) => contentReverse ? 1 : 0};\n\n img, picture {\n display: block;\n height: auto;\n width: 100%;\n }\n`;\n","import Link from 'next/link';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { BlockContainer, IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TProduct } from '~/src/features/aboutV2/components/Products/data';\n\nimport * as ST from './styled';\n\ntype TProps = TProduct & { contentReverse?: boolean };\n\nconst ContentBlock = ({ title, text, img, imgWebp, imgAlt, btnLink, btnText, contentReverse = false }: TProps) => {\n return (\n \n \n \n {imgAlt}\n \n \n \n \n \n

{title}

\n \n
\n \n \n \n \n \n
\n
\n
\n );\n};\n\nexport default ContentBlock;\n","import { TTheme } from '@r1-frontend/ui-react/components/accordions/Accordion/themes';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\n export const disclaimer = 'Указаны данные о количестве клиентов, пользователей домофонии на 01.03.2024 г. Скорость до 2,5 Гбит/с по тарифу ' +\n '«Mega 2500» услуги «Интернет Дом.ру» предоставляется при подключении по технологи XGS-PON. Скорость до 1 Гбит/сек предоставляется ' +\n 'при технической возможности скорости не менее 10 Гбит/сек между узлом связи в доме и ближайшим миникампусным узлом. Указанная скорость будет доступна ' +\n 'при технической возможности после модернизации сети; скорость максимальная, фактическая зависит от используемого протокола обмена данными, характеристик абонентской ' +\n 'линии, условий оказания услуг по тарифу, указанных в Описании услуги «Интернет Дом.ру» и может быть ниже. Wi-Fi (от англ.) —' +\n 'технология беспроводного доступа. Под тарифом «Засмотрись» понимается комплексное предложение, включающее в себя услуги связи «Интернет ' +\n 'Дом.ру» и «ЦКТВ Дом.ру ТВ», подписки на онлайн-сервисы, оборудование в рассрочку. Свой домашний кинотеатр, интерактивное ТВ, ' +\n 'умная приставка — с функционалом подписки на  онлайн-кинотеатры, записи эфира, перемотки, предоставляемыми за плату, в приставке Movix. ' +\n 'Управление услугами «Видеоконтроль», «Домофон» осуществляется в приложении «Умный Дом.ру». Приложения «Мой Дом.ру», ' +\n '«Умный Дом.ру», «Movix» доступны при наличии доступа к сети Интернет, который обеспечивается клиентом. Smart TV (от англ.) ' +\n '— умный ТВ. HD (от англ. High Definition) — разрешение высокой четкости. Подключение при технической возможности. Детали — dom.ru.' +\n '\\nАО «ЭР-Телеком Холдинг» ОГРН 1065902028620, 614066, г. Пермь, ш. Космонавтов, д 111и, к.2';\n\nexport const theme: TTheme = {\n border: COLORS.BgMain,\n background: COLORS.BgMain,\n radius: BorderRadius.InnerBlockRadius,\n padding: '12px 24px',\n mobilePadding: '12px 24px',\n color: COLORS.TextPrimary,\n colorArrow: COLORS.Control,\n colorArrowIsOpen: COLORS.Control,\n buttonType: 'ghost',\n buttonTypeIsOpen: 'ghost',\n};\n","import { useState } from 'react';\n\nimport { Body, Header, Title, Wrapper } from '@r1-frontend/ui-react/components/accordions/Accordion';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { disclaimer, theme } from './data';\n\nconst Disclaimer = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = () => {\n setIsOpen(prev => !prev);\n };\n\n return (\n \n \n \n Подробная информация\n \n \n \n
\n                            \n                        
\n
\n \n
\n
\n );\n};\n\nexport default Disclaimer;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H2 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Join = styled(BlockContainer)`\n overflow: hidden;\n margin-top: 96px;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n margin-top: 24px;\n padding: 16px;\n }\n \n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-top: auto;\n }\n`;\n\nexport const ImageWrapper = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n height: 336px; \n order: 1;\n\n img, picture {\n display: block;\n height: 100%;\n width: auto;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n right: -160px;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n position: static;\n width: calc(100% + 32px);\n height: auto;\n order: 0;\n margin: -16px -16px 16px;\n\n img, picture {\n width: 100%;\n height: auto;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n height: 172px;\n\n img, picture {\n width: auto;\n height: 100%;\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n overflow: hidden;\n position: relative;\n left: 0;\n\n img, picture {\n position: absolute;\n min-width: 398px;\n }\n }\n`;\n\nexport const Title = styled(H2)`\n width: 400px;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n width: 100%;\n ${FONTS.H3};\n text-align: center;\n }\n \n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nexport const SFullWidthListContainer = styled(FullWidthListContainer)`\n @media (max-width: ${wideBreakpoints.laptop}) {\n gap: 0;\n align-items: center;\n }\n`;\n\nexport const Link = styled.a`\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\nconst IMG_URL = '/static/images/about/v2/join-bg';\n\nconst Join = () => {\n return (\n \n \n \n Изображение работы компании\n \n \n \n Присоединяйтесь к нашей команде\n \n \n \n \n \n \n \n );\n};\n\nexport default Join;\n","const imgPath = '/static/images/about/v2/products/';\n\nexport type TProduct = {\n id: number,\n title: string,\n text: string,\n img: string,\n imgWebp: string,\n imgAlt: string,\n btnLink: string,\n btnText: string,\n}\n\ntype DataKey = 'internet' | 'tv' | 'movix' | 'videocontrol' | 'domofon';\n\ntype TProductsData = {\n [key in DataKey]: TProduct;\n}\n\nexport const productsData: TProductsData = {\n internet: {\n id: 1,\n title: 'Интернет для квартиры и частного дома',\n text: 'Подключаем высокоскоростной интернет до 1 Гбит/с. Круглосуточно проверяем качество связи каждые 30 секунд 24/7 благодаря современной ' +\n 'системе мониторинга.',\n img: imgPath + '1-internet.png',\n imgWebp: imgPath + '1-internet.webp',\n imgAlt: 'Изображение интернета для квартиры и частного дома',\n btnLink: '/internet/equipment',\n btnText: 'Выбрать роутер',\n },\n tv: {\n id: 2,\n title: 'Цифровое ТВ',\n text: 'У вас будет свой домашний кинотеатр. Современная ТВ-приставка и видеосервис Movix — это интерактивное телевидение, фильмы, сериалы ' +\n 'и анимация из популярных онлайн-кинотеатров, игры, приложения и многое другое в едином удобном интерфейсе.',\n img: imgPath + '2-tv.png',\n imgWebp: imgPath + '2-tv.webp',\n imgAlt: 'Изображение цифрового телевидения',\n btnLink: '/internet/giga-movix',\n btnText: 'Выбрать тариф',\n },\n movix: {\n id: 3,\n title: 'Наборы развлечений для дома',\n text: 'Онлайн-кинотеатры, ТВ-подписки, пакеты телеканалов, сервисы с играми и книгами. Подключать и отключать их можно ' +\n 'в личном кабинете на сайте или в мобильном приложении.',\n img: imgPath + '3-movix.png',\n imgWebp: imgPath + '3-movix.webp',\n imgAlt: 'Изображение онлайн кинотеатра',\n btnLink: '/movix-new',\n btnText: 'Перейти на сайт Movix',\n },\n videocontrol: {\n id: 4,\n title: 'Система видеонаблюдения',\n text: 'Реагирует на движения и сообщает, если кто-то проник внутрь. Управляется через приложение.',\n img: imgPath + '4-videocontrol.png',\n imgWebp: imgPath + '4-videocontrol.webp',\n imgAlt: 'Изображение система видеонаблюдения',\n btnLink: '/videocontrol ',\n btnText: 'Подробнее',\n },\n domofon: {\n id: 5,\n title: 'Видеодомофон',\n text: 'Смотрите, кто пришёл, открывайте дверь одним кликом и настраивайте гостевой доступ для пяти близких.',\n img: imgPath + '5-domofon.png',\n imgWebp: imgPath + '5-domofon.webp',\n imgAlt: 'Изображение видеодомофона',\n btnLink: '/domofon',\n btnText: 'Подробнее',\n },\n };\n","import styled from 'styled-components';\n\nimport { FlexBoxCol } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { mobileFirstBreakpoints, wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BlockContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nexport const SBlockContainer = styled(BlockContainer)<{hasNegativeMarginTop: boolean}>`\n border-radius: 32px 32px 0 0;\n margin-bottom: -50px;\n margin-top: ${({ hasNegativeMarginTop }) => hasNegativeMarginTop && -32 + 'px'};\n`;\n\nexport const Col = styled(FlexBoxCol)`\n & > div:not(:last-of-type) {\n margin-bottom: 32px;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n margin-bottom: 24px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) and (min-width: ${mobileFirstBreakpoints.mobile}) {\n display: flex;\n flex-direction: column;\n }\n`;\n","import map from 'lodash/map';\n\nimport { FlexBoxRow } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport WideContainer from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H2 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { useValueByBreakpoint } from '~/src/helpers/hooks/useValueByBreakpoint';\n\nimport Apps from '../Apps';\nimport ContentBlock from '../ContentBlock';\nimport Disclaimer from '../Disclaimer';\nimport Join from '../Join';\n\nimport { productsData } from './data';\n\nimport * as ST from './styled';\n\ninterface IProps {\n hasNegativeMarginTop: boolean,\n}\n\nconst Products = ({ hasNegativeMarginTop }: IProps) => {\n const currentWidth = useValueByBreakpoint({\n desktop: 'desktop',\n laptop: 'laptop',\n mobile: 'mobile',\n });\n\n return (\n \n \n \n

Наши продукты меняют жизнь к лучшему

\n {currentWidth === 'desktop' && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {currentWidth === 'laptop' && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {currentWidth === 'mobile' && (\n \n \n {map(productsData, item => )}\n \n \n \n \n )}\n
\n \n
\n
\n );\n};\n\nexport default Products;\n","import styled from 'styled-components';\n\nimport { mobileFirstBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BlockContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nexport const Stats = styled(BlockContainer)`\n width: 100%;\n margin-bottom: 32px;\n\n @media (min-width: ${mobileFirstBreakpoints.mobile}) {\n margin-bottom: 64px;\n }\n`;\n\nexport const ListItem = styled.li`\n width: 100%;\n \n @media (min-width: ${mobileFirstBreakpoints.mobile}) {\n width: 308px; \n }\n \n @media (min-width: ${mobileFirstBreakpoints.laptop}) {\n width: calc(50% - 16px); \n }\n \n @media (min-width: ${mobileFirstBreakpoints.sDesktop}) {\n width: 330px; \n }\n`;\n","import { H2, H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { TPreparedContentBlocks } from '~/src/features/aboutV2/helpers';\n\nimport * as ST from './styled';\n\ninterface IProps {\n stats: TPreparedContentBlocks[],\n}\n\nconst Stats = ({ stats }: IProps) => {\n return (\n \n \n {stats.map(({ id, title, desc }) => (\n \n

{title}

\n

\n \n ))}\n \n \n );\n};\n\nexport default Stats;\n","import styled from 'styled-components';\n\nimport { mobileFirstBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BlockContainer, IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Wrapper = styled(BlockContainer)`\n width: 100%;\n margin-top: -32px;\n\n @media (min-width: ${mobileFirstBreakpoints.tablet}) {\n padding-top: 96px;\n }\n`;\n\nexport const JoinWrapper = styled(IndentContainer)`\n width: 100%;\n margin-bottom: -50px;\n background-color: ${COLORS.BgSurface};\n\n @media (min-width: ${mobileFirstBreakpoints.laptop}) {\n padding-bottom: 128px;\n }\n`;\n","import WideContainer from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Header from './components/Header/index';\nimport History from './components/History';\nimport Products from './components/Products';\nimport Stats from './components/Stats';\nimport { TPreparedContentBlocks } from './helpers';\n\nimport * as ST from './styled';\n\ninterface IProps {\n stats: TPreparedContentBlocks[],\n history: TPreparedContentBlocks[],\n}\n\nconst About = ({ stats, history }: IProps) => {\n const showStats = stats.length > 0;\n const showHistory = history.length > 0;\n\n return (\n <>\n
\n {(showStats || showHistory) && \n \n {showStats && }\n {showHistory && }\n \n }\n \n \n );\n};\n\nexport default About;\n","export const REDESIGN_ABOUT = {\n testName: 'redesign_company_page',\n variants: {\n on: 'redesign_company_page_on',\n off: 'redesign_company_page_off',\n },\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { NextPage } from 'next';\n\nimport pageView, { TResponseDto as PageViewResponseDto } from '@r1-frontend/api-domru/api-content/v1/page/view';\n\nimport Layout from '~/src/features/_layout';\nimport About from '~/src/features/about';\nimport AboutV2 from '~/src/features/aboutV2';\nimport { REDESIGN_ABOUT } from '~/src/features/aboutV2/constants/abnVariants';\nimport { getPreparedContentBlocks, TPreparedContentBlocks } from '~/src/features/aboutV2/helpers';\nimport { getABNVariantOnSSr } from '~/src/helpers/abn-tests';\nimport { initialProps } from '~/src/helpers/basePageFunc';\nimport getRequester from '~/src/helpers/getRequester';\nimport { getCurrentCity, selectCompanyName } from '~/src/store/selectors/city';\n\ninterface IProps {\n isRedesignAboutAbTestActive: boolean,\n stats: TPreparedContentBlocks[],\n history: TPreparedContentBlocks[],\n}\n\nconst STATS_ID = '91011';\nconst HISTORY_ID = '5678';\n\nconst AboutPage: NextPage = ({ isRedesignAboutAbTestActive, stats, history }) => {\n const { cityIn } = useSelector(getCurrentCity);\n const companyName = useSelector(selectCompanyName);\n\n return (\n \n {isRedesignAboutAbTestActive ? : }\n \n );\n};\n\nAboutPage.getInitialProps = async(options) => {\n await initialProps(options);\n const { store, req } = options;\n\n const { city: { provider: { providerId } } } = store.getState();\n\n const doRequest = getRequester(req);\n const isRedesignAboutAbTestActive = getABNVariantOnSSr(REDESIGN_ABOUT.testName, req) === REDESIGN_ABOUT.variants.on;\n\n const [stats, history] = (await Promise.all([\n doRequest.apiContent(pageView(providerId, STATS_ID)),\n doRequest.apiContent(pageView(providerId, HISTORY_ID)),\n ])).map(item => item.isSuccess ? getPreparedContentBlocks(item.payload.contentBlocks) : []);\n\n return {\n isRedesignAboutAbTestActive,\n stats,\n history: [...history].sort((a, b) => b.alias - a.alias),\n };\n};\n\nexport default AboutPage;\n","import map from 'lodash/map';\n\nimport { TAdvertising, TContentBlock } from '@r1-frontend/api-domru/api-content/v1/page/view';\n\nexport type TPreparedContentBlocks = {\n id: number,\n title: string,\n desc: string,\n action: string,\n colorText: string,\n img: string,\n imgWebp: string,\n textButton: string,\n bgColor: string,\n advertising?: TAdvertising,\n alias: number,\n}\n\nexport const getPreparedContentBlocks = (data: Record): TPreparedContentBlocks[] => {\n return map(data, block => ({\n id: block.id,\n title: block.title,\n desc: block.subtitle,\n action: block.link,\n colorText: block.text_color,\n img: block.image,\n imgWebp: block.image_webp,\n textButton: block.button_text,\n bgColor: block.bg_color,\n advertising: block.advertising,\n alias: block.alias,\n }));\n};\n","/* eslint-disable complexity */\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\ninterface IProps {\n desktop: T,\n sDesktop?: T,\n laptop?: T,\n tablet?: T,\n mobile?: T,\n}\n\n/**\n * Проверяет ширину экрана и возвращает значение соответствующее текущему брейкпоинту\n * обязательно только значение для desktop, остальные можно опускать\n * пример: если мобильная ширина - вернет значение переданное для мобилки\n */\nexport const useValueByBreakpoint = ({\n desktop,\n sDesktop,\n laptop,\n tablet,\n mobile,\n}: IProps): T => {\n const isSDesktop = useMatchMediaByWidth(sDesktop ? wideBreakpoints.sDesktop : '');\n const isLaptop = useMatchMediaByWidth(laptop ? wideBreakpoints.laptop : '');\n const isTablet = useMatchMediaByWidth(tablet ? wideBreakpoints.tablet : '');\n const isMobile = useMatchMediaByWidth(mobile ? wideBreakpoints.mobile : '');\n\n switch (true) {\n case (isMobile && !!mobile):\n return mobile || desktop;\n case (isTablet && !!tablet):\n return tablet || desktop;\n case (isLaptop && !!laptop):\n return laptop || desktop;\n case (isSDesktop && !!sDesktop):\n return sDesktop || desktop;\n default:\n return desktop;\n }\n};\n","import styled, { css } from 'styled-components';\n\n// @ts-ignore\nimport svg from './arrow.svg';\n\nexport const Wrapper = styled.div`\n width: fit-content;\n height: 30px;\n opacity: 0.2;\n transition: opacity 0.2s ease-in;\n cursor: pointer;\n \n :hover {\n opacity: 1;\n }\n`;\n\nexport const ArrowSvg = styled.img.attrs({\n src: svg,\n})<{ type?: 'left' | 'right' }>`\n height: 100%;\n ${({ type }) => type === 'right' && css`transform: rotate(180deg);`}\n`;\n","import styled, { CSSObject, keyframes } from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\n\nexport interface ICustomDotsStyles {\n dotsContainer?: CSSObject,\n dot?: CSSObject,\n dotContainer?: CSSObject,\n activeDot?: CSSObject,\n}\n\nexport const Dot = styled.div<{ active?: boolean, customStyles?: ICustomDotsStyles }>`\n height: 100%;\n width: 100%;\n border-radius: 2px;\n background: ${COLORS.black};\n opacity: 0.1;\n transition: opacity .3s ease;\n ${p => p.customStyles?.dot ?? ''};\n\n &:hover {\n opacity: ${({ active }) => active ? 1 : 0.45};\n }\n`;\n\nexport const DotContainer = styled.div<{ active?: boolean, customStyles?: ICustomDotsStyles }>`\n position: relative;\n width: ${({ active }) => active ? '48px' : '24px'};\n height: 4px;\n margin: 0 4px;\n cursor: pointer;\n transition: width .3s ease;\n ${p => p.customStyles?.dotContainer ?? ''};\n`;\n\nconst activeLineAnimation = keyframes`\n 0% { width: 0; }\n 100% { width: 100%; }\n`;\n\nexport const ActiveLine = styled.div<{ active?: boolean, time?: number, customStyles?: ICustomDotsStyles }>`\n display: ${({ active }) => active ? 'initial' : 'none'};\n position: absolute;\n top: 0;\n left: 0;\n background: ${COLORS.black};\n width: ${({ active }) => active ? '100%' : '0%'};\n height: 100%;\n border-radius: 2px;\n animation-name: ${activeLineAnimation};\n animation-duration: ${({ time }) => time || 0}s;\n animation-iteration-count: 1;\n ${p => p.customStyles?.activeDot ?? ''};\n`;\n\nexport const DotsContainer = styled.div< {customStyles?: ICustomDotsStyles }>`\n justify-content: center;\n width: 100%;\n margin-top: 10px;\n bottom: 26px;\n z-index: 10;\n flex-wrap: nowrap;\n ${p => p.customStyles?.dotsContainer ?? ''};\n`;\n","import React from 'react';\n\nimport * as ST from './styled';\n\nexport interface IArrowProps {\n previousSlide?: () => void,\n nextSlide?: () => void,\n}\n\nconst DefaultArrow = ({ previousSlide, nextSlide }: IArrowProps) => {\n return (\n \n \n \n );\n};\n\nexport default DefaultArrow;\n","import React, { FC } from 'react';\n\nimport * as ST from './styled';\n\nexport interface IDotsProps {\n goToSlide: (i: number) => void,\n slideCount: number,\n currentSlide: number,\n autoplayInterval: number,\n autoplay: boolean,\n customDotsStyles?: ST.ICustomDotsStyles,\n}\n\nconst DefaultDots: FC = ({\n goToSlide,\n slideCount,\n currentSlide,\n autoplayInterval,\n autoplay,\n customDotsStyles,\n}) => {\n return (\n \n {Array(slideCount).fill(null).map((_, index) => (\n goToSlide(index)}\n customStyles={customDotsStyles}\n >\n \n \n \n ))}\n \n );\n};\n\nexport default DefaultDots;\n","import styled from 'styled-components';\n\nexport const Container = styled.div<{ withoutDots?: boolean, withoutArrows?: boolean }>`\n display: flex;\n justify-content: center;\n width: 100%;\n height: fit-content;\n margin: 0 auto;\n padding-bottom: ${({ withoutDots }) => withoutDots ? 0 : 32}px;\n padding-right: ${({ withoutArrows }) => withoutArrows ? 0 : 32}px;\n padding-left: ${({ withoutArrows }) => withoutArrows ? 0 : 32}px;\n \n div:focus-visible {\n outline: none !important;\n }\n`;\n","import React, { FC, RefObject, useEffect, useRef, useState } from 'react';\nimport NukaSwiper, {\n CarouselControlContainerProp,\n CarouselProps,\n} from 'nuka-carousel';\n\nimport { ICustomDotsStyles } from './DefaultDots/styled';\nimport DefaultArrow, { IArrowProps } from './DefaultArrow';\nimport DefaultDots, { IDotsProps } from './DefaultDots';\n\nimport * as ST from './styled';\n\nexport interface ICarouselProps extends CarouselProps {\n withoutArrows?: boolean,\n withoutDots?: boolean,\n customArrow?: FC,\n customDots?: FC,\n customDotsStyles?: ICustomDotsStyles,\n}\n\ninterface INukaSwiperMethods {\n setDimensions: () => void,\n}\n\nconst DEFAULT_AUTOPLAY_INTERVAL = 3000;\nconst DOTS_PADDING = -20;\nconst ARROWS_PADDING = -32;\n\nconst getDefaultControlsContainerStyles = (key: CarouselControlContainerProp) => {\n switch (key) {\n case 'BottomCenter':\n return {\n bottom: DOTS_PADDING,\n };\n case 'CenterRight':\n return {\n right: `${ARROWS_PADDING}px`,\n };\n case 'CenterLeft':\n return {\n left: `${ARROWS_PADDING}px`,\n };\n default: return;\n }\n};\n\nconst NukaCarousel: FC = ({\n customArrow: CustomArrow,\n customDots: CustomDots,\n children,\n withoutArrows,\n withoutControls,\n withoutDots,\n autoplayInterval = DEFAULT_AUTOPLAY_INTERVAL,\n autoplay,\n className,\n customDotsStyles,\n ...props\n}) => {\n const [pausedAutoplay, setPausedAutoplay] = useState(false);\n const Arrow = CustomArrow || DefaultArrow;\n const Dots = CustomDots || DefaultDots;\n const swiperRef = useRef();\n\n useEffect(() => {\n swiperRef?.current?.setDimensions();\n }, [withoutArrows, withoutControls]);\n\n const handleMouseOver = () => {\n if (autoplay) {\n setPausedAutoplay(true);\n }\n };\n\n const handleMouseOut = () => {\n if (autoplay) {\n setPausedAutoplay(false);\n }\n };\n\n return (\n \n }\n // @ts-ignore\n getControlsContainerStyles={getDefaultControlsContainerStyles}\n renderCenterLeftControls={({ previousSlide }) => withoutArrows || }\n renderCenterRightControls={({ nextSlide }) => withoutArrows || }\n renderBottomCenterControls={(props) => withoutDots || (\n \n )}\n autoplayInterval={autoplayInterval}\n autoplay={autoplay}\n withoutControls={withoutControls}\n {...props}\n >\n {children}\n \n \n );\n};\n\nexport default NukaCarousel;\n","import styled from 'styled-components';\n\nimport NukaCarousel from '@r1-frontend/ui-react/components/NukaCarousel';\n\nexport const CustomNukaCarousel = styled(NukaCarousel)<{ cursorType: string }>`\n padding-left: 0 !important;\n padding-right: 0 !important;\n \n & section,\n & div {\n outline: none;\n }\n\n & > section > div.slider-frame {\n div.slider-list {\n cursor: ${p => p.dragging ? 'grab' : p.cursorType} !important;\n }\n }\n`;\n","import { Children, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { CarouselControlContainerProp, CSSProperties } from 'nuka-carousel';\n\nimport { ICarouselProps } from '@r1-frontend/ui-react/components/NukaCarousel';\n\nimport { CustomNukaCarousel } from './styled';\n\nexport interface ISlideCarouselProps extends ICarouselProps {\n children: Array,\n slideWidth: number,\n cellSpacing: number,\n dragging?: boolean,\n cursorType?: string,\n customControlsContainerStyles?: (key: CarouselControlContainerProp) => CSSProperties,\n}\n\nconst DOTS_PADDING = -30;\nconst ARROWS_PADDING = -22;\n\nconst defaultControlsContainerStyles = (key: CarouselControlContainerProp): CSSProperties => {\n switch (key) {\n case 'BottomCenter':\n return {\n bottom: DOTS_PADDING,\n };\n case 'CenterRight':\n return {\n right: `${ARROWS_PADDING}px`,\n };\n case 'CenterLeft':\n return {\n left: `${ARROWS_PADDING}px`,\n };\n default: return {};\n }\n};\n\n/**\n * Карусель с автоматическим определением количества видимых слайдов\n * @param slideWidth - ширина слайда карусели\n * @param cellSpacing - расстояние между слайдами\n * @param slideIndex - прокрутка к указанному слайду\n */\nconst SlideCarousel = ({\n children,\n slideWidth = 304,\n cellSpacing = 20,\n withoutArrows,\n withoutDots,\n dragging = true,\n cursorType = 'initial',\n slideIndex = 0,\n customControlsContainerStyles = defaultControlsContainerStyles,\n ...props\n}: ISlideCarouselProps): JSX.Element => {\n const swiperRef = useRef(null);\n\n const [currIndex, setCurrIndex] = useState(slideIndex);\n\n const [sliderSettings, setSettings] = useState({\n correctSlideWidth: slideWidth,\n isAllSlidesView: false,\n });\n\n const onResize = useCallback(() => {\n if (!swiperRef.current) {\n return;\n }\n\n const oneSlideWidth = slideWidth + cellSpacing;\n\n const sliderWidth = swiperRef.current.clientWidth;\n\n const slideCount = sliderWidth / oneSlideWidth;\n\n const correctSlideWidth = sliderWidth < oneSlideWidth ? sliderWidth - cellSpacing : slideWidth;\n\n const isAllSlidesView = Children.count(children) < slideCount;\n\n setSettings({\n correctSlideWidth,\n isAllSlidesView,\n });\n }, [cellSpacing, slideWidth, children]);\n\n useEffect(() => {\n onResize();\n }, [onResize]);\n\n useEffect(() => {\n const newIndex = slideIndex === -1 ? 0 : slideIndex;\n\n if (newIndex !== currIndex) {\n setCurrIndex(newIndex);\n }\n }, [currIndex, slideIndex]);\n\n return (\n \n {Children.map(children, (child) => {\n return child;\n })}\n \n );\n};\n\nexport default SlideCarousel;\n","import React from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isOpen: boolean,\n withDividingBorder: boolean,\n children: JSX.Element | JSX.Element[] | string,\n}\n\nconst Body = ({ isOpen, withDividingBorder, children, ...rest }: IProps): JSX.Element => {\n return \n {withDividingBorder && }\n {children}\n ;\n};\n\nexport default Body;\n","import React, { ReactNode } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { SingleArrowDown } from '@r1-frontend/ui-react/components/svg/arrows';\n\nimport { TThemesColors } from './themes';\n\nimport * as ST from './styled';\n\ninterface IPropsHeader {\n onOpen: () => void,\n isOpen: boolean,\n colors: TThemesColors,\n children: ReactNode,\n itemProp?: string,\n itemScope?: boolean,\n itemType?: string,\n showButton?: boolean,\n}\n\nexport const Header = ({ onOpen, isOpen, colors, children, showButton = true, ...rest }: IPropsHeader): JSX.Element => {\n const {\n buttonType = 'white',\n buttonTypeIsOpen = 'secondary',\n colorArrow,\n colorArrowIsOpen,\n backgroundIcon,\n backgroundIconIsOpen,\n borderIcon,\n borderIconIsOpen,\n } = colors;\n\n return (\n \n {children}\n {showButton &&\n \n \n \n }\n />\n }\n \n );\n};\n\ninterface IPropsTitle {\n children: JSX.Element | string,\n itemProp?: string,\n}\n\nexport const Title = ({ children, ...rest }: IPropsTitle): JSX.Element =>\n {children};\n","import React from 'react';\n\nimport * as ST from './styled';\n\nconst Wrapper = ({ ...props }): JSX.Element => {\n return ;\n};\n\nexport default Wrapper;\n","import styled from 'styled-components';\n\nimport { 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';\n\nimport { TColors } from './themes';\n\nexport const Wrapper = styled.div`\n flex-direction: column;\n width: 100%;\n background: ${({ theme }) => theme.background};\n border: 1px solid ${({ theme }) => theme.border ? theme.border : COLORS.GRAY_LIGHT};\n border-width: ${({ theme }) => theme.borderWidth};\n border-radius: ${({ theme }) => theme.radius};\n padding: ${({ theme }) => theme.padding};\n color: ${({ theme }) => theme.color ? theme.color : COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: ${({ theme })=> theme.mobilePadding};\n border-radius: ${({ theme }) => theme.mobileRadius};\n }\n`;\n\nexport const TitleContainer = 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\nexport const Title = styled.div`\n flex-grow: 1;\n width: calc(100% - 53px); \n ${({ theme }) => theme.desktopFont || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: calc(100% - 39px);\n ${({ theme }) => theme.mobileFont || ''};\n }\n`;\n\nexport const Icon = styled.span<{\n isOpen?: boolean,\n arrowColor?: TColors | string,\n iconBorder?: TColors | string,\n iconBackground?: TColors | string,\n}>`\n position: relative;\n transform: ${({ isOpen }) => isOpen ? 'scaleY(-1)' : 'none'};\n transition: all 0.2s ease-in;\n svg {\n display: block;\n circle {\n stroke: ${({ iconBorder }) => iconBorder ?? COLORS.GRAY_DARK};\n fill: ${({ iconBackground }) => iconBackground ?? COLORS.GRAY_LIGHT};\n }\n path {\n stroke: ${({ arrowColor }) => arrowColor ?? COLORS.GRAY_DARK};\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n background-size: contain;\n }\n`;\n\nexport const Border = styled.div`\n height: 1px;\n width: 100%;\n background: transparent;\n margin: 8px 0;\n`;\n\nexport const Body = styled.div<{ isOpen: boolean }>`\n width: 100%;\n max-height: ${({ isOpen }) => isOpen ? '100%' : '0'};\n ${FONTS.S};\n overflow: hidden;\n transition: max-height 0.2s ${({ isOpen }) => isOpen ? 'ease-in' : 'ease-out'};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n","import { css } from 'styled-components';\n\nexport interface IImageSource {\n src: string,\n webpSrc?: string,\n}\n\n/**\n * Позволяет браузеру выбрать наиболее подходящий формат фонового избражения с помощью CSS\n * @param {Object} [image] - Объект с путями картинок разного формата\n * @param {string} image.src - Путь до картинки с обычным форматом (jpeg/png)\n * @param {string} [image.webpSrc] - Путь до картинки формата webp\n * @returns {string} Стили CSS\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/image/image-set MDN}\n */\nexport const progressiveBackground = (image?: IImageSource): ReturnType | string => {\n if (!image) {\n return '';\n }\n\n const { src, webpSrc } = image;\n\n if (!webpSrc) {\n return css`\n background-image: url(${src});\n `;\n }\n\n return css`\n background-image: url(${src});\n\n background-image: -webkit-image-set(\n url(${webpSrc}) 1x,\n url(${src}) 1x\n );\n\n background-image: image-set(\n url(${webpSrc}) type('image/webp') 1x,\n url(${src}) 1x\n );\n `;\n};\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H1, H2, H3, H4, H5 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph1, Paragraph2, Paragraph3, Paragraph4, Paragraph5 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nconst TextWrapper = styled.div<{ $lastIndent?: boolean }>`\n display: block;\n \n ${H1} {\n margin-bottom: 16px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 24px;\n }\n }\n \n ${H2} {\n margin-bottom: 8px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 16px;\n }\n }\n \n ${H3}, ${H4}, ${H5} {\n margin-bottom: 8px;\n }\n \n ${Paragraph1}, ${Paragraph2}, ${Paragraph3}, ${Paragraph4}, ${Paragraph5} {\n margin-bottom: 16px;\n\n ${({ $lastIndent = true }) => $lastIndent\n ? ''\n : css`\n &:last-child {\n margin-bottom: 0px;\n }\n `}\n }\n`;\n\nexport default TextWrapper;\n","import styled, { CSSProperties } from 'styled-components';\n\ntype TPreProps = {\n $whiteSpace?: CSSProperties['whiteSpace'],\n $withIndent?: boolean,\n}\n\nexport const Pre = styled.pre`\n white-space: ${({ $whiteSpace = 'pre' }) => $whiteSpace};\n margin: ${({ $withIndent = true }) => $withIndent ? 'revert' : '0'};\n`;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { getPaddingByIncomingIndent, TContainerProps } from './IndentContainer';\nimport { getRadiusByIncomingProps, TRounderProps } from './RounderContainer';\n\n/**\n * Обертка добавляет компоненту, цвет бэкграунда, скругление и паддинги\n * indent: $united или $mobile & $desktop.\n * rounder: $radius или $desktop & $mobile.\n * bgColor: цвет подложки (default COLORS.BgSurface).\n */\nconst BlockContainer = styled.div<{\n indent: TContainerProps,\n rounder: TRounderProps,\n bgColor?: string,\n}>`\n ${p => getPaddingByIncomingIndent(p.indent)};\n ${p => getRadiusByIncomingProps(p.rounder)};\n background-color: ${p => p.bgColor || COLORS.BgSurface};\n position: relative;\n width: 100%;\n`;\n\nexport default BlockContainer;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjciIHZpZXdCb3g9IjAgMCAxNSAyNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjE0MjYgMjUuMTk5N0wxLjE0MjU4IDEzLjE5OTdMMTMuMTQyNiAxLjE5OTcxIiBzdHJva2U9IiMxYTFhMWEiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPg==\""],"names":["arrayMap","baseIteratee","baseMap","isArray","module","exports","collection","iteratee","window","__NEXT_P","push","providerId","id","uri","method","queryParams","stat","green","text","story","year","description","icon","title","link","business","href","breakPoint","About","styled","Section","p","bgColor","Grid","GridContainer","LastGrid","ContentRow","TopSection","TopContent","Frame","Text","FONTS","TextMB20","MainTitle","SectionHeading","BlockTitle","SubTitle","MainText","GreenText","Paragraph","ImageAdv","Image","ImageTeam","Gif","BlockWithIcon","Icon","COLORS","TextContent","TextContentAdv","AdvWrapper","ImageWrapper","Link","COLORS_OLD","StoryBlock","StatBlock","StatBlockWrapper","Button","BaseButton","ST","map","index","src","alt","passHref","a","type","btnTypes","Header","backgroundImage","backgroundImageWebp","progressiveBackground","webpSrc","wideBreakpoints","Container","WideContainer","AgeRating","imgPath","paragraphText","NBSP","isMobile","useMatchMediaByWidth","backgroundWebpUrl","useValueByBreakpoint","desktop","laptop","mobile","backgroundUrl","TextWrapper","$lastIndent","H1","Paragraph3","data-test","$color","Paragraph2","$smaller","History","SBlockContainer","BlockContainer","ButtonText","H3","customColor","SH2","H2","SPre","Pre","RounderContainer","history","isLaptop","useMatchMedia","useState","activeCard","setActiveCard","handleSlideClick","selectedHistory","find","el","IndentContainer","$united","SlideCarousel","cellSpacing","slideWidth","withoutArrows","withoutDots","alias","size","bType","onClick","as","$withIndent","indent","$mobile","$desktop","rounder","$radius","WebpImage","urlWebp","imgWebp","img","dangerouslySetInnerHTML","__html","$whiteSpace","desc","appsData","imgLogo","imgQr","imgLogoAlt","imgQrAlt","btnLink","$size","AppCard","mobileFirstBreakpoints","isTablet","ListContainer","$direction","FullWidthListContainer","$wrap","$alignItems","H5","Paragraph4","ButtonGroup","target","rel","div","contentReverse","imgAlt","btnText","theme","border","background","radius","BorderRadius","padding","mobilePadding","color","colorArrow","colorArrowIsOpen","buttonType","buttonTypeIsOpen","isOpen","setIsOpen","Wrapper","onOpen","prev","colors","Title","Body","withDividingBorder","Join","SFullWidthListContainer","IMG_URL","productsData","internet","tv","movix","videocontrol","domofon","hasNegativeMarginTop","Col","FlexBoxCol","currentWidth","FlexBoxRow","md","lg","ContentBlock","Apps","sm","xs","item","Disclaimer","Stats","ListItem","stats","$justifyContent","H4","showStats","length","showHistory","Products","REDESIGN_ABOUT","on","off","AboutPage","isRedesignAboutAbTestActive","useSelector","getCurrentCity","cityIn","companyName","selectCompanyName","Layout","withMenu","withFooter","withChat","AboutV2","getInitialProps","options","store","req","doRequest","initialProps","getState","city","provider","getRequester","getABNVariantOnSSr","Promise","all","apiContent","pageView","isSuccess","data","payload","contentBlocks","block","subtitle","action","colorText","text_color","image","image_webp","textButton","button_text","bg_color","advertising","sort","b","sDesktop","tablet","isSDesktop","ArrowSvg","svg","css","previousSlide","nextSlide","Dot","customStyles","dot","active","DotContainer","dotContainer","activeLineAnimation","keyframes","ActiveLine","time","activeDot","DotsContainer","dotsContainer","goToSlide","slideCount","currentSlide","autoplayInterval","autoplay","customDotsStyles","Array","fill","_","getDefaultControlsContainerStyles","key","bottom","right","left","customArrow","customDots","children","withoutControls","className","props","pausedAutoplay","setPausedAutoplay","Arrow","CustomArrow","DefaultArrow","Dots","CustomDots","DefaultDots","swiperRef","useRef","useEffect","current","setDimensions","handleMouseOver","handleMouseOut","onTouchStart","onTouchEnd","onMouseOver","onMouseOut","NukaSwiper","ref","getControlsContainerStyles","renderCenterLeftControls","renderCenterRightControls","renderBottomCenterControls","CustomNukaCarousel","NukaCarousel","dragging","cursorType","defaultControlsContainerStyles","slideIndex","customControlsContainerStyles","currIndex","setCurrIndex","correctSlideWidth","isAllSlidesView","sliderSettings","setSettings","onResize","useCallback","oneSlideWidth","sliderWidth","clientWidth","Children","newIndex","innerRef","slidesToScroll","disableEdgeSwiping","easing","edgeEasing","child","rest","showButton","backgroundIcon","backgroundIconIsOpen","borderIcon","borderIconIsOpen","rounded","arrowColor","iconBackground","iconBorder","SingleArrowDown","borderWidth","mobileRadius","TitleContainer","desktopFont","mobileFont","Border","Paragraph1","Paragraph5","getPaddingByIncomingIndent","getRadiusByIncomingProps"],"sourceRoot":""}