@scbt-ecom/ui 0.91.2 → 0.91.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks.js +2 -2
- package/dist/{index-BKq2JR4V.js → index-DGpsSEYL.js} +4947 -4933
- package/dist/index-DGpsSEYL.js.map +1 -0
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.d.ts +1 -0
- package/dist/ui.js +3 -3
- package/dist/{useDebounce-5MeprqTX.js → useDebounce-DqiN3mnG.js} +352 -347
- package/dist/useDebounce-DqiN3mnG.js.map +1 -0
- package/dist/{useFieldsProgress-C918amw-.js → useFieldsProgress-C13Klwl7.js} +2 -2
- package/dist/{useFieldsProgress-C918amw-.js.map → useFieldsProgress-C13Klwl7.js.map} +1 -1
- package/dist/widget.js +527 -511
- package/dist/widget.js.map +1 -1
- package/package.json +1 -1
- package/dist/index-BKq2JR4V.js.map +0 -1
- package/dist/useDebounce-5MeprqTX.js.map +0 -1
package/dist/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sources":["../node_modules/@tanstack/query-core/build/modern/queryCache.js","../node_modules/@tanstack/query-core/build/modern/mutation.js","../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../node_modules/@tanstack/query-core/build/modern/queryClient.js","../lib/widgets/model/helpers.ts","../lib/widgets/buttonWithHandlers/model/useButtonHandler.ts","../lib/widgets/buttonWithHandlers/ButtonWithHandlers.tsx","../lib/widgets/benefit/ui/BenefitItem.tsx","../lib/widgets/benefit/Benefit.tsx","../lib/widgets/header/model/helpers.tsx","../lib/widgets/header/Header.tsx","../lib/widgets/banner/ui/banners/ui/Buttons.tsx","../lib/widgets/banner/ui/banners/ui/Advantages.tsx","../lib/widgets/banner/ui/banners/BannerImageFull.tsx","../lib/widgets/banner/ui/banners/BannerWithSeparateImg.tsx","../lib/widgets/banner/Banner.tsx","../lib/widgets/footer/ui/SocialLinks.tsx","../lib/widgets/footer/ui/PhonesBlock.tsx","../lib/widgets/footer/ui/NavLinks.tsx","../lib/widgets/footer/ui/Copyright.tsx","../lib/widgets/footer/ui/FooterLogo.tsx","../lib/widgets/footer/ui/SiteMap.tsx","../lib/widgets/footer/ui/Ligal.tsx","../lib/widgets/footer/Footer.tsx","../lib/widgets/stepper/ui/SingleStep.tsx","../lib/widgets/stepper/ui/StepperCarousel.tsx","../lib/widgets/stepper/ui/StepperTabs.tsx","../lib/widgets/stepper/Stepper.tsx","../lib/widgets/longBanner/model/cva.ts","../lib/widgets/longBanner/ui/TextItem.tsx","../lib/widgets/longBanner/ui/Title.tsx","../lib/widgets/longBanner/ui/TextList.tsx","../lib/widgets/longBanner/LongBanner.tsx","../lib/widgets/authProvider/model/helpers.ts","../lib/widgets/authProvider/ui/ui/AuthWrapper.tsx","../lib/widgets/authProvider/ui/ui/EsiaLogo.tsx","../lib/widgets/authProvider/ui/ui/Links.tsx","../lib/widgets/authProvider/ui/MobileId.tsx","../lib/widgets/authProvider/ui/Esia.tsx","../lib/widgets/authProvider/AuthProvider.tsx","../lib/widgets/interLinking/ui/LinksList.tsx","../lib/widgets/interLinking/ui/ColumnGroup.tsx","../lib/widgets/interLinking/ui/Column.tsx","../lib/widgets/interLinking/InterLinking.tsx","../lib/widgets/usefulInfo/ui/Tabs.tsx","../lib/widgets/usefulInfo/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/html/Html.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/Table.tsx","../lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/Document.tsx","../lib/widgets/usefulInfo/ui/subEntities/documents/Documents.tsx","../lib/widgets/usefulInfo/ui/RenderEntity.tsx","../lib/widgets/usefulInfo/UsefulInfo.tsx","../lib/widgets/fieldMapper/FieldMapper.tsx","../lib/widgets/htmlParser/baseHtmlParser.ts","../lib/widgets/htmlParser/htmlParser.ts","../lib/widgets/htmlParser/HTMLRenderer.tsx","../lib/widgets/dynamicForm/model/getFieldsProgress.ts","../src/shared/utils/getDynamicSchema.ts","../lib/widgets/queryClientProvider/QueryClientProvider.tsx","../lib/widgets/dynamicForm/DynamicForm.tsx","../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx","../lib/widgets/fallbacksView/model/helpers.tsx","../lib/widgets/fallbacksView/FallbacksView.tsx","../lib/widgets/breadcrumbs/Breadcrumb.tsx","../lib/widgets/breadcrumbs/hooks/constants.ts","../lib/widgets/breadcrumbs/Breadcrumbs.tsx","../lib/widgets/seoHeader/hooks/useCategoryReducer/types.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/reducer.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/useCategoryReducer.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/actions.ts","../lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.tsx","../lib/widgets/seoHeader/ui/desktop/tab/Tab.tsx","../lib/widgets/seoHeader/ui/desktop/CategoryTabs.tsx","../lib/widgets/seoHeader/ui/desktop/rootTab/RootTab.tsx","../lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.tsx","../lib/widgets/seoHeader/ui/mobile/menu/MenuItem.tsx","../lib/widgets/seoHeader/ui/mobile/menu/Menu.tsx","../lib/widgets/seoHeader/ui/mobile/CategoriesMobile.tsx","../lib/widgets/seoHeader/SeoHeader.tsx","../lib/widgets/calculator/model/utils.ts","../lib/widgets/calculator/model/helpers.ts","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/AssistHint.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoFooter.tsx","../lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.tsx","../lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/FieldsGroup.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/AdditionalSlider.tsx","../lib/widgets/calculator/ui/calculatorFields/CalculatorFields.tsx","../lib/widgets/calculator/ui/CalculatorTabs.tsx","../lib/widgets/calculator/CalculatorView.tsx","../lib/widgets/calculator/Calculator.tsx","../lib/widgets/infoBlock/ui/LinksList.tsx","../lib/widgets/infoBlock/ui/RootContent.tsx","../lib/widgets/infoBlock/InfoBlock.tsx","../lib/widgets/userFeedback/model/hooks/useRating.ts","../lib/widgets/userFeedback/model/schema.ts","../lib/widgets/userFeedback/ui/FeedbackTrigger.tsx","../lib/widgets/userFeedback/ui/Finally.tsx","../lib/widgets/userFeedback/ui/UserReview.tsx","../lib/widgets/userFeedback/ui/SelectRating.tsx","../lib/widgets/userFeedback/UserFeedback.tsx"],"sourcesContent":["// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","import { lazy } from 'react'\nconst Banner = lazy(() => import('../banner/Banner'))\nconst Calculator = lazy(() => import('../calculator/Calculator'))\nconst DynamicForm = lazy(() => import('../dynamicForm/DynamicForm'))\nconst DynamicFormDialog = lazy(() => import('../dynamicFormDialog/DynamicFormDialog'))\nconst Footer = lazy(() => import('../footer/Footer'))\nconst Header = lazy(() => import('../header/Header'))\nconst InterLinking = lazy(() => import('../interLinking/InterLinking'))\nconst LongBanner = lazy(() => import('../longBanner/LongBanner'))\nconst SeoHeader = lazy(() => import('../seoHeader/SeoHeader'))\nconst Stepper = lazy(() => import('../stepper/Stepper'))\nconst UsefulInfo = lazy(() => import('../usefulInfo/UsefulInfo'))\nconst Benefit = lazy(() => import('../benefit/Benefit'))\nconst InfoBlock = lazy(() => import('../infoBlock/InfoBlock'))\nconst UserFeedback = lazy(() => import('../userFeedback/UserFeedback'))\n\nexport type AllowedWidgets = keyof typeof WIDGET_LIST_MAP\n\nexport const WIDGET_LIST_MAP = {\n header: Header,\n seoHeader: SeoHeader,\n banner: Banner,\n calculator: Calculator,\n form: DynamicForm,\n formDialog: DynamicFormDialog,\n stepper: Stepper,\n benefit: Benefit,\n longBanner: LongBanner,\n usefulInfo: UsefulInfo,\n interLinking: InterLinking,\n footer: Footer,\n infoBlock: InfoBlock,\n userFeedback: UserFeedback\n} as const\n\nexport const KEYS_OF_WIDGET_LIST = Object.keys(WIDGET_LIST_MAP) as readonly AllowedWidgets[]\n\nexport const widgetIds = KEYS_OF_WIDGET_LIST.reduce(\n (acc, widget) => {\n acc[widget] = widget\n return acc\n },\n {} as Record<AllowedWidgets, AllowedWidgets>\n)\n","'use client'\n\nimport { useCallback } from 'react'\nimport type { ButtonHandlerOptions } from './types'\nimport { isClient, scrollToElement } from '$/shared/utils'\n\nexport const useButtonHandler = (handlerOptions: ButtonHandlerOptions) => {\n const handleClick = useCallback(() => {\n switch (handlerOptions.handler) {\n case 'navigate': {\n const { url, target, rel } = handlerOptions\n if (isClient) {\n window?.open(url, target, rel)\n }\n\n break\n }\n case 'scroll': {\n const { widgetId } = handlerOptions ?? ''\n scrollToElement({ widgetId })\n break\n }\n\n case 'dialog': {\n if (!isClient) return\n\n const { dialogId } = handlerOptions ?? {}\n\n const dialog = document.getElementById(dialogId) as HTMLDialogElement | null\n\n if (!dialog) {\n console.error('Такого элемента в DOM не существует', dialogId)\n break\n }\n\n dialog.show()\n }\n }\n }, [handlerOptions])\n\n return handleClick\n}\n","import { cn } from '../../shared/utils'\nimport { type ButtonHandlerOptions, useButtonHandler } from './model'\nimport { Button, type ButtonProps } from '$/shared/ui'\n\nexport interface ButtonWithHandlersProps extends ButtonProps {\n handlerOptions: ButtonHandlerOptions\n}\n\nexport const ButtonWithHandlers = ({ handlerOptions, className, ...props }: ButtonWithHandlersProps) => {\n const handleClick = useButtonHandler(handlerOptions)\n\n return (\n <Button className={cn(className)} onClick={handleClick} {...props}>\n {props.children}\n </Button>\n )\n}\n","import { type ReactElement } from 'react'\nimport { cva } from 'class-variance-authority'\nimport { type BackgroundBenefitColorsValues } from '../model/constants'\nimport { useDevice } from '$/shared/hooks'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { type Img } from '$/widgets/benefit/model/types'\nimport { ButtonWithHandlers, type ButtonWithHandlersProps } from '$/widgets/buttonWithHandlers'\n\nexport type BenefitItemClasses = {\n root?: string\n button?: string\n wrapper?: string\n textContainer?: string\n subtitle?: string\n img?: string\n imgContainer?: string\n title?: string\n}\n\nconst itemConfig = cva(\n 'flex flex-col justify-between overflow-hidden rounded-md bg-color-blue-grey-100 py-6 desktop:flex-row desktop:px-0 desktop:py-0',\n {\n variants: {\n variant: {\n twoCards: '',\n threeCards: 'desktop:first:col-span-full',\n fourCards: 'desktop:first:col-span-2 desktop:last:col-span-2'\n }\n }\n }\n)\n\nexport interface BenefitItemProps {\n title: string\n subtitle: string\n img?: ReactElement | Img\n mobileImg?: boolean\n classes?: BenefitItemClasses\n withButton?: boolean\n button?: ButtonWithHandlersProps\n variant?: 'twoCards' | 'threeCards' | 'fourCards'\n color?: BackgroundBenefitColorsValues\n}\n\nexport const BenefitItem = ({\n subtitle,\n title,\n img,\n mobileImg,\n classes,\n withButton,\n button,\n variant,\n color\n}: BenefitItemProps) => {\n const { isDesktop } = useDevice()\n\n return (\n <li\n key={title}\n style={{ backgroundColor: color ?? '#F3F4F7' }}\n className={cn(itemConfig({ variant }), { 'pb-0': mobileImg }, { 'pb-12': !mobileImg }, classes?.root)}\n >\n <div className={cn('flex flex-col items-start justify-between px-4 desktop:px-8 desktop:py-8', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-4', classes?.textContainer)}>\n <div dangerouslySetInnerHTML={{ __html: title }} className={cn('desktop:desk-title-bold-s', classes?.title)} />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('mob-body-regular-l text-icon-blue-grey-800 desktop:desk-body-regular-l', classes?.subtitle)}\n />\n </div>\n\n {withButton && isDesktop && button?.handlerOptions && (\n <ButtonWithHandlers intent='primary' className={cn('desktop:w-[200px]', classes?.button)} size='lg' {...button} />\n )}\n </div>\n\n {(mobileImg || isDesktop) && img && (\n <div className={cn('flex w-full justify-end', classes?.imgContainer)}>\n {img && 'url' in img && TypeGuards.isObject(img) ? (\n <img className={cn('h-[246px] object-cover', classes?.img)} src={img.url} alt={img.alt} />\n ) : (\n img\n )}\n </div>\n )}\n </li>\n )\n}\n","'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { widgetIds } from '../model'\nimport { type Details } from './model/types'\nimport { BenefitItem, type BenefitItemClasses } from './ui/BenefitItem'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type BenefitClasses = {\n root?: string\n container?: string\n item?: BenefitItemClasses\n heading?: string\n grid?: string\n}\n\nconst gridConfig = cva('grid gap-4', {\n variants: {\n variant: {\n twoCards: 'grid-cols-1 mobile:grid-rows-[repeat(2,400px)] desktop:grid-cols-2',\n threeCards: 'grid-cols-1 desktop:grid-cols-2',\n fourCards: 'grid-cols-1 mobile:grid-rows-[400px,1fr,1fr,400px] desktop:grid-cols-3'\n }\n }\n})\n\nexport interface BenefitProps {\n headline: string\n classes?: BenefitClasses\n variant: 'twoCards' | 'threeCards' | 'fourCards'\n details: Details[]\n}\n\nexport const Benefit = ({ headline, details, variant, classes }: BenefitProps) => {\n return (\n <section id={widgetIds.benefit} data-test-id={widgetIds.benefit} className={cn(classes?.root)}>\n <ResponsiveContainer className={classes?.container}>\n <div\n dangerouslySetInnerHTML={{ __html: headline }}\n className={cn('mob-headline-bold-s mb-8 desktop:desk-headline-bold-m', classes?.heading)}\n />\n <ul className={cn(gridConfig({ variant }), classes?.grid)}>\n {details?.map((card) => (\n <BenefitItem variant={variant} key={card.title} classes={classes?.item} {...card} />\n ))}\n </ul>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Benefit\n","import { ButtonWithHandlers } from '../../buttonWithHandlers'\nimport type { HeaderProps, HeaderVariantType } from './types'\nimport { PhoneView } from '$/shared/ui'\nimport { createPhoneNumber } from '$/shared/utils'\n\nexport const renderContentVariant = <Type extends HeaderVariantType>({ variant, details }: HeaderProps<Type>) => {\n switch (variant) {\n case 'withButton':\n return <ButtonWithHandlers {...details} />\n case 'withPhone':\n return <PhoneView classes={{ root: 'items-end' }} {...details} phone={createPhoneNumber(details.phone)} />\n default:\n return null\n }\n}\n","import { widgetIds } from '../model'\nimport { renderContentVariant } from './model/helpers'\nimport type { HeaderProps, HeaderVariantType } from './model/types'\nimport { brandLogos, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Header = <Type extends HeaderVariantType>(props: HeaderProps<Type>) => {\n const { logoPath = '/', logoType = 'main', classes } = props\n\n return (\n <header\n id={widgetIds.header}\n data-test-id={widgetIds.header}\n className={cn('flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn('flex items-center justify-between gap-5', classes?.wrapper)}>\n <a\n href={logoPath}\n aria-label='logo'\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]',\n classes?.logo\n )}\n >\n {brandLogos[logoType]}\n </a>\n {renderContentVariant(props)}\n </div>\n </ResponsiveContainer>\n </header>\n )\n}\n\nexport default Header\n","import { ButtonWithHandlers } from '../../../../buttonWithHandlers'\nimport type { ButtonsConfig } from '../../../model'\nimport { cn } from '$/shared/utils'\n\nexport type ButtonsClasses = {\n group?: string\n primary?: string\n secondary?: string\n}\n\ninterface ButtonsProps {\n classes?: ButtonsClasses\n buttonConfig: ButtonsConfig\n}\n\nexport const Buttons = ({ buttonConfig, classes }: ButtonsProps) => {\n const { primary, secondary } = buttonConfig || {}\n\n return (\n <div\n className={cn(\n 'grid-buttons-apply absolute bottom-6 left-1/2 flex w-full -translate-x-1/2 flex-col justify-self-center px-4 desktop:static desktop:left-auto desktop:max-w-full desktop:translate-x-0 desktop:flex-row desktop:justify-normal desktop:px-0',\n { 'flex items-center gap-4': secondary?.enabled },\n classes?.group\n )}\n >\n {primary.enabled && (\n <ButtonWithHandlers\n className={cn('w-full desktop:max-w-[216px]', classes?.primary)}\n size='lg'\n intent='primary'\n {...primary.buttonContent}\n />\n )}\n {secondary?.enabled && (\n <ButtonWithHandlers\n intent='secondary'\n size='lg'\n className={cn('w-full desktop:max-w-[216px]', classes?.secondary)}\n {...primary.buttonContent}\n />\n )}\n </div>\n )\n}\n","import { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface AdvantageClasses {\n root?: string\n advantagesContainer?: string\n item?: string\n title?: string\n description?: string\n}\n\nexport interface AdvantageItem {\n title: string\n description: string | React.ReactElement\n}\n\nexport interface AdvantagesProps {\n details: {\n variant: 'threeCards' | 'fourCards'\n items: AdvantageItem[]\n }\n enabled?: boolean\n classes?: AdvantageClasses\n}\n\nexport const Advantages = ({ details, classes }: AdvantagesProps) => {\n const { variant, items } = details ?? {}\n\n return (\n <div className={cn('flex items-center justify-center pb-8', classes?.root)}>\n <div\n id='advantages'\n className={cn(\n 'z-10 m-auto flex w-full min-w-[328px] max-w-[636px] flex-col gap-8 rounded-md bg-color-white p-6 shadow-sm desktop:w-full desktop:flex-row desktop:items-start desktop:gap-0 desktop:p-0 desktop:py-6',\n { 'desktop:max-w-[860px]': variant === 'threeCards' },\n { 'desktop:max-w-[1140px]': variant === 'fourCards' },\n classes?.advantagesContainer\n )}\n >\n {items?.map(({ title, description }) => (\n <div\n key={title}\n className={cn(\n 'after:content-[\" \"] relative flex h-full w-full flex-col gap-1 after:absolute after:-bottom-4 after:left-1/2 after:h-[1px] after:w-full after:-translate-x-1/2 after:bg-color-blue-grey-300 last:after:hidden desktop:w-[285px] desktop:items-center desktop:px-8 desktop:after:bottom-auto desktop:after:left-auto desktop:after:right-0 desktop:after:top-1/2 desktop:after:h-10 desktop:after:w-[1px] desktop:after:-translate-y-1/2 desktop:after:translate-x-0',\n classes?.item\n )}\n >\n <Heading as='h4' className={cn('text-color-dark', classes?.title)}>\n {title}\n </Heading>\n <p className={cn('desk-body-regular-l text-color-secondary', classes?.description)}>{description}</p>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { Advantages, Buttons } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type BannerProps, widgetIds } from '$/widgets'\n\nexport const BannerImageFull = ({\n headTitle,\n subtitle,\n buttonsConfig,\n advantages,\n classes,\n images,\n backgroundColor\n}: Omit<BannerProps, 'bannerVariant'>) => {\n const { isMobile } = useDevice()\n\n const advantagesExist = advantages?.details && advantages?.details?.items.length > 0\n\n return (\n <>\n <section\n id={widgetIds.banner}\n data-test-id={widgetIds.banner}\n style={{ backgroundColor: backgroundColor ?? '#d9edff' }}\n className={cn('relative h-[552px] desktop:h-[456px]', classes?.root)}\n >\n <div className='absolute bottom-0 left-0 right-0 top-0 mx-auto h-full max-w-[1920px] desktop:h-[456px]'>\n {isMobile ? (\n <img src={images?.mobile} className='h-full w-full object-cover object-center' alt={images?.alt} />\n ) : (\n <img src={images?.desktop} alt={images?.alt} className='h-full w-full object-cover object-center' />\n )}\n </div>\n\n <ResponsiveContainer className={cn('h-full', classes?.container)}>\n <div className={cn('flex h-full', classes?.wrapper)}>\n <div className={cn('flex w-[328px] flex-col gap-10 pt-6 desktop:w-full desktop:pt-20', classes?.textBlock)}>\n <div className='z-10 flex flex-col gap-4'>\n <div\n dangerouslySetInnerHTML={{ __html: headTitle }}\n className={cn('mob-headline-bold-m text-color-dark desktop:desk-headline-bold-l', classes?.title)}\n />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}\n />\n </div>\n\n <Buttons buttonConfig={buttonsConfig} />\n </div>\n </div>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'mobile:hidden desktop:absolute desktop:bottom-[-50px] desktop:right-1/2 desktop:translate-x-1/2 desktop:rounded-md desktop:p-0'\n }}\n {...advantages}\n />\n )}\n </ResponsiveContainer>\n </section>\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'px-4 pt-4 mobile:bg-color-white desktop:hidden'\n }}\n {...advantages}\n />\n )}\n </>\n )\n}\n","import { Advantages, Buttons } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type BannerProps, widgetIds } from '$/widgets'\n\nexport const BannerWithSeparateImg = ({\n headTitle,\n subtitle,\n buttonsConfig,\n advantages,\n classes,\n images,\n backgroundColor\n}: Omit<BannerProps, 'bannerVariant'>) => {\n const advantagesExist = advantages?.details && advantages?.details?.items.length > 0\n\n return (\n <section\n id={widgetIds.banner}\n style={{ backgroundColor: backgroundColor ?? '#d9edff' }}\n data-test-id={widgetIds.banner}\n className={cn('', classes?.root)}\n >\n <ResponsiveContainer className={cn('relative desktop:h-[456px]', classes?.container)}>\n <div className={cn('flex flex-col desktop:flex-row desktop:justify-between', classes?.wrapper)}>\n <div className='flex flex-col desktop:gap-10 desktop:pt-20'>\n <div className={cn('flex flex-col gap-4 pt-6 desktop:pt-0', classes?.textBlock)}>\n <div\n dangerouslySetInnerHTML={{ __html: headTitle }}\n className={cn('mob-headline-bold-m text-color-dark desktop:desk-headline-bold-l', classes?.title)}\n />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}\n />\n </div>\n\n <Buttons\n buttonConfig={buttonsConfig}\n classes={{\n group: 'z-10'\n }}\n />\n </div>\n\n <div\n className={cn(\n 'relative flex h-[356px] justify-center desktop:hidden desktop:h-[456px] desktop:w-[550px]',\n classes?.imageContainer\n )}\n >\n <img src={images?.mobile} alt={images?.alt} className='h-full object-contain' />\n </div>\n\n <div\n className={cn(\n 'relative flex h-[356px] justify-center mobile:hidden desktop:h-[456px] desktop:w-[550px]',\n classes?.imageContainer\n )}\n >\n <img src={images?.desktop} alt={images?.alt} className='h-full object-contain' />\n </div>\n </div>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'mobile:hidden desktop:absolute desktop:bottom-[-50px] desktop:right-1/2 desktop:translate-x-1/2 desktop:rounded-md desktop:p-0'\n }}\n {...advantages}\n />\n )}\n </ResponsiveContainer>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'px-4 pt-4 mobile:bg-color-white desktop:hidden'\n }}\n {...advantages}\n />\n )}\n </section>\n )\n}\n","'use client'\n\nimport { type ReactElement } from 'react'\nimport { type BannerClasses, type ButtonsConfig } from './model'\nimport { type Images } from './model/types'\nimport { BannerImageFull, BannerWithSeparateImg } from './ui'\nimport { type AdvantageClasses, type AdvantagesProps } from './ui/banners/ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\n\nexport interface BannerProps {\n headTitle: string | ReactElement\n subtitle: string | ReactElement\n buttonsConfig: ButtonsConfig\n advantages?: AdvantagesProps\n variant?: 'separateImg' | 'fullImg'\n images: Images\n backgroundColor?: BackgroundBannerColors\n classes?: BannerClasses & {\n advantages?: AdvantageClasses\n }\n}\n\nexport const Banner = ({ variant, ...props }: BannerProps) => {\n switch (variant) {\n case 'fullImg':\n return <BannerImageFull {...props} />\n default:\n return <BannerWithSeparateImg {...props} />\n }\n}\n\nexport default Banner\n","import type { FooterSocialLinks } from '../model/types'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type SocialLinksClasses = {\n socialRoot?: string\n socialLink?: string\n socialIcon?: string\n}\n\ninterface ISocialLinksProps {\n socialsLinks: FooterSocialLinks[]\n classes?: SocialLinksClasses\n}\n\nexport const SocialLinks = ({ socialsLinks, classes }: ISocialLinksProps) => {\n return (\n <div className={cn('mt-4 flex items-center gap-2 desktop:mt-6', classes?.socialRoot)}>\n {socialsLinks?.map(({ iconName, href, ...rest }) => (\n <a\n className={cn('flex size-8 items-center justify-center rounded-full bg-[#52576a] p-2', classes?.socialLink)}\n href={href}\n key={href}\n aria-label={iconName.replace('social/', '')}\n {...rest}\n >\n <Icon name={iconName} className={cn('h-full w-full text-icon-white', classes?.socialIcon)} />\n </a>\n ))}\n </div>\n )\n}\n","import type { FooterPhones } from '../model/types'\nimport { PhoneView } from '$/shared/ui'\nimport { cn, createPhoneNumber } from '$/shared/utils'\n\nexport type PhoneBlockClasses = {\n phonesRoot?: string\n phoneWrapper?: string\n phoneText?: string\n phoneLink?: string\n}\n\ninterface PhonesBlockProps {\n phones: FooterPhones[]\n classes?: PhoneBlockClasses\n}\n\nexport const PhonesBlock = ({ phones, classes }: PhonesBlockProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:items-end', classes?.phonesRoot)}>\n {phones?.map(({ phone, text }) => (\n <PhoneView\n key={phone}\n phone={createPhoneNumber(phone)}\n text={text}\n classes={{\n root: cn(classes?.phoneWrapper),\n text: cn('text-color-footer', classes?.phoneText),\n link: cn('text-color-white mobile:m-0', classes?.phoneLink)\n }}\n />\n ))}\n </div>\n )\n}\n","import type { Details } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type NavigationLinksClasses = {\n navRoot?: string\n navGroup?: string\n navLabel?: string\n navLinks?: string\n navLink?: string\n navLinkIcon?: string\n}\n\ninterface NavLinksProps {\n classes?: NavigationLinksClasses\n details: Details[]\n}\n\nexport const NavLinks = ({ classes, details }: NavLinksProps) => {\n return (\n <div\n className={cn(\n 'mt-6 grid grid-cols-1 gap-6 border-b border-blue-grey-500 pb-6 desktop:my-8 desktop:grid-cols-4 desktop:gap-10 desktop:pb-8',\n classes?.navRoot\n )}\n >\n {details?.map(({ column }) =>\n column?.map(({ groupLabel, links }) => (\n <div key={groupLabel} className={cn('flex flex-col gap-4', classes?.navGroup)}>\n <div className={cn('desk-body-medium-l text-color-white', classes?.navLabel)}>{groupLabel}</div>\n <div className={cn('flex flex-col gap-1', classes?.navLinks)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n key={label}\n href={path}\n aria-label={label}\n intent='white'\n classes={{\n link: classes?.navLink,\n icon: classes?.navLinkIcon\n }}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )\n}\n","import { cn } from '$/shared/utils'\n\nexport type CopyrightClasses = {\n copyRight?: string\n}\n\ninterface CopyrightProps {\n text: string\n classes?: CopyrightClasses\n}\n\nexport const Copyright = ({ text, classes }: CopyrightProps) => {\n const currentYear = new Date().getFullYear()\n\n return (\n <div\n className={cn('desk-body-regular-m text-color-footer [&_>p]:inline', classes?.copyRight)}\n dangerouslySetInnerHTML={{\n __html: `© 2004-${currentYear} ${text}`\n }}\n />\n )\n}\n","import { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type FooterLogoClasses = {\n footerLogo?: string\n footerLogoIcon?: string\n}\n\nexport interface FooterLogoProps {\n classes?: FooterLogoClasses\n}\n\nexport const FooterLogo = ({ classes }: FooterLogoProps) => {\n return (\n <a\n aria-label='logo'\n href='https://sovcombank.ru/'\n className={cn('block h-[24px] w-[132px] desktop:h-[32px] desktop:w-[194px]', classes?.footerLogo)}\n >\n <Icon name='brandLogos/logoWhite' className={cn('size-full', classes?.footerLogoIcon)} />\n </a>\n )\n}\n","import { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type SiteMapClasses = {\n siteMapLink?: string\n siteMapLinkIcon?: string\n}\n\nexport interface SiteMapProps {\n classes?: SiteMapClasses\n}\n\nexport const SiteMap = ({ classes }: SiteMapProps) => {\n return (\n <CustomLink\n intent='white'\n href='https://sovcombank.ru/site-map'\n target='_blank'\n aria-label='site-map'\n rel='noreferrer'\n classes={{\n link: cn('mobile:mt-6', classes?.siteMapLink),\n icon: classes?.siteMapLinkIcon\n }}\n >\n Карта сайта\n </CustomLink>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '$/shared/utils'\n\ntype LigalClasses = {\n ligalRoot?: string\n ligalText?: string\n ligalButton?: string\n}\n\nexport interface LigalProps {\n text: string\n classes?: LigalClasses\n}\n\nexport const Ligal = ({ text, classes }: LigalProps) => {\n const [isExpanded, setIsExpanded] = React.useState(false)\n const [isClamped, setIsClamped] = React.useState(false)\n const ligalRef = React.useRef<HTMLParagraphElement | null>(null)\n\n React.useEffect(() => {\n const element = ligalRef.current\n if (element) {\n setIsClamped(element.scrollHeight > element.clientHeight)\n }\n }, [])\n\n return (\n <div className={cn('mt-8 flex flex-col gap-4', classes?.ligalRoot)}>\n <div\n ref={ligalRef}\n className={cn('desk-body-regular-m text-color-footer', { 'line-clamp-3': !isExpanded }, classes?.ligalText)}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n\n {isClamped && (\n <div\n tabIndex={0}\n role='button'\n onClick={() => setIsExpanded((prev) => !prev)}\n className={cn(\n 'desk-body-regular-l w-max cursor-pointer font-medium text-color-footer transition-colors hover:text-color-white',\n classes?.ligalButton\n )}\n >\n Подробнее\n </div>\n )}\n </div>\n )\n}\n","import { widgetIds } from '../model'\nimport {\n type CopyrightType,\n type Details,\n type FooterClasses,\n type LigalType,\n type PhonesType,\n type SocialsLinksType\n} from './model/types'\nimport { Copyright, FooterLogo, NavLinks, PhonesBlock, SiteMap, SocialLinks } from './ui'\nimport { Ligal } from './ui/Ligal'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface FooterProps<Enabled extends boolean> {\n variant: 'fourCols'\n socialsLinks: SocialsLinksType<Enabled>\n phones: PhonesType<Enabled>\n ligal: LigalType<Enabled>\n copyright: CopyrightType<Enabled>\n siteMap?: boolean\n details: Details[]\n classes?: FooterClasses\n}\n\nexport const Footer = <Enabled extends boolean>({\n socialsLinks,\n phones,\n ligal,\n copyright,\n classes,\n details,\n siteMap = true\n}: FooterProps<Enabled>) => {\n return (\n <footer\n id={widgetIds.footer}\n data-test-id={widgetIds.footer}\n className={cn('w-full bg-color-footer py-8 desktop:py-10', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.footerContainer)}>\n <div className={cn('mobile:pb-[176px]', classes?.footerWrapper)}>\n <div\n className={cn(\n 'flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8',\n classes?.footerHead\n )}\n >\n <div className={cn(classes?.footerSocialBlock)}>\n <FooterLogo classes={classes?.footerLogo} />\n {socialsLinks.enabled && <SocialLinks socialsLinks={socialsLinks.links} classes={classes?.socialLinks} />}\n </div>\n\n {phones.enabled && <PhonesBlock phones={phones.items} classes={classes?.phonesBlock} />}\n </div>\n\n {!TypeGuards.isArrayEmpty(details) && <NavLinks details={details} classes={classes?.navLinks} />}\n {ligal.enabled && <Ligal text={ligal.text} />}\n\n <div\n className={cn(\n 'mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6',\n classes?.footerBottom\n )}\n >\n {copyright.enabled && <Copyright text={copyright.text} classes={classes?.copyright} />}\n {siteMap && <SiteMap classes={classes?.siteMap} />}\n </div>\n </div>\n </ResponsiveContainer>\n </footer>\n )\n}\n\nexport default Footer\n","import type { SingleStep as SingleStepType } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type SingleStepClasses = {\n singleStep?: string\n numeric?: string\n textBlock?: string\n title?: string\n description?: string\n stepContainer?: string\n imageContainer?: string\n image?: string\n}\n\nexport const SingleStep = (props: SingleStepType) => {\n const { classes, index, title, description } = props\n\n return (\n <div\n className={cn(\n 'flex w-[328px] max-w-[328px] flex-col gap-4 rounded-md border border-solid border-blue-grey-500 p-4 desktop:w-[348px] desktop:max-w-[348px] desktop:border-none desktop:p-0',\n classes?.singleStep\n )}\n >\n <div\n className={cn(\n 'mob-headline-bold-s flex size-10 items-center justify-center rounded-sm bg-color-blue-grey-500 text-color-white desktop:desk-title-bold-l desktop:size-12',\n classes?.numeric\n )}\n >\n {index}\n </div>\n\n <div className={cn('flex flex-col gap-6', classes?.stepContainer)}>\n <div className={cn('flex flex-col gap-2')}>\n {title && (\n <div\n dangerouslySetInnerHTML={{ __html: title }}\n className={cn('mob-title-bold-m text-color-dark desktop:desk-title-bold-s', classes?.title)}\n />\n )}\n <div\n dangerouslySetInnerHTML={{ __html: description ?? '' }}\n className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}\n />\n </div>\n\n {props.type === 'withImage' && Object.keys(props?.image ?? {}).length > 0 && (\n <div className={cn('h-[368px] w-[348px] mobile:hidden', classes?.imageContainer)}>\n <img className={cn('h-full w-full object-contain', classes?.image)} src={props?.image?.src} alt={props?.image?.alt} />\n </div>\n )}\n </div>\n </div>\n )\n}\n","import { useState } from 'react'\nimport { type SingleStepper } from '../model/types'\nimport { CarouselBase, type CarouselClasses, CarouselSlide, type CarouselSlideClasses } from '$/shared/ui'\n\nexport type StepperCarouselClasses = {\n carouselClasses?: CarouselClasses\n carouselSlideClasses?: CarouselSlideClasses\n}\n\ninterface SingleStepMobileProps<Enabled extends boolean> {\n currentStepper: SingleStepper<Enabled>\n classes?: StepperCarouselClasses\n}\n\nexport const StepperCarousel = <Enabled extends boolean>({ currentStepper, classes }: SingleStepMobileProps<Enabled>) => {\n const [visibleIndex, setVisibleIndex] = useState(0)\n\n const { carouselClasses, carouselSlideClasses } = classes || {}\n\n return (\n <CarouselBase\n carouselOptions={{\n dragFree: false\n }}\n visibleIndex={visibleIndex}\n setVisibleIndex={setVisibleIndex}\n autoPlayOptions={{\n active: false\n }}\n classes={{\n containerWithNavClasses: {\n wrapper: 'gap-4'\n },\n root: 'desktop:hidden',\n carouselContentClasses: {\n slidesOverlay: 'max-w-full w-full'\n },\n ...carouselClasses\n }}\n >\n {currentStepper.details.map((slide, slideIndex) => (\n <CarouselSlide\n key={slideIndex}\n variant='fullScreen'\n slideIndex={slideIndex}\n {...slide}\n classes={{\n slide: 'mobile:w-[328px] desktop:w-[1140px]',\n ...carouselSlideClasses\n }}\n />\n ))}\n </CarouselBase>\n )\n}\n","import { type Dispatch, memo, type SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type StepperTabsClasses = {\n wrapper?: string\n tab?: string\n}\n\nexport interface StepperTab {\n headline: string\n}\n\nexport type StepperTabValue = string | undefined\n\nexport interface StepperTabsProps {\n stepperTabs?: StepperTab[]\n activeStepper: StepperTabValue\n setActiveStepper: Dispatch<SetStateAction<StepperTabValue>>\n classes?: StepperTabsClasses\n}\n\nexport const StepperTabs = memo(({ stepperTabs, activeStepper, setActiveStepper, classes }: StepperTabsProps) => {\n return (\n <div className={cn('customScrollbar-y scrollHidden flex items-center gap-4 overflow-x-auto', classes?.wrapper)}>\n {stepperTabs?.map(({ headline }) => (\n <button\n key={headline}\n onClick={() => setActiveStepper(headline)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent desktop:desk-body-regular-l focus:outline-primary-focus desktop:px-4 desktop:py-3',\n { 'bg-icon-primary-default text-color-white': activeStepper === headline },\n classes?.tab\n )}\n >\n {headline}\n </button>\n ))}\n </div>\n )\n})\n","import { type HTMLAttributes, useMemo, useState } from 'react'\nimport { widgetIds } from '../model'\nimport { type SingleStepper } from './model/types'\nimport { StepperCarousel } from './ui'\nimport { SingleStep, type SingleStepClasses } from './ui/SingleStep'\nimport { type StepperCarouselClasses } from './ui/StepperCarousel'\nimport { StepperTabs, type StepperTabsClasses, type StepperTabValue } from './ui/StepperTabs'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type StepperClasses = {\n root?: string\n container?: string\n wrapper?: string\n headline?: string\n stepsWrapper?: string\n step?: SingleStepClasses\n stepperTabs?: StepperTabsClasses\n stepperCarousel?: StepperCarouselClasses\n}\n\nexport interface StepperProps<WithImages extends boolean> extends HTMLAttributes<HTMLDivElement> {\n steppers: SingleStepper<WithImages>[]\n classes?: StepperClasses\n}\n\nexport const Stepper = <WithImages extends boolean>({ steppers, classes }: StepperProps<WithImages>) => {\n const shouldShowTabs = steppers && steppers?.length > 1\n const [activeStepper, setActiveStepper] = useState<StepperTabValue>(shouldShowTabs ? steppers?.[0]?.headline : '')\n\n const steppersTabs = useMemo(() => steppers?.map(({ headline }) => ({ headline })), [steppers])\n\n const currentStepperIndex = shouldShowTabs ? steppersTabs?.findIndex((tab) => tab.headline === activeStepper) : 0\n const currentStepper = steppers?.[currentStepperIndex]\n\n return (\n <section key={currentStepper.headline} id={widgetIds.stepper} data-test-id={widgetIds.stepper} className={classes?.root}>\n <ResponsiveContainer className={cn(classes?.container, 'mobile:max-w-[360px]')}>\n <div className={cn('flex flex-col gap-6 desktop:items-start desktop:gap-12', classes?.wrapper)}>\n <Heading as='h2' className={cn('text-color-dark', classes?.headline)}>\n {currentStepper.headline}\n </Heading>\n\n <div className='flex flex-col gap-6 desktop:gap-10'>\n {shouldShowTabs && (\n <StepperTabs\n stepperTabs={steppersTabs}\n activeStepper={activeStepper}\n setActiveStepper={setActiveStepper}\n classes={classes?.stepperTabs}\n />\n )}\n\n {currentStepper.withImages && <StepperCarousel classes={classes?.stepperCarousel} currentStepper={currentStepper} />}\n\n <div\n className={cn(\n 'flex w-full flex-col items-start gap-6 desktop:flex-row desktop:items-start desktop:gap-12',\n classes?.stepsWrapper,\n { ['mobile:hidden']: currentStepper.withImages }\n )}\n >\n {currentStepper?.details?.map((step, index) => (\n <SingleStep {...step} key={step.description} index={index + 1} classes={classes?.step} />\n ))}\n </div>\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Stepper\n","import { cva } from 'class-variance-authority'\n\nexport const titleConfig = cva('', {\n variants: {\n intent: {\n twoItems: 'mob-headline-bold-s mb-6 desktop:desk-headline-bold-m desktop:mb-12',\n fourItems: 'mob-title-bold-l desktop:desk-title-bold-l mb-8'\n },\n desktopHidden: {\n true: 'desktop:hidden'\n },\n mobileHidden: {\n true: 'mobile:hidden'\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n }\n})\n\nexport const listItemConfig = cva('', {\n variants: {\n intent: {\n twoItems: '',\n fourItems: ''\n },\n withButton: {\n true: ''\n }\n },\n compoundVariants: [\n {\n intent: 'twoItems',\n withButton: true,\n class: 'mb-8 desktop:flex'\n },\n {\n intent: 'twoItems',\n withButton: false,\n class: 'desktop:flex'\n },\n {\n intent: 'fourItems',\n withButton: true,\n class: 'desktop:grid grid-rows-2 mb-8 desktop:gap-x-10 desktop:gap-y-4 grid-flow-col'\n },\n {\n intent: 'fourItems',\n withButton: false,\n class: 'desktop:grid grid-rows-2 desktop:gap-x-10 desktop:gap-y-4 grid-flow-col'\n }\n ]\n})\n\nexport const itemConfig = cva('border-blue-grey-500 pb-6 mobile:mb-6 mobile:border-b mobile:last:pb-0 mobile:last:mb-0', {\n variants: {\n intent: {\n twoItems:\n 'last:border-none relative desktop:first:after:top-1/2 desktop:first:after:-translate-y-1/2 desktop:first:after:right-0 desktop:first:after:content-[\"\"] desktop:first:after:block desktop:first:after:absolute desktop:first:after:w-[1px] desktop:first:after:h-[64px] desktop:first:after:bg-color-blue-grey-500 desktop:ml-8 desktop:pr-8 desktop:first:ml-0 desktop:last:pr-0 desktop:pb-3',\n fourItems: ' mobile:last:border-none desktop:w-[264px] desktop:odd:border-b desktop:pb-0 desktop:odd:pb-3'\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n }\n})\n\nexport const containerImgConfig = cva('mobile:mx-auto mobile:mb-8, h-[172px] w-[280px] ', {\n variants: {\n intent: {\n twoItems: 'desktop:h-[232px] desktop:w-[500px]',\n fourItems: ' '\n },\n withButton: {\n true: true,\n false: false\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n },\n compoundVariants: [\n {\n intent: 'fourItems',\n withButton: true,\n class: 'desktop:h-[360px] desktop:w-[500px]'\n },\n {\n intent: 'fourItems',\n withButton: false,\n class: 'desktop:h-[272px] desktop:w-[500px]'\n }\n ]\n})\n","import { itemConfig } from '../model/cva'\nimport { type TextItemProps } from '../model/types'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const TextItem = <Enabled extends boolean>({ data, intent }: TextItemProps<Enabled>) => {\n const {\n title,\n description,\n popover = {\n enabled: false\n }\n } = data\n return (\n <li className={cn(itemConfig({ intent }))}>\n <div className='desktop:max-w-[264px]'>\n <div className={cn('mb-2 flex items-center gap-2')}>\n <h4 className={cn('mob-title-bold-m text-color-dark')}>{title}</h4>\n {popover.enabled && (\n <Popover triggerElement={<Icon className={cn('size-5 text-icon-blue-grey-600')} name='info/helpCircle' />}>\n {popover.text}\n </Popover>\n )}\n </div>\n\n <div className={cn('mob-body-regular-l text-color-secondary')} dangerouslySetInnerHTML={{ __html: description }} />\n </div>\n </li>\n )\n}\n","import { type ReactElement } from 'react'\nimport { titleConfig } from '../model/cva'\nimport { type LongBannerConfig } from '../model/types'\nimport { cn } from '$/shared/utils'\n\ninterface TitleProps {\n intent: LongBannerConfig['intent']\n headline: string | ReactElement\n desktopHidden?: boolean\n mobileHidden?: boolean\n}\n\nexport const Title = ({ intent, headline, desktopHidden = false, mobileHidden = false }: TitleProps) => {\n return <h2 className={cn(titleConfig({ intent, desktopHidden, mobileHidden }))}>{headline}</h2>\n}\n","import { listItemConfig } from '../model/cva'\nimport { type Details, type LongBannerConfig } from '../model/types'\nimport { TextItem } from './TextItem'\nimport { cn } from '$/shared/utils'\n\ninterface ListItemsProps<Enabled extends boolean> {\n details: Details<Enabled>[]\n intent: LongBannerConfig['intent']\n withButton: boolean\n}\n\nexport const TextList = <Enabled extends boolean>({ details, intent, withButton }: ListItemsProps<Enabled>) => {\n return (\n <ul className={cn(listItemConfig({ intent, withButton }))}>\n {details?.map((element, index) => (\n <TextItem intent={intent} data={element} key={index} />\n ))}\n </ul>\n )\n}\n","import { type ReactElement } from 'react'\nimport { ButtonWithHandlers } from '../buttonWithHandlers'\nimport { widgetIds } from '../model'\nimport { containerImgConfig } from './model/cva'\nimport { type ButtonConfig, type Details, type Image, type LongBannerClasses, type LongBannerConfig } from './model/types'\nimport { TextList, Title } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface LongBannerProps<Enabled extends boolean> extends LongBannerConfig {\n headline: string | ReactElement\n details: Details<Enabled>[]\n intent?: 'twoItems' | 'fourItems'\n buttonConfig?: ButtonConfig\n image: Image\n classes?: LongBannerClasses\n}\n\nexport const LongBanner = <Enabled extends boolean>({\n headline,\n buttonConfig,\n intent = 'twoItems',\n details,\n image,\n classes\n}: LongBannerProps<Enabled>) => {\n const isFourItems = intent === 'fourItems'\n const isTwoItems = intent === 'twoItems'\n\n const img =\n image && 'url' in image && TypeGuards.isObject(image) ? (\n <img className='w-full object-contain' alt={image.alt} src={image.url} />\n ) : (\n image\n )\n\n return (\n <section id={widgetIds.longBanner} data-test-id={widgetIds.longBanner} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n {isTwoItems && <Title intent={intent} headline={headline} />}\n\n <div\n className={cn(\n 'bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12',\n classes?.contentContainer\n )}\n >\n {isFourItems && <Title intent={intent} headline={headline} desktopHidden={true} />}\n <div className={cn(containerImgConfig({ intent, withButton: buttonConfig?.enabled }), classes?.imgContainer)}>\n {img}\n </div>\n <div\n className={cn('desktop:flex desktop:flex-col desktop:justify-center desktop:py-10', classes?.textWithBtnContainer)}\n >\n {isFourItems && <Title intent={intent} headline={headline} mobileHidden={true} />}\n <TextList details={details} intent={intent} withButton={buttonConfig?.enabled ?? false} />\n {buttonConfig?.enabled && buttonConfig && (\n <ButtonWithHandlers\n className={cn('w-full px-4 desktop:w-max', classes?.button)}\n size='lg'\n intent='secondary'\n {...buttonConfig.buttonContent}\n />\n )}\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default LongBanner\n","export const AUTH_PROVIDER_MODE = {\n ESIA: 'esia',\n MOBILE_ID: 'mobileId',\n COMBINE: 'combine'\n} as const\n","import { Loader, type LoaderProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AuthWrapperClasses = {\n root?: string\n wrapper?: string\n}\n\nexport interface AuthWrapperProps {\n children: React.ReactElement\n classes?: AuthWrapperClasses\n isLoading?: boolean\n loaderProps?: LoaderProps\n}\n\nexport const AuthWrapper = ({ children, isLoading, classes, loaderProps }: AuthWrapperProps) => {\n return (\n <div\n tabIndex={0}\n className={cn(\n 'relative flex h-[90px] w-full max-w-[328px] items-center justify-center rounded-sm p-2 desktop:max-w-[524px]',\n 'bg-color-white outline outline-1 outline-warm-grey-200 transition-colors focus-visible:outline-primary-focus',\n classes?.root\n )}\n >\n <div\n className={cn(\n 'flex h-[74px] flex-1 cursor-pointer rounded-sm px-2 py-3 transition-colors desktop:px-4 desktop:py-3',\n 'bg-color-blue-grey-100 hover:bg-color-blue-grey-200 active:bg-color-blue-grey-300',\n { 'items-center': isLoading },\n classes?.wrapper\n )}\n >\n {isLoading ? <Loader position='static' classes={{ wrapper: 'size-8 m-auto' }} {...loaderProps} /> : children}\n </div>\n </div>\n )\n}\n","import { type SVGProps } from 'react'\n\nexport const EsiaLogo = ({ ...props }: SVGProps<SVGSVGElement>) => {\n return (\n <svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg' {...props}>\n <path\n d='M30.3986 10.6149C30.2728 8.96576 29.014 6.85155 27.7553 5.83672C26.3398 4.79816 24.8691 3.83828 23.3497 2.96139C21.8418 2.06068 20.2871 1.24201 18.6923 0.508895C17.8404 0.15868 16.927 -0.0139306 16.007 0.00148264C15.0868 -0.0180029 14.1725 0.154761 13.3217 0.508895C11.7272 1.24253 10.1725 2.06119 8.66438 2.96139C6.23081 4.44134 4.25878 5.83672 4.25878 5.83672C3.22329 6.71008 2.43892 7.83418 1.97146 9.09195C1.87834 9.34251 2.07032 9.59987 2.33762 9.59987H4.2568C4.55401 9.59987 4.82321 9.43281 4.98085 9.18085C5.33539 8.61417 5.77902 8.10202 6.29948 7.66607C6.29948 7.66607 7.92774 6.52186 9.93709 5.3083C11.1823 4.57013 12.466 3.89884 13.7826 3.29725C14.485 3.00687 15.2399 2.8652 15.9998 2.88118C16.7593 2.86854 17.5136 3.01008 18.217 3.29725C19.5337 3.89841 20.8174 4.56972 22.0624 5.3083C23.317 6.02735 24.5313 6.81445 25.7 7.66607C26.7394 8.49823 27.7787 10.2319 27.8826 11.5841C27.8826 11.5841 28.1251 13.5952 28.1598 15.9772C28.1576 17.4483 28.0767 18.9183 27.9173 20.3807C27.6755 21.912 26.8879 23.3038 25.7 24.2988C25.7 24.2988 24.0718 25.4777 22.0624 26.6912C20.8172 27.4294 19.5335 28.1007 18.217 28.7023C17.5145 28.9927 16.7596 29.1343 15.9998 29.1184C15.2409 29.1343 14.4867 28.9963 13.7826 28.7127C12.4658 28.1115 11.1821 27.4402 9.93709 26.7016C7.92774 25.5228 6.29948 24.3092 6.29948 24.3092C5.84515 23.9454 5.39081 23.4094 5.01172 22.8082C4.85581 22.561 4.5896 22.3997 4.2973 22.3997H2.34718C2.07645 22.3997 1.88475 22.6629 1.98611 22.914C2.49249 24.168 3.37564 25.4212 4.25878 26.1332C4.25878 26.1332 6.23081 27.6132 8.66438 29.0508C10.1723 29.9515 11.7269 30.7702 13.3217 31.5033C14.1745 31.8492 15.088 32.0175 16.007 31.998C16.9273 32.0175 17.8416 31.8448 18.6923 31.4906C20.2869 30.757 21.8415 29.9383 23.3497 29.0381C25.7833 27.5582 27.7553 26.1205 27.7553 26.1205C29.1939 24.9072 30.1478 23.2098 30.4406 21.3424C30.6337 19.5589 30.7317 17.7663 30.7343 15.9723C30.6923 13.0673 30.3986 10.6149 30.3986 10.6149Z'\n fill='url(#paint0_linear_6493_452)'\n />\n <path\n d='M1.27985 12.4821C1.27985 12.1286 1.56638 11.8421 1.91985 11.8421H11.8398C12.1933 11.8421 12.4798 12.1286 12.4798 12.4821V14.4021C12.4798 14.7555 12.1933 15.0421 11.8398 15.0421H1.27985V12.4821Z'\n fill='#0066B3'\n />\n <path\n d='M1.27985 16.9618H21.4398C21.7933 16.9618 22.0798 17.2484 22.0798 17.6018V19.5218C22.0798 19.8752 21.7933 20.1618 21.4398 20.1618H1.91985C1.56638 20.1618 1.27985 19.8752 1.27985 19.5218V16.9618Z'\n fill='#EE2F53'\n />\n <defs>\n <linearGradient id='paint0_linear_6493_452' x1='16.0071' y1='0' x2='16.0071' y2='31.9996' gradientUnits='userSpaceOnUse'>\n <stop stopColor='#0066B3' />\n <stop offset='0.354167' stopColor='#0066B3' />\n <stop offset='0.6875' stopColor='#EE2F53' />\n <stop offset='1' stopColor='#EE2F53' />\n </linearGradient>\n </defs>\n </svg>\n )\n}\n","import type { SingleAuthSchema } from '../../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TLinksClasses = {\n linksWrapper?: string\n linksMainLink?: string\n linksSubLink?: string\n}\n\ninterface ILinksProps extends Pick<SingleAuthSchema, 'subLink' | 'mainLink'> {\n isMobile: boolean\n classes?: TLinksClasses\n}\n\nexport const Links = ({ mainLink, subLink, isMobile, classes }: ILinksProps) => {\n return (\n <div className={cn('flex flex-col', classes?.linksWrapper)}>\n <a\n href={mainLink.href}\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'before:content=[\" \"] desk-body-medium-l z-[4] text-color-dark before:absolute before:left-1/2 before:top-1/2 before:h-full before:w-full before:-translate-x-1/2 before:-translate-y-1/2',\n classes?.linksMainLink\n )}\n >\n {isMobile ? mainLink.mobileTitle : mainLink.title}\n </a>\n\n {subLink?.text && subLink?.href && (\n <CustomLink\n intent='blue'\n withUnderline\n href={subLink?.href}\n target='_blank'\n rel='noreferrer'\n classes={{\n link: cn('w-max relative z-[6] p-0 desk-body-regular-m text-color-tetriary', classes?.linksSubLink)\n }}\n >\n {subLink?.text}\n </CustomLink>\n )}\n </div>\n )\n}\n","import { type TMobileIdProps } from '../model/types'\nimport { AuthWrapper, Links } from './ui/'\nimport { useDevice } from '$/shared/hooks'\nimport { Badge, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const MobileId = ({ mainLink, subLink, isLoading, badge, loaderProps, classes }: TMobileIdProps) => {\n const { isMobile } = useDevice()\n\n return (\n <AuthWrapper isLoading={isLoading} loaderProps={loaderProps} classes={classes?.authWrapper}>\n <div\n className={cn(\n 'flex flex-1 items-center justify-between gap-1',\n { 'justify-center': !badge && isMobile },\n classes?.innerWrapper\n )}\n >\n <div className={cn('flex items-center gap-1 desktop:gap-4', classes?.textContent)}>\n <div>\n <Icon name='logos/mts' className={cn('relative z-[9] size-7 desktop:size-8', classes?.mtsLogo)} />\n <Icon name='logos/megafon' className={cn('relative z-[8] -ml-4 size-7 desktop:size-8', classes?.megafonLogo)} />\n <Icon name='logos/beeline' className={cn('relative z-[7] -ml-4 size-7 desktop:size-8', classes?.beelineLogo)} />\n </div>\n <Links mainLink={mainLink} subLink={subLink} isMobile={isMobile} classes={classes?.links} />\n <Icon name='arrows/arrowRight' className={cn('mobile:hidden', classes?.arrowIcon)} />\n </div>\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </div>\n </AuthWrapper>\n )\n}\n","import type { TEsiaProps } from '../model/types'\nimport { AuthWrapper, EsiaLogo, Links } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { Badge, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Esia = ({ mainLink, subLink, isLoading, badge, loaderProps, classes }: TEsiaProps) => {\n const { isMobile } = useDevice()\n\n return (\n <AuthWrapper isLoading={isLoading} loaderProps={loaderProps} classes={classes?.authWrapper}>\n <div\n className={cn(\n 'flex flex-1 items-center justify-between gap-1',\n { 'justify-center': !badge && isMobile },\n classes?.innerWrapper\n )}\n >\n <div className={cn('flex items-center gap-1 desktop:gap-4', classes?.textContent)}>\n <EsiaLogo className={cn('size-7 desktop:size-8', classes?.esiaLogo)} />\n <Links mainLink={mainLink} subLink={subLink} isMobile={isMobile} classes={classes?.links} />\n <Icon name='arrows/arrowRight' className={cn('mobile:hidden', classes?.arrowIcon)} />\n </div>\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </div>\n </AuthWrapper>\n )\n}\n","import * as React from 'react'\nimport { AUTH_PROVIDER_MODE } from './model/helpers'\nimport type { AuthProviderProps } from './model/types'\nimport { Esia, MobileId } from './ui'\nimport { Badge } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst renderProvider = (props: AuthProviderProps): React.ReactElement => {\n switch (props.mode) {\n case AUTH_PROVIDER_MODE.ESIA:\n return <Esia {...props} />\n case AUTH_PROVIDER_MODE.MOBILE_ID:\n return <MobileId {...props} />\n case AUTH_PROVIDER_MODE.COMBINE:\n default:\n const { esiaConfig, mobileIdConfig, subtitle, badge, classes } = props\n\n const HeadWrapper = !subtitle && !badge ? React.Fragment : 'div'\n\n return (\n <div\n className={cn(\n 'flex w-[328px] flex-col items-center justify-center gap-2 rounded-sm bg-color-white px-2 py-4 outline outline-1 outline-warm-grey-200 desktop:w-[524px] desktop:p-4',\n classes?.root\n )}\n >\n <HeadWrapper className={cn('flex w-full items-center justify-between gap-2', classes?.topContent)}>\n {subtitle && <h5 className={cn('desk-body-regular-l flex flex-1 text-color-dark', classes?.subtitle)}>{subtitle}</h5>}\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </HeadWrapper>\n <div className={cn('grid w-full grid-cols-2 gap-2 desktop:gap-4', classes?.authWrapper)}>\n <Esia\n {...esiaConfig}\n classes={{\n root: 'p-0 outline-0 h-[74px]',\n arrowIcon: 'hidden',\n ...esiaConfig.classes\n }}\n />\n <MobileId\n {...mobileIdConfig}\n classes={{\n root: 'p-0 outline-0 h-[74px]',\n arrowIcon: 'hidden',\n ...mobileIdConfig.classes\n }}\n />\n </div>\n </div>\n )\n }\n}\n\nexport const AuthProvider = (props: AuthProviderProps) => {\n return renderProvider(props)\n}\n","import type { Link } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n linksWrapper?: string\n linkText?: string\n linkIcon?: string\n}\n\nexport interface LinksListProps {\n links: Link[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ links, classes }: LinksListProps) => {\n return (\n <nav className={cn('flex flex-col gap-1', classes?.linksWrapper)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n classes={{\n link: cn('w-max', classes?.linkText),\n icon: cn(classes?.linkIcon)\n }}\n intent='dark'\n key={path}\n href={path}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </nav>\n )\n}\n","import type { Group } from '../model/types'\nimport { LinksList, type LinksListClasses } from './LinksList'\nimport { useDevice } from '$/shared/hooks'\nimport { Accordion, type AccordionProps, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ColumnGroupClasses = {\n columnGroup?: string\n columnGroupHeading?: string\n linksList?: LinksListClasses\n}\n\nexport interface ColumnGroupProps extends Group {\n mobileAccordionProps?: AccordionProps\n classes?: ColumnGroupClasses\n}\n\nexport const ColumnGroup = ({ groupLabel, links, mobileAccordionProps, classes }: ColumnGroupProps) => {\n const { isMobile } = useDevice()\n\n return (\n <div className={cn('flex flex-col gap-2', classes?.columnGroup)}>\n {!isMobile && (\n <>\n <h5 className={cn('mob-body-medium-l text-color-dark desktop:desk-body-medium-l', classes?.columnGroupHeading)}>\n {groupLabel}\n </h5>\n <LinksList key='desktop' links={links} classes={classes?.linksList} />\n </>\n )}\n\n {isMobile && (\n <Accordion\n defaultOpen\n label={groupLabel}\n icon={\n <Icon name='arrows/arrowRight' className={cn('rotate-90 transition-transform group-data-[state=open]:-rotate-90')} />\n }\n {...mobileAccordionProps}\n classes={{\n ...mobileAccordionProps?.classes,\n header: {\n trigger: cn('p-0 bg-color-blue-grey-100', mobileAccordionProps?.classes?.header?.trigger)\n },\n contentInner: cn('py-2 px-4', mobileAccordionProps?.classes?.contentInner)\n }}\n >\n <LinksList key='mobile' links={links} classes={classes?.linksList} />\n </Accordion>\n )}\n </div>\n )\n}\n","import type { Group } from '../model/types'\nimport { ColumnGroup, type ColumnGroupClasses } from './ColumnGroup'\nimport type { AccordionProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ColumnClasses = {\n column?: string\n columnGroup?: ColumnGroupClasses\n}\n\nexport interface ColumnProps {\n column: Group[]\n mobileAccordionProps?: AccordionProps\n classes?: ColumnClasses\n}\n\nexport const Column = ({ column, mobileAccordionProps, classes }: ColumnProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:gap-6', classes?.column)}>\n {column?.map((group) => (\n <ColumnGroup key={group.groupLabel} {...mobileAccordionProps} {...group} classes={classes?.columnGroup} />\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport { widgetIds } from '../model'\nimport type { InterLinkingRoot } from './model/types'\nimport { Column, type ColumnClasses } from './ui'\nimport { Accordion, type AccordionProps, Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst columnsWrapper = cva('grid gap-4 grid-cols-1', {\n variants: {\n variant: {\n twoCols: 'desktop:grid-cols-2',\n threeCols: 'desktop:grid-cols-3',\n fourCols: 'desktop:grid-cols-4'\n }\n },\n defaultVariants: {\n variant: 'fourCols'\n }\n})\n\nexport type InterLinkingClasses = {\n root?: string\n headline?: string\n columnsWrapper?: string\n column?: ColumnClasses\n}\n\nexport interface InterLinkingProps extends InterLinkingRoot {\n mobileAccordionProps?: Partial<AccordionProps>\n rootAccordionProps?: Partial<AccordionProps>\n classes?: InterLinkingClasses\n defaultOpen?: boolean\n}\n\nexport const InterLinking = ({\n variant,\n details,\n headline,\n mobileAccordionProps,\n rootAccordionProps,\n classes,\n defaultOpen\n}: InterLinkingProps) => {\n return (\n <section\n id={widgetIds.interLinking}\n data-test-id={widgetIds.interLinking}\n className={cn('min-w-full desktop:min-w-[1140px]', classes?.root)}\n >\n <ResponsiveContainer>\n <Accordion\n defaultOpen={defaultOpen}\n label={\n <Heading as='h4' className={cn('text-left', classes?.headline)}>\n {headline}\n </Heading>\n }\n {...rootAccordionProps}\n classes={{\n ...rootAccordionProps?.classes,\n header: {\n trigger: cn('bg-color-blue-grey-100', rootAccordionProps?.classes?.header?.trigger)\n },\n content: cn('max-w-full bg-color-blue-grey-100 relative', rootAccordionProps?.classes?.content)\n }}\n >\n <div className={cn(columnsWrapper({ variant: variant }), classes?.columnsWrapper)}>\n {details?.map((column, index) => (\n <Column key={index} {...column} {...mobileAccordionProps} classes={classes?.column} />\n ))}\n </div>\n </Accordion>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InterLinking\n","import type { Dispatch, SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type TabsClasses = {\n tabs?: string\n button?: string\n}\n\nexport interface TabsProps {\n tabsNames?: string[]\n activeTab?: number\n setActiveTab: Dispatch<SetStateAction<number>>\n classes?: TabsClasses\n}\n\nexport const Tabs = ({ tabsNames, activeTab, setActiveTab, classes }: TabsProps) => {\n return (\n <div className={cn('hidden-scroll flex items-center gap-4 overflow-x-auto p-[6px]', classes?.tabs)}>\n {tabsNames &&\n tabsNames.map((tabName, tabIndex) => (\n <button\n key={tabName}\n onClick={() => setActiveTab(tabIndex)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent focus:outline-primary-focus desktop:px-4 desktop:py-3',\n {\n 'bg-icon-primary-default text-color-white': activeTab === tabIndex\n },\n classes?.button\n )}\n >\n {tabName}\n </button>\n ))}\n </div>\n )\n}\n","import type { Entity } from './types'\n\nexport const isHtml = (entity: Entity): entity is Entity<'HTML'> => {\n return entity.variant === 'HTML'\n}\n\nexport const isDocuments = (entity: Entity): entity is Entity<'DOCUMENTS'> => {\n return entity.variant === 'DOCUMENTS'\n}\n\nexport const isTable = (entity: Entity): entity is Entity<'TABLE'> => {\n return entity.variant === 'TABLE'\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { Accordion } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityHtmlClasses = {\n html?: string\n}\n\nexport type EntityHtmlProps = {\n html: string\n config?: SubEntityDetailsConfig\n classes?: EntityHtmlClasses\n accordionConfig?: EntitiesAccordionsConfig['htmlAccordion']\n}\n\nexport const Html = ({ html, config, classes, accordionConfig }: EntityHtmlProps) => {\n const content = <div className={cn(classes?.html)} dangerouslySetInnerHTML={{ __html: html ?? '' }} />\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children ?? content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { TableHeading, TableRow } from '../Table'\n\nexport const transformMobileRows = (rows: TableRow[], headings?: TableHeading[]) => {\n return {\n rows: rows?.map(({ row }) => ({\n row: row?.map((cell, index) => ({\n ...cell,\n heading: headings && headings[index]?.heading\n }))\n }))\n }\n}\n\nexport const tableConfig = cva('flex flex-col', {\n variants: {\n columnsVariant: {\n twoCols: 'w-full max-w-[656px]',\n threeCols: 'w-full max-w-[768px]'\n }\n }\n})\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps } from '../Table'\nimport { cn } from '$/shared/utils'\n\nconst headingsConfig = cva('desktop:grid mobile:hidden px-4 mb-4', {\n variants: {\n columnsVariant: {\n twoCols: 'grid-cols-2 gap-16',\n threeCols: 'grid-cols-3 gap-12'\n }\n }\n})\n\nexport type DesktopHeadingClasses = {\n row?: string\n cell?: string\n}\n\ninterface DesktopHeadingsProps {\n headings: EntityTableProps['headings']\n columnsVariant: EntityTableProps['columnsVariant']\n classes?: DesktopHeadingClasses\n}\n\nexport const DesktopHeadings = ({ headings, columnsVariant, classes }: DesktopHeadingsProps) => {\n return (\n <div className={cn(headingsConfig({ columnsVariant }), classes?.row)}>\n {headings?.map((cell) => (\n <div key={cell?.heading} className={cn('text-color-secondary', classes?.cell)}>\n {cell?.heading}\n </div>\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps, TableRow } from '../Table'\nimport { cn } from '$/shared/utils'\n\nexport type DesktopRowClasses = {\n row?: string\n cell?: string\n}\n\ntype DesktopRowProps = {\n row: TableRow['row']\n tableVariant: EntityTableProps['tableVariant']\n columnsVariant: EntityTableProps['columnsVariant']\n rowIndex: number\n classes?: DesktopRowClasses\n}\n\nconst desktopRowConfig = cva('desktop:grid mobile:hidden items-center', {\n variants: {\n columnsVariant: {\n twoCols: 'grid-cols-2 gap-16',\n threeCols: 'grid-cols-3 gap-12'\n },\n tableVariant: {\n filled: 'px-4 py-3 even:bg-color-primary-light-default',\n separator: 'px-4 py-4 border-t border-solid border-warm-grey-200'\n }\n }\n})\n\nexport const DesktopRow = ({ row, tableVariant, columnsVariant, rowIndex, classes }: DesktopRowProps) => {\n return (\n <div className={cn(desktopRowConfig({ columnsVariant, tableVariant }), { 'border-none': rowIndex === 0 }, classes?.row)}>\n {row?.map(({ cell }, cellIndex) => (\n <div\n key={cellIndex}\n className={cn('desk-body-regular-l text-color-dark', { 'font-medium': cellIndex !== 0 }, classes?.cell)}\n >\n {cell && cell}\n </div>\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps } from '../Table'\nimport { cn } from '$/shared/utils'\n\ninterface FormattedRow {\n cell: string\n heading?: string\n}\n\nexport type MobileRowClasses = {\n row?: string\n wrapper?: string\n heading?: string\n cell?: string\n}\n\nexport interface MobileRowProps {\n row: FormattedRow[]\n tableVariant: EntityTableProps['tableVariant']\n columnsVariant: EntityTableProps['columnsVariant']\n headingsExist: boolean\n classes?: MobileRowClasses\n}\n\nconst mobileRowConfig = cva('mobile:flex desktop:hidden flex-col gap-2', {\n variants: {\n tableVariant: {\n filled: 'px-4 py-4 odd:bg-color-primary-light-default',\n separator: 'py-4 border-t border-solid border-warm-grey-200 first:border-none'\n }\n }\n})\n\nexport const MobileRow = ({ row, tableVariant, columnsVariant, headingsExist, classes }: MobileRowProps) => {\n return (\n <div className={cn(mobileRowConfig({ tableVariant }), classes?.row)}>\n {row?.map(({ cell, heading }, cellIndex) => (\n <div key={cellIndex} className={cn('grid grid-cols-2 gap-3', { 'grid-cols-1 gap-0': !headingsExist }, classes?.wrapper)}>\n {heading && <div className={cn('mob-body-regular-l text-color-secondary', classes?.heading)}>{heading}</div>}\n <div\n className={cn(\n 'mob-body-regular-l text-color-dark',\n {\n 'font-medium':\n (cellIndex !== 0 && columnsVariant === 'twoCols') ||\n columnsVariant === 'threeCols' ||\n (columnsVariant === 'twoCols' && headingsExist)\n },\n classes?.cell\n )}\n >\n {cell}\n </div>\n </div>\n ))}\n </div>\n )\n}\n","import { transformMobileRows } from '../model/utils'\nimport type { EntityTableProps } from '../Table'\nimport { type DesktopHeadingClasses, DesktopHeadings } from './DesktopHeadings'\nimport { DesktopRow, type DesktopRowClasses } from './DesktopRow'\nimport { MobileRow, type MobileRowClasses } from './MobileRow'\nimport { cn } from '$/shared/utils'\n\nexport type TableBodyClasses = {\n wrapper?: string\n desktopHeading: DesktopHeadingClasses\n desktopRow?: DesktopRowClasses\n mobileRow?: MobileRowClasses\n}\n\ninterface TableBodyProps {\n tableVariant: EntityTableProps['tableVariant']\n rows: EntityTableProps['rows']\n headings?: EntityTableProps['headings']\n columnsVariant: EntityTableProps['columnsVariant']\n classes?: TableBodyClasses\n}\n\nexport const TableBody = ({ tableVariant, rows, headings, columnsVariant, classes }: TableBodyProps) => {\n const formattedRows = transformMobileRows(rows, headings)?.rows ?? []\n const headingsExist = Boolean(headings && headings.length > 0)\n\n return (\n <div className={cn('flex flex-col', classes?.wrapper)}>\n {headingsExist && <DesktopHeadings headings={headings} columnsVariant={columnsVariant} classes={classes?.desktopHeading} />}\n {rows?.map((row, rowIndex) => (\n <DesktopRow\n key={rowIndex}\n rowIndex={rowIndex}\n tableVariant={tableVariant}\n columnsVariant={columnsVariant}\n classes={classes?.desktopRow}\n {...row}\n />\n ))}\n {formattedRows?.map((row, rowIndex) => (\n <MobileRow\n key={rowIndex}\n headingsExist={headingsExist}\n tableVariant={tableVariant}\n columnsVariant={columnsVariant}\n classes={classes?.desktopRow}\n {...row}\n />\n ))}\n </div>\n )\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { tableConfig } from './model/utils'\nimport { TableBody, type TableBodyClasses } from './ui/TableBody'\nimport { Accordion, Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityTableClasses = {\n wrapper?: string\n headline?: string\n description?: string\n tableBody?: TableBodyClasses\n}\n\nexport type TableCell = {\n cell: string\n cellId: string\n}\n\nexport type TableRow = {\n row: TableCell[]\n rowId: string\n}\n\nexport type TableHeading = {\n heading: string\n headingId: string\n}\n\nexport type EntityTableProps = {\n title?: string\n description?: string\n columnsVariant: 'twoCols' | 'threeCols'\n tableVariant: 'separator' | 'filled'\n headings?: TableHeading[]\n rows: TableRow[]\n config?: SubEntityDetailsConfig\n classes?: EntityTableClasses\n accordionConfig?: EntitiesAccordionsConfig['documentAccordion']\n}\n\nexport const Table = ({\n tableVariant,\n description,\n columnsVariant,\n config,\n rows,\n title,\n headings,\n accordionConfig,\n classes\n}: EntityTableProps) => {\n const content = (\n <div className={cn(tableConfig({ columnsVariant }), classes?.wrapper)}>\n {title && (\n <Heading as='h4' className={cn('mb-4 desktop:mb-6', classes?.headline)}>\n {title}\n </Heading>\n )}\n\n <TableBody tableVariant={tableVariant} rows={rows} headings={headings} columnsVariant={columnsVariant} />\n\n {description && (\n <div\n className={cn('mt-2 [&&]:desk-body-regular-m desktop:mt-2', classes?.description)}\n dangerouslySetInnerHTML={{ __html: description ?? '' }}\n />\n )}\n </div>\n )\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children || content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { SpritesMap } from '$/shared/ui'\n\nexport type IconNames = Extract<SpritesMap['files'], 'documentFilled' | 'documentOutline'>\n\nexport const iconsMap: Record<IconNames, `files/${IconNames}`> = {\n documentFilled: 'files/documentFilled',\n documentOutline: 'files/documentOutline'\n}\n\nexport const iconConfig = cva('size-8 transition-colors', {\n variants: {\n iconType: {\n documentOutline: 'text-icon-secondary-dark-default group-hover:text-icon-secondary-dark-hover',\n documentFilled: 'text-icon-primary-default group-hover:text-icon-primary-hover'\n }\n },\n defaultVariants: {\n iconType: 'documentOutline'\n }\n})\n","import { iconConfig, type IconNames, iconsMap } from './model/utils'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type DocumentClasses = {\n link?: string\n icon?: string\n wrapper?: string\n label?: string\n size?: string\n}\n\nexport interface DocumentProps {\n label: string\n size: string\n url: string\n iconType: IconNames\n classes?: DocumentClasses\n}\n\nexport const Document = ({ label, size, url, iconType, classes }: DocumentProps) => {\n return (\n <a\n href={url}\n target='_blank'\n rel='noreferrer'\n tabIndex={0}\n className={cn(\n 'group flex w-full cursor-pointer items-center gap-2 rounded-sm p-1 outline outline-2 outline-transparent transition-colors focus-within:outline-primary-focus',\n classes?.link\n )}\n >\n <Icon name={iconsMap[iconType]} className={cn(iconConfig({ iconType }), classes?.icon)} />\n <div className={cn('flex flex-1 flex-col', classes?.wrapper)}>\n <p className={cn('desk-body-medium-l text-color-dark', classes?.label)}>{label}</p>\n <div className={cn('desk-body-regular-m text-color-disabled', classes?.size)}>{Number(size)} КБ</div>\n </div>\n </a>\n )\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { Document, type DocumentClasses } from './ui/document'\nimport { Accordion, Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityDocumentsClasses = {\n wrapper?: string\n headline?: string\n documentsWrapper?: string\n description?: string\n singleDocument?: DocumentClasses\n}\n\nexport type EntityDocumentsProps = {\n iconType: 'documentOutline' | 'documentFilled'\n title?: string\n description?: string\n docs: {\n url: string\n size: string\n label: string\n }[]\n config?: SubEntityDetailsConfig\n classes?: EntityDocumentsClasses\n accordionConfig?: EntitiesAccordionsConfig['documentAccordion']\n}\n\nexport const Documents = ({ docs, config, title, iconType, description, classes, accordionConfig }: EntityDocumentsProps) => {\n const content = (\n <div className={cn('flex max-w-[680px] flex-col', classes?.wrapper)}>\n {title && (\n <Heading as='h3' className='mb-4'>\n {title}\n </Heading>\n )}\n <div className={cn('flex flex-col gap-4', classes?.documentsWrapper)}>\n {docs?.map((doc) => (\n <Document iconType={iconType} key={doc.label} {...doc} classes={classes?.singleDocument} />\n ))}\n </div>\n\n {description && (\n <div className={cn('mt-4', classes?.description)} dangerouslySetInnerHTML={{ __html: description ?? '' }} />\n )}\n </div>\n )\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children || content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { type EntitiesAccordionsConfig, type Entity, isDocuments, isHtml, isTable } from '../model'\nimport {\n Documents,\n type EntityDocumentsClasses,\n type EntityHtmlClasses,\n type EntityTableClasses,\n Html,\n Table\n} from './subEntities'\nimport { cn } from '$/shared/utils'\n\nexport type EntityClasses = {\n entityWrapper?: string\n entities?: {\n html?: EntityHtmlClasses\n documents?: EntityDocumentsClasses\n table?: EntityTableClasses\n }\n}\n\nexport interface RenderEntityProps {\n entity: Entity\n classes?: EntityClasses\n accordionsConfig?: EntitiesAccordionsConfig\n}\n\nconst renderEntity = ({ entity, classes, accordionsConfig }: RenderEntityProps) => {\n switch (true) {\n case isHtml(entity):\n return entity.details?.map((htmlDetails, index) => (\n <Html key={index} {...htmlDetails} accordionConfig={accordionsConfig?.htmlAccordion} classes={classes?.entities?.html} />\n ))\n\n case isDocuments(entity):\n return entity.details?.map((documentsDetails, index) => (\n <Documents\n key={index}\n accordionConfig={accordionsConfig?.documentAccordion}\n {...documentsDetails}\n classes={classes?.entities?.documents}\n />\n ))\n\n case isTable(entity):\n return entity.details?.map((tableDetails, index) => (\n <Table\n key={index}\n accordionConfig={accordionsConfig?.tableAccordion}\n {...tableDetails}\n classes={classes?.entities?.table}\n />\n ))\n\n default:\n return null\n }\n}\n\nexport const RenderEntity = ({ entity, classes, accordionsConfig }: RenderEntityProps) => {\n return (\n <div className={cn('flex flex-col gap-6', classes?.entityWrapper)}>{renderEntity({ entity, classes, accordionsConfig })}</div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { widgetIds } from '../model'\nimport type { EntitiesAccordionsConfig, Tab } from './model'\nimport { type EntityClasses, RenderEntity, Tabs, type TabsClasses } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type UsefulInfoClasses = {\n root?: string\n container?: string\n tabsWrapper?: string\n tabs?: TabsClasses\n headline?: string\n contentWrapper?: string\n entityClasses?: EntityClasses\n}\n\nexport type UsefulInfoProps = {\n headline: string\n tabs: Tab[]\n classes?: UsefulInfoClasses\n accordionsConfig?: EntitiesAccordionsConfig\n}\n\nexport const UsefulInfo = ({ headline, tabs, classes, accordionsConfig }: UsefulInfoProps) => {\n const [activeTab, setActiveTab] = useState(0)\n\n const tabsNames = useMemo(() => tabs?.map((tab) => tab?.tabName), [tabs]) ?? []\n\n if (!tabs || tabs?.length === 0) return null\n\n return (\n <section id={widgetIds.usefulInfo} data-test-id={widgetIds.usefulInfo} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <Heading className={cn(classes?.headline)} as='h2'>\n {headline}\n </Heading>\n <div className={cn('mt-6 flex flex-col gap-2 desktop:mt-12', classes?.tabsWrapper)}>\n <Tabs tabsNames={tabsNames} activeTab={activeTab} setActiveTab={setActiveTab} classes={classes?.tabs} />\n </div>\n <div className={cn('mt-6 flex flex-col gap-6', classes?.contentWrapper)}>\n {tabs?.[activeTab]?.contents?.map((entity, index) => (\n <RenderEntity accordionsConfig={accordionsConfig} key={index} {...entity} classes={classes?.entityClasses} />\n ))}\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default UsefulInfo\n","import { type Control, type FieldValues } from 'react-hook-form'\nimport type { FieldElement } from './model/types'\nimport { Controlled } from '$/shared/ui'\n\ntype FieldMapperProps<TFieldValues extends FieldValues> = {\n control: Control<TFieldValues>\n fields: FieldElement<TFieldValues>[]\n}\n\nexport const FieldMapper = <TFieldValues extends FieldValues>({ fields, control }: FieldMapperProps<TFieldValues>) => {\n return fields.map(({ type, args }) => {\n const Component = Controlled[type] as React.ComponentType<typeof args>\n\n return <Component {...args} key={args.name} control={control as Control} />\n })\n}\n","'use client'\n\nexport type ParserOptions = {\n /**\n * включать элемент body\n */\n includeBody?: boolean\n /**\n * включать сплошной текст (вне тегов)\n */\n includeSolidText?: boolean\n /**\n * парсить рекурсивно\n */\n recursive?: boolean\n /**\n * фильтровать только нужные html теги\n */\n element?: keyof React.JSX.IntrinsicElements\n}\n\nexport abstract class BaseHTMLParser {\n private readonly TEXT_NODE = 3 as const\n private readonly ELEMENT_NODE = 1 as const\n\n protected constructor(private options?: ParserOptions) {}\n\n /**\n * Рекурсивно обходит DOM дерево и собирает данные в зависимости от опций.\n * @param node Текущий узел DOM дерева\n * @param elements Массив для сбора элементов\n * @param as Тип возвращаемых данных ('string' или 'node')\n */\n protected traverse(node: Node, as: 'string' | 'node' = 'string', elements: (string | Node)[]) {\n const { includeSolidText, recursive, element } = this.options || {}\n\n switch (node.nodeType) {\n // если узел - элемент\n case this.ELEMENT_NODE:\n const elementNode = node as Element\n const elementName = elementNode.tagName.toLowerCase()\n\n // если нашли элемент script, в целях безопасности пропускаем его\n if (elementName === 'script') {\n console.warn('Found script node. For better security this node will be skipped.')\n break\n }\n\n // если требуется только определенные элементы и текущий не подходит, пропускаем\n if (element && elementName !== element) {\n break\n }\n\n // добавляем элемент в зависимости от требуемого типа\n if (as === 'node') {\n elements.push(node)\n } else {\n const content = elementNode.outerHTML.trim()\n elements.push(content)\n }\n\n // если требуется рекурсивно обрабатывать дочерние ноды\n if (recursive) {\n for (const child of node.childNodes) {\n this.traverse(child, as, elements)\n }\n }\n break\n // если узел - текстовый и требуется его добавить, добавляем\n case this.TEXT_NODE:\n if (!includeSolidText) {\n break\n }\n\n if (as === 'node') {\n elements.push(node)\n } else {\n const content = node.textContent\n\n if (content) {\n elements.push(content)\n }\n }\n break\n }\n }\n\n /**\n * Парсит HTML строку и возвращает массив тегов или нод в зависимости от опций.\n * @param html HTML строка\n * @param as Тип возвращаемых данных ('string' или 'node')\n * @returns Массив тегов или нод\n */\n async parse(html: string, as: 'string' | 'node' = 'string'): Promise<{ stringNodes: string[]; nodes: Node[] }> {\n const { includeBody } = this.options || {}\n\n const stringNodes: string[] = []\n const nodes: Node[] = []\n const doc = await this.parseFromString(html)\n\n const elements = as === 'string' ? stringNodes : nodes\n\n if (includeBody) {\n this.traverse(doc.body, as, elements)\n } else {\n for (const child of doc.body.childNodes) {\n this.traverse(child, as, elements)\n }\n }\n\n return { stringNodes, nodes }\n }\n\n /**\n * Считает количество указанных тегов в HTML строке.\n * @param html HTML строка\n * @returns Количество найденных тегов\n */\n async countElements(html: string): Promise<number> {\n const { stringNodes } = await this.parse(html, 'string')\n\n return stringNodes.length\n }\n\n /**\n * Преобразует HTML строку в DOM объект.\n * @param html HTML строка\n * @returns DOM объект\n */\n protected abstract parseFromString(html: string): Promise<Document>\n}\n","'use client'\n\nimport { BaseHTMLParser, type ParserOptions } from './baseHtmlParser'\n\nconst isBrowser = typeof window !== 'undefined'\n//\n// class BrowserHTMLParserError extends Error {\n// constructor(\n// message: string,\n// public originalError?: Error\n// ) {\n// super(message)\n// this.name = 'BrowserHTMLParserError'\n// }\n// }\n\nexport class HTMLParser extends BaseHTMLParser {\n constructor(options?: ParserOptions) {\n super(options)\n }\n\n async parseFromString(html: string): Promise<Document> {\n if (!isBrowser) {\n return Promise.reject()\n }\n\n const parser = new DOMParser()\n return parser.parseFromString(html, 'text/html')\n }\n}\n","'use client'\nimport type { ParserOptions } from './baseHtmlParser'\n\ntype ElementTag = keyof React.JSX.IntrinsicElements\n\ntype HTMLRendererProps<AS extends ElementTag, Props = AS extends ElementTag ? React.ComponentProps<AS> : {}> = {\n html: string\n options?: ParserOptions\n as?: AS\n} & Props\n\nexport const HTMLRenderer = <AS extends ElementTag>({ html, as, ...props }: HTMLRendererProps<AS>) => {\n const Wrapper = as ?? 'div'\n\n // @ts-expect-error abc\n return <Wrapper dangerouslySetInnerHTML={{ __html: html }} {...props} />\n}\n","import { type FieldPath, type FieldValues } from 'react-hook-form'\nimport type { Progress, ProgressField, ProgressType } from './types'\nimport { type ISubscribedField } from '$/shared/hooks'\nimport type { FieldElement } from '$/widgets/fieldMapper'\n\nexport const getFieldsProgress = <TFieldValues extends FieldValues, Type extends ProgressType>(\n progress: Progress<Type>,\n fields: FieldElement<any, any, { progress: ProgressField }>[]\n) => {\n if (!progress.enabled) return null\n\n return fields.map<ISubscribedField<TFieldValues>>((field) => ({\n name: field.args.name as FieldPath<TFieldValues>,\n ...field.args.progress\n }))\n}\n","import { type FieldValues } from 'react-hook-form'\nimport { object, type ZodObject, type ZodRawShape, type ZodTypeAny } from 'zod'\nimport { TypeGuards } from '$/shared/utils'\nimport { zodValidators } from '$/shared/validation'\nimport { type FieldElement } from '$/widgets'\n\nexport type FieldValidation = {\n type: string\n args: Record<string, any>\n}\n\ntype ValidationSchema = {\n [key: string]: (...args: any[]) => ZodTypeAny\n}\n\ntype ValidationConfig<T extends ValidationSchema> = {\n [K in keyof T]: Parameters<T[K]>[0]\n}\n\ntype ValidationReturn<T extends ValidationSchema> = {\n [K in keyof T]: ReturnType<T[K]>\n}\n\ntype BaseValidationKey = keyof typeof zodValidators.base\ntype BaseValidationSchema = typeof zodValidators.base\ntype BaseValidationConfig = ValidationConfig<BaseValidationSchema>\ntype BaseValidationReturn = ValidationReturn<BaseValidationSchema>\n\ntype DadataValidationKey = keyof typeof zodValidators.dadata\ntype DadataValidationSchema = typeof zodValidators.dadata\ntype DadataValidationConfig = ValidationConfig<DadataValidationSchema>\ntype DadataValidationReturn = ValidationReturn<DadataValidationSchema>\n\nconst existDadataSchemas = ['getFioSchema']\n\nconst createFieldSchema = <Schema extends ValidationSchema, Type extends keyof Schema>(\n schema: Schema,\n type: Type,\n props: ValidationConfig<Schema>[Type]\n): ValidationReturn<Schema>[Type] => {\n const validator = schema[type]\n\n if (TypeGuards.isNil(validator)) {\n throw new Error(`validation for type ${String(type)} not found`)\n }\n\n if (!TypeGuards.isFunction(validator)) {\n throw new Error(`Cannot generate ${String(type)} because is not a function`)\n }\n\n return validator(props) as ValidationReturn<Schema>[Type]\n}\n\nconst createBaseFieldSchema = <Type extends BaseValidationKey>(\n type: Type,\n props: BaseValidationConfig[Type]\n): BaseValidationReturn[Type] => {\n return createFieldSchema(zodValidators.base, type, props)\n}\n\nconst createDadataFieldSchema = <Type extends DadataValidationKey>(\n type: Type,\n props: DadataValidationConfig[Type]\n): DadataValidationReturn[Type] => {\n return createFieldSchema(zodValidators.dadata, type, props)\n}\n\nexport const getDynamicSchema = <TFieldValues extends FieldValues>(\n fields: FieldElement<TFieldValues, any, { validation: FieldValidation }>[] | undefined\n): ZodObject<ZodRawShape> => {\n const fieldValidation = fields?.map((field) => ({ name: field.args.name, validation: field.args.validation })) ?? []\n\n const shape = fieldValidation.reduce<ZodRawShape>((acc, field) => {\n const validation = existDadataSchemas.includes(field.validation.type)\n ? createDadataFieldSchema(\n field.validation.type as DadataValidationKey,\n field.validation.args as DadataValidationConfig[DadataValidationKey]\n )\n : createBaseFieldSchema(\n field.validation.type as BaseValidationKey,\n field.validation.args as BaseValidationConfig[BaseValidationKey]\n )\n\n acc[field.name] = validation\n\n return acc\n }, {})\n\n return object(shape)\n}\n","import { QueryClient, QueryClientProvider as QueryClientProviderBase } from '@tanstack/react-query'\n\nexport const queryClient = new QueryClient()\n\nexport const QueryClientProvider = ({ children }: { children: React.ReactNode }) => (\n <QueryClientProviderBase client={queryClient}>{children}</QueryClientProviderBase>\n)\n","'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldValues, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport { widgetIds } from '../model'\nimport {\n type Approvement,\n type ApprovementType,\n type Chips,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport {\n Button,\n type ButtonProps,\n type CheckedState,\n Heading,\n Icon,\n ProgressBar,\n ResponsiveContainer,\n Uncontrolled\n} from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ChipsClasses = {\n root?: string\n icon?: string\n}\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof Uncontrolled.CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <Uncontrolled.CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicForm = <AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n classes,\n buttonGroup\n}: DynamicFormProps<AType, CType, PType>) => {\n const { submitCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section id={widgetIds.form} data-test-id={widgetIds.form} className={cn('w-full', classes?.root)}>\n <ResponsiveContainer\n className={cn(\n '!max-w-[636px] border-warm-grey-200 px-4 desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n bottomContent={<HTMLRenderer html={progress.subtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div className='mob-body-regular-m flex flex-col items-start justify-center gap-4'>\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div className='flex w-full flex-col items-center justify-center gap-4 desktop:flex-row'>\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n","'use client'\nimport { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps, type CheckedState, Dialog, Uncontrolled } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof Uncontrolled.CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<AType extends ApprovementType> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <Uncontrolled.CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n buttonGroup,\n ...props\n}: DynamicFormDialogProps<AType>) => {\n const { submitCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit)} className='flex flex-col gap-6'>\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n","import { type StatusConfig, type StatusVariant } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const statusConfig = (): Record<StatusVariant, StatusConfig> => {\n return {\n approve: {\n icon: {\n element: <Icon name='status/iconMark' />,\n bg: 'bg-color-positive-light'\n },\n title: 'Ваша заявка отправлена',\n description: (\n <>\n В ближайшее время с Вами свяжутся <br /> специалисты нашего Банка\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n },\n repeated: {\n icon: {\n element: <Icon name='status/iconUser' />,\n bg: 'bg-color-positive-light'\n },\n title: 'Мы вас узнали',\n description: (\n <>\n Решение по прошлой заявке ещё активно. <br />\n Возвращайтесь к нам позже\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n },\n error: {\n icon: {\n element: <Icon name='status/iconRetry' />,\n bg: 'bg-color-warning-light'\n },\n title: 'Что-то пошло не так',\n description: (\n <>\n Обновите страницу или попробуйте <br /> снова через 5 минут\n </>\n ),\n button: {\n text: 'Обновить страницу'\n }\n },\n reject: {\n icon: {\n element: <Icon name='status/badSmile' />,\n bg: 'bg-color-negative-light'\n },\n title: 'Нам очень жаль',\n description: (\n <>\n К сожалению, сейчас мы не можем <br /> принять вашу заявку\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n }\n }\n}\n","import { cn } from '../../shared/utils'\nimport { statusConfig, type StatusVariant } from './model'\nimport { Button, Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport interface FallbacksViewProps {\n status: StatusVariant\n navigationFn: (...args: unknown[]) => unknown\n}\n\nexport const FallbacksView = ({ status, navigationFn }: FallbacksViewProps) => {\n return (\n <div className='flex flex-col'>\n <ResponsiveContainer className='flex flex-col justify-center'>\n <div className='mt-32 flex w-full flex-col items-center gap-8 desktop:gap-12'>\n <span\n className={cn(\n 'flex size-16 items-center justify-center rounded-full bg-color-positive-light',\n `${statusConfig()[status].icon.bg}`\n )}\n >\n {statusConfig()[status].icon.element}\n </span>\n <div className='flex flex-col items-center gap-2 text-center desktop:gap-6'>\n <Heading as='h2'>{statusConfig()[status].title}</Heading>\n <p className='desk-body-regular-l text-color-dark'>{statusConfig()[status].description}</p>\n </div>\n <Button size='lg' className='w-full max-w-[328px] desktop:desk-body-regular-l desktop:w-[256px]' onClick={navigationFn}>\n {statusConfig()[status].button.text}\n </Button>\n </div>\n </ResponsiveContainer>\n </div>\n )\n}\n","import type { Breadcrumb as BreadcrumbType } from './hooks'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n breadcrumb: BreadcrumbType\n}\n\nexport const Breadcrumb = ({ breadcrumb, className, ...props }: BreadcrumbProps) => (\n <a href={breadcrumb.path} className={cn('desk-body-regular-m', className)} {...props}>\n {breadcrumb.label}\n </a>\n)\n","import { type Breadcrumb } from './types'\n\nexport const defaultBreadcrumbs: Breadcrumb[] = [\n {\n label: 'Главная',\n path: 'https://sovcombank.ru/apply/credit/kredit-na-kartu/'\n },\n {\n label: 'Накопительный счет ',\n path: 'https://sovcombank.ru/apply/nakopitelnye-scheta/'\n },\n {\n label: 'В Тольятти',\n disabled: true\n }\n]\n","import { useMemo, useRef, useState } from 'react'\nimport { Breadcrumb } from './Breadcrumb'\nimport { type Breadcrumb as BreadcrumbType, defaultBreadcrumbs, type UseBreadcrumbsOptions } from './hooks'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbsClasses = {\n root?: string\n separator?: string\n breadcrumb?: string\n}\n\ntype BreadcrumbsProps = UseBreadcrumbsOptions & {\n /**\n * произвольный сепаратор, разделяющий элементы\n */\n separator?: React.ReactElement | string\n /**\n * указывает, сколько элементов отображать перед/после сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили компонента\n */\n classes?: BreadcrumbsClasses\n /**\n * Массив хлебных крошек\n */\n breadcrumbs: BreadcrumbType[]\n}\n\nconst renderBreadcrumbs = (\n breadcrumbs: BreadcrumbType[],\n separator: BreadcrumbsProps['separator'],\n classes?: BreadcrumbsClasses['breadcrumb'],\n lastIndex?: number\n) => {\n return breadcrumbs.map((breadcrumb, index) => {\n const isLast = index === lastIndex\n\n return (\n <div key={breadcrumb.label} className='flex items-center gap-x-1'>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(classes, {\n 'pointer-events-none text-color-primary-disabled': isLast,\n 'text-color-blue-grey-600': breadcrumb.disabled\n })}\n />\n {index !== breadcrumbs.length - 1 && separator}\n </div>\n )\n })\n}\n\nexport const Breadcrumbs = ({ separator, ellipsis, classes, breadcrumbs = defaultBreadcrumbs }: BreadcrumbsProps) => {\n const [hiddenCrumbsOpen, setHiddenCrumbsOpen] = useState<boolean>(false)\n\n const hiddenCrumbsRef = useRef<HTMLUListElement>(null)\n\n useClickOutside(hiddenCrumbsRef, () => setHiddenCrumbsOpen(false))\n\n // separated crumbs while ellipsis provided\n const { first, middle, last } = useMemo(() => {\n let first: BreadcrumbType[] = []\n let middle: BreadcrumbType[] = []\n let last: BreadcrumbType[] = []\n\n if (ellipsis) {\n first = breadcrumbs.slice(0, ellipsis)\n middle = breadcrumbs.slice(ellipsis, breadcrumbs.length - ellipsis)\n last = breadcrumbs.slice(breadcrumbs.length - ellipsis)\n }\n\n return { first, middle, last }\n }, [breadcrumbs, ellipsis])\n\n const separatedElement = separator ?? <Icon name='arrows/arrowRight' className={cn('size-4', classes?.separator)} />\n\n return (\n <div\n className={cn(\n 'flex max-w-[840px] flex-wrap items-center',\n 'gap-x-2 gap-y-1 py-4 text-color-primary-default',\n classes?.root\n )}\n >\n {ellipsis ? (\n // if ellipsis provided, render hidden breadcrumbs\n <>\n {breadcrumbs.length > ellipsis * 2 + 1 ? (\n // if we have more than ellipsis (visible crumbs) + available hidden crumbs\n // render hidden breadcrumbs\n <>\n {renderBreadcrumbs(first, separatedElement, classes?.breadcrumb)}\n {separatedElement}\n {middle.length > 0 && (\n <>\n <div className='relative'>\n <button onClick={() => setHiddenCrumbsOpen(true)}>...</button>\n <ul\n ref={hiddenCrumbsRef}\n className={cn(\n 'invisible absolute max-h-[264px] overflow-y-auto',\n 'w-[280px] rounded-sm bg-color-white',\n 'customScrollbar-y p-1 opacity-0 shadow-sm',\n {\n 'visible opacity-100': hiddenCrumbsOpen\n }\n )}\n >\n {middle.map((breadcrumb) => (\n <li key={breadcrumb.label}>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(\n 'desk-body-regular-l inline-block py-3',\n 'w-full rounded-sm bg-color-white px-2',\n 'text-color-dark hover:bg-color-primary-tr-hover',\n classes?.breadcrumb\n )}\n />\n </li>\n ))}\n </ul>\n </div>\n {separatedElement}\n </>\n )}\n {renderBreadcrumbs(last, separatedElement, classes?.breadcrumb, last.length - 1)}\n </>\n ) : (\n // otherwise render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </>\n ) : (\n // if ellipsis doesn't provided render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </div>\n )\n}\n","import type { Category } from '../../model'\n\nexport enum CategoryActionType {\n ROOT = 'root',\n CURRENT = 'current'\n}\n\nexport type CategoryStore = {\n root: Category\n current: Category\n}\n\nexport type CategoryAction = {\n type: CategoryActionType\n payload: Category\n}\n\nexport type UseCategoryReducerReturn = [CategoryStore, React.Dispatch<CategoryAction>]\n","import { type CategoryAction, CategoryActionType, type CategoryStore } from './types'\n\nexport const reducer = (state: CategoryStore, action: CategoryAction) => {\n switch (action.type) {\n case CategoryActionType.ROOT:\n return {\n ...state,\n root: action.payload\n }\n case CategoryActionType.CURRENT:\n return {\n ...state,\n current: action.payload\n }\n default:\n return state\n }\n}\n","import { useReducer } from 'react'\nimport { reducer } from './reducer'\nimport type { CategoryStore, UseCategoryReducerReturn } from './types'\n\nexport const useCategoryReducer = (initialValue: CategoryStore): UseCategoryReducerReturn => {\n const [state, dispatch] = useReducer(reducer, initialValue)\n\n return [state, dispatch]\n}\n","import type { Category } from '../../model'\nimport { type CategoryAction, CategoryActionType } from './types'\n\nexport const currentCategoryAction = (payload: Category): CategoryAction => ({\n type: CategoryActionType.CURRENT,\n payload\n})\n\nexport const rootCategoryAction = (payload: Category): CategoryAction => ({\n type: CategoryActionType.ROOT,\n payload\n})\n","import { createPortal } from 'react-dom'\nimport { motion } from 'framer-motion'\nimport type { Category } from '../../../../../model'\nimport { Icon } from '$/shared/ui'\n\ntype TabContentProps = React.ComponentProps<typeof motion.div> & {\n categories: Category[]\n}\n\nexport const TabContent = ({ categories, ...props }: TabContentProps) => {\n return createPortal(\n <motion.div\n {...props}\n layout\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n className='absolute z-20 w-full bg-color-white after:absolute after:left-1/2 after:top-[-1px] after:h-[1px] after:w-full after:max-w-[636px] after:-translate-x-1/2 after:bg-color-blue-grey-200 after:content-[\"\"] after:desktop:max-w-[1140px]'\n >\n <div className='mx-auto flex w-full max-w-[1140px] gap-x-[56px] py-10'>\n {categories.map((category) => {\n const CategoryTitle = category.link ? 'a' : 'p'\n\n return (\n <div key={category.title} className='flex flex-col gap-y-6'>\n {category.title && (\n <CategoryTitle\n href={category.link?.href ?? undefined}\n className='flex items-center gap-x-1 text-16 uppercase text-color-primary-default'\n >\n {category.title}\n\n <Icon name='arrows/arrowLink' className='size-6' />\n </CategoryTitle>\n )}\n <ul className='w-[328px]'>\n {category.children.map((child) => (\n <li key={child.title} className='w-full [&:not(:last-child)]:mb-4'>\n <a href={child.link?.href} target={child.link?.target} className='w-full text-16'>\n {child.title}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n })}\n </div>\n </motion.div>,\n /**\n * Нужно для preview, чтобы категории рендерились в iframe\n */\n document.body.querySelector<HTMLIFrameElement>('#modal-preview')?.contentDocument?.body ?? document.body\n )\n}\n","import { forwardRef, memo } from 'react'\nimport { motion } from 'framer-motion'\nimport type { Category } from '../../../model'\nimport { TabContent } from './ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\ntype TabProps = {\n category: Category\n active: boolean\n onActiveTabChange: (active: string | null) => void\n}\n\nconst InnerComponent = forwardRef<HTMLDivElement, TabProps>(({ category, active, onActiveTabChange }, ref) => {\n const rootRef = ref && 'current' in ref ? ref : null\n const triggerClientRect = rootRef?.current?.getBoundingClientRect()\n\n const contentShouldRender = active && !TypeGuards.isArrayEmpty(category.children)\n\n const Button = !category.link ? 'span' : TypeGuards.isStringEmpty(category.link.href) ? 'span' : 'a'\n\n return (\n <motion.div\n ref={ref}\n className={cn(\n 'relative flex cursor-default items-center justify-center py-4 text-color-dark',\n 'after:content=\"\" after:absolute after:bottom-0 after:left-1/2 after:h-[1px]',\n 'after:w-0 after:-translate-x-1/2 after:bg-color-primary-default after:duration-100',\n {\n 'text-color-primary-default': contentShouldRender,\n 'after:w-full': contentShouldRender\n }\n )}\n onMouseEnter={() => onActiveTabChange(category.title!)}\n onMouseLeave={() => onActiveTabChange(null)}\n onFocus={() => onActiveTabChange(category.title!)}\n >\n <Button href={Button === 'a' ? category.link?.href : undefined} className='desk-body-regular-m outline-none'>\n {category.title}\n </Button>\n {contentShouldRender && (\n <TabContent\n categories={category.children}\n style={{\n top: triggerClientRect ? triggerClientRect.top + triggerClientRect.height : 0\n }}\n />\n )}\n </motion.div>\n )\n})\n\nexport const Tab = memo(InnerComponent) as typeof InnerComponent\n","import { memo, useCallback, useRef, useState } from 'react'\nimport { AnimatePresence } from 'framer-motion'\nimport type { Category } from '../../model'\nimport { Tab } from './tab'\n\ntype CategoryTabsProps = {\n categories: Category[]\n}\n\nconst InnerComponent = ({ categories }: CategoryTabsProps) => {\n const [activeTab, setActiveTab] = useState<string | null>(null)\n\n const onActiveTabChange = useCallback((active: string | null) => {\n setActiveTab(active)\n }, [])\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n return (\n <AnimatePresence mode='sync'>\n <div\n ref={triggerRef}\n id='tabs'\n className='relative flex w-full items-center justify-between gap-x-4 border-b border-b-[rgba(234,237,241)]'\n >\n {categories.map((category) => (\n <Tab\n key={category.title}\n ref={triggerRef}\n category={category}\n active={activeTab === category.title}\n onActiveTabChange={onActiveTabChange}\n />\n ))}\n <div className='ml-auto'>Личный кабинет</div>\n </div>\n </AnimatePresence>\n )\n}\n\nexport const CategoryTabs = memo(InnerComponent) as typeof InnerComponent\n","import type { Category } from '../../../model'\nimport { cn } from '$/shared/utils'\n\ntype RootTabProps = React.HTMLAttributes<HTMLDivElement> & {\n category: Category\n selectedCategory: Category\n onCurrentCategoryChange: (category: Category) => void\n onRootCategoryChange: (category: Category) => void\n active: boolean\n}\n\nexport const RootTab = ({\n category,\n selectedCategory,\n onCurrentCategoryChange,\n onRootCategoryChange,\n active,\n ...props\n}: RootTabProps) => {\n return (\n <div\n {...props}\n onClick={() => {\n onCurrentCategoryChange(category.children[0])\n onRootCategoryChange(category)\n }}\n className={cn('group/category relative cursor-default text-color-blue-grey-600 duration-100 hover:text-color-dark', {\n 'text-color-dark': active\n })}\n >\n <span className='desk-body-regular-m'>{category.title}</span>\n {category.children.length > 1 && (\n <div\n className={cn(\n 'absolute right-0 top-full z-10 flex w-max flex-col',\n 'invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100',\n 'rounded-sm p-1'\n )}\n >\n {category.children.map((child) => (\n <span\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onRootCategoryChange(category)\n onCurrentCategoryChange(child)\n }}\n key={child.title}\n className={cn(\n 'desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark',\n {\n 'text-color-primary-default': selectedCategory.title === child.title\n }\n )}\n >\n {child.title}\n </span>\n ))}\n </div>\n )}\n </div>\n )\n}\n","import { currentCategoryAction, rootCategoryAction, useCategoryReducer } from '../../hooks'\nimport type { Category, SeoHeaderHelpers } from '../../model'\nimport { CategoryTabs } from './CategoryTabs'\nimport { RootTab } from './rootTab'\nimport { Icon } from '$/shared/ui'\nimport { createPhoneNumber } from '$/shared/utils'\n\ntype DesktopCategoriesProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nexport const CategoriesDesktop = ({ categories, helpers, phone }: DesktopCategoriesProps) => {\n const [store, dispatch] = useCategoryReducer({ root: categories[0].children[0], current: categories[0].children[0] })\n\n return (\n <div className='mobile:hidden'>\n <div className='flex w-full items-center justify-between gap-x-4 border-b border-b-[rgba(234,237,241)] py-4'>\n <Icon name='brandLogos/logoMain' className='mr-auto w-[130px]' />\n {categories.map((category) => {\n const active = store.root.title === category.title\n\n return (\n <RootTab\n key={category.title}\n category={category}\n selectedCategory={store.current}\n onCurrentCategoryChange={(cat) => dispatch(currentCategoryAction(cat))}\n onRootCategoryChange={(cat) => dispatch(rootCategoryAction(cat))}\n active={active}\n />\n )\n })}\n <div className='h-3.5 w-[1px] rounded-sm bg-color-blue-grey-500' />\n {helpers.map((helper) => (\n <a\n key={helper.title}\n href={helper.link.href}\n className='desk-body-regular-m flex items-center gap-x-1 text-color-blue-grey-600 duration-100 hover:text-color-dark'\n >\n {helper.link.icon && <Icon name={helper.link.icon} className='size-4' />}\n {helper.title}\n </a>\n ))}\n <div className='h-3.5 w-[1px] rounded-sm bg-color-blue-grey-500' />\n <a\n href={`tel:${phone}`}\n className='desk-body-regular-m flex items-center gap-x-1 text-color-blue-grey-600 duration-100 hover:text-color-dark'\n >\n {createPhoneNumber(phone, 'x xxx xxx xx xx')}\n </a>\n </div>\n <CategoryTabs categories={store.current.children} />\n </div>\n )\n}\n","import { type Category } from '../../../model'\nimport { Accordion, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype MenuItemProps = {\n category: Category\n}\n\nexport const MenuItem = ({ category }: MenuItemProps) => (\n <Accordion\n key={category.title}\n label={category.title ?? ''}\n icon={<Icon name='arrows/arrowRight' className='-rotate-90' />}\n classes={{\n root: 'w-full',\n header: {\n trigger: 'py-2 data-[open=false]:bg-color-white',\n label: 'desk-body-regular-m'\n },\n content: cn(\n 'relative',\n 'after:content-\"\" after:absolute after:w-[calc(100%-32px)]',\n 'after:bottom-0 after:left-1/2 after:-translate-x-1/2',\n 'after:h-[1px] after:bg-color-blue-grey-200'\n )\n }}\n >\n <div className='flex flex-col items-start justify-center gap-y-4'>\n {category.children.map((child) => {\n const isLink = Boolean(child.link)\n const Title = isLink ? 'a' : 'p'\n\n return (\n <ul key={child.title} className='w-full list-none p-0'>\n <Title\n href={isLink ? child.link?.href : undefined}\n className='mb-3 flex items-center gap-x-1 text-16 text-color-primary-default'\n >\n {child.title}\n <Icon name='arrows/arrowLink' />\n </Title>\n {child.children.map((innerChild) => (\n <li key={innerChild.title} className='inline-block w-full [&:not(:last-child)]:mb-3'>\n <a href={innerChild.link?.href} className='w-full'>\n {innerChild.title}\n </a>\n </li>\n ))}\n </ul>\n )\n })}\n </div>\n </Accordion>\n)\n","import { useMemo, useState } from 'react'\nimport { motion } from 'framer-motion'\nimport type { Category, SeoHeaderHelpers } from '../../../model'\nimport { MenuItem } from './MenuItem'\nimport { Icon, type SelectItemOption, Uncontrolled } from '$/shared/ui'\nimport { cn, createPhoneNumber, TypeGuards } from '$/shared/utils'\n\nexport type MenuProps = React.ComponentProps<typeof motion.div> & {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nconst getSelectCategories = (categories: Category[]): SelectItemOption[] =>\n categories.map((category) => ({\n value: category.title ?? '',\n label: category.title ?? ''\n }))\n\nexport const Menu = ({ categories, helpers, phone, ...props }: MenuProps) => {\n const selectCategories = getSelectCategories(categories)\n\n const [selected, setSelected] = useState<SelectItemOption | SelectItemOption[] | undefined>(selectCategories[0])\n\n const onCategoryChange = (option?: SelectItemOption | SelectItemOption[]) => {\n if (TypeGuards.isUndefined(option) || TypeGuards.isArray(option)) return\n\n setSelected(option)\n }\n\n const selectedSubCategories = useMemo<Category[]>(() => {\n if (TypeGuards.isUndefined(selected) || TypeGuards.isArray(selected)) return []\n\n return categories.find((category) => category.title === selected.value)?.children ?? []\n }, [selected, categories])\n\n return (\n <motion.div\n {...props}\n className={cn(\n 'absolute z-10 w-full max-w-[calc(636px-32px)]',\n 'absolute left-1/2 top-full bg-color-white p-4',\n '-translate-x-1/2 overflow-x-hidden',\n 'flex flex-col items-center justify-center gap-y-4'\n )}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n >\n <Uncontrolled.SelectBase label='Категория' options={selectCategories} value={selected} onChange={onCategoryChange} />\n <div className='flex w-full flex-col items-center justify-center gap-y-1'>\n {selectedSubCategories.map((subCategory) => {\n if (TypeGuards.isArrayEmpty(subCategory.children)) {\n return (\n <div key={subCategory.title} className='w-full px-4 py-2.5'>\n <a href={subCategory.link?.href} className='desk-body-regular-m inline-block w-full'>\n {subCategory.title}\n </a>\n </div>\n )\n }\n\n return <MenuItem key={subCategory.title} category={subCategory} />\n })}\n </div>\n <div className='h-[1px] w-full bg-color-blue-grey-200' />\n <div className='flex w-full flex-col items-center justify-center gap-y-1'>\n {helpers.map((helper) => (\n <div key={helper.title} className='w-full px-4 py-2.5'>\n <a href={helper.link?.href} className='flex w-full items-center gap-x-1'>\n {helper.link?.icon && <Icon name={helper.link.icon} className='size-4' />}\n {helper.title}\n </a>\n </div>\n ))}\n <div className='w-full px-4 py-2.5'>\n <a href={`tel:${phone}`} className='flex w-full items-center gap-x-1'>\n <Icon name='communication/phone' className='size-4' />\n {createPhoneNumber(phone)}\n </a>\n </div>\n </div>\n </motion.div>\n )\n}\n","import { useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport type { Category, SeoHeaderHelpers } from '../../model'\nimport { Menu } from './menu'\nimport { Icon } from '$/shared/ui'\n\ntype CategoriesMobileProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nexport const CategoriesMobile = ({ categories, helpers, phone }: CategoriesMobileProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const containerClientRect = containerRef.current?.getBoundingClientRect()\n\n const [open, setOpen] = useState<boolean>(false)\n\n const onOpenToggle = () => setOpen(!open)\n\n return (\n <div\n ref={containerRef}\n className='relative flex w-full items-center justify-between border-b border-b-blue-grey-500 py-4 desktop:hidden'\n >\n <Icon name='brandLogos/logoMain' className='w-[130px]' />\n <button type='button' onClick={onOpenToggle} className='h-max w-max'>\n <Icon name={open ? 'general/close' : 'general/menu'} className='size-6 text-color-primary-default' />\n </button>\n\n {open &&\n createPortal(\n <Menu\n categories={categories}\n helpers={helpers}\n phone={phone}\n style={{ top: containerClientRect ? containerClientRect.top + containerClientRect.height : 0 }}\n />,\n /**\n * Нужно для preview, чтобы категории рендерились в iframe\n */\n document.body.querySelector<HTMLIFrameElement>('#modal-preview')?.contentDocument?.body ?? document.body\n )}\n </div>\n )\n}\n","import { ResponsiveContainer } from '../../shared/ui'\nimport { type Breadcrumb, Breadcrumbs } from '../breadcrumbs'\nimport { widgetIds } from '../model'\nimport type { Category, SeoHeaderHelpers } from './model'\nimport { CategoriesDesktop, CategoriesMobile } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { capitalize, cn } from '$/shared/utils'\n\nexport type SeoHeaderClasses = {\n root?: string\n}\n\nexport type SeoHeaderProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n breadcrumbs: Breadcrumb[]\n phone: string\n classes?: SeoHeaderClasses\n}\n\nexport const SeoHeader = ({ categories, helpers, phone, breadcrumbs, classes }: SeoHeaderProps) => {\n const { isMobile } = useDevice()\n\n return (\n <div id={widgetIds.seoHeader} data-test-id={widgetIds.seoHeader} className={cn('w-full bg-color-white', classes?.root)}>\n <ResponsiveContainer className='mx-auto w-full'>\n <CategoriesMobile categories={categories.map((category) => category.children).flat()} helpers={helpers} phone={phone} />\n <CategoriesDesktop categories={categories} helpers={helpers} phone={phone} />\n <Breadcrumbs\n ellipsis={isMobile ? 1 : undefined}\n breadcrumbs={breadcrumbs}\n matcher={(breadcrumb) => ({ label: capitalize(breadcrumb.label).split('-').join(' ') })}\n />\n </ResponsiveContainer>\n </div>\n )\n}\n\nexport default SeoHeader\n","import type { FieldValues } from 'react-hook-form'\nimport { z } from 'zod'\nimport type { CalculatorViewProps } from '../CalculatorView'\nimport type { InfoListItemMode } from '../ui'\nimport type { CalculatorSuffix, ValueWithFormula } from './types'\nimport { getDynamicSchema } from '@/shared/utils'\n\nexport const isFormula = (value: ValueWithFormula | string): value is ValueWithFormula => {\n return typeof value !== 'string' && 'formula' in value\n}\n\nexport const formatWithIntl = (suffix: CalculatorSuffix, value: number) => {\n let calculationValue = value\n\n const options: Intl.NumberFormatOptions = {\n style: suffix\n }\n\n switch (suffix) {\n case 'currency':\n options.currency = 'RUB'\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 0\n break\n\n case 'percent':\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 1\n calculationValue = calculationValue / 100\n break\n default:\n return null\n }\n\n const formatter = new Intl.NumberFormat('ru-RU', options)\n return formatter.format(calculationValue)\n}\n\nexport const formatValueToRenderInfoItem = (renderMode: InfoListItemMode, value: string) => {\n switch (renderMode) {\n case 'text':\n return value\n default:\n return formatWithIntl(renderMode, Number(value))\n }\n}\n\nexport const getCalculatorSchema = <T extends FieldValues>(\n props: CalculatorViewProps<T>['calculatorFieldsConfig']['fieldsGroup']\n) => {\n const groups = Object.values(props)\n\n return groups.reduce<z.ZodObject<any>>((acc, item) => acc.merge(getDynamicSchema(item.fields)), z.object({}))\n}\n","import { TypeGuards } from '../../../shared/utils'\nimport type { InfoListItemDTO, InfoListItemProps } from '../ui'\nimport type { CalculatorVariables } from './types'\nimport { isFormula } from './utils'\n\nconst validateFormula = (formula: string, variables: CalculatorVariables) => {\n const variablesInFormula = formula.match(/[a-zA-Z_$][a-zA-Z0-9_$]*/g) || []\n const missingVariables = variablesInFormula.filter((varName) => !(varName in variables))\n\n if (missingVariables.length > 0) {\n return ''\n // throw new Error(`Отсутствуют переменные для калькулятора: ${missingVariables.join(', ')}`) 12 + 14 / select1\n }\n\n return formula\n}\n\nexport const evaluateFormula = (formula: string, variables: CalculatorVariables): string => {\n const entries = Object.entries(variables).map(([key, value]) => [key, !TypeGuards.isNil(value) ? value : '1'])\n\n const variablesKeys = entries.map(([key]) => key)\n const variablesValues = entries.map(([, value]) => value)\n\n const validatedFormula = validateFormula(formula, Object.fromEntries(entries))\n\n const replaceVariables = new Function(...variablesKeys, `return ${validatedFormula};`)\n\n const replaceResult: number = replaceVariables(...variablesValues.map(Number))\n\n if (Number.isNaN(Number(replaceResult))) {\n return '0'\n }\n\n return replaceResult.toString()\n}\n\nexport const formatInfoList = (list: InfoListItemDTO[], variables: CalculatorVariables): InfoListItemProps[] => {\n return list.map((item) => {\n return {\n ...item,\n value: isFormula(item.value) ? evaluateFormula(item.value.formula, variables) : item.value\n }\n })\n}\n","import { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoHeadClasses = {\n wrapper?: string\n title?: string\n subtitle?: string\n}\n\nexport interface CalculatorInfoHeadProps {\n title?: string\n subtitle?: string\n classes?: CalculatorInfoHeadClasses\n}\n\nexport const CalculatorInfoHead = ({ subtitle, title, classes }: CalculatorInfoHeadProps) => {\n return (\n <>\n {(title || subtitle) && (\n <div className={cn('flex flex-col gap-2', classes?.wrapper)}>\n {title && (\n <Heading as='h3' className={classes?.title}>\n {title}\n </Heading>\n )}\n {subtitle && <div className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}>{subtitle}</div>}\n </div>\n )}\n </>\n )\n}\n","import { type CalculatorSuffix, type CalculatorValue, formatWithIntl } from '../../../model'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatedBlockClasses = {\n wrapper?: string\n description?: string\n value?: string\n}\n\nexport interface CalculatedBlockProps {\n rootDescription: string\n rootValue: CalculatorValue\n suffix: CalculatorSuffix\n classes?: CalculatedBlockClasses\n}\n\nexport const CalculatedBlock = ({ rootDescription, rootValue, suffix, classes }: CalculatedBlockProps) => {\n return (\n <div className={cn('mb-6 flex items-center justify-between gap-6', classes?.wrapper)}>\n <p className={cn('desk-body-regular-l text-color-dark', classes?.description)}>{rootDescription}</p>\n <div className={cn('desk-title-bold-l flex items-center gap-1 text-color-dark', classes?.value)}>\n {formatWithIntl(suffix, Number(rootValue))}\n </div>\n </div>\n )\n}\n","import { type CalculatorSuffix, type CalculatorValue, formatValueToRenderInfoItem } from '../../../model'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type InfoListItemMode = CalculatorSuffix | 'text'\nexport type InfoListItemColor = 'dark' | 'blue'\n\nexport interface InfoListItemCommon {\n label: string\n mode: InfoListItemMode\n hint?: string\n accent?: boolean\n color?: InfoListItemColor\n}\n\nexport interface InfoListItemDTO extends InfoListItemCommon {\n value: CalculatorValue\n}\n\nexport interface InfoListItemProps extends InfoListItemCommon {\n value: string\n}\n\nexport const InfoListItem = ({ hint, value, label, mode, color = 'dark', accent = false }: InfoListItemProps) => {\n return (\n <div className='flex items-center justify-between gap-4'>\n <div className='flex items-center gap-2'>\n <p className='desk-body-regular-l text-color-dark'>{label}</p>\n {hint && (\n <Popover\n withCloseBtn={false}\n triggerElement={<Icon className='size-5 text-icon-blue-grey-600' name='info/helpCircle' />}\n >\n <p>{hint}</p>\n </Popover>\n )}\n </div>\n <span\n className={cn('desk-body-medium-l text-color-dark', {\n '[&&]:desk-title-bold-s': accent,\n 'text-color-primary-default': color === 'blue'\n })}\n >\n {formatValueToRenderInfoItem(mode, value)}\n </span>\n </div>\n )\n}\n","import { useFormContext } from 'react-hook-form'\nimport { cn } from '../../../../../shared/utils'\nimport { type CalculatorSchema, formatInfoList } from '../../../model'\nimport { InfoListItem, type InfoListItemDTO } from './InfoListItem'\n\nexport type CalculatorInfoBodyClasses = {\n wrapper?: string\n}\n\nexport interface CalculatedInfoBodyProps {\n infoList: InfoListItemDTO[]\n classes?: CalculatorInfoBodyClasses\n}\n\nexport const CalculatorInfoBody = ({ infoList, classes }: CalculatedInfoBodyProps) => {\n const { watch } = useFormContext<CalculatorSchema>()\n const watchedFields = watch()\n const formattedInfoList = formatInfoList(infoList, watchedFields)\n\n return (\n <div className={cn('my-4 flex flex-col gap-3 border-t border-solid border-blue-grey-500 pt-4', classes?.wrapper)}>\n {formattedInfoList?.map((listItem) => (\n <InfoListItem key={listItem.label} {...listItem} />\n ))}\n </div>\n )\n}\n","import { type AllowedIcons, Icon, Popover, type PopoverProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AssistHintClasses = {\n wrapper?: string\n block?: string\n icon?: string\n description?: string\n}\n\nexport interface AssistHintProps {\n iconName: AllowedIcons\n text: string\n hint?: string\n classes?: AssistHintClasses\n popoverProps?: PopoverProps\n}\n\nexport const AssistHint = ({ iconName, text, hint, classes, popoverProps }: AssistHintProps) => {\n return (\n <div className={cn('mb-6 flex items-center gap-2', classes?.wrapper)}>\n <div className={cn('flex items-center gap-1', classes?.block)}>\n <Icon name={iconName} className={cn('size-6 text-icon-blue-grey-800', classes?.icon)} />\n <p className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}>{text}</p>\n </div>\n\n {hint && (\n <Popover\n withCloseBtn={false}\n triggerElement={<Icon name='info/helpCircle' className='size-5 text-icon-blue-grey-600' />}\n {...popoverProps}\n >\n {hint}\n </Popover>\n )}\n </div>\n )\n}\n","import { ButtonWithHandlers, type ButtonWithHandlersProps } from '../../../../buttonWithHandlers'\nimport { AssistHint, type AssistHintClasses, type AssistHintProps } from './AssistHint'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoFooterClasses = {\n assistHint?: AssistHintClasses\n buttonsWrapper?: string\n bottomDescription?: string\n}\n\nexport interface CalculatorInfoFooterProps {\n assistHint?: AssistHintProps\n buttonsConfig: ButtonWithHandlersProps[]\n bottomDescription?: string\n classes?: CalculatorInfoFooterClasses\n}\n\nexport const CalculatorInfoFooter = ({ assistHint, buttonsConfig, bottomDescription, classes }: CalculatorInfoFooterProps) => {\n return (\n <div>\n {assistHint && <AssistHint {...assistHint} classes={classes?.assistHint} />}\n\n <div className={cn('flex items-center gap-4 mobile:flex-col', classes?.buttonsWrapper)}>\n {buttonsConfig?.map((button, index) => (\n <ButtonWithHandlers key={index} className='w-full' {...button} />\n ))}\n </div>\n {bottomDescription && (\n <p className={cn('desk-body-regular-m mt-4 text-color-secondary', classes?.bottomDescription)}>{bottomDescription}</p>\n )}\n </div>\n )\n}\n","import {\n CalculatedBlock,\n type CalculatedBlockClasses,\n type CalculatedBlockProps,\n type CalculatedInfoBodyProps,\n CalculatorInfoBody,\n type CalculatorInfoBodyClasses,\n CalculatorInfoFooter,\n type CalculatorInfoFooterClasses,\n type CalculatorInfoFooterProps,\n CalculatorInfoHead,\n type CalculatorInfoHeadClasses,\n type CalculatorInfoHeadProps\n} from './ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoClasses = {\n wrapper?: string\n calculatedBlock?: CalculatedBlockClasses\n calculatedInfoHead?: CalculatorInfoHeadClasses\n calculatorInfoBody?: CalculatorInfoBodyClasses\n calculatorInfoFooter?: CalculatorInfoFooterClasses\n}\n\nexport interface CalculatorInfoProps\n extends Omit<CalculatedBlockProps, 'classes'>,\n Omit<CalculatorInfoHeadProps, 'classes'>,\n Omit<CalculatedInfoBodyProps, 'classes'>,\n Omit<CalculatorInfoFooterProps, 'classes'> {\n classes?: CalculatorInfoClasses\n}\n\nexport const CalculatorInfo = ({\n rootDescription,\n bottomDescription,\n rootValue,\n title,\n subtitle,\n buttonsConfig,\n infoList,\n suffix,\n assistHint,\n classes\n}: CalculatorInfoProps) => {\n return (\n <div className={cn('w-[456px] rounded-md bg-color-blue-grey-100 p-8', classes?.wrapper)}>\n <CalculatedBlock\n suffix={suffix}\n rootValue={rootValue}\n rootDescription={rootDescription}\n classes={classes?.calculatedBlock}\n />\n <CalculatorInfoHead title={title} subtitle={subtitle} classes={classes?.calculatedInfoHead} />\n <CalculatorInfoBody infoList={infoList} classes={classes?.calculatorInfoBody} />\n <CalculatorInfoFooter\n assistHint={assistHint}\n buttonsConfig={buttonsConfig}\n bottomDescription={bottomDescription}\n classes={classes?.calculatorInfoFooter}\n />\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { type FieldValues, type Path, type PathValue, useFormContext } from 'react-hook-form'\nimport { TypeGuards } from '../../../../../shared/utils'\nimport { type AdditionalSliderGroupConfig, type SlidersGroupProps } from '../ui'\n\ninterface UseAdditionalSlider<T extends FieldValues> {\n additionalSliderGroupConfig?: AdditionalSliderGroupConfig<T>\n slidersGroupConfig?: SlidersGroupProps<T>\n}\n\nconst ADDITIONAL_MONEY_MINIMUM = 20_000\n\nexport const useAdditionalSlider = <T extends FieldValues>({\n slidersGroupConfig,\n additionalSliderGroupConfig\n}: UseAdditionalSlider<T>) => {\n const [sliderVisible, setSliderVisible] = useState<boolean>(false)\n\n const { watch, setValue } = useFormContext<T>()\n\n const sliderSumGroup = slidersGroupConfig?.fields.find(({ args }) => args.name === 'sum')\n const { args } = sliderSumGroup || {}\n const { max: sumMax, name: sumName, defaultValue: sumDefaultValue } = args || {}\n const sumValue = watch(sumName as Path<T>)\n\n const { min: additionalSliderMin, name: additionalSliderName } = additionalSliderGroupConfig?.args ?? {}\n const additionalSliderValue = watch(additionalSliderName as Path<T>)\n const additionalSliderMax = Number(sumMax ?? 0) - (sumValue ?? sumDefaultValue)\n\n useEffect(() => {\n if (additionalSliderValue > additionalSliderMax) {\n setValue(additionalSliderName as Path<T>, additionalSliderMax as PathValue<T, Path<T>>)\n }\n }, [additionalSliderMax, additionalSliderValue, setValue, sumValue])\n\n useEffect(() => {\n if (Number(sumMax) === sumValue) {\n setSliderVisible(false)\n }\n }, [setSliderVisible, sumMax, sumValue])\n\n const onCheckedChange = () => {\n setSliderVisible((prevValue) => !prevValue)\n\n if (additionalSliderValue <= 0) {\n setValue(additionalSliderName as Path<T>, additionalSliderMin as PathValue<T, Path<T>>)\n }\n\n if (Number(sumMax) === sumValue) {\n setValue((sumName ?? '') as Path<T>, (sumValue - ADDITIONAL_MONEY_MINIMUM) as PathValue<T, Path<T>>)\n setValue(additionalSliderName as Path<T>, additionalSliderMin as PathValue<T, Path<T>>)\n }\n }\n\n return {\n sliderVisible,\n setSliderVisible,\n sumMax,\n sumName,\n sumDefaultValue,\n sumValue,\n additionalSliderMax,\n onCheckedChange,\n sliderSumExist: !TypeGuards.isObjectEmpty(sliderSumGroup?.args),\n sliderSumCorrectType: sliderSumGroup?.args.componentType === 'algorithmic' || sliderSumGroup?.args.componentType === 'step'\n }\n}\n","import type { ModalContentVariant } from '../../../model'\nimport { useBoolean } from '$/shared/hooks'\nimport { Modal, type ModalProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorModalClasses = {\n wrapper?: string\n description?: string\n button?: string\n}\n\nexport interface CalculatorModalProps {\n triggerText: string\n contentVariant: ModalContentVariant\n modalTitle?: string\n description?: string\n classes?: CalculatorModalClasses\n modalProps?: ModalProps\n}\n\nconst renderModalContent = (contentVariant: ModalContentVariant) => {\n switch (contentVariant) {\n case 'content1':\n return <div>content 1</div>\n case 'content2':\n return <div>content 2</div>\n }\n}\n\nexport const CalculatorModal = ({\n triggerText,\n modalTitle,\n description,\n classes,\n modalProps,\n contentVariant\n}: CalculatorModalProps) => {\n const [isModalOpen, modalSetter] = useBoolean(false)\n\n return (\n <div className={cn('flex flex-col gap-4 rounded-sm bg-color-blue-grey-100 p-4', classes?.wrapper)}>\n {description && <p className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}>{description}</p>}\n <button\n onClick={() => modalSetter(true)}\n className={cn(\n 'desk-body-regular-l w-max cursor-pointer text-color-primary-default underline underline-offset-4',\n classes?.button\n )}\n >\n {triggerText}\n </button>\n <Modal title={modalTitle} isModalOpen={isModalOpen} closeModal={() => modalSetter(false)} {...modalProps}>\n {renderModalContent(contentVariant)}\n </Modal>\n </div>\n )\n}\n","import { type FieldValues, useFormContext } from 'react-hook-form'\nimport { type FieldElementWithoutControl, FieldMapper } from '../../../../fieldMapper'\nimport type { FieldValidation } from '@/shared/utils'\nimport { type SliderAdditionalProps } from '$/shared/ui/formElements/uncontrolled/slider'\n\nexport type ValidationField = { validation: FieldValidation }\n\nexport interface SelectGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SelectControl', ValidationField>[]\n}\n\nexport interface CheckboxGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'CheckboxControl', ValidationField>[]\n}\n\ntype RadioGroupFields<T extends FieldValues> = FieldElementWithoutControl<\n T,\n 'RadioGroupTabControl' | 'RadioGroupControl' | 'RadioGroupCardControl',\n ValidationField\n>[]\n\nexport interface RadioGroupProps<T extends FieldValues> {\n fields: RadioGroupFields<T>\n}\n\nexport interface SlidersGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SliderControl', ValidationField>[]\n}\n\nexport interface SwitchGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SwitchControl', ValidationField>[]\n}\n\nexport interface AdditionalSliderGroupConfig<T extends FieldValues> {\n args: SliderAdditionalProps<T>\n type: 'SliderControl'\n}\n\nexport type FieldsGroupProps<T extends FieldValues> =\n | SelectGroupProps<T>\n | CheckboxGroupProps<T>\n | RadioGroupProps<T>\n | SlidersGroupProps<T>\n | SwitchGroupProps<T>\n\nexport const FieldsGroup = <T extends FieldValues>({ fields }: FieldsGroupProps<T>) => {\n const { control } = useFormContext<T>()\n\n return <FieldMapper control={control} fields={fields} />\n}\n","import { type FieldValues, useFormContext } from 'react-hook-form'\nimport { useAdditionalSlider } from '../hooks'\nimport type { AdditionalSliderGroupConfig, SlidersGroupProps } from './FieldsGroup'\nimport { Controlled, Uncontrolled } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type AdditionalSliderClasses = {\n wrapper?: string\n block?: string\n //TODO: add reexport to classes for form elements (checkbox, switch, input, etc.)\n // slider: SliderBaseClasses\n // switch?: SwitchBaseClasses\n}\n\ninterface AdditionalSliderProps<T extends FieldValues> {\n additionalSliderGroupConfig: AdditionalSliderGroupConfig<T>\n slidersGroupConfig: SlidersGroupProps<T>\n classes?: AdditionalSliderClasses\n}\n\nexport const AdditionalSlider = <T extends FieldValues>({\n slidersGroupConfig,\n additionalSliderGroupConfig,\n classes\n}: AdditionalSliderProps<T>) => {\n const { control } = useFormContext<T>()\n\n const { sliderVisible, additionalSliderMax, onCheckedChange } = useAdditionalSlider({\n slidersGroupConfig: slidersGroupConfig,\n additionalSliderGroupConfig: additionalSliderGroupConfig\n })\n\n if (TypeGuards.isNil(additionalSliderGroupConfig?.args) || !additionalSliderGroupConfig?.args) return null\n\n return (\n <div className={cn('flex flex-col gap-4', classes?.wrapper)}>\n <div className={cn('inline-flex items-center gap-2', classes?.block)}>\n <Uncontrolled.SwitchBase checked={sliderVisible} onCheckedChange={onCheckedChange} />\n <p className='desk-body-regular-l'>Хочу получить деньги дополнительно</p>\n </div>\n {sliderVisible && (\n <Controlled.SliderControl\n {...additionalSliderGroupConfig.args}\n control={control}\n componentType='algorithmic'\n suffix='currency'\n defaultValue={additionalSliderGroupConfig?.args.min}\n max={additionalSliderMax}\n />\n )}\n </div>\n )\n}\n","import { type FieldValues } from 'react-hook-form'\nimport { useAdditionalSlider } from './hooks'\nimport {\n AdditionalSlider,\n type AdditionalSliderGroupConfig,\n CalculatorModal,\n type CalculatorModalClasses,\n type CalculatorModalProps,\n type CheckboxGroupProps,\n type RadioGroupProps,\n type SelectGroupProps,\n type SlidersGroupProps,\n type SwitchGroupProps\n} from './ui'\nimport { FieldsGroup } from './ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorFieldsClasses = {\n rootFieldsWrapper?: string\n selectFieldsWrapper?: string\n checkboxFieldsWrapper?: string\n switchFieldsWrapper?: string\n modalClasses?: CalculatorModalClasses\n}\n\nexport interface CalculatorFieldsProps<T extends FieldValues> {\n classes?: CalculatorFieldsClasses\n modalConfig?: CalculatorModalProps\n fieldsGroup: {\n selectGroupConfig?: SelectGroupProps<T>\n slidersGroupConfig?: SlidersGroupProps<T>\n radioGroupTabConfig?: RadioGroupProps<T>\n checkboxGroupConfig?: CheckboxGroupProps<T>\n radioGroupConfig?: RadioGroupProps<T>\n radioGroupCardConfig?: RadioGroupProps<T>\n switchGroupConfig?: SwitchGroupProps<T>\n additionalSliderGroupConfig?: AdditionalSliderGroupConfig<T> & { fields: any[] }\n }\n}\n\nexport const CalculatorFields = <T extends FieldValues>({ modalConfig, fieldsGroup, classes }: CalculatorFieldsProps<T>) => {\n const { sliderSumExist, sliderSumCorrectType } = useAdditionalSlider({\n slidersGroupConfig: fieldsGroup.slidersGroupConfig,\n additionalSliderGroupConfig: fieldsGroup.additionalSliderGroupConfig\n })\n\n return (\n <div className={cn('flex flex-1 flex-col gap-8', classes?.rootFieldsWrapper)}>\n {modalConfig?.triggerText && modalConfig?.contentVariant && (\n <CalculatorModal classes={classes?.modalClasses} {...modalConfig} />\n )}\n {fieldsGroup?.selectGroupConfig && (\n <div className={cn('flex flex-col gap-4', classes?.selectFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.selectGroupConfig} />\n </div>\n )}\n {fieldsGroup?.slidersGroupConfig && <FieldsGroup {...fieldsGroup?.slidersGroupConfig} />}\n {fieldsGroup?.radioGroupTabConfig && <FieldsGroup {...fieldsGroup?.radioGroupTabConfig} />}\n {fieldsGroup?.checkboxGroupConfig && (\n <div className={cn('flex flex-col gap-4', classes?.checkboxFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.checkboxGroupConfig} />\n </div>\n )}\n {fieldsGroup?.radioGroupConfig && <FieldsGroup {...fieldsGroup?.radioGroupConfig} />}\n {fieldsGroup?.radioGroupCardConfig && <FieldsGroup {...fieldsGroup?.radioGroupCardConfig} />}\n {fieldsGroup?.switchGroupConfig && (\n <div className={cn('flex flex-col gap-4', classes?.switchFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.switchGroupConfig} />\n </div>\n )}\n {fieldsGroup.additionalSliderGroupConfig?.args.enabled &&\n fieldsGroup.slidersGroupConfig &&\n fieldsGroup.additionalSliderGroupConfig &&\n sliderSumExist &&\n sliderSumCorrectType && (\n <AdditionalSlider\n slidersGroupConfig={fieldsGroup.slidersGroupConfig}\n additionalSliderGroupConfig={fieldsGroup.additionalSliderGroupConfig}\n />\n )}\n </div>\n )\n}\n","import { type Dispatch, memo, type SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorTabsClasses = {\n wrapper?: string\n tab?: string\n}\n\nexport interface CalculatorTab {\n name: string\n label: string\n}\n\nexport type CalculatorTabValue = CalculatorTab['name']\n\nexport interface CalculatorTabsProps {\n calculatorTabs?: CalculatorTab[]\n activeCalculator: CalculatorTabValue\n setActiveCalculator: Dispatch<SetStateAction<CalculatorTabValue>>\n classes?: CalculatorTabsClasses\n}\n\nexport const CalculatorTabs = memo(({ calculatorTabs, activeCalculator, setActiveCalculator, classes }: CalculatorTabsProps) => {\n return (\n <div className={cn('mb-8 flex items-center gap-4', classes?.wrapper)}>\n {calculatorTabs?.map(({ name, label }) => (\n <button\n key={name}\n onClick={() => setActiveCalculator(name)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent desktop:desk-body-regular-l focus:outline-primary-focus desktop:px-4 desktop:py-3',\n { 'bg-icon-primary-default text-color-white': activeCalculator === name },\n classes?.tab\n )}\n >\n {label}\n </button>\n ))}\n </div>\n )\n})\n","import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', JSON.stringify(watchedFields))\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { cn } from '../../shared/utils'\nimport { widgetIds } from '../model'\nimport { CalculatorView, type CalculatorViewClasses, type CalculatorViewProps } from './CalculatorView'\nimport { CalculatorTabs, type CalculatorTabsClasses, type CalculatorTabValue } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport type CalculatorClasses = {\n root?: string\n container?: string\n headline?: string\n wrapper?: string\n calculatorView?: CalculatorViewClasses\n calculatorTabs?: CalculatorTabsClasses\n}\n\nexport interface CalculatorProps {\n headline: string\n calculators: CalculatorViewProps[]\n classes?: CalculatorClasses\n}\n\nexport const Calculator = ({ calculators, headline, classes }: CalculatorProps) => {\n const shouldShowTabs = calculators.length > 1\n\n const [activeCalculator, setActiveCalculator] = useState<CalculatorTabValue>(shouldShowTabs ? calculators[0]?.name : '')\n\n const calculatorsTabs = useMemo(() => calculators?.map(({ name, label }) => ({ name, label })), [calculators])\n\n const currentCalculatorIndex = shouldShowTabs\n ? calculatorsTabs?.findIndex((tab) => tab.name === activeCalculator) // Активный калькулятор по значению таба\n : 0 // Берем первый калькулятор если табов нет\n\n const currentCalculator = calculators[currentCalculatorIndex]\n\n return (\n <section id={widgetIds.calculator} data-test-id={widgetIds.calculator} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn(classes?.wrapper)}>\n <Heading className={cn('mb-12', classes?.headline)} as='h2'>\n {headline}\n </Heading>\n {shouldShowTabs && (\n <CalculatorTabs\n calculatorTabs={calculatorsTabs}\n activeCalculator={activeCalculator}\n setActiveCalculator={setActiveCalculator}\n classes={classes?.calculatorTabs}\n />\n )}\n\n <CalculatorView\n name={currentCalculator.name}\n label={currentCalculator.label}\n calculatorInfoConfig={currentCalculator.calculatorInfoConfig}\n calculatorFieldsConfig={currentCalculator.calculatorFieldsConfig}\n classes={classes?.calculatorView}\n />\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Calculator\n","import { CustomLink, type CustomLinkProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n list?: string\n customLink?: CustomLinkProps['classes']\n}\n\nexport interface LinksListProps {\n linksList?: CustomLinkProps[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ linksList, classes }: LinksListProps) => {\n return (\n <div className={cn('mt-4 flex flex-wrap items-center gap-4 desktop:mt-12 desktop:gap-8', classes?.list)}>\n {linksList?.map((link, index) => (\n <CustomLink key={index} withUnderline size='md' classes={classes?.customLink} {...link} />\n ))}\n </div>\n )\n}\n","import { ButtonWithHandlers, type ButtonWithHandlersProps } from '../../buttonWithHandlers'\nimport { type Images } from '../model/types'\nimport { LinksList, type LinksListClasses, type LinksListProps } from './LinksList'\nimport { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type RootContentClasses = {\n wrapper?: string\n textBlock?: string\n heading?: string\n description?: string\n imageMobileWrapper?: string\n imageMobile?: string\n buttonsGroup?: string\n linksList?: LinksListClasses\n}\n\nexport interface RootContentProps extends Omit<LinksListProps, 'classes'> {\n heading: string\n description?: string\n buttonsGroup?: ButtonWithHandlersProps[]\n images: Images\n classes?: RootContentClasses\n}\n\nexport const RootContent = ({ heading, buttonsGroup, description, images, linksList, classes }: RootContentProps) => {\n const withButtons = buttonsGroup && buttonsGroup?.length > 0\n const withLinks = linksList && linksList?.length > 0\n\n return (\n <div className={cn('flex flex-col', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-4 mobile:mb-2', classes?.textBlock)}>\n <Heading as='h2' className={cn(classes?.heading)}>\n {heading}\n </Heading>\n {description && (\n <p\n dangerouslySetInnerHTML={{ __html: description }}\n className={cn('desk-body-regular-l text-color-dark', classes?.description)}\n />\n )}\n </div>\n\n <div className={cn('h-full w-full desktop:hidden', classes?.imageMobileWrapper)}>\n <img src={images?.mobile} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageMobile)} />\n </div>\n\n {withButtons && (\n <div className={cn('mt-2 flex items-center gap-3 mobile:flex-col desktop:mt-8 desktop:gap-8', classes?.buttonsGroup)}>\n {buttonsGroup?.map((button, index) => (\n <ButtonWithHandlers key={index} className='w-full desktop:w-[216px]' {...button} />\n ))}\n </div>\n )}\n\n {withLinks && <LinksList linksList={linksList} classes={classes?.linksList} />}\n </div>\n )\n}\n","import { widgetIds } from '../model'\nimport { RootContent, type RootContentClasses, type RootContentProps } from './ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype InfoBlockClasses = {\n root?: string\n container?: string\n wrapper?: string\n rootContent?: RootContentClasses\n imageDesktopWrapper?: string\n imageDesktop?: string\n}\n\nexport interface InfoBlockProps extends RootContentProps {\n size?: 'sm' | 'md'\n classes?: InfoBlockClasses\n backgroundColor?: BackgroundBannerColors\n}\n\nexport const InfoBlock = (props: InfoBlockProps) => {\n const { size = 'md', backgroundColor = '#F4F8FE', images, classes, ...rest } = props\n\n return (\n <section\n id={widgetIds.infoBlock}\n data-test-id={widgetIds.infoBlock}\n style={{ backgroundColor: backgroundColor }}\n className={cn('py-14', classes?.root)}\n >\n <ResponsiveContainer>\n <div className={cn('flex items-center justify-between gap-11 mobile:flex-col', classes?.container)}>\n <RootContent images={images} classes={classes?.rootContent} {...rest} />\n\n <div\n className={cn('h-[200px] w-full max-w-[432px] mobile:hidden', classes?.imageDesktopWrapper, {\n 'h-[238px]': size === 'md'\n })}\n >\n <img src={images?.desktop} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageDesktop)} />\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InfoBlock\n","import { useState } from 'react'\nimport type { FormStepSetter } from '../types'\n\nexport type UseRatingReturn = {\n selectedRating: number\n hoveredRatings: number\n handleMouseEnter: (index: number) => void\n handleMouseLeave: () => void\n handleSelectRating: (index: number) => void\n}\n\nexport const useRating = (setFormStep: FormStepSetter): UseRatingReturn => {\n const [selectedRating, setSelectedRating] = useState(0)\n const [hoveredRatings, setHoveredRatings] = useState(0)\n\n const handleMouseEnter = (index: number) => {\n setHoveredRatings(index)\n }\n\n const handleMouseLeave = () => {\n setHoveredRatings(selectedRating)\n }\n\n const handleSelectRating = (index: number) => {\n setSelectedRating(index)\n setFormStep('review')\n }\n\n return {\n selectedRating,\n hoveredRatings,\n handleMouseEnter,\n handleMouseLeave,\n handleSelectRating\n }\n}\n","import { z } from 'zod'\nimport { zodValidators } from '$/shared/validation'\n\nexport const userReviewSchema = z.object({\n review: zodValidators.base.getStringSchema({ required: false })\n})\n","import { memo, useEffect, useState } from 'react'\nimport { useObserverWidgets } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const FeedbackTrigger = memo(() => {\n const isObserved = useObserverWidgets({ ids: ['banner'] })\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n setIsVisible(false)\n const timer = setTimeout(() => {\n setIsVisible(true)\n }, 10000)\n\n return () => clearTimeout(timer)\n }, [])\n\n return (\n <div\n className={cn(\n 'invisible flex size-16 items-center justify-center rounded-full bg-color-secondary-default opacity-0 transition-all hover:bg-color-secondary-hover',\n { 'opacity-1 visible': isVisible && !isObserved }\n )}\n >\n <Icon name='general/heart' className='size-7 fill-transparent stroke-white stroke-[3px]' />\n </div>\n )\n})\n","import { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst defaultTitle = 'Спасибо за оценку!'\n\nexport type FinallyClasses = {\n wrapper?: string\n icon?: string\n title?: string\n}\n\nexport interface FinallyProps {\n title?: string\n classes?: FinallyClasses\n}\n\nexport const Finally = ({ title = defaultTitle, classes }: FinallyProps) => {\n return (\n <div className={cn('flex flex-col items-center gap-4 text-center', classes?.wrapper)}>\n <Icon name='status/succesCircle' className={cn(classes?.icon)} />\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '../../../shared/utils'\nimport { type FormStepSetter, type SubmitCallback, type UserReviewSchema, userReviewSchema } from '../model'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, Controlled, type TextareaControlProps } from '$/shared/ui'\nimport { ZodUtils } from '$/shared/validation'\n\nconst defaultTitle = 'Расскажите о впечатлениях'\nconst defaultSubtitle = (\n <>\n Вам нравится сайт банка? <br /> У вас есть предложения по его улучшению?\n </>\n)\n\nexport type UserReviewClasses = {\n form?: string\n textBlock?: string\n title?: string\n subtitle?: string\n textareaClasses?: TextareaControlProps['classes']\n button?: string\n}\n\nexport interface UserReviewProps {\n submitCallback: SubmitCallback\n setFormStep: FormStepSetter\n rating: number\n title?: string\n subtitle?: ReactNode\n classes?: UserReviewClasses\n}\n\nexport const UserReview = ({\n submitCallback,\n rating,\n setFormStep,\n title = defaultTitle,\n subtitle = defaultSubtitle,\n classes\n}: UserReviewProps) => {\n const { control, handleSubmit } = useControlledForm({\n mode: 'onBlur',\n schema: userReviewSchema,\n defaultValues: ZodUtils.getZodDefaults(userReviewSchema)\n })\n\n const onSubmit = async (values: UserReviewSchema) => {\n if (submitCallback) {\n await submitCallback({\n rating,\n pageUrl: window?.location?.href,\n ...values\n })\n setFormStep('finally')\n }\n }\n\n return (\n <form onSubmit={handleSubmit(onSubmit)} className={cn('flex flex-col gap-4', classes?.form)}>\n <div className={cn('flex flex-col gap-2 text-center', classes?.textBlock)}>\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n <p className={cn('desk-body-regular-l', classes?.subtitle)}>{subtitle}</p>\n </div>\n <Controlled.TextareaControl\n control={control}\n name='review'\n label='Поделитесь вашим мнением'\n classes={classes?.textareaClasses}\n />\n <Button type='submit' size='sm' intent='negative' className={cn('w-full', classes?.button)}>\n Отправить\n </Button>\n </form>\n )\n}\n","import type { UseRatingReturn } from '../model'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst ratings = Array(5).fill(0)\nconst defaultTitle = 'Ваше мнение важно для нас!'\nconst defaultSubtitle = 'Пожалуйста, оцените работу сайта, чтобы мы сделали его еще удобнее'\n\nexport type SelectRatingClasses = {\n wrapper?: string\n textBlock?: string\n title?: string\n subtitle?: string\n ratingsWrapper?: string\n ratingBtn?: string\n ratingIcon?: string\n}\n\nexport interface SelectRatingProps {\n title?: string\n subtitle?: string\n classes?: SelectRatingClasses\n}\n\nexport const SelectRating = ({\n handleMouseLeave,\n hoveredRatings,\n selectedRating,\n handleSelectRating,\n handleMouseEnter,\n title = defaultTitle,\n subtitle = defaultSubtitle,\n classes\n}: SelectRatingProps & UseRatingReturn) => {\n return (\n <div className={cn('flex flex-col items-center gap-4', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-2 text-center', classes?.textBlock)}>\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n <p className={cn('desk-body-regular-l', classes?.subtitle)}>{subtitle}</p>\n </div>\n\n <div className={cn('flex items-center gap-2', classes?.ratingsWrapper)}>\n {ratings.map((_, index) => (\n <button\n key={index}\n className={cn('size-8', classes?.ratingBtn)}\n onMouseEnter={() => handleMouseEnter(index + 1)}\n onMouseLeave={() => handleMouseLeave()}\n onClick={() => handleSelectRating(index + 1)}\n >\n <Icon\n name='general/heart'\n className={cn('fill-[#b0c0d2] transition-colors duration-12', classes?.ratingIcon, {\n 'fill-secondary-default': index < (hoveredRatings || selectedRating)\n })}\n />\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { useState } from 'react'\nimport { type FormStep, type FormStepSetter, type SubmitCallback, useRating, type UseRatingReturn } from './model'\nimport {\n FeedbackTrigger,\n Finally,\n type FinallyClasses,\n type FinallyProps,\n SelectRating,\n type SelectRatingClasses,\n type SelectRatingProps,\n UserReview,\n type UserReviewClasses,\n type UserReviewProps\n} from './ui'\nimport { Popover, type PopoverProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type RenderFormStep = UserFeedbackProps & {\n formStep: FormStep\n setFormStep: FormStepSetter\n ratingProps: UseRatingReturn\n submitCallback: SubmitCallback\n}\n\nconst renderFormStep = ({ formStep, setFormStep, ratingProps, ...props }: RenderFormStep) => {\n switch (formStep) {\n case 'rating':\n return <SelectRating {...ratingProps} classes={props.classes?.selectRating} {...props.selectRatingStepProps} />\n\n case 'review':\n return (\n <UserReview\n submitCallback={props.submitCallback}\n setFormStep={setFormStep}\n rating={ratingProps.selectedRating}\n classes={props.classes?.userReview}\n {...props.userReviewStepProps}\n />\n )\n\n case 'finally':\n return <Finally classes={props.classes?.finally} {...props.finallyStepProps} />\n }\n}\n\ntype UserFeedbackClasses = {\n root?: string\n wrapper?: string\n selectRating?: SelectRatingClasses\n userReview?: UserReviewClasses\n finally?: FinallyClasses\n}\n\nexport type UserFeedbackProps = {\n submitCallback: SubmitCallback\n selectRatingStepProps?: SelectRatingProps\n userReviewStepProps?: Pick<UserReviewProps, 'title' | 'subtitle'>\n finallyStepProps?: FinallyProps\n classes?: UserFeedbackClasses\n popoverProps?: PopoverProps\n}\n\nexport const UserFeedback = (props: UserFeedbackProps) => {\n const [formStep, setFormStep] = useState<FormStep>('rating')\n const ratingProps = useRating(setFormStep)\n const { classes } = props\n\n return (\n <div className={cn('fixed right-5 top-[80%] z-[1000]', classes?.root)}>\n <Popover\n side='top'\n align='end'\n sideOffset={10}\n withArrow={false}\n withCloseBtn={false}\n classes={{\n content: 'max-w-[330px] w-[330px] p-6'\n }}\n triggerElement={<FeedbackTrigger />}\n {...props?.popoverProps}\n >\n <div className={cn('w-full', classes?.wrapper)}>{renderFormStep({ formStep, setFormStep, ratingProps, ...props })}</div>\n </Popover>\n </div>\n )\n}\n\nexport default UserFeedback\n"],"names":["QueryCache","_a","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","Mutation","Removable","_Mutation_instances","_observers","_mutationCache","_retryer","getDefaultState","observer","x","variables","onContinue","__privateMethod","dispatch_fn","createRetryer","failureCount","error","restored","isPaused","_b","context","_d","_c","data","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","action","reducer","MutationCache","_mutations","_scopes","_mutationId","mutation","__privateWrapper","scope","scopeFor","scopedMutations","index","mutationsWithSameScope","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","result","currentPage","fetchFn","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","queryFnContext2","page","maxPages","addTo","addToStart","addToEnd","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","defaultedOptions","cachedData","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","Banner","lazy","Calculator","DynamicForm","DynamicFormDialog","Footer","Header","InterLinking","LongBanner","SeoHeader","Stepper","UsefulInfo","Benefit","InfoBlock","UserFeedback","WIDGET_LIST_MAP","KEYS_OF_WIDGET_LIST","widgetIds","acc","widget","useButtonHandler","handlerOptions","useCallback","url","target","rel","isClient","widgetId","scrollToElement","dialogId","dialog","ButtonWithHandlers","className","props","handleClick","jsx","Button","cn","itemConfig","cva","BenefitItem","subtitle","title","img","mobileImg","classes","withButton","button","variant","color","isDesktop","useDevice","jsxs","TypeGuards","gridConfig","headline","details","ResponsiveContainer","card","renderContentVariant","PhoneView","createPhoneNumber","logoPath","logoType","Buttons","buttonConfig","primary","secondary","Advantages","items","description","Heading","BannerImageFull","headTitle","buttonsConfig","advantages","images","backgroundColor","isMobile","advantagesExist","Fragment","BannerWithSeparateImg","SocialLinks","socialsLinks","iconName","href","rest","Icon","PhonesBlock","phones","phone","text","NavLinks","column","groupLabel","links","path","label","CustomLink","Copyright","currentYear","FooterLogo","SiteMap","Ligal","isExpanded","setIsExpanded","React","isClamped","setIsClamped","ligalRef","element","prev","ligal","copyright","siteMap","SingleStep","StepperCarousel","currentStepper","visibleIndex","setVisibleIndex","useState","carouselClasses","carouselSlideClasses","CarouselBase","slide","slideIndex","CarouselSlide","StepperTabs","memo","stepperTabs","activeStepper","setActiveStepper","steppers","shouldShowTabs","steppersTabs","useMemo","currentStepperIndex","tab","step","titleConfig","listItemConfig","containerImgConfig","TextItem","intent","popover","Popover","Title","desktopHidden","mobileHidden","TextList","image","isFourItems","isTwoItems","AUTH_PROVIDER_MODE","AuthWrapper","children","isLoading","loaderProps","Loader","EsiaLogo","Links","mainLink","subLink","MobileId","badge","Badge","Esia","renderProvider","esiaConfig","mobileIdConfig","HeadWrapper","AuthProvider","LinksList","ColumnGroup","mobileAccordionProps","Accordion","Column","group","columnsWrapper","rootAccordionProps","defaultOpen","Tabs","tabsNames","activeTab","setActiveTab","tabName","tabIndex","isHtml","entity","isDocuments","isTable","Html","html","accordionConfig","content","transformMobileRows","rows","headings","row","cell","tableConfig","headingsConfig","DesktopHeadings","columnsVariant","desktopRowConfig","DesktopRow","tableVariant","rowIndex","cellIndex","mobileRowConfig","MobileRow","headingsExist","heading","TableBody","formattedRows","Table","iconsMap","iconConfig","Document","size","iconType","Documents","docs","doc","renderEntity","accordionsConfig","htmlDetails","documentsDetails","tableDetails","RenderEntity","tabs","FieldMapper","fields","control","type","args","Component","Controlled","BaseHTMLParser","__publicField","node","as","elements","includeSolidText","recursive","elementNode","elementName","child","includeBody","stringNodes","nodes","isBrowser","HTMLParser","HTMLRenderer","Wrapper","getFieldsProgress","progress","field","existDadataSchemas","createFieldSchema","schema","validator","createBaseFieldSchema","zodValidators","createDadataFieldSchema","getDynamicSchema","shape","validation","queryClient","QueryClientProvider","QueryClientProviderBase","withApprovement","approvement","checked","onCheckedChange","Uncontrolled","chips","submitProps","buttonGroup","submitCallback","defaultValues","ZodUtils","handleSubmit","useControlledForm","fieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","ProgressBar","disabled","createElement","Dialog","statusConfig","FallbacksView","status","navigationFn","Breadcrumb","breadcrumb","defaultBreadcrumbs","renderBreadcrumbs","breadcrumbs","separator","isLast","Breadcrumbs","ellipsis","hiddenCrumbsOpen","setHiddenCrumbsOpen","hiddenCrumbsRef","useRef","useClickOutside","first","middle","last","separatedElement","CategoryActionType","useCategoryReducer","initialValue","dispatch","useReducer","currentCategoryAction","payload","rootCategoryAction","TabContent","categories","createPortal","motion","category","CategoryTitle","InnerComponent","forwardRef","active","onActiveTabChange","ref","rootRef","triggerClientRect","contentShouldRender","Tab","triggerRef","AnimatePresence","CategoryTabs","RootTab","selectedCategory","onCurrentCategoryChange","onRootCategoryChange","CategoriesDesktop","helpers","store","cat","helper","MenuItem","isLink","innerChild","getSelectCategories","Menu","selectCategories","selected","setSelected","onCategoryChange","option","selectedSubCategories","subCategory","CategoriesMobile","containerRef","containerClientRect","open","setOpen","onOpenToggle","capitalize","isFormula","value","formatWithIntl","suffix","calculationValue","formatValueToRenderInfoItem","renderMode","getCalculatorSchema","item","z.object","validateFormula","formula","varName","evaluateFormula","entries","key","variablesKeys","variablesValues","validatedFormula","replaceResult","formatInfoList","list","CalculatorInfoHead","CalculatedBlock","rootDescription","rootValue","InfoListItem","hint","mode","accent","CalculatorInfoBody","infoList","watch","useFormContext","watchedFields","formattedInfoList","listItem","AssistHint","popoverProps","CalculatorInfoFooter","assistHint","bottomDescription","CalculatorInfo","ADDITIONAL_MONEY_MINIMUM","useAdditionalSlider","slidersGroupConfig","additionalSliderGroupConfig","sliderVisible","setSliderVisible","setValue","sliderSumGroup","sumMax","sumName","sumDefaultValue","sumValue","additionalSliderMin","additionalSliderName","additionalSliderValue","additionalSliderMax","useEffect","prevValue","renderModalContent","contentVariant","CalculatorModal","triggerText","modalTitle","modalProps","isModalOpen","modalSetter","useBoolean","Modal","FieldsGroup","AdditionalSlider","CalculatorFields","modalConfig","fieldsGroup","sliderSumExist","sliderSumCorrectType","CalculatorTabs","calculatorTabs","activeCalculator","setActiveCalculator","name","CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","calculatorSchema","formMethods","localStorageActions","calculatedValue","mergedCalcInfoConfig","FormProvider","calculators","calculatorsTabs","currentCalculatorIndex","currentCalculator","linksList","link","RootContent","buttonsGroup","withButtons","withLinks","useRating","setFormStep","selectedRating","setSelectedRating","hoveredRatings","setHoveredRatings","userReviewSchema","FeedbackTrigger","isObserved","useObserverWidgets","isVisible","setIsVisible","timer","defaultTitle","Finally","defaultSubtitle","UserReview","rating","ratings","SelectRating","handleMouseLeave","handleSelectRating","handleMouseEnter","_","renderFormStep","formStep","ratingProps"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|
|
1
|
+
{"version":3,"file":"widget.js","sources":["../node_modules/@tanstack/query-core/build/modern/queryCache.js","../node_modules/@tanstack/query-core/build/modern/mutation.js","../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../node_modules/@tanstack/query-core/build/modern/queryClient.js","../lib/widgets/model/helpers.ts","../lib/widgets/buttonWithHandlers/model/useButtonHandler.ts","../lib/widgets/buttonWithHandlers/ButtonWithHandlers.tsx","../lib/widgets/benefit/ui/BenefitItem.tsx","../lib/widgets/benefit/Benefit.tsx","../lib/widgets/header/model/helpers.tsx","../lib/widgets/header/Header.tsx","../lib/widgets/banner/ui/banners/ui/Buttons.tsx","../lib/widgets/banner/ui/banners/ui/Advantages.tsx","../lib/widgets/banner/ui/banners/BannerImageFull.tsx","../lib/widgets/banner/ui/banners/BannerWithSeparateImg.tsx","../lib/widgets/banner/Banner.tsx","../lib/widgets/footer/ui/SocialLinks.tsx","../lib/widgets/footer/ui/PhonesBlock.tsx","../lib/widgets/footer/ui/NavLinks.tsx","../lib/widgets/footer/ui/Copyright.tsx","../lib/widgets/footer/ui/FooterLogo.tsx","../lib/widgets/footer/ui/SiteMap.tsx","../lib/widgets/footer/ui/Ligal.tsx","../lib/widgets/footer/Footer.tsx","../lib/widgets/stepper/ui/SingleStep.tsx","../lib/widgets/stepper/ui/StepperCarousel.tsx","../lib/widgets/stepper/ui/StepperTabs.tsx","../lib/widgets/stepper/Stepper.tsx","../lib/widgets/longBanner/model/cva.ts","../lib/widgets/longBanner/ui/TextItem.tsx","../lib/widgets/longBanner/ui/Title.tsx","../lib/widgets/longBanner/ui/TextList.tsx","../lib/widgets/longBanner/LongBanner.tsx","../lib/widgets/authProvider/model/helpers.ts","../lib/widgets/authProvider/ui/ui/AuthWrapper.tsx","../lib/widgets/authProvider/ui/ui/EsiaLogo.tsx","../lib/widgets/authProvider/ui/ui/Links.tsx","../lib/widgets/authProvider/ui/MobileId.tsx","../lib/widgets/authProvider/ui/Esia.tsx","../lib/widgets/authProvider/AuthProvider.tsx","../lib/widgets/interLinking/ui/LinksList.tsx","../lib/widgets/interLinking/ui/ColumnGroup.tsx","../lib/widgets/interLinking/ui/Column.tsx","../lib/widgets/interLinking/InterLinking.tsx","../lib/widgets/usefulInfo/ui/Tabs.tsx","../lib/widgets/usefulInfo/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/html/Html.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.tsx","../lib/widgets/usefulInfo/ui/subEntities/table/Table.tsx","../lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/model/utils.ts","../lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/Document.tsx","../lib/widgets/usefulInfo/ui/subEntities/documents/Documents.tsx","../lib/widgets/usefulInfo/ui/RenderEntity.tsx","../lib/widgets/usefulInfo/UsefulInfo.tsx","../lib/widgets/fieldMapper/FieldMapper.tsx","../lib/widgets/htmlParser/baseHtmlParser.ts","../lib/widgets/htmlParser/htmlParser.ts","../lib/widgets/htmlParser/HTMLRenderer.tsx","../lib/widgets/dynamicForm/model/getFieldsProgress.ts","../src/shared/utils/getDynamicSchema.ts","../lib/widgets/queryClientProvider/QueryClientProvider.tsx","../lib/widgets/dynamicForm/DynamicForm.tsx","../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx","../lib/widgets/fallbacksView/model/helpers.tsx","../lib/widgets/fallbacksView/FallbacksView.tsx","../lib/widgets/breadcrumbs/Breadcrumb.tsx","../lib/widgets/breadcrumbs/hooks/constants.ts","../lib/widgets/breadcrumbs/Breadcrumbs.tsx","../lib/widgets/seoHeader/hooks/useCategoryReducer/types.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/reducer.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/useCategoryReducer.ts","../lib/widgets/seoHeader/hooks/useCategoryReducer/actions.ts","../lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.tsx","../lib/widgets/seoHeader/ui/desktop/tab/Tab.tsx","../lib/widgets/seoHeader/ui/desktop/CategoryTabs.tsx","../lib/widgets/seoHeader/ui/desktop/rootTab/RootTab.tsx","../lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.tsx","../lib/widgets/seoHeader/ui/mobile/menu/MenuItem.tsx","../lib/widgets/seoHeader/ui/mobile/menu/Menu.tsx","../lib/widgets/seoHeader/ui/mobile/CategoriesMobile.tsx","../lib/widgets/seoHeader/SeoHeader.tsx","../lib/widgets/calculator/model/utils.ts","../lib/widgets/calculator/model/helpers.ts","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/AssistHint.tsx","../lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoFooter.tsx","../lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.tsx","../lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/FieldsGroup.tsx","../lib/widgets/calculator/ui/calculatorFields/ui/AdditionalSlider.tsx","../lib/widgets/calculator/ui/calculatorFields/CalculatorFields.tsx","../lib/widgets/calculator/ui/CalculatorTabs.tsx","../lib/widgets/calculator/CalculatorView.tsx","../lib/widgets/calculator/Calculator.tsx","../lib/widgets/infoBlock/ui/LinksList.tsx","../lib/widgets/infoBlock/ui/RootContent.tsx","../lib/widgets/infoBlock/InfoBlock.tsx","../lib/widgets/userFeedback/model/hooks/useRating.ts","../lib/widgets/userFeedback/model/schema.ts","../lib/widgets/userFeedback/ui/FeedbackTrigger.tsx","../lib/widgets/userFeedback/ui/Finally.tsx","../lib/widgets/userFeedback/ui/UserReview.tsx","../lib/widgets/userFeedback/ui/SelectRating.tsx","../lib/widgets/userFeedback/UserFeedback.tsx"],"sourcesContent":["// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","import { lazy } from 'react'\nconst Banner = lazy(() => import('../banner/Banner'))\nconst Calculator = lazy(() => import('../calculator/Calculator'))\nconst DynamicForm = lazy(() => import('../dynamicForm/DynamicForm'))\nconst DynamicFormDialog = lazy(() => import('../dynamicFormDialog/DynamicFormDialog'))\nconst Footer = lazy(() => import('../footer/Footer'))\nconst Header = lazy(() => import('../header/Header'))\nconst InterLinking = lazy(() => import('../interLinking/InterLinking'))\nconst LongBanner = lazy(() => import('../longBanner/LongBanner'))\nconst SeoHeader = lazy(() => import('../seoHeader/SeoHeader'))\nconst Stepper = lazy(() => import('../stepper/Stepper'))\nconst UsefulInfo = lazy(() => import('../usefulInfo/UsefulInfo'))\nconst Benefit = lazy(() => import('../benefit/Benefit'))\nconst InfoBlock = lazy(() => import('../infoBlock/InfoBlock'))\nconst UserFeedback = lazy(() => import('../userFeedback/UserFeedback'))\n\nexport type AllowedWidgets = keyof typeof WIDGET_LIST_MAP\n\nexport const WIDGET_LIST_MAP = {\n header: Header,\n seoHeader: SeoHeader,\n banner: Banner,\n calculator: Calculator,\n form: DynamicForm,\n formDialog: DynamicFormDialog,\n stepper: Stepper,\n benefit: Benefit,\n longBanner: LongBanner,\n usefulInfo: UsefulInfo,\n interLinking: InterLinking,\n footer: Footer,\n infoBlock: InfoBlock,\n userFeedback: UserFeedback\n} as const\n\nexport const KEYS_OF_WIDGET_LIST = Object.keys(WIDGET_LIST_MAP) as readonly AllowedWidgets[]\n\nexport const widgetIds = KEYS_OF_WIDGET_LIST.reduce(\n (acc, widget) => {\n acc[widget] = widget\n return acc\n },\n {} as Record<AllowedWidgets, AllowedWidgets>\n)\n","'use client'\n\nimport { useCallback } from 'react'\nimport type { ButtonHandlerOptions } from './types'\nimport { isClient, scrollToElement } from '$/shared/utils'\n\nexport const useButtonHandler = (handlerOptions: ButtonHandlerOptions) => {\n const handleClick = useCallback(() => {\n switch (handlerOptions.handler) {\n case 'navigate': {\n const { url, target, rel } = handlerOptions\n if (isClient) {\n window?.open(url, target, rel)\n }\n\n break\n }\n case 'scroll': {\n const { widgetId } = handlerOptions ?? ''\n scrollToElement({ widgetId })\n break\n }\n\n case 'dialog': {\n if (!isClient) return\n\n const { dialogId } = handlerOptions ?? {}\n\n const dialog = document.getElementById(dialogId) as HTMLDialogElement | null\n\n if (!dialog) {\n console.error('Такого элемента в DOM не существует', dialogId)\n break\n }\n\n dialog.show()\n }\n }\n }, [handlerOptions])\n\n return handleClick\n}\n","import { cn } from '../../shared/utils'\nimport { type ButtonHandlerOptions, useButtonHandler } from './model'\nimport { Button, type ButtonProps } from '$/shared/ui'\n\nexport interface ButtonWithHandlersProps extends ButtonProps {\n handlerOptions: ButtonHandlerOptions\n}\n\nexport const ButtonWithHandlers = ({ handlerOptions, className, ...props }: ButtonWithHandlersProps) => {\n const handleClick = useButtonHandler(handlerOptions)\n\n return (\n <Button className={cn(className)} onClick={handleClick} {...props}>\n {props.children}\n </Button>\n )\n}\n","import { type ReactElement } from 'react'\nimport { cva } from 'class-variance-authority'\nimport { type BackgroundBenefitColorsValues } from '../model/constants'\nimport { useDevice } from '$/shared/hooks'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { type Img } from '$/widgets/benefit/model/types'\nimport { ButtonWithHandlers, type ButtonWithHandlersProps } from '$/widgets/buttonWithHandlers'\n\nexport type BenefitItemClasses = {\n root?: string\n button?: string\n wrapper?: string\n textContainer?: string\n subtitle?: string\n img?: string\n imgContainer?: string\n title?: string\n}\n\nconst itemConfig = cva(\n 'flex flex-col justify-between overflow-hidden rounded-md bg-color-blue-grey-100 py-6 desktop:flex-row desktop:px-0 desktop:py-0',\n {\n variants: {\n variant: {\n twoCards: '',\n threeCards: 'desktop:first:col-span-full',\n fourCards: 'desktop:first:col-span-2 desktop:last:col-span-2'\n }\n }\n }\n)\n\nexport interface BenefitItemProps {\n title: string\n subtitle: string\n img?: ReactElement | Img\n mobileImg?: boolean\n classes?: BenefitItemClasses\n withButton?: boolean\n button?: ButtonWithHandlersProps\n variant?: 'twoCards' | 'threeCards' | 'fourCards'\n color?: BackgroundBenefitColorsValues\n}\n\nexport const BenefitItem = ({\n subtitle,\n title,\n img,\n mobileImg,\n classes,\n withButton,\n button,\n variant,\n color\n}: BenefitItemProps) => {\n const { isDesktop } = useDevice()\n\n return (\n <li\n key={title}\n style={{ backgroundColor: color ?? '#F3F4F7' }}\n className={cn(itemConfig({ variant }), { 'pb-0': mobileImg }, { 'pb-12': !mobileImg }, classes?.root)}\n >\n <div className={cn('flex flex-col items-start justify-between px-4 desktop:px-8 desktop:py-8', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-4', classes?.textContainer)}>\n <div dangerouslySetInnerHTML={{ __html: title }} className={cn('desktop:desk-title-bold-s', classes?.title)} />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('mob-body-regular-l text-icon-blue-grey-800 desktop:desk-body-regular-l', classes?.subtitle)}\n />\n </div>\n\n {withButton && isDesktop && button?.handlerOptions && (\n <ButtonWithHandlers intent='primary' className={cn('desktop:w-[200px]', classes?.button)} size='lg' {...button} />\n )}\n </div>\n\n {(mobileImg || isDesktop) && img && (\n <div className={cn('flex w-full justify-end', classes?.imgContainer)}>\n {img && 'url' in img && TypeGuards.isObject(img) ? (\n <img className={cn('h-[246px] object-cover', classes?.img)} src={img.url} alt={img.alt} />\n ) : (\n img\n )}\n </div>\n )}\n </li>\n )\n}\n","'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { widgetIds } from '../model'\nimport { type Details } from './model/types'\nimport { BenefitItem, type BenefitItemClasses } from './ui/BenefitItem'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type BenefitClasses = {\n root?: string\n container?: string\n item?: BenefitItemClasses\n heading?: string\n grid?: string\n}\n\nconst gridConfig = cva('grid gap-4', {\n variants: {\n variant: {\n twoCards: 'grid-cols-1 mobile:grid-rows-[repeat(2,400px)] desktop:grid-cols-2',\n threeCards: 'grid-cols-1 desktop:grid-cols-2',\n fourCards: 'grid-cols-1 mobile:grid-rows-[400px,1fr,1fr,400px] desktop:grid-cols-3'\n }\n }\n})\n\nexport interface BenefitProps {\n headline: string\n classes?: BenefitClasses\n variant: 'twoCards' | 'threeCards' | 'fourCards'\n details: Details[]\n}\n\nexport const Benefit = ({ headline, details, variant, classes }: BenefitProps) => {\n return (\n <section id={widgetIds.benefit} data-test-id={widgetIds.benefit} className={cn(classes?.root)}>\n <ResponsiveContainer className={classes?.container}>\n <div\n dangerouslySetInnerHTML={{ __html: headline }}\n className={cn('mob-headline-bold-s mb-8 desktop:desk-headline-bold-m', classes?.heading)}\n />\n <ul className={cn(gridConfig({ variant }), classes?.grid)}>\n {details?.map((card) => (\n <BenefitItem variant={variant} key={card.title} classes={classes?.item} {...card} />\n ))}\n </ul>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Benefit\n","import { ButtonWithHandlers } from '../../buttonWithHandlers'\nimport type { HeaderProps, HeaderVariantType } from './types'\nimport { PhoneView } from '$/shared/ui'\nimport { createPhoneNumber } from '$/shared/utils'\n\nexport const renderContentVariant = <Type extends HeaderVariantType>({ variant, details }: HeaderProps<Type>) => {\n switch (variant) {\n case 'withButton':\n return <ButtonWithHandlers {...details} />\n case 'withPhone':\n return <PhoneView classes={{ root: 'items-end' }} {...details} phone={createPhoneNumber(details.phone)} />\n default:\n return null\n }\n}\n","import { widgetIds } from '../model'\nimport { renderContentVariant } from './model/helpers'\nimport type { HeaderProps, HeaderVariantType } from './model/types'\nimport { brandLogos, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Header = <Type extends HeaderVariantType>(props: HeaderProps<Type>) => {\n const { logoPath = '/', logoType = 'main', classes } = props\n\n return (\n <header\n id={widgetIds.header}\n data-test-id={widgetIds.header}\n className={cn('flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn('flex items-center justify-between gap-5', classes?.wrapper)}>\n <a\n href={logoPath}\n aria-label='logo'\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]',\n classes?.logo\n )}\n >\n {brandLogos[logoType]}\n </a>\n {renderContentVariant(props)}\n </div>\n </ResponsiveContainer>\n </header>\n )\n}\n\nexport default Header\n","import { ButtonWithHandlers } from '../../../../buttonWithHandlers'\nimport type { ButtonsConfig } from '../../../model'\nimport { cn } from '$/shared/utils'\n\nexport type ButtonsClasses = {\n group?: string\n primary?: string\n secondary?: string\n}\n\ninterface ButtonsProps {\n classes?: ButtonsClasses\n buttonConfig: ButtonsConfig\n}\n\nexport const Buttons = ({ buttonConfig, classes }: ButtonsProps) => {\n const { primary, secondary } = buttonConfig || {}\n\n return (\n <div\n className={cn(\n 'grid-buttons-apply absolute bottom-6 left-1/2 flex w-full -translate-x-1/2 flex-col justify-self-center px-4 desktop:static desktop:left-auto desktop:max-w-full desktop:translate-x-0 desktop:flex-row desktop:justify-normal desktop:px-0',\n { 'flex items-center gap-4': secondary?.enabled },\n classes?.group\n )}\n >\n {primary.enabled && (\n <ButtonWithHandlers\n className={cn('w-full desktop:max-w-[216px]', classes?.primary)}\n size='lg'\n intent='primary'\n {...primary.buttonContent}\n />\n )}\n {secondary?.enabled && (\n <ButtonWithHandlers\n intent='secondary'\n size='lg'\n className={cn('w-full desktop:max-w-[216px]', classes?.secondary)}\n {...primary.buttonContent}\n />\n )}\n </div>\n )\n}\n","import { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface AdvantageClasses {\n root?: string\n advantagesContainer?: string\n item?: string\n title?: string\n description?: string\n}\n\nexport interface AdvantageItem {\n title: string\n description: string | React.ReactElement\n}\n\nexport interface AdvantagesProps {\n details: {\n variant: 'threeCards' | 'fourCards'\n items: AdvantageItem[]\n }\n enabled?: boolean\n classes?: AdvantageClasses\n}\n\nexport const Advantages = ({ details, classes }: AdvantagesProps) => {\n const { variant, items } = details ?? {}\n\n return (\n <div className={cn('flex items-center justify-center pb-8', classes?.root)}>\n <div\n id='advantages'\n className={cn(\n 'z-10 m-auto flex w-full min-w-[328px] max-w-[636px] flex-col gap-8 rounded-md bg-color-white p-6 shadow-sm desktop:w-full desktop:flex-row desktop:items-start desktop:gap-0 desktop:p-0 desktop:py-6',\n { 'desktop:max-w-[860px]': variant === 'threeCards' },\n { 'desktop:max-w-[1140px]': variant === 'fourCards' },\n classes?.advantagesContainer\n )}\n >\n {items?.map(({ title, description }) => (\n <div\n key={title}\n className={cn(\n 'after:content-[\" \"] relative flex h-full w-full flex-col gap-1 after:absolute after:-bottom-4 after:left-1/2 after:h-[1px] after:w-full after:-translate-x-1/2 after:bg-color-blue-grey-300 last:after:hidden desktop:w-[285px] desktop:items-center desktop:px-8 desktop:after:bottom-auto desktop:after:left-auto desktop:after:right-0 desktop:after:top-1/2 desktop:after:h-10 desktop:after:w-[1px] desktop:after:-translate-y-1/2 desktop:after:translate-x-0',\n classes?.item\n )}\n >\n <Heading as='h4' className={cn('text-color-dark', classes?.title)}>\n {title}\n </Heading>\n <p className={cn('desk-body-regular-l text-color-secondary', classes?.description)}>{description}</p>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { Advantages, Buttons } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type BannerProps, widgetIds } from '$/widgets'\n\nexport const BannerImageFull = ({\n headTitle,\n subtitle,\n buttonsConfig,\n advantages,\n classes,\n images,\n backgroundColor\n}: Omit<BannerProps, 'bannerVariant'>) => {\n const { isMobile } = useDevice()\n\n const advantagesExist = advantages?.details && advantages?.details?.items.length > 0\n\n return (\n <>\n <section\n id={widgetIds.banner}\n data-test-id={widgetIds.banner}\n style={{ backgroundColor: backgroundColor ?? '#d9edff' }}\n className={cn('relative h-[552px] desktop:h-[456px]', classes?.root)}\n >\n <div className='absolute bottom-0 left-0 right-0 top-0 mx-auto h-full max-w-[1920px] desktop:h-[456px]'>\n {isMobile ? (\n <img src={images?.mobile} className='h-full w-full object-cover object-center' alt={images?.alt} />\n ) : (\n <img src={images?.desktop} alt={images?.alt} className='h-full w-full object-cover object-center' />\n )}\n </div>\n\n <ResponsiveContainer className={cn('h-full', classes?.container)}>\n <div className={cn('flex h-full', classes?.wrapper)}>\n <div className={cn('flex w-[328px] flex-col gap-10 pt-6 desktop:w-full desktop:pt-20', classes?.textBlock)}>\n <div className='z-10 flex flex-col gap-4'>\n <div\n dangerouslySetInnerHTML={{ __html: headTitle }}\n className={cn('mob-headline-bold-m text-color-dark desktop:desk-headline-bold-l', classes?.title)}\n />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}\n />\n </div>\n\n <Buttons buttonConfig={buttonsConfig} />\n </div>\n </div>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'mobile:hidden desktop:absolute desktop:bottom-[-50px] desktop:right-1/2 desktop:translate-x-1/2 desktop:rounded-md desktop:p-0'\n }}\n {...advantages}\n />\n )}\n </ResponsiveContainer>\n </section>\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'px-4 pt-4 mobile:bg-color-white desktop:hidden'\n }}\n {...advantages}\n />\n )}\n </>\n )\n}\n","import { Advantages, Buttons } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type BannerProps, widgetIds } from '$/widgets'\n\nexport const BannerWithSeparateImg = ({\n headTitle,\n subtitle,\n buttonsConfig,\n advantages,\n classes,\n images,\n backgroundColor\n}: Omit<BannerProps, 'bannerVariant'>) => {\n const advantagesExist = advantages?.details && advantages?.details?.items.length > 0\n\n return (\n <section\n id={widgetIds.banner}\n style={{ backgroundColor: backgroundColor ?? '#d9edff' }}\n data-test-id={widgetIds.banner}\n className={cn('', classes?.root)}\n >\n <ResponsiveContainer className={cn('relative desktop:h-[456px]', classes?.container)}>\n <div className={cn('flex flex-col desktop:flex-row desktop:justify-between', classes?.wrapper)}>\n <div className='flex flex-col desktop:gap-10 desktop:pt-20'>\n <div className={cn('flex flex-col gap-4 pt-6 desktop:pt-0', classes?.textBlock)}>\n <div\n dangerouslySetInnerHTML={{ __html: headTitle }}\n className={cn('mob-headline-bold-m text-color-dark desktop:desk-headline-bold-l', classes?.title)}\n />\n <div\n dangerouslySetInnerHTML={{ __html: subtitle }}\n className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}\n />\n </div>\n\n <Buttons\n buttonConfig={buttonsConfig}\n classes={{\n group: 'z-10'\n }}\n />\n </div>\n\n <div\n className={cn(\n 'relative flex h-[356px] justify-center desktop:hidden desktop:h-[456px] desktop:w-[550px]',\n classes?.imageContainer\n )}\n >\n <img src={images?.mobile} alt={images?.alt} className='h-full object-contain' />\n </div>\n\n <div\n className={cn(\n 'relative flex h-[356px] justify-center mobile:hidden desktop:h-[456px] desktop:w-[550px]',\n classes?.imageContainer\n )}\n >\n <img src={images?.desktop} alt={images?.alt} className='h-full object-contain' />\n </div>\n </div>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'mobile:hidden desktop:absolute desktop:bottom-[-50px] desktop:right-1/2 desktop:translate-x-1/2 desktop:rounded-md desktop:p-0'\n }}\n {...advantages}\n />\n )}\n </ResponsiveContainer>\n\n {advantages?.enabled && advantagesExist && (\n <Advantages\n classes={{\n root: 'px-4 pt-4 mobile:bg-color-white desktop:hidden'\n }}\n {...advantages}\n />\n )}\n </section>\n )\n}\n","'use client'\n\nimport { type ReactElement } from 'react'\nimport { type BannerClasses, type ButtonsConfig } from './model'\nimport { type Images } from './model/types'\nimport { BannerImageFull, BannerWithSeparateImg } from './ui'\nimport { type AdvantageClasses, type AdvantagesProps } from './ui/banners/ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\n\nexport interface BannerProps {\n headTitle: string | ReactElement\n subtitle: string | ReactElement\n buttonsConfig: ButtonsConfig\n advantages?: AdvantagesProps\n variant?: 'separateImg' | 'fullImg'\n images: Images\n backgroundColor?: BackgroundBannerColors\n classes?: BannerClasses & {\n advantages?: AdvantageClasses\n }\n}\n\nexport const Banner = ({ variant, ...props }: BannerProps) => {\n switch (variant) {\n case 'fullImg':\n return <BannerImageFull {...props} />\n default:\n return <BannerWithSeparateImg {...props} />\n }\n}\n\nexport default Banner\n","import type { FooterSocialLinks } from '../model/types'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type SocialLinksClasses = {\n socialRoot?: string\n socialLink?: string\n socialIcon?: string\n}\n\ninterface ISocialLinksProps {\n socialsLinks: FooterSocialLinks[]\n classes?: SocialLinksClasses\n}\n\nexport const SocialLinks = ({ socialsLinks, classes }: ISocialLinksProps) => {\n return (\n <div className={cn('mt-4 flex items-center gap-2 desktop:mt-6', classes?.socialRoot)}>\n {socialsLinks?.map(({ iconName, href, ...rest }) => (\n <a\n className={cn('flex size-8 items-center justify-center rounded-full bg-[#52576a] p-2', classes?.socialLink)}\n href={href}\n key={href}\n aria-label={iconName.replace('social/', '')}\n {...rest}\n >\n <Icon name={iconName} className={cn('h-full w-full text-icon-white', classes?.socialIcon)} />\n </a>\n ))}\n </div>\n )\n}\n","import type { FooterPhones } from '../model/types'\nimport { PhoneView } from '$/shared/ui'\nimport { cn, createPhoneNumber } from '$/shared/utils'\n\nexport type PhoneBlockClasses = {\n phonesRoot?: string\n phoneWrapper?: string\n phoneText?: string\n phoneLink?: string\n}\n\ninterface PhonesBlockProps {\n phones: FooterPhones[]\n classes?: PhoneBlockClasses\n}\n\nexport const PhonesBlock = ({ phones, classes }: PhonesBlockProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:items-end', classes?.phonesRoot)}>\n {phones?.map(({ phone, text }) => (\n <PhoneView\n key={phone}\n phone={createPhoneNumber(phone)}\n text={text}\n classes={{\n root: cn(classes?.phoneWrapper),\n text: cn('text-color-footer', classes?.phoneText),\n link: cn('text-color-white mobile:m-0', classes?.phoneLink)\n }}\n />\n ))}\n </div>\n )\n}\n","import type { Details } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type NavigationLinksClasses = {\n navRoot?: string\n navGroup?: string\n navLabel?: string\n navLinks?: string\n navLink?: string\n navLinkIcon?: string\n}\n\ninterface NavLinksProps {\n classes?: NavigationLinksClasses\n details: Details[]\n}\n\nexport const NavLinks = ({ classes, details }: NavLinksProps) => {\n return (\n <div\n className={cn(\n 'mt-6 grid grid-cols-1 gap-6 border-b border-blue-grey-500 pb-6 desktop:my-8 desktop:grid-cols-4 desktop:gap-10 desktop:pb-8',\n classes?.navRoot\n )}\n >\n {details?.map(({ column }) =>\n column?.map(({ groupLabel, links }) => (\n <div key={groupLabel} className={cn('flex flex-col gap-4', classes?.navGroup)}>\n <div className={cn('desk-body-medium-l text-color-white', classes?.navLabel)}>{groupLabel}</div>\n <div className={cn('flex flex-col gap-1', classes?.navLinks)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n key={label}\n href={path}\n aria-label={label}\n intent='white'\n classes={{\n link: classes?.navLink,\n icon: classes?.navLinkIcon\n }}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )\n}\n","import { cn } from '$/shared/utils'\n\nexport type CopyrightClasses = {\n copyRight?: string\n}\n\ninterface CopyrightProps {\n text: string\n classes?: CopyrightClasses\n}\n\nexport const Copyright = ({ text, classes }: CopyrightProps) => {\n const currentYear = new Date().getFullYear()\n\n return (\n <div\n className={cn('desk-body-regular-m text-color-footer [&_>p]:inline', classes?.copyRight)}\n dangerouslySetInnerHTML={{\n __html: `© 2004-${currentYear} ${text}`\n }}\n />\n )\n}\n","import { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type FooterLogoClasses = {\n footerLogo?: string\n footerLogoIcon?: string\n}\n\nexport interface FooterLogoProps {\n classes?: FooterLogoClasses\n}\n\nexport const FooterLogo = ({ classes }: FooterLogoProps) => {\n return (\n <a\n aria-label='logo'\n href='https://sovcombank.ru/'\n className={cn('block h-[24px] w-[132px] desktop:h-[32px] desktop:w-[194px]', classes?.footerLogo)}\n >\n <Icon name='brandLogos/logoWhite' className={cn('size-full', classes?.footerLogoIcon)} />\n </a>\n )\n}\n","import { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type SiteMapClasses = {\n siteMapLink?: string\n siteMapLinkIcon?: string\n}\n\nexport interface SiteMapProps {\n classes?: SiteMapClasses\n}\n\nexport const SiteMap = ({ classes }: SiteMapProps) => {\n return (\n <CustomLink\n intent='white'\n href='https://sovcombank.ru/site-map'\n target='_blank'\n aria-label='site-map'\n rel='noreferrer'\n classes={{\n link: cn('mobile:mt-6', classes?.siteMapLink),\n icon: classes?.siteMapLinkIcon\n }}\n >\n Карта сайта\n </CustomLink>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '$/shared/utils'\n\ntype LigalClasses = {\n ligalRoot?: string\n ligalText?: string\n ligalButton?: string\n}\n\nexport interface LigalProps {\n text: string\n classes?: LigalClasses\n}\n\nexport const Ligal = ({ text, classes }: LigalProps) => {\n const [isExpanded, setIsExpanded] = React.useState(false)\n const [isClamped, setIsClamped] = React.useState(false)\n const ligalRef = React.useRef<HTMLParagraphElement | null>(null)\n\n React.useEffect(() => {\n const element = ligalRef.current\n if (element) {\n setIsClamped(element.scrollHeight > element.clientHeight)\n }\n }, [])\n\n return (\n <div className={cn('mt-8 flex flex-col gap-4', classes?.ligalRoot)}>\n <div\n ref={ligalRef}\n className={cn('desk-body-regular-m text-color-footer', { 'line-clamp-3': !isExpanded }, classes?.ligalText)}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n\n {isClamped && (\n <div\n tabIndex={0}\n role='button'\n onClick={() => setIsExpanded((prev) => !prev)}\n className={cn(\n 'desk-body-regular-l w-max cursor-pointer font-medium text-color-footer transition-colors hover:text-color-white',\n classes?.ligalButton\n )}\n >\n Подробнее\n </div>\n )}\n </div>\n )\n}\n","import { widgetIds } from '../model'\nimport {\n type CopyrightType,\n type Details,\n type FooterClasses,\n type LigalType,\n type PhonesType,\n type SocialsLinksType\n} from './model/types'\nimport { Copyright, FooterLogo, NavLinks, PhonesBlock, SiteMap, SocialLinks } from './ui'\nimport { Ligal } from './ui/Ligal'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface FooterProps<Enabled extends boolean> {\n variant: 'fourCols'\n socialsLinks: SocialsLinksType<Enabled>\n phones: PhonesType<Enabled>\n ligal: LigalType<Enabled>\n copyright: CopyrightType<Enabled>\n siteMap?: boolean\n details: Details[]\n classes?: FooterClasses\n}\n\nexport const Footer = <Enabled extends boolean>({\n socialsLinks,\n phones,\n ligal,\n copyright,\n classes,\n details,\n siteMap = true\n}: FooterProps<Enabled>) => {\n return (\n <footer\n id={widgetIds.footer}\n data-test-id={widgetIds.footer}\n className={cn('w-full bg-color-footer py-8 desktop:py-10', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.footerContainer)}>\n <div className={cn('mobile:pb-[176px]', classes?.footerWrapper)}>\n <div\n className={cn(\n 'flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8',\n classes?.footerHead\n )}\n >\n <div className={cn(classes?.footerSocialBlock)}>\n <FooterLogo classes={classes?.footerLogo} />\n {socialsLinks.enabled && <SocialLinks socialsLinks={socialsLinks.links} classes={classes?.socialLinks} />}\n </div>\n\n {phones.enabled && <PhonesBlock phones={phones.items} classes={classes?.phonesBlock} />}\n </div>\n\n {!TypeGuards.isArrayEmpty(details) && <NavLinks details={details} classes={classes?.navLinks} />}\n {ligal.enabled && <Ligal text={ligal.text} />}\n\n <div\n className={cn(\n 'mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6',\n classes?.footerBottom\n )}\n >\n {copyright.enabled && <Copyright text={copyright.text} classes={classes?.copyright} />}\n {siteMap && <SiteMap classes={classes?.siteMap} />}\n </div>\n </div>\n </ResponsiveContainer>\n </footer>\n )\n}\n\nexport default Footer\n","import type { SingleStep as SingleStepType } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type SingleStepClasses = {\n singleStep?: string\n numeric?: string\n textBlock?: string\n title?: string\n description?: string\n stepContainer?: string\n imageContainer?: string\n image?: string\n}\n\nexport const SingleStep = (props: SingleStepType) => {\n const { classes, index, title, description } = props\n\n return (\n <div\n className={cn(\n 'flex w-[328px] max-w-[328px] flex-col gap-4 rounded-md border border-solid border-blue-grey-500 p-4 desktop:w-[348px] desktop:max-w-[348px] desktop:border-none desktop:p-0',\n classes?.singleStep\n )}\n >\n <div\n className={cn(\n 'mob-headline-bold-s flex size-10 items-center justify-center rounded-sm bg-color-blue-grey-500 text-color-white desktop:desk-title-bold-l desktop:size-12',\n classes?.numeric\n )}\n >\n {index}\n </div>\n\n <div className={cn('flex flex-col gap-6', classes?.stepContainer)}>\n <div className={cn('flex flex-col gap-2')}>\n {title && (\n <div\n dangerouslySetInnerHTML={{ __html: title }}\n className={cn('mob-title-bold-m text-color-dark desktop:desk-title-bold-s', classes?.title)}\n />\n )}\n <div\n dangerouslySetInnerHTML={{ __html: description ?? '' }}\n className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}\n />\n </div>\n\n {props.type === 'withImage' && Object.keys(props?.image ?? {}).length > 0 && (\n <div className={cn('h-[368px] w-[348px] mobile:hidden', classes?.imageContainer)}>\n <img className={cn('h-full w-full object-contain', classes?.image)} src={props?.image?.src} alt={props?.image?.alt} />\n </div>\n )}\n </div>\n </div>\n )\n}\n","import { useState } from 'react'\nimport { type SingleStepper } from '../model/types'\nimport { CarouselBase, type CarouselClasses, CarouselSlide, type CarouselSlideClasses } from '$/shared/ui'\n\nexport type StepperCarouselClasses = {\n carouselClasses?: CarouselClasses\n carouselSlideClasses?: CarouselSlideClasses\n}\n\ninterface SingleStepMobileProps<Enabled extends boolean> {\n currentStepper: SingleStepper<Enabled>\n classes?: StepperCarouselClasses\n}\n\nexport const StepperCarousel = <Enabled extends boolean>({ currentStepper, classes }: SingleStepMobileProps<Enabled>) => {\n const [visibleIndex, setVisibleIndex] = useState(0)\n\n const { carouselClasses, carouselSlideClasses } = classes || {}\n\n return (\n <CarouselBase\n carouselOptions={{\n dragFree: false\n }}\n visibleIndex={visibleIndex}\n setVisibleIndex={setVisibleIndex}\n autoPlayOptions={{\n active: false\n }}\n classes={{\n containerWithNavClasses: {\n wrapper: 'gap-4'\n },\n root: 'desktop:hidden',\n carouselContentClasses: {\n slidesOverlay: 'max-w-full w-full'\n },\n ...carouselClasses\n }}\n >\n {currentStepper.details.map((slide, slideIndex) => (\n <CarouselSlide\n key={slideIndex}\n variant='fullScreen'\n slideIndex={slideIndex}\n {...slide}\n classes={{\n slide: 'mobile:w-[328px] desktop:w-[1140px]',\n ...carouselSlideClasses\n }}\n />\n ))}\n </CarouselBase>\n )\n}\n","import { type Dispatch, memo, type SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type StepperTabsClasses = {\n wrapper?: string\n tab?: string\n}\n\nexport interface StepperTab {\n headline: string\n}\n\nexport type StepperTabValue = string | undefined\n\nexport interface StepperTabsProps {\n stepperTabs?: StepperTab[]\n activeStepper: StepperTabValue\n setActiveStepper: Dispatch<SetStateAction<StepperTabValue>>\n classes?: StepperTabsClasses\n}\n\nexport const StepperTabs = memo(({ stepperTabs, activeStepper, setActiveStepper, classes }: StepperTabsProps) => {\n return (\n <div className={cn('customScrollbar-y scrollHidden flex items-center gap-4 overflow-x-auto', classes?.wrapper)}>\n {stepperTabs?.map(({ headline }) => (\n <button\n key={headline}\n onClick={() => setActiveStepper(headline)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent desktop:desk-body-regular-l focus:outline-primary-focus desktop:px-4 desktop:py-3',\n { 'bg-icon-primary-default text-color-white': activeStepper === headline },\n classes?.tab\n )}\n >\n {headline}\n </button>\n ))}\n </div>\n )\n})\n","import { type HTMLAttributes, useMemo, useState } from 'react'\nimport { widgetIds } from '../model'\nimport { type SingleStepper } from './model/types'\nimport { StepperCarousel } from './ui'\nimport { SingleStep, type SingleStepClasses } from './ui/SingleStep'\nimport { type StepperCarouselClasses } from './ui/StepperCarousel'\nimport { StepperTabs, type StepperTabsClasses, type StepperTabValue } from './ui/StepperTabs'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type StepperClasses = {\n root?: string\n container?: string\n wrapper?: string\n headline?: string\n stepsWrapper?: string\n step?: SingleStepClasses\n stepperTabs?: StepperTabsClasses\n stepperCarousel?: StepperCarouselClasses\n}\n\nexport interface StepperProps<WithImages extends boolean> extends HTMLAttributes<HTMLDivElement> {\n steppers: SingleStepper<WithImages>[]\n classes?: StepperClasses\n}\n\nexport const Stepper = <WithImages extends boolean>({ steppers, classes }: StepperProps<WithImages>) => {\n const shouldShowTabs = steppers && steppers?.length > 1\n const [activeStepper, setActiveStepper] = useState<StepperTabValue>(shouldShowTabs ? steppers?.[0]?.headline : '')\n\n const steppersTabs = useMemo(() => steppers?.map(({ headline }) => ({ headline })), [steppers])\n\n const currentStepperIndex = shouldShowTabs ? steppersTabs?.findIndex((tab) => tab.headline === activeStepper) : 0\n const currentStepper = steppers?.[currentStepperIndex]\n\n return (\n <section key={currentStepper.headline} id={widgetIds.stepper} data-test-id={widgetIds.stepper} className={classes?.root}>\n <ResponsiveContainer className={cn(classes?.container, 'mobile:max-w-[360px]')}>\n <div className={cn('flex flex-col gap-6 desktop:items-start desktop:gap-12', classes?.wrapper)}>\n <Heading as='h2' className={cn('text-color-dark', classes?.headline)}>\n {currentStepper.headline}\n </Heading>\n\n <div className='flex flex-col gap-6 desktop:gap-10'>\n {shouldShowTabs && (\n <StepperTabs\n stepperTabs={steppersTabs}\n activeStepper={activeStepper}\n setActiveStepper={setActiveStepper}\n classes={classes?.stepperTabs}\n />\n )}\n\n {currentStepper.withImages && <StepperCarousel classes={classes?.stepperCarousel} currentStepper={currentStepper} />}\n\n <div\n className={cn(\n 'flex w-full flex-col items-start gap-6 desktop:flex-row desktop:items-start desktop:gap-12',\n classes?.stepsWrapper,\n { ['mobile:hidden']: currentStepper.withImages }\n )}\n >\n {currentStepper?.details?.map((step, index) => (\n <SingleStep {...step} key={step.description} index={index + 1} classes={classes?.step} />\n ))}\n </div>\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Stepper\n","import { cva } from 'class-variance-authority'\n\nexport const titleConfig = cva('', {\n variants: {\n intent: {\n twoItems: 'mob-headline-bold-s mb-6 desktop:desk-headline-bold-m desktop:mb-12',\n fourItems: 'mob-title-bold-l desktop:desk-title-bold-l mb-8'\n },\n desktopHidden: {\n true: 'desktop:hidden'\n },\n mobileHidden: {\n true: 'mobile:hidden'\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n }\n})\n\nexport const listItemConfig = cva('', {\n variants: {\n intent: {\n twoItems: '',\n fourItems: ''\n },\n withButton: {\n true: ''\n }\n },\n compoundVariants: [\n {\n intent: 'twoItems',\n withButton: true,\n class: 'mb-8 desktop:flex'\n },\n {\n intent: 'twoItems',\n withButton: false,\n class: 'desktop:flex'\n },\n {\n intent: 'fourItems',\n withButton: true,\n class: 'desktop:grid grid-rows-2 mb-8 desktop:gap-x-10 desktop:gap-y-4 grid-flow-col'\n },\n {\n intent: 'fourItems',\n withButton: false,\n class: 'desktop:grid grid-rows-2 desktop:gap-x-10 desktop:gap-y-4 grid-flow-col'\n }\n ]\n})\n\nexport const itemConfig = cva('border-blue-grey-500 pb-6 mobile:mb-6 mobile:border-b mobile:last:pb-0 mobile:last:mb-0', {\n variants: {\n intent: {\n twoItems:\n 'last:border-none relative desktop:first:after:top-1/2 desktop:first:after:-translate-y-1/2 desktop:first:after:right-0 desktop:first:after:content-[\"\"] desktop:first:after:block desktop:first:after:absolute desktop:first:after:w-[1px] desktop:first:after:h-[64px] desktop:first:after:bg-color-blue-grey-500 desktop:ml-8 desktop:pr-8 desktop:first:ml-0 desktop:last:pr-0 desktop:pb-3',\n fourItems: ' mobile:last:border-none desktop:w-[264px] desktop:odd:border-b desktop:pb-0 desktop:odd:pb-3'\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n }\n})\n\nexport const containerImgConfig = cva('mobile:mx-auto mobile:mb-8, h-[172px] w-[280px] ', {\n variants: {\n intent: {\n twoItems: 'desktop:h-[232px] desktop:w-[500px]',\n fourItems: ' '\n },\n withButton: {\n true: true,\n false: false\n }\n },\n defaultVariants: {\n intent: 'twoItems'\n },\n compoundVariants: [\n {\n intent: 'fourItems',\n withButton: true,\n class: 'desktop:h-[360px] desktop:w-[500px]'\n },\n {\n intent: 'fourItems',\n withButton: false,\n class: 'desktop:h-[272px] desktop:w-[500px]'\n }\n ]\n})\n","import { itemConfig } from '../model/cva'\nimport { type TextItemProps } from '../model/types'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const TextItem = <Enabled extends boolean>({ data, intent }: TextItemProps<Enabled>) => {\n const {\n title,\n description,\n popover = {\n enabled: false\n }\n } = data\n return (\n <li className={cn(itemConfig({ intent }))}>\n <div className='desktop:max-w-[264px]'>\n <div className={cn('mb-2 flex items-center gap-2')}>\n <h4 className={cn('mob-title-bold-m text-color-dark')}>{title}</h4>\n {popover.enabled && (\n <Popover triggerElement={<Icon className={cn('size-5 text-icon-blue-grey-600')} name='info/helpCircle' />}>\n {popover.text}\n </Popover>\n )}\n </div>\n\n <div className={cn('mob-body-regular-l text-color-secondary')} dangerouslySetInnerHTML={{ __html: description }} />\n </div>\n </li>\n )\n}\n","import { type ReactElement } from 'react'\nimport { titleConfig } from '../model/cva'\nimport { type LongBannerConfig } from '../model/types'\nimport { cn } from '$/shared/utils'\n\ninterface TitleProps {\n intent: LongBannerConfig['intent']\n headline: string | ReactElement\n desktopHidden?: boolean\n mobileHidden?: boolean\n}\n\nexport const Title = ({ intent, headline, desktopHidden = false, mobileHidden = false }: TitleProps) => {\n return <h2 className={cn(titleConfig({ intent, desktopHidden, mobileHidden }))}>{headline}</h2>\n}\n","import { listItemConfig } from '../model/cva'\nimport { type Details, type LongBannerConfig } from '../model/types'\nimport { TextItem } from './TextItem'\nimport { cn } from '$/shared/utils'\n\ninterface ListItemsProps<Enabled extends boolean> {\n details: Details<Enabled>[]\n intent: LongBannerConfig['intent']\n withButton: boolean\n}\n\nexport const TextList = <Enabled extends boolean>({ details, intent, withButton }: ListItemsProps<Enabled>) => {\n return (\n <ul className={cn(listItemConfig({ intent, withButton }))}>\n {details?.map((element, index) => (\n <TextItem intent={intent} data={element} key={index} />\n ))}\n </ul>\n )\n}\n","import { type ReactElement } from 'react'\nimport { ButtonWithHandlers } from '../buttonWithHandlers'\nimport { widgetIds } from '../model'\nimport { containerImgConfig } from './model/cva'\nimport { type ButtonConfig, type Details, type Image, type LongBannerClasses, type LongBannerConfig } from './model/types'\nimport { TextList, Title } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface LongBannerProps<Enabled extends boolean> extends LongBannerConfig {\n headline: string | ReactElement\n details: Details<Enabled>[]\n intent?: 'twoItems' | 'fourItems'\n buttonConfig?: ButtonConfig\n image: Image\n classes?: LongBannerClasses\n}\n\nexport const LongBanner = <Enabled extends boolean>({\n headline,\n buttonConfig,\n intent = 'twoItems',\n details,\n image,\n classes\n}: LongBannerProps<Enabled>) => {\n const isFourItems = intent === 'fourItems'\n const isTwoItems = intent === 'twoItems'\n\n const img =\n image && 'url' in image && TypeGuards.isObject(image) ? (\n <img className='w-full object-contain' alt={image.alt} src={image.url} />\n ) : (\n image\n )\n\n return (\n <section id={widgetIds.longBanner} data-test-id={widgetIds.longBanner} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n {isTwoItems && <Title intent={intent} headline={headline} />}\n\n <div\n className={cn(\n 'bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12',\n classes?.contentContainer\n )}\n >\n {isFourItems && <Title intent={intent} headline={headline} desktopHidden={true} />}\n <div className={cn(containerImgConfig({ intent, withButton: buttonConfig?.enabled }), classes?.imgContainer)}>\n {img}\n </div>\n <div\n className={cn('desktop:flex desktop:flex-col desktop:justify-center desktop:py-10', classes?.textWithBtnContainer)}\n >\n {isFourItems && <Title intent={intent} headline={headline} mobileHidden={true} />}\n <TextList details={details} intent={intent} withButton={buttonConfig?.enabled ?? false} />\n {buttonConfig?.enabled && buttonConfig && (\n <ButtonWithHandlers\n className={cn('w-full px-4 desktop:w-max', classes?.button)}\n size='lg'\n intent='secondary'\n {...buttonConfig.buttonContent}\n />\n )}\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default LongBanner\n","export const AUTH_PROVIDER_MODE = {\n ESIA: 'esia',\n MOBILE_ID: 'mobileId',\n COMBINE: 'combine'\n} as const\n","import { Loader, type LoaderProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AuthWrapperClasses = {\n root?: string\n wrapper?: string\n}\n\nexport interface AuthWrapperProps {\n children: React.ReactElement\n classes?: AuthWrapperClasses\n isLoading?: boolean\n loaderProps?: LoaderProps\n}\n\nexport const AuthWrapper = ({ children, isLoading, classes, loaderProps }: AuthWrapperProps) => {\n return (\n <div\n tabIndex={0}\n className={cn(\n 'relative flex h-[90px] w-full max-w-[328px] items-center justify-center rounded-sm p-2 desktop:max-w-[524px]',\n 'bg-color-white outline outline-1 outline-warm-grey-200 transition-colors focus-visible:outline-primary-focus',\n classes?.root\n )}\n >\n <div\n className={cn(\n 'flex h-[74px] flex-1 cursor-pointer rounded-sm px-2 py-3 transition-colors desktop:px-4 desktop:py-3',\n 'bg-color-blue-grey-100 hover:bg-color-blue-grey-200 active:bg-color-blue-grey-300',\n { 'items-center': isLoading },\n classes?.wrapper\n )}\n >\n {isLoading ? <Loader position='static' classes={{ wrapper: 'size-8 m-auto' }} {...loaderProps} /> : children}\n </div>\n </div>\n )\n}\n","import { type SVGProps } from 'react'\n\nexport const EsiaLogo = ({ ...props }: SVGProps<SVGSVGElement>) => {\n return (\n <svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg' {...props}>\n <path\n d='M30.3986 10.6149C30.2728 8.96576 29.014 6.85155 27.7553 5.83672C26.3398 4.79816 24.8691 3.83828 23.3497 2.96139C21.8418 2.06068 20.2871 1.24201 18.6923 0.508895C17.8404 0.15868 16.927 -0.0139306 16.007 0.00148264C15.0868 -0.0180029 14.1725 0.154761 13.3217 0.508895C11.7272 1.24253 10.1725 2.06119 8.66438 2.96139C6.23081 4.44134 4.25878 5.83672 4.25878 5.83672C3.22329 6.71008 2.43892 7.83418 1.97146 9.09195C1.87834 9.34251 2.07032 9.59987 2.33762 9.59987H4.2568C4.55401 9.59987 4.82321 9.43281 4.98085 9.18085C5.33539 8.61417 5.77902 8.10202 6.29948 7.66607C6.29948 7.66607 7.92774 6.52186 9.93709 5.3083C11.1823 4.57013 12.466 3.89884 13.7826 3.29725C14.485 3.00687 15.2399 2.8652 15.9998 2.88118C16.7593 2.86854 17.5136 3.01008 18.217 3.29725C19.5337 3.89841 20.8174 4.56972 22.0624 5.3083C23.317 6.02735 24.5313 6.81445 25.7 7.66607C26.7394 8.49823 27.7787 10.2319 27.8826 11.5841C27.8826 11.5841 28.1251 13.5952 28.1598 15.9772C28.1576 17.4483 28.0767 18.9183 27.9173 20.3807C27.6755 21.912 26.8879 23.3038 25.7 24.2988C25.7 24.2988 24.0718 25.4777 22.0624 26.6912C20.8172 27.4294 19.5335 28.1007 18.217 28.7023C17.5145 28.9927 16.7596 29.1343 15.9998 29.1184C15.2409 29.1343 14.4867 28.9963 13.7826 28.7127C12.4658 28.1115 11.1821 27.4402 9.93709 26.7016C7.92774 25.5228 6.29948 24.3092 6.29948 24.3092C5.84515 23.9454 5.39081 23.4094 5.01172 22.8082C4.85581 22.561 4.5896 22.3997 4.2973 22.3997H2.34718C2.07645 22.3997 1.88475 22.6629 1.98611 22.914C2.49249 24.168 3.37564 25.4212 4.25878 26.1332C4.25878 26.1332 6.23081 27.6132 8.66438 29.0508C10.1723 29.9515 11.7269 30.7702 13.3217 31.5033C14.1745 31.8492 15.088 32.0175 16.007 31.998C16.9273 32.0175 17.8416 31.8448 18.6923 31.4906C20.2869 30.757 21.8415 29.9383 23.3497 29.0381C25.7833 27.5582 27.7553 26.1205 27.7553 26.1205C29.1939 24.9072 30.1478 23.2098 30.4406 21.3424C30.6337 19.5589 30.7317 17.7663 30.7343 15.9723C30.6923 13.0673 30.3986 10.6149 30.3986 10.6149Z'\n fill='url(#paint0_linear_6493_452)'\n />\n <path\n d='M1.27985 12.4821C1.27985 12.1286 1.56638 11.8421 1.91985 11.8421H11.8398C12.1933 11.8421 12.4798 12.1286 12.4798 12.4821V14.4021C12.4798 14.7555 12.1933 15.0421 11.8398 15.0421H1.27985V12.4821Z'\n fill='#0066B3'\n />\n <path\n d='M1.27985 16.9618H21.4398C21.7933 16.9618 22.0798 17.2484 22.0798 17.6018V19.5218C22.0798 19.8752 21.7933 20.1618 21.4398 20.1618H1.91985C1.56638 20.1618 1.27985 19.8752 1.27985 19.5218V16.9618Z'\n fill='#EE2F53'\n />\n <defs>\n <linearGradient id='paint0_linear_6493_452' x1='16.0071' y1='0' x2='16.0071' y2='31.9996' gradientUnits='userSpaceOnUse'>\n <stop stopColor='#0066B3' />\n <stop offset='0.354167' stopColor='#0066B3' />\n <stop offset='0.6875' stopColor='#EE2F53' />\n <stop offset='1' stopColor='#EE2F53' />\n </linearGradient>\n </defs>\n </svg>\n )\n}\n","import type { SingleAuthSchema } from '../../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TLinksClasses = {\n linksWrapper?: string\n linksMainLink?: string\n linksSubLink?: string\n}\n\ninterface ILinksProps extends Pick<SingleAuthSchema, 'subLink' | 'mainLink'> {\n isMobile: boolean\n classes?: TLinksClasses\n}\n\nexport const Links = ({ mainLink, subLink, isMobile, classes }: ILinksProps) => {\n return (\n <div className={cn('flex flex-col', classes?.linksWrapper)}>\n <a\n href={mainLink.href}\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'before:content=[\" \"] desk-body-medium-l z-[4] text-color-dark before:absolute before:left-1/2 before:top-1/2 before:h-full before:w-full before:-translate-x-1/2 before:-translate-y-1/2',\n classes?.linksMainLink\n )}\n >\n {isMobile ? mainLink.mobileTitle : mainLink.title}\n </a>\n\n {subLink?.text && subLink?.href && (\n <CustomLink\n intent='blue'\n withUnderline\n href={subLink?.href}\n target='_blank'\n rel='noreferrer'\n classes={{\n link: cn('w-max relative z-[6] p-0 desk-body-regular-m text-color-tetriary', classes?.linksSubLink)\n }}\n >\n {subLink?.text}\n </CustomLink>\n )}\n </div>\n )\n}\n","import { type TMobileIdProps } from '../model/types'\nimport { AuthWrapper, Links } from './ui/'\nimport { useDevice } from '$/shared/hooks'\nimport { Badge, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const MobileId = ({ mainLink, subLink, isLoading, badge, loaderProps, classes }: TMobileIdProps) => {\n const { isMobile } = useDevice()\n\n return (\n <AuthWrapper isLoading={isLoading} loaderProps={loaderProps} classes={classes?.authWrapper}>\n <div\n className={cn(\n 'flex flex-1 items-center justify-between gap-1',\n { 'justify-center': !badge && isMobile },\n classes?.innerWrapper\n )}\n >\n <div className={cn('flex items-center gap-1 desktop:gap-4', classes?.textContent)}>\n <div>\n <Icon name='logos/mts' className={cn('relative z-[9] size-7 desktop:size-8', classes?.mtsLogo)} />\n <Icon name='logos/megafon' className={cn('relative z-[8] -ml-4 size-7 desktop:size-8', classes?.megafonLogo)} />\n <Icon name='logos/beeline' className={cn('relative z-[7] -ml-4 size-7 desktop:size-8', classes?.beelineLogo)} />\n </div>\n <Links mainLink={mainLink} subLink={subLink} isMobile={isMobile} classes={classes?.links} />\n <Icon name='arrows/arrowRight' className={cn('mobile:hidden', classes?.arrowIcon)} />\n </div>\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </div>\n </AuthWrapper>\n )\n}\n","import type { TEsiaProps } from '../model/types'\nimport { AuthWrapper, EsiaLogo, Links } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { Badge, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Esia = ({ mainLink, subLink, isLoading, badge, loaderProps, classes }: TEsiaProps) => {\n const { isMobile } = useDevice()\n\n return (\n <AuthWrapper isLoading={isLoading} loaderProps={loaderProps} classes={classes?.authWrapper}>\n <div\n className={cn(\n 'flex flex-1 items-center justify-between gap-1',\n { 'justify-center': !badge && isMobile },\n classes?.innerWrapper\n )}\n >\n <div className={cn('flex items-center gap-1 desktop:gap-4', classes?.textContent)}>\n <EsiaLogo className={cn('size-7 desktop:size-8', classes?.esiaLogo)} />\n <Links mainLink={mainLink} subLink={subLink} isMobile={isMobile} classes={classes?.links} />\n <Icon name='arrows/arrowRight' className={cn('mobile:hidden', classes?.arrowIcon)} />\n </div>\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </div>\n </AuthWrapper>\n )\n}\n","import * as React from 'react'\nimport { AUTH_PROVIDER_MODE } from './model/helpers'\nimport type { AuthProviderProps } from './model/types'\nimport { Esia, MobileId } from './ui'\nimport { Badge } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst renderProvider = (props: AuthProviderProps): React.ReactElement => {\n switch (props.mode) {\n case AUTH_PROVIDER_MODE.ESIA:\n return <Esia {...props} />\n case AUTH_PROVIDER_MODE.MOBILE_ID:\n return <MobileId {...props} />\n case AUTH_PROVIDER_MODE.COMBINE:\n default:\n const { esiaConfig, mobileIdConfig, subtitle, badge, classes } = props\n\n const HeadWrapper = !subtitle && !badge ? React.Fragment : 'div'\n\n return (\n <div\n className={cn(\n 'flex w-[328px] flex-col items-center justify-center gap-2 rounded-sm bg-color-white px-2 py-4 outline outline-1 outline-warm-grey-200 desktop:w-[524px] desktop:p-4',\n classes?.root\n )}\n >\n <HeadWrapper className={cn('flex w-full items-center justify-between gap-2', classes?.topContent)}>\n {subtitle && <h5 className={cn('desk-body-regular-l flex flex-1 text-color-dark', classes?.subtitle)}>{subtitle}</h5>}\n {badge && <Badge className={cn('bg-color-positive', classes?.badge)}>{badge}</Badge>}\n </HeadWrapper>\n <div className={cn('grid w-full grid-cols-2 gap-2 desktop:gap-4', classes?.authWrapper)}>\n <Esia\n {...esiaConfig}\n classes={{\n root: 'p-0 outline-0 h-[74px]',\n arrowIcon: 'hidden',\n ...esiaConfig.classes\n }}\n />\n <MobileId\n {...mobileIdConfig}\n classes={{\n root: 'p-0 outline-0 h-[74px]',\n arrowIcon: 'hidden',\n ...mobileIdConfig.classes\n }}\n />\n </div>\n </div>\n )\n }\n}\n\nexport const AuthProvider = (props: AuthProviderProps) => {\n return renderProvider(props)\n}\n","import type { Link } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n linksWrapper?: string\n linkText?: string\n linkIcon?: string\n}\n\nexport interface LinksListProps {\n links: Link[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ links, classes }: LinksListProps) => {\n return (\n <nav className={cn('flex flex-col gap-1', classes?.linksWrapper)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n classes={{\n link: cn('w-max', classes?.linkText),\n icon: cn(classes?.linkIcon)\n }}\n intent='dark'\n key={path}\n href={path}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </nav>\n )\n}\n","import type { Group } from '../model/types'\nimport { LinksList, type LinksListClasses } from './LinksList'\nimport { useDevice } from '$/shared/hooks'\nimport { Accordion, type AccordionProps, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ColumnGroupClasses = {\n columnGroup?: string\n columnGroupHeading?: string\n linksList?: LinksListClasses\n}\n\nexport interface ColumnGroupProps extends Group {\n mobileAccordionProps?: AccordionProps\n classes?: ColumnGroupClasses\n}\n\nexport const ColumnGroup = ({ groupLabel, links, mobileAccordionProps, classes }: ColumnGroupProps) => {\n const { isMobile } = useDevice()\n\n return (\n <div className={cn('flex flex-col gap-2', classes?.columnGroup)}>\n {!isMobile && (\n <>\n <h5 className={cn('mob-body-medium-l text-color-dark desktop:desk-body-medium-l', classes?.columnGroupHeading)}>\n {groupLabel}\n </h5>\n <LinksList key='desktop' links={links} classes={classes?.linksList} />\n </>\n )}\n\n {isMobile && (\n <Accordion\n defaultOpen\n label={groupLabel}\n icon={\n <Icon name='arrows/arrowRight' className={cn('rotate-90 transition-transform group-data-[state=open]:-rotate-90')} />\n }\n {...mobileAccordionProps}\n classes={{\n ...mobileAccordionProps?.classes,\n header: {\n trigger: cn('p-0 bg-color-blue-grey-100', mobileAccordionProps?.classes?.header?.trigger)\n },\n contentInner: cn('py-2 px-4', mobileAccordionProps?.classes?.contentInner)\n }}\n >\n <LinksList key='mobile' links={links} classes={classes?.linksList} />\n </Accordion>\n )}\n </div>\n )\n}\n","import type { Group } from '../model/types'\nimport { ColumnGroup, type ColumnGroupClasses } from './ColumnGroup'\nimport type { AccordionProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ColumnClasses = {\n column?: string\n columnGroup?: ColumnGroupClasses\n}\n\nexport interface ColumnProps {\n column: Group[]\n mobileAccordionProps?: AccordionProps\n classes?: ColumnClasses\n}\n\nexport const Column = ({ column, mobileAccordionProps, classes }: ColumnProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:gap-6', classes?.column)}>\n {column?.map((group) => (\n <ColumnGroup key={group.groupLabel} {...mobileAccordionProps} {...group} classes={classes?.columnGroup} />\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport { widgetIds } from '../model'\nimport type { InterLinkingRoot } from './model/types'\nimport { Column, type ColumnClasses } from './ui'\nimport { Accordion, type AccordionProps, Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst columnsWrapper = cva('grid gap-4 grid-cols-1', {\n variants: {\n variant: {\n twoCols: 'desktop:grid-cols-2',\n threeCols: 'desktop:grid-cols-3',\n fourCols: 'desktop:grid-cols-4'\n }\n },\n defaultVariants: {\n variant: 'fourCols'\n }\n})\n\nexport type InterLinkingClasses = {\n root?: string\n headline?: string\n columnsWrapper?: string\n column?: ColumnClasses\n}\n\nexport interface InterLinkingProps extends InterLinkingRoot {\n mobileAccordionProps?: Partial<AccordionProps>\n rootAccordionProps?: Partial<AccordionProps>\n classes?: InterLinkingClasses\n defaultOpen?: boolean\n}\n\nexport const InterLinking = ({\n variant,\n details,\n headline,\n mobileAccordionProps,\n rootAccordionProps,\n classes,\n defaultOpen\n}: InterLinkingProps) => {\n return (\n <section\n id={widgetIds.interLinking}\n data-test-id={widgetIds.interLinking}\n className={cn('min-w-full desktop:min-w-[1140px]', classes?.root)}\n >\n <ResponsiveContainer>\n <Accordion\n defaultOpen={defaultOpen}\n label={\n <Heading as='h4' className={cn('text-left', classes?.headline)}>\n {headline}\n </Heading>\n }\n {...rootAccordionProps}\n classes={{\n ...rootAccordionProps?.classes,\n header: {\n trigger: cn('bg-color-blue-grey-100', rootAccordionProps?.classes?.header?.trigger)\n },\n content: cn('max-w-full bg-color-blue-grey-100 relative', rootAccordionProps?.classes?.content)\n }}\n >\n <div className={cn(columnsWrapper({ variant: variant }), classes?.columnsWrapper)}>\n {details?.map((column, index) => (\n <Column key={index} {...column} {...mobileAccordionProps} classes={classes?.column} />\n ))}\n </div>\n </Accordion>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InterLinking\n","import type { Dispatch, SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type TabsClasses = {\n tabs?: string\n button?: string\n}\n\nexport interface TabsProps {\n tabsNames?: string[]\n activeTab?: number\n setActiveTab: Dispatch<SetStateAction<number>>\n classes?: TabsClasses\n}\n\nexport const Tabs = ({ tabsNames, activeTab, setActiveTab, classes }: TabsProps) => {\n return (\n <div className={cn('hidden-scroll flex items-center gap-4 overflow-x-auto p-[6px]', classes?.tabs)}>\n {tabsNames &&\n tabsNames.map((tabName, tabIndex) => (\n <button\n key={tabName}\n onClick={() => setActiveTab(tabIndex)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent focus:outline-primary-focus desktop:px-4 desktop:py-3',\n {\n 'bg-icon-primary-default text-color-white': activeTab === tabIndex\n },\n classes?.button\n )}\n >\n {tabName}\n </button>\n ))}\n </div>\n )\n}\n","import type { Entity } from './types'\n\nexport const isHtml = (entity: Entity): entity is Entity<'HTML'> => {\n return entity.variant === 'HTML'\n}\n\nexport const isDocuments = (entity: Entity): entity is Entity<'DOCUMENTS'> => {\n return entity.variant === 'DOCUMENTS'\n}\n\nexport const isTable = (entity: Entity): entity is Entity<'TABLE'> => {\n return entity.variant === 'TABLE'\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { Accordion } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityHtmlClasses = {\n html?: string\n}\n\nexport type EntityHtmlProps = {\n html: string\n config?: SubEntityDetailsConfig\n classes?: EntityHtmlClasses\n accordionConfig?: EntitiesAccordionsConfig['htmlAccordion']\n}\n\nexport const Html = ({ html, config, classes, accordionConfig }: EntityHtmlProps) => {\n const content = <div className={cn(classes?.html)} dangerouslySetInnerHTML={{ __html: html ?? '' }} />\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children ?? content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { TableHeading, TableRow } from '../Table'\n\nexport const transformMobileRows = (rows: TableRow[], headings?: TableHeading[]) => {\n return {\n rows: rows?.map(({ row }) => ({\n row: row?.map((cell, index) => ({\n ...cell,\n heading: headings && headings[index]?.heading\n }))\n }))\n }\n}\n\nexport const tableConfig = cva('flex flex-col', {\n variants: {\n columnsVariant: {\n twoCols: 'w-full max-w-[656px]',\n threeCols: 'w-full max-w-[768px]'\n }\n }\n})\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps } from '../Table'\nimport { cn } from '$/shared/utils'\n\nconst headingsConfig = cva('desktop:grid mobile:hidden px-4 mb-4', {\n variants: {\n columnsVariant: {\n twoCols: 'grid-cols-2 gap-16',\n threeCols: 'grid-cols-3 gap-12'\n }\n }\n})\n\nexport type DesktopHeadingClasses = {\n row?: string\n cell?: string\n}\n\ninterface DesktopHeadingsProps {\n headings: EntityTableProps['headings']\n columnsVariant: EntityTableProps['columnsVariant']\n classes?: DesktopHeadingClasses\n}\n\nexport const DesktopHeadings = ({ headings, columnsVariant, classes }: DesktopHeadingsProps) => {\n return (\n <div className={cn(headingsConfig({ columnsVariant }), classes?.row)}>\n {headings?.map((cell) => (\n <div key={cell?.heading} className={cn('text-color-secondary', classes?.cell)}>\n {cell?.heading}\n </div>\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps, TableRow } from '../Table'\nimport { cn } from '$/shared/utils'\n\nexport type DesktopRowClasses = {\n row?: string\n cell?: string\n}\n\ntype DesktopRowProps = {\n row: TableRow['row']\n tableVariant: EntityTableProps['tableVariant']\n columnsVariant: EntityTableProps['columnsVariant']\n rowIndex: number\n classes?: DesktopRowClasses\n}\n\nconst desktopRowConfig = cva('desktop:grid mobile:hidden items-center', {\n variants: {\n columnsVariant: {\n twoCols: 'grid-cols-2 gap-16',\n threeCols: 'grid-cols-3 gap-12'\n },\n tableVariant: {\n filled: 'px-4 py-3 even:bg-color-primary-light-default',\n separator: 'px-4 py-4 border-t border-solid border-warm-grey-200'\n }\n }\n})\n\nexport const DesktopRow = ({ row, tableVariant, columnsVariant, rowIndex, classes }: DesktopRowProps) => {\n return (\n <div className={cn(desktopRowConfig({ columnsVariant, tableVariant }), { 'border-none': rowIndex === 0 }, classes?.row)}>\n {row?.map(({ cell }, cellIndex) => (\n <div\n key={cellIndex}\n className={cn('desk-body-regular-l text-color-dark', { 'font-medium': cellIndex !== 0 }, classes?.cell)}\n >\n {cell && cell}\n </div>\n ))}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { EntityTableProps } from '../Table'\nimport { cn } from '$/shared/utils'\n\ninterface FormattedRow {\n cell: string\n heading?: string\n}\n\nexport type MobileRowClasses = {\n row?: string\n wrapper?: string\n heading?: string\n cell?: string\n}\n\nexport interface MobileRowProps {\n row: FormattedRow[]\n tableVariant: EntityTableProps['tableVariant']\n columnsVariant: EntityTableProps['columnsVariant']\n headingsExist: boolean\n classes?: MobileRowClasses\n}\n\nconst mobileRowConfig = cva('mobile:flex desktop:hidden flex-col gap-2', {\n variants: {\n tableVariant: {\n filled: 'px-4 py-4 odd:bg-color-primary-light-default',\n separator: 'py-4 border-t border-solid border-warm-grey-200 first:border-none'\n }\n }\n})\n\nexport const MobileRow = ({ row, tableVariant, columnsVariant, headingsExist, classes }: MobileRowProps) => {\n return (\n <div className={cn(mobileRowConfig({ tableVariant }), classes?.row)}>\n {row?.map(({ cell, heading }, cellIndex) => (\n <div key={cellIndex} className={cn('grid grid-cols-2 gap-3', { 'grid-cols-1 gap-0': !headingsExist }, classes?.wrapper)}>\n {heading && <div className={cn('mob-body-regular-l text-color-secondary', classes?.heading)}>{heading}</div>}\n <div\n className={cn(\n 'mob-body-regular-l text-color-dark',\n {\n 'font-medium':\n (cellIndex !== 0 && columnsVariant === 'twoCols') ||\n columnsVariant === 'threeCols' ||\n (columnsVariant === 'twoCols' && headingsExist)\n },\n classes?.cell\n )}\n >\n {cell}\n </div>\n </div>\n ))}\n </div>\n )\n}\n","import { transformMobileRows } from '../model/utils'\nimport type { EntityTableProps } from '../Table'\nimport { type DesktopHeadingClasses, DesktopHeadings } from './DesktopHeadings'\nimport { DesktopRow, type DesktopRowClasses } from './DesktopRow'\nimport { MobileRow, type MobileRowClasses } from './MobileRow'\nimport { cn } from '$/shared/utils'\n\nexport type TableBodyClasses = {\n wrapper?: string\n desktopHeading: DesktopHeadingClasses\n desktopRow?: DesktopRowClasses\n mobileRow?: MobileRowClasses\n}\n\ninterface TableBodyProps {\n tableVariant: EntityTableProps['tableVariant']\n rows: EntityTableProps['rows']\n headings?: EntityTableProps['headings']\n columnsVariant: EntityTableProps['columnsVariant']\n classes?: TableBodyClasses\n}\n\nexport const TableBody = ({ tableVariant, rows, headings, columnsVariant, classes }: TableBodyProps) => {\n const formattedRows = transformMobileRows(rows, headings)?.rows ?? []\n const headingsExist = Boolean(headings && headings.length > 0)\n\n return (\n <div className={cn('flex flex-col', classes?.wrapper)}>\n {headingsExist && <DesktopHeadings headings={headings} columnsVariant={columnsVariant} classes={classes?.desktopHeading} />}\n {rows?.map((row, rowIndex) => (\n <DesktopRow\n key={rowIndex}\n rowIndex={rowIndex}\n tableVariant={tableVariant}\n columnsVariant={columnsVariant}\n classes={classes?.desktopRow}\n {...row}\n />\n ))}\n {formattedRows?.map((row, rowIndex) => (\n <MobileRow\n key={rowIndex}\n headingsExist={headingsExist}\n tableVariant={tableVariant}\n columnsVariant={columnsVariant}\n classes={classes?.desktopRow}\n {...row}\n />\n ))}\n </div>\n )\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { tableConfig } from './model/utils'\nimport { TableBody, type TableBodyClasses } from './ui/TableBody'\nimport { Accordion, Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityTableClasses = {\n wrapper?: string\n headline?: string\n description?: string\n tableBody?: TableBodyClasses\n}\n\nexport type TableCell = {\n cell: string\n cellId: string\n}\n\nexport type TableRow = {\n row: TableCell[]\n rowId: string\n}\n\nexport type TableHeading = {\n heading: string\n headingId: string\n}\n\nexport type EntityTableProps = {\n title?: string\n description?: string\n columnsVariant: 'twoCols' | 'threeCols'\n tableVariant: 'separator' | 'filled'\n headings?: TableHeading[]\n rows: TableRow[]\n config?: SubEntityDetailsConfig\n classes?: EntityTableClasses\n accordionConfig?: EntitiesAccordionsConfig['documentAccordion']\n}\n\nexport const Table = ({\n tableVariant,\n description,\n columnsVariant,\n config,\n rows,\n title,\n headings,\n accordionConfig,\n classes\n}: EntityTableProps) => {\n const content = (\n <div className={cn(tableConfig({ columnsVariant }), classes?.wrapper)}>\n {title && (\n <Heading as='h4' className={cn('mb-4 desktop:mb-6', classes?.headline)}>\n {title}\n </Heading>\n )}\n\n <TableBody tableVariant={tableVariant} rows={rows} headings={headings} columnsVariant={columnsVariant} />\n\n {description && (\n <div\n className={cn('mt-2 [&&]:desk-body-regular-m desktop:mt-2', classes?.description)}\n dangerouslySetInnerHTML={{ __html: description ?? '' }}\n />\n )}\n </div>\n )\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children || content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { SpritesMap } from '$/shared/ui'\n\nexport type IconNames = Extract<SpritesMap['files'], 'documentFilled' | 'documentOutline'>\n\nexport const iconsMap: Record<IconNames, `files/${IconNames}`> = {\n documentFilled: 'files/documentFilled',\n documentOutline: 'files/documentOutline'\n}\n\nexport const iconConfig = cva('size-8 transition-colors', {\n variants: {\n iconType: {\n documentOutline: 'text-icon-secondary-dark-default group-hover:text-icon-secondary-dark-hover',\n documentFilled: 'text-icon-primary-default group-hover:text-icon-primary-hover'\n }\n },\n defaultVariants: {\n iconType: 'documentOutline'\n }\n})\n","import { iconConfig, type IconNames, iconsMap } from './model/utils'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type DocumentClasses = {\n link?: string\n icon?: string\n wrapper?: string\n label?: string\n size?: string\n}\n\nexport interface DocumentProps {\n label: string\n size: string\n url: string\n iconType: IconNames\n classes?: DocumentClasses\n}\n\nexport const Document = ({ label, size, url, iconType, classes }: DocumentProps) => {\n return (\n <a\n href={url}\n target='_blank'\n rel='noreferrer'\n tabIndex={0}\n className={cn(\n 'group flex w-full cursor-pointer items-center gap-2 rounded-sm p-1 outline outline-2 outline-transparent transition-colors focus-within:outline-primary-focus',\n classes?.link\n )}\n >\n <Icon name={iconsMap[iconType]} className={cn(iconConfig({ iconType }), classes?.icon)} />\n <div className={cn('flex flex-1 flex-col', classes?.wrapper)}>\n <p className={cn('desk-body-medium-l text-color-dark', classes?.label)}>{label}</p>\n <div className={cn('desk-body-regular-m text-color-disabled', classes?.size)}>{Number(size)} КБ</div>\n </div>\n </a>\n )\n}\n","import type { EntitiesAccordionsConfig, SubEntityDetailsConfig } from '../../../model'\nimport { Document, type DocumentClasses } from './ui/document'\nimport { Accordion, Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EntityDocumentsClasses = {\n wrapper?: string\n headline?: string\n documentsWrapper?: string\n description?: string\n singleDocument?: DocumentClasses\n}\n\nexport type EntityDocumentsProps = {\n iconType: 'documentOutline' | 'documentFilled'\n title?: string\n description?: string\n docs: {\n url: string\n size: string\n label: string\n }[]\n config?: SubEntityDetailsConfig\n classes?: EntityDocumentsClasses\n accordionConfig?: EntitiesAccordionsConfig['documentAccordion']\n}\n\nexport const Documents = ({ docs, config, title, iconType, description, classes, accordionConfig }: EntityDocumentsProps) => {\n const content = (\n <div className={cn('flex max-w-[680px] flex-col', classes?.wrapper)}>\n {title && (\n <Heading as='h3' className='mb-4'>\n {title}\n </Heading>\n )}\n <div className={cn('flex flex-col gap-4', classes?.documentsWrapper)}>\n {docs?.map((doc) => (\n <Document iconType={iconType} key={doc.label} {...doc} classes={classes?.singleDocument} />\n ))}\n </div>\n\n {description && (\n <div className={cn('mt-4', classes?.description)} dangerouslySetInnerHTML={{ __html: description ?? '' }} />\n )}\n </div>\n )\n\n return (\n <>\n {config && config?.isAccordion && config?.accordionTitle ? (\n <Accordion label={config?.accordionTitle} {...accordionConfig}>\n {accordionConfig?.children || content}\n </Accordion>\n ) : (\n content\n )}\n </>\n )\n}\n","import { type EntitiesAccordionsConfig, type Entity, isDocuments, isHtml, isTable } from '../model'\nimport {\n Documents,\n type EntityDocumentsClasses,\n type EntityHtmlClasses,\n type EntityTableClasses,\n Html,\n Table\n} from './subEntities'\nimport { cn } from '$/shared/utils'\n\nexport type EntityClasses = {\n entityWrapper?: string\n entities?: {\n html?: EntityHtmlClasses\n documents?: EntityDocumentsClasses\n table?: EntityTableClasses\n }\n}\n\nexport interface RenderEntityProps {\n entity: Entity\n classes?: EntityClasses\n accordionsConfig?: EntitiesAccordionsConfig\n}\n\nconst renderEntity = ({ entity, classes, accordionsConfig }: RenderEntityProps) => {\n switch (true) {\n case isHtml(entity):\n return entity.details?.map((htmlDetails, index) => (\n <Html key={index} {...htmlDetails} accordionConfig={accordionsConfig?.htmlAccordion} classes={classes?.entities?.html} />\n ))\n\n case isDocuments(entity):\n return entity.details?.map((documentsDetails, index) => (\n <Documents\n key={index}\n accordionConfig={accordionsConfig?.documentAccordion}\n {...documentsDetails}\n classes={classes?.entities?.documents}\n />\n ))\n\n case isTable(entity):\n return entity.details?.map((tableDetails, index) => (\n <Table\n key={index}\n accordionConfig={accordionsConfig?.tableAccordion}\n {...tableDetails}\n classes={classes?.entities?.table}\n />\n ))\n\n default:\n return null\n }\n}\n\nexport const RenderEntity = ({ entity, classes, accordionsConfig }: RenderEntityProps) => {\n return (\n <div className={cn('flex flex-col gap-6', classes?.entityWrapper)}>{renderEntity({ entity, classes, accordionsConfig })}</div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { widgetIds } from '../model'\nimport type { EntitiesAccordionsConfig, Tab } from './model'\nimport { type EntityClasses, RenderEntity, Tabs, type TabsClasses } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type UsefulInfoClasses = {\n root?: string\n container?: string\n tabsWrapper?: string\n tabs?: TabsClasses\n headline?: string\n contentWrapper?: string\n entityClasses?: EntityClasses\n}\n\nexport type UsefulInfoProps = {\n headline: string\n tabs: Tab[]\n classes?: UsefulInfoClasses\n accordionsConfig?: EntitiesAccordionsConfig\n}\n\nexport const UsefulInfo = ({ headline, tabs, classes, accordionsConfig }: UsefulInfoProps) => {\n const [activeTab, setActiveTab] = useState(0)\n\n const tabsNames = useMemo(() => tabs?.map((tab) => tab?.tabName), [tabs]) ?? []\n\n if (!tabs || tabs?.length === 0) return null\n\n return (\n <section id={widgetIds.usefulInfo} data-test-id={widgetIds.usefulInfo} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <Heading className={cn(classes?.headline)} as='h2'>\n {headline}\n </Heading>\n <div className={cn('mt-6 flex flex-col gap-2 desktop:mt-12', classes?.tabsWrapper)}>\n <Tabs tabsNames={tabsNames} activeTab={activeTab} setActiveTab={setActiveTab} classes={classes?.tabs} />\n </div>\n <div className={cn('mt-6 flex flex-col gap-6', classes?.contentWrapper)}>\n {tabs?.[activeTab]?.contents?.map((entity, index) => (\n <RenderEntity accordionsConfig={accordionsConfig} key={index} {...entity} classes={classes?.entityClasses} />\n ))}\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default UsefulInfo\n","import { type Control, type FieldValues } from 'react-hook-form'\nimport type { FieldElement } from './model/types'\nimport { Controlled } from '$/shared/ui'\n\ntype FieldMapperProps<TFieldValues extends FieldValues> = {\n control: Control<TFieldValues>\n fields: FieldElement<TFieldValues>[]\n}\n\nexport const FieldMapper = <TFieldValues extends FieldValues>({ fields, control }: FieldMapperProps<TFieldValues>) => {\n return fields.map(({ type, args }) => {\n const Component = Controlled[type] as React.ComponentType<typeof args>\n\n return <Component {...args} key={args.name} control={control as Control} />\n })\n}\n","'use client'\n\nexport type ParserOptions = {\n /**\n * включать элемент body\n */\n includeBody?: boolean\n /**\n * включать сплошной текст (вне тегов)\n */\n includeSolidText?: boolean\n /**\n * парсить рекурсивно\n */\n recursive?: boolean\n /**\n * фильтровать только нужные html теги\n */\n element?: keyof React.JSX.IntrinsicElements\n}\n\nexport abstract class BaseHTMLParser {\n private readonly TEXT_NODE = 3 as const\n private readonly ELEMENT_NODE = 1 as const\n\n protected constructor(private options?: ParserOptions) {}\n\n /**\n * Рекурсивно обходит DOM дерево и собирает данные в зависимости от опций.\n * @param node Текущий узел DOM дерева\n * @param elements Массив для сбора элементов\n * @param as Тип возвращаемых данных ('string' или 'node')\n */\n protected traverse(node: Node, as: 'string' | 'node' = 'string', elements: (string | Node)[]) {\n const { includeSolidText, recursive, element } = this.options || {}\n\n switch (node.nodeType) {\n // если узел - элемент\n case this.ELEMENT_NODE:\n const elementNode = node as Element\n const elementName = elementNode.tagName.toLowerCase()\n\n // если нашли элемент script, в целях безопасности пропускаем его\n if (elementName === 'script') {\n console.warn('Found script node. For better security this node will be skipped.')\n break\n }\n\n // если требуется только определенные элементы и текущий не подходит, пропускаем\n if (element && elementName !== element) {\n break\n }\n\n // добавляем элемент в зависимости от требуемого типа\n if (as === 'node') {\n elements.push(node)\n } else {\n const content = elementNode.outerHTML.trim()\n elements.push(content)\n }\n\n // если требуется рекурсивно обрабатывать дочерние ноды\n if (recursive) {\n for (const child of node.childNodes) {\n this.traverse(child, as, elements)\n }\n }\n break\n // если узел - текстовый и требуется его добавить, добавляем\n case this.TEXT_NODE:\n if (!includeSolidText) {\n break\n }\n\n if (as === 'node') {\n elements.push(node)\n } else {\n const content = node.textContent\n\n if (content) {\n elements.push(content)\n }\n }\n break\n }\n }\n\n /**\n * Парсит HTML строку и возвращает массив тегов или нод в зависимости от опций.\n * @param html HTML строка\n * @param as Тип возвращаемых данных ('string' или 'node')\n * @returns Массив тегов или нод\n */\n async parse(html: string, as: 'string' | 'node' = 'string'): Promise<{ stringNodes: string[]; nodes: Node[] }> {\n const { includeBody } = this.options || {}\n\n const stringNodes: string[] = []\n const nodes: Node[] = []\n const doc = await this.parseFromString(html)\n\n const elements = as === 'string' ? stringNodes : nodes\n\n if (includeBody) {\n this.traverse(doc.body, as, elements)\n } else {\n for (const child of doc.body.childNodes) {\n this.traverse(child, as, elements)\n }\n }\n\n return { stringNodes, nodes }\n }\n\n /**\n * Считает количество указанных тегов в HTML строке.\n * @param html HTML строка\n * @returns Количество найденных тегов\n */\n async countElements(html: string): Promise<number> {\n const { stringNodes } = await this.parse(html, 'string')\n\n return stringNodes.length\n }\n\n /**\n * Преобразует HTML строку в DOM объект.\n * @param html HTML строка\n * @returns DOM объект\n */\n protected abstract parseFromString(html: string): Promise<Document>\n}\n","'use client'\n\nimport { BaseHTMLParser, type ParserOptions } from './baseHtmlParser'\n\nconst isBrowser = typeof window !== 'undefined'\n//\n// class BrowserHTMLParserError extends Error {\n// constructor(\n// message: string,\n// public originalError?: Error\n// ) {\n// super(message)\n// this.name = 'BrowserHTMLParserError'\n// }\n// }\n\nexport class HTMLParser extends BaseHTMLParser {\n constructor(options?: ParserOptions) {\n super(options)\n }\n\n async parseFromString(html: string): Promise<Document> {\n if (!isBrowser) {\n return Promise.reject()\n }\n\n const parser = new DOMParser()\n return parser.parseFromString(html, 'text/html')\n }\n}\n","'use client'\nimport type { ParserOptions } from './baseHtmlParser'\n\ntype ElementTag = keyof React.JSX.IntrinsicElements\n\ntype HTMLRendererProps<AS extends ElementTag, Props = AS extends ElementTag ? React.ComponentProps<AS> : {}> = {\n html: string\n options?: ParserOptions\n as?: AS\n} & Props\n\nexport const HTMLRenderer = <AS extends ElementTag>({ html, as, ...props }: HTMLRendererProps<AS>) => {\n const Wrapper = as ?? 'div'\n\n // @ts-expect-error abc\n return <Wrapper dangerouslySetInnerHTML={{ __html: html }} {...props} />\n}\n","import { type FieldPath, type FieldValues } from 'react-hook-form'\nimport type { Progress, ProgressField, ProgressType } from './types'\nimport { type ISubscribedField } from '$/shared/hooks'\nimport type { FieldElement } from '$/widgets/fieldMapper'\n\nexport const getFieldsProgress = <TFieldValues extends FieldValues, Type extends ProgressType>(\n progress: Progress<Type>,\n fields: FieldElement<any, any, { progress: ProgressField }>[]\n) => {\n if (!progress.enabled) return null\n\n return fields.map<ISubscribedField<TFieldValues>>((field) => ({\n name: field.args.name as FieldPath<TFieldValues>,\n ...field.args.progress\n }))\n}\n","import { type FieldValues } from 'react-hook-form'\nimport { object, type ZodObject, type ZodRawShape, type ZodTypeAny } from 'zod'\nimport { TypeGuards } from '$/shared/utils'\nimport { zodValidators } from '$/shared/validation'\nimport { type FieldElement } from '$/widgets'\n\nexport type FieldValidation = {\n type: string\n args: Record<string, any>\n}\n\ntype ValidationSchema = {\n [key: string]: (...args: any[]) => ZodTypeAny\n}\n\ntype ValidationConfig<T extends ValidationSchema> = {\n [K in keyof T]: Parameters<T[K]>[0]\n}\n\ntype ValidationReturn<T extends ValidationSchema> = {\n [K in keyof T]: ReturnType<T[K]>\n}\n\ntype BaseValidationKey = keyof typeof zodValidators.base\ntype BaseValidationSchema = typeof zodValidators.base\ntype BaseValidationConfig = ValidationConfig<BaseValidationSchema>\ntype BaseValidationReturn = ValidationReturn<BaseValidationSchema>\n\ntype DadataValidationKey = keyof typeof zodValidators.dadata\ntype DadataValidationSchema = typeof zodValidators.dadata\ntype DadataValidationConfig = ValidationConfig<DadataValidationSchema>\ntype DadataValidationReturn = ValidationReturn<DadataValidationSchema>\n\nconst existDadataSchemas = ['getFioSchema']\n\nconst createFieldSchema = <Schema extends ValidationSchema, Type extends keyof Schema>(\n schema: Schema,\n type: Type,\n props: ValidationConfig<Schema>[Type]\n): ValidationReturn<Schema>[Type] => {\n const validator = schema[type]\n\n if (TypeGuards.isNil(validator)) {\n throw new Error(`validation for type ${String(type)} not found`)\n }\n\n if (!TypeGuards.isFunction(validator)) {\n throw new Error(`Cannot generate ${String(type)} because is not a function`)\n }\n\n return validator(props) as ValidationReturn<Schema>[Type]\n}\n\nconst createBaseFieldSchema = <Type extends BaseValidationKey>(\n type: Type,\n props: BaseValidationConfig[Type]\n): BaseValidationReturn[Type] => {\n return createFieldSchema(zodValidators.base, type, props)\n}\n\nconst createDadataFieldSchema = <Type extends DadataValidationKey>(\n type: Type,\n props: DadataValidationConfig[Type]\n): DadataValidationReturn[Type] => {\n return createFieldSchema(zodValidators.dadata, type, props)\n}\n\nexport const getDynamicSchema = <TFieldValues extends FieldValues>(\n fields: FieldElement<TFieldValues, any, { validation: FieldValidation }>[] | undefined\n): ZodObject<ZodRawShape> => {\n const fieldValidation = fields?.map((field) => ({ name: field.args.name, validation: field.args.validation })) ?? []\n\n const shape = fieldValidation.reduce<ZodRawShape>((acc, field) => {\n const validation = existDadataSchemas.includes(field.validation.type)\n ? createDadataFieldSchema(\n field.validation.type as DadataValidationKey,\n field.validation.args as DadataValidationConfig[DadataValidationKey]\n )\n : createBaseFieldSchema(\n field.validation.type as BaseValidationKey,\n field.validation.args as BaseValidationConfig[BaseValidationKey]\n )\n\n acc[field.name] = validation\n\n return acc\n }, {})\n\n return object(shape)\n}\n","import { QueryClient, QueryClientProvider as QueryClientProviderBase } from '@tanstack/react-query'\n\nexport const queryClient = new QueryClient()\n\nexport const QueryClientProvider = ({ children }: { children: React.ReactNode }) => (\n <QueryClientProviderBase client={queryClient}>{children}</QueryClientProviderBase>\n)\n","'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldValues, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport { widgetIds } from '../model'\nimport {\n type Approvement,\n type ApprovementType,\n type Chips,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport {\n Button,\n type ButtonProps,\n type CheckedState,\n Heading,\n Icon,\n ProgressBar,\n ResponsiveContainer,\n Uncontrolled\n} from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ChipsClasses = {\n root?: string\n icon?: string\n}\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof Uncontrolled.CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <Uncontrolled.CheckboxBase\n aria-label='Согласие на обработку персональных данных'\n classes={classes?.checkbox}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicForm = <AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n classes,\n buttonGroup\n}: DynamicFormProps<AType, CType, PType>) => {\n const { submitCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section id={widgetIds.form} data-test-id={widgetIds.form} className={cn('w-full', classes?.root)}>\n <ResponsiveContainer\n className={cn(\n '!max-w-[636px] border-warm-grey-200 px-4 desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n bottomContent={<HTMLRenderer html={progress.subtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div className='mob-body-regular-m flex flex-col items-start justify-center gap-4'>\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div className='flex w-full flex-col items-center justify-center gap-4 desktop:flex-row'>\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n","'use client'\nimport { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps, type CheckedState, Dialog, Uncontrolled } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof Uncontrolled.CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<AType extends ApprovementType> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <Uncontrolled.CheckboxBase\n aria-label='Согласие на обработку персональных данных'\n classes={classes?.checkbox}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n buttonGroup,\n ...props\n}: DynamicFormDialogProps<AType>) => {\n const { submitCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit)} className='flex flex-col gap-6'>\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n","import { type StatusConfig, type StatusVariant } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const statusConfig = (): Record<StatusVariant, StatusConfig> => {\n return {\n approve: {\n icon: {\n element: <Icon name='status/iconMark' />,\n bg: 'bg-color-positive-light'\n },\n title: 'Ваша заявка отправлена',\n description: (\n <>\n В ближайшее время с Вами свяжутся <br /> специалисты нашего Банка\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n },\n repeated: {\n icon: {\n element: <Icon name='status/iconUser' />,\n bg: 'bg-color-positive-light'\n },\n title: 'Мы вас узнали',\n description: (\n <>\n Решение по прошлой заявке ещё активно. <br />\n Возвращайтесь к нам позже\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n },\n error: {\n icon: {\n element: <Icon name='status/iconRetry' />,\n bg: 'bg-color-warning-light'\n },\n title: 'Что-то пошло не так',\n description: (\n <>\n Обновите страницу или попробуйте <br /> снова через 5 минут\n </>\n ),\n button: {\n text: 'Обновить страницу'\n }\n },\n reject: {\n icon: {\n element: <Icon name='status/badSmile' />,\n bg: 'bg-color-negative-light'\n },\n title: 'Нам очень жаль',\n description: (\n <>\n К сожалению, сейчас мы не можем <br /> принять вашу заявку\n </>\n ),\n button: {\n text: 'Вернуться на главную'\n }\n }\n }\n}\n","import { cn } from '../../shared/utils'\nimport { statusConfig, type StatusVariant } from './model'\nimport { Button, Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport interface FallbacksViewProps {\n status: StatusVariant\n navigationFn: (...args: unknown[]) => unknown\n}\n\nexport const FallbacksView = ({ status, navigationFn }: FallbacksViewProps) => {\n return (\n <div className='flex flex-col'>\n <ResponsiveContainer className='flex flex-col justify-center'>\n <div className='mt-32 flex w-full flex-col items-center gap-8 desktop:gap-12'>\n <span\n className={cn(\n 'flex size-16 items-center justify-center rounded-full bg-color-positive-light',\n `${statusConfig()[status].icon.bg}`\n )}\n >\n {statusConfig()[status].icon.element}\n </span>\n <div className='flex flex-col items-center gap-2 text-center desktop:gap-6'>\n <Heading as='h2'>{statusConfig()[status].title}</Heading>\n <p className='desk-body-regular-l text-color-dark'>{statusConfig()[status].description}</p>\n </div>\n <Button size='lg' className='w-full max-w-[328px] desktop:desk-body-regular-l desktop:w-[256px]' onClick={navigationFn}>\n {statusConfig()[status].button.text}\n </Button>\n </div>\n </ResponsiveContainer>\n </div>\n )\n}\n","import type { Breadcrumb as BreadcrumbType } from './hooks'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n breadcrumb: BreadcrumbType\n}\n\nexport const Breadcrumb = ({ breadcrumb, className, ...props }: BreadcrumbProps) => (\n <a href={breadcrumb.path} className={cn('desk-body-regular-m', className)} {...props}>\n {breadcrumb.label}\n </a>\n)\n","import { type Breadcrumb } from './types'\n\nexport const defaultBreadcrumbs: Breadcrumb[] = [\n {\n label: 'Главная',\n path: 'https://sovcombank.ru/apply/credit/kredit-na-kartu/'\n },\n {\n label: 'Накопительный счет ',\n path: 'https://sovcombank.ru/apply/nakopitelnye-scheta/'\n },\n {\n label: 'В Тольятти',\n disabled: true\n }\n]\n","import { useMemo, useRef, useState } from 'react'\nimport { Breadcrumb } from './Breadcrumb'\nimport { type Breadcrumb as BreadcrumbType, defaultBreadcrumbs, type UseBreadcrumbsOptions } from './hooks'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbsClasses = {\n root?: string\n separator?: string\n breadcrumb?: string\n}\n\ntype BreadcrumbsProps = UseBreadcrumbsOptions & {\n /**\n * произвольный сепаратор, разделяющий элементы\n */\n separator?: React.ReactElement | string\n /**\n * указывает, сколько элементов отображать перед/после сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили компонента\n */\n classes?: BreadcrumbsClasses\n /**\n * Массив хлебных крошек\n */\n breadcrumbs: BreadcrumbType[]\n}\n\nconst renderBreadcrumbs = (\n breadcrumbs: BreadcrumbType[],\n separator: BreadcrumbsProps['separator'],\n classes?: BreadcrumbsClasses['breadcrumb'],\n lastIndex?: number\n) => {\n return breadcrumbs.map((breadcrumb, index) => {\n const isLast = index === lastIndex\n\n return (\n <div key={breadcrumb.label} className='flex items-center gap-x-1'>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(classes, {\n 'pointer-events-none text-color-primary-disabled': isLast,\n 'text-color-blue-grey-600': breadcrumb.disabled\n })}\n />\n {index !== breadcrumbs.length - 1 && separator}\n </div>\n )\n })\n}\n\nexport const Breadcrumbs = ({ separator, ellipsis, classes, breadcrumbs = defaultBreadcrumbs }: BreadcrumbsProps) => {\n const [hiddenCrumbsOpen, setHiddenCrumbsOpen] = useState<boolean>(false)\n\n const hiddenCrumbsRef = useRef<HTMLUListElement>(null)\n\n useClickOutside(hiddenCrumbsRef, () => setHiddenCrumbsOpen(false))\n\n // separated crumbs while ellipsis provided\n const { first, middle, last } = useMemo(() => {\n let first: BreadcrumbType[] = []\n let middle: BreadcrumbType[] = []\n let last: BreadcrumbType[] = []\n\n if (ellipsis) {\n first = breadcrumbs.slice(0, ellipsis)\n middle = breadcrumbs.slice(ellipsis, breadcrumbs.length - ellipsis)\n last = breadcrumbs.slice(breadcrumbs.length - ellipsis)\n }\n\n return { first, middle, last }\n }, [breadcrumbs, ellipsis])\n\n const separatedElement = separator ?? <Icon name='arrows/arrowRight' className={cn('size-4', classes?.separator)} />\n\n return (\n <div\n className={cn(\n 'flex max-w-[840px] flex-wrap items-center',\n 'gap-x-2 gap-y-1 py-4 text-color-primary-default',\n classes?.root\n )}\n >\n {ellipsis ? (\n // if ellipsis provided, render hidden breadcrumbs\n <>\n {breadcrumbs.length > ellipsis * 2 + 1 ? (\n // if we have more than ellipsis (visible crumbs) + available hidden crumbs\n // render hidden breadcrumbs\n <>\n {renderBreadcrumbs(first, separatedElement, classes?.breadcrumb)}\n {separatedElement}\n {middle.length > 0 && (\n <>\n <div className='relative'>\n <button onClick={() => setHiddenCrumbsOpen(true)}>...</button>\n <ul\n ref={hiddenCrumbsRef}\n className={cn(\n 'invisible absolute max-h-[264px] overflow-y-auto',\n 'w-[280px] rounded-sm bg-color-white',\n 'customScrollbar-y p-1 opacity-0 shadow-sm',\n {\n 'visible opacity-100': hiddenCrumbsOpen\n }\n )}\n >\n {middle.map((breadcrumb) => (\n <li key={breadcrumb.label}>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(\n 'desk-body-regular-l inline-block py-3',\n 'w-full rounded-sm bg-color-white px-2',\n 'text-color-dark hover:bg-color-primary-tr-hover',\n classes?.breadcrumb\n )}\n />\n </li>\n ))}\n </ul>\n </div>\n {separatedElement}\n </>\n )}\n {renderBreadcrumbs(last, separatedElement, classes?.breadcrumb, last.length - 1)}\n </>\n ) : (\n // otherwise render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </>\n ) : (\n // if ellipsis doesn't provided render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </div>\n )\n}\n","import type { Category } from '../../model'\n\nexport enum CategoryActionType {\n ROOT = 'root',\n CURRENT = 'current'\n}\n\nexport type CategoryStore = {\n root: Category\n current: Category\n}\n\nexport type CategoryAction = {\n type: CategoryActionType\n payload: Category\n}\n\nexport type UseCategoryReducerReturn = [CategoryStore, React.Dispatch<CategoryAction>]\n","import { type CategoryAction, CategoryActionType, type CategoryStore } from './types'\n\nexport const reducer = (state: CategoryStore, action: CategoryAction) => {\n switch (action.type) {\n case CategoryActionType.ROOT:\n return {\n ...state,\n root: action.payload\n }\n case CategoryActionType.CURRENT:\n return {\n ...state,\n current: action.payload\n }\n default:\n return state\n }\n}\n","import { useReducer } from 'react'\nimport { reducer } from './reducer'\nimport type { CategoryStore, UseCategoryReducerReturn } from './types'\n\nexport const useCategoryReducer = (initialValue: CategoryStore): UseCategoryReducerReturn => {\n const [state, dispatch] = useReducer(reducer, initialValue)\n\n return [state, dispatch]\n}\n","import type { Category } from '../../model'\nimport { type CategoryAction, CategoryActionType } from './types'\n\nexport const currentCategoryAction = (payload: Category): CategoryAction => ({\n type: CategoryActionType.CURRENT,\n payload\n})\n\nexport const rootCategoryAction = (payload: Category): CategoryAction => ({\n type: CategoryActionType.ROOT,\n payload\n})\n","import { createPortal } from 'react-dom'\nimport { motion } from 'framer-motion'\nimport type { Category } from '../../../../../model'\nimport { Icon } from '$/shared/ui'\n\ntype TabContentProps = React.ComponentProps<typeof motion.div> & {\n categories: Category[]\n}\n\nexport const TabContent = ({ categories, ...props }: TabContentProps) => {\n return createPortal(\n <motion.div\n {...props}\n layout\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n className='absolute z-20 w-full bg-color-white after:absolute after:left-1/2 after:top-[-1px] after:h-[1px] after:w-full after:max-w-[636px] after:-translate-x-1/2 after:bg-color-blue-grey-200 after:content-[\"\"] after:desktop:max-w-[1140px]'\n >\n <div className='mx-auto flex w-full max-w-[1140px] gap-x-[56px] py-10'>\n {categories.map((category) => {\n const CategoryTitle = category.link ? 'a' : 'p'\n\n return (\n <div key={category.title} className='flex flex-col gap-y-6'>\n {category.title && (\n <CategoryTitle\n href={category.link?.href ?? undefined}\n className='flex items-center gap-x-1 text-16 uppercase text-color-primary-default'\n >\n {category.title}\n\n <Icon name='arrows/arrowLink' className='size-6' />\n </CategoryTitle>\n )}\n <ul className='w-[328px]'>\n {category.children.map((child) => (\n <li key={child.title} className='w-full [&:not(:last-child)]:mb-4'>\n <a href={child.link?.href} target={child.link?.target} className='w-full text-16'>\n {child.title}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n })}\n </div>\n </motion.div>,\n /**\n * Нужно для preview, чтобы категории рендерились в iframe\n */\n document.body.querySelector<HTMLIFrameElement>('#modal-preview')?.contentDocument?.body ?? document.body\n )\n}\n","import { forwardRef, memo } from 'react'\nimport { motion } from 'framer-motion'\nimport type { Category } from '../../../model'\nimport { TabContent } from './ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\ntype TabProps = {\n category: Category\n active: boolean\n onActiveTabChange: (active: string | null) => void\n}\n\nconst InnerComponent = forwardRef<HTMLDivElement, TabProps>(({ category, active, onActiveTabChange }, ref) => {\n const rootRef = ref && 'current' in ref ? ref : null\n const triggerClientRect = rootRef?.current?.getBoundingClientRect()\n\n const contentShouldRender = active && !TypeGuards.isArrayEmpty(category.children)\n\n const Button = !category.link ? 'span' : TypeGuards.isStringEmpty(category.link.href) ? 'span' : 'a'\n\n return (\n <motion.div\n ref={ref}\n className={cn(\n 'relative flex cursor-default items-center justify-center py-4 text-color-dark',\n 'after:content=\"\" after:absolute after:bottom-0 after:left-1/2 after:h-[1px]',\n 'after:w-0 after:-translate-x-1/2 after:bg-color-primary-default after:duration-100',\n {\n 'text-color-primary-default': contentShouldRender,\n 'after:w-full': contentShouldRender\n }\n )}\n onMouseEnter={() => onActiveTabChange(category.title!)}\n onMouseLeave={() => onActiveTabChange(null)}\n onFocus={() => onActiveTabChange(category.title!)}\n >\n <Button href={Button === 'a' ? category.link?.href : undefined} className='desk-body-regular-m outline-none'>\n {category.title}\n </Button>\n {contentShouldRender && (\n <TabContent\n categories={category.children}\n style={{\n top: triggerClientRect ? triggerClientRect.top + triggerClientRect.height : 0\n }}\n />\n )}\n </motion.div>\n )\n})\n\nexport const Tab = memo(InnerComponent) as typeof InnerComponent\n","import { memo, useCallback, useRef, useState } from 'react'\nimport { AnimatePresence } from 'framer-motion'\nimport type { Category } from '../../model'\nimport { Tab } from './tab'\n\ntype CategoryTabsProps = {\n categories: Category[]\n}\n\nconst InnerComponent = ({ categories }: CategoryTabsProps) => {\n const [activeTab, setActiveTab] = useState<string | null>(null)\n\n const onActiveTabChange = useCallback((active: string | null) => {\n setActiveTab(active)\n }, [])\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n return (\n <AnimatePresence mode='sync'>\n <div\n ref={triggerRef}\n id='tabs'\n className='relative flex w-full items-center justify-between gap-x-4 border-b border-b-[rgba(234,237,241)]'\n >\n {categories.map((category) => (\n <Tab\n key={category.title}\n ref={triggerRef}\n category={category}\n active={activeTab === category.title}\n onActiveTabChange={onActiveTabChange}\n />\n ))}\n <div className='ml-auto'>Личный кабинет</div>\n </div>\n </AnimatePresence>\n )\n}\n\nexport const CategoryTabs = memo(InnerComponent) as typeof InnerComponent\n","import type { Category } from '../../../model'\nimport { cn } from '$/shared/utils'\n\ntype RootTabProps = React.HTMLAttributes<HTMLDivElement> & {\n category: Category\n selectedCategory: Category\n onCurrentCategoryChange: (category: Category) => void\n onRootCategoryChange: (category: Category) => void\n active: boolean\n}\n\nexport const RootTab = ({\n category,\n selectedCategory,\n onCurrentCategoryChange,\n onRootCategoryChange,\n active,\n ...props\n}: RootTabProps) => {\n return (\n <div\n {...props}\n onClick={() => {\n onCurrentCategoryChange(category.children[0])\n onRootCategoryChange(category)\n }}\n className={cn('group/category relative cursor-default text-color-blue-grey-600 duration-100 hover:text-color-dark', {\n 'text-color-dark': active\n })}\n >\n <span className='desk-body-regular-m'>{category.title}</span>\n {category.children.length > 1 && (\n <div\n className={cn(\n 'absolute right-0 top-full z-10 flex w-max flex-col',\n 'invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100',\n 'rounded-sm p-1'\n )}\n >\n {category.children.map((child) => (\n <span\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onRootCategoryChange(category)\n onCurrentCategoryChange(child)\n }}\n key={child.title}\n className={cn(\n 'desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark',\n {\n 'text-color-primary-default': selectedCategory.title === child.title\n }\n )}\n >\n {child.title}\n </span>\n ))}\n </div>\n )}\n </div>\n )\n}\n","import { currentCategoryAction, rootCategoryAction, useCategoryReducer } from '../../hooks'\nimport type { Category, SeoHeaderHelpers } from '../../model'\nimport { CategoryTabs } from './CategoryTabs'\nimport { RootTab } from './rootTab'\nimport { Icon } from '$/shared/ui'\nimport { createPhoneNumber } from '$/shared/utils'\n\ntype DesktopCategoriesProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nexport const CategoriesDesktop = ({ categories, helpers, phone }: DesktopCategoriesProps) => {\n const [store, dispatch] = useCategoryReducer({ root: categories[0].children[0], current: categories[0].children[0] })\n\n return (\n <div className='mobile:hidden'>\n <div className='flex w-full items-center justify-between gap-x-4 border-b border-b-[rgba(234,237,241)] py-4'>\n <Icon name='brandLogos/logoMain' className='mr-auto w-[130px]' />\n {categories.map((category) => {\n const active = store.root.title === category.title\n\n return (\n <RootTab\n key={category.title}\n category={category}\n selectedCategory={store.current}\n onCurrentCategoryChange={(cat) => dispatch(currentCategoryAction(cat))}\n onRootCategoryChange={(cat) => dispatch(rootCategoryAction(cat))}\n active={active}\n />\n )\n })}\n <div className='h-3.5 w-[1px] rounded-sm bg-color-blue-grey-500' />\n {helpers.map((helper) => (\n <a\n key={helper.title}\n href={helper.link.href}\n className='desk-body-regular-m flex items-center gap-x-1 text-color-blue-grey-600 duration-100 hover:text-color-dark'\n >\n {helper.link.icon && <Icon name={helper.link.icon} className='size-4' />}\n {helper.title}\n </a>\n ))}\n <div className='h-3.5 w-[1px] rounded-sm bg-color-blue-grey-500' />\n <a\n href={`tel:${phone}`}\n className='desk-body-regular-m flex items-center gap-x-1 text-color-blue-grey-600 duration-100 hover:text-color-dark'\n >\n {createPhoneNumber(phone, 'x xxx xxx xx xx')}\n </a>\n </div>\n <CategoryTabs categories={store.current.children} />\n </div>\n )\n}\n","import { type Category } from '../../../model'\nimport { Accordion, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype MenuItemProps = {\n category: Category\n}\n\nexport const MenuItem = ({ category }: MenuItemProps) => (\n <Accordion\n key={category.title}\n label={category.title ?? ''}\n icon={<Icon name='arrows/arrowRight' className='-rotate-90' />}\n classes={{\n root: 'w-full',\n header: {\n trigger: 'py-2 data-[open=false]:bg-color-white',\n label: 'desk-body-regular-m'\n },\n content: cn(\n 'relative',\n 'after:content-\"\" after:absolute after:w-[calc(100%-32px)]',\n 'after:bottom-0 after:left-1/2 after:-translate-x-1/2',\n 'after:h-[1px] after:bg-color-blue-grey-200'\n )\n }}\n >\n <div className='flex flex-col items-start justify-center gap-y-4'>\n {category.children.map((child) => {\n const isLink = Boolean(child.link)\n const Title = isLink ? 'a' : 'p'\n\n return (\n <ul key={child.title} className='w-full list-none p-0'>\n <Title\n href={isLink ? child.link?.href : undefined}\n className='mb-3 flex items-center gap-x-1 text-16 text-color-primary-default'\n >\n {child.title}\n <Icon name='arrows/arrowLink' />\n </Title>\n {child.children.map((innerChild) => (\n <li key={innerChild.title} className='inline-block w-full [&:not(:last-child)]:mb-3'>\n <a href={innerChild.link?.href} className='w-full'>\n {innerChild.title}\n </a>\n </li>\n ))}\n </ul>\n )\n })}\n </div>\n </Accordion>\n)\n","import { useMemo, useState } from 'react'\nimport { motion } from 'framer-motion'\nimport type { Category, SeoHeaderHelpers } from '../../../model'\nimport { MenuItem } from './MenuItem'\nimport { Icon, type SelectItemOption, Uncontrolled } from '$/shared/ui'\nimport { cn, createPhoneNumber, TypeGuards } from '$/shared/utils'\n\nexport type MenuProps = React.ComponentProps<typeof motion.div> & {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nconst getSelectCategories = (categories: Category[]): SelectItemOption[] =>\n categories.map((category) => ({\n value: category.title ?? '',\n label: category.title ?? ''\n }))\n\nexport const Menu = ({ categories, helpers, phone, ...props }: MenuProps) => {\n const selectCategories = getSelectCategories(categories)\n\n const [selected, setSelected] = useState<SelectItemOption | SelectItemOption[] | undefined>(selectCategories[0])\n\n const onCategoryChange = (option?: SelectItemOption | SelectItemOption[]) => {\n if (TypeGuards.isUndefined(option) || TypeGuards.isArray(option)) return\n\n setSelected(option)\n }\n\n const selectedSubCategories = useMemo<Category[]>(() => {\n if (TypeGuards.isUndefined(selected) || TypeGuards.isArray(selected)) return []\n\n return categories.find((category) => category.title === selected.value)?.children ?? []\n }, [selected, categories])\n\n return (\n <motion.div\n {...props}\n className={cn(\n 'absolute z-10 w-full max-w-[calc(636px-32px)]',\n 'absolute left-1/2 top-full bg-color-white p-4',\n '-translate-x-1/2 overflow-x-hidden',\n 'flex flex-col items-center justify-center gap-y-4'\n )}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n >\n <Uncontrolled.SelectBase label='Категория' options={selectCategories} value={selected} onChange={onCategoryChange} />\n <div className='flex w-full flex-col items-center justify-center gap-y-1'>\n {selectedSubCategories.map((subCategory) => {\n if (TypeGuards.isArrayEmpty(subCategory.children)) {\n return (\n <div key={subCategory.title} className='w-full px-4 py-2.5'>\n <a href={subCategory.link?.href} className='desk-body-regular-m inline-block w-full'>\n {subCategory.title}\n </a>\n </div>\n )\n }\n\n return <MenuItem key={subCategory.title} category={subCategory} />\n })}\n </div>\n <div className='h-[1px] w-full bg-color-blue-grey-200' />\n <div className='flex w-full flex-col items-center justify-center gap-y-1'>\n {helpers.map((helper) => (\n <div key={helper.title} className='w-full px-4 py-2.5'>\n <a href={helper.link?.href} className='flex w-full items-center gap-x-1'>\n {helper.link?.icon && <Icon name={helper.link.icon} className='size-4' />}\n {helper.title}\n </a>\n </div>\n ))}\n <div className='w-full px-4 py-2.5'>\n <a href={`tel:${phone}`} className='flex w-full items-center gap-x-1'>\n <Icon name='communication/phone' className='size-4' />\n {createPhoneNumber(phone)}\n </a>\n </div>\n </div>\n </motion.div>\n )\n}\n","import { useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport type { Category, SeoHeaderHelpers } from '../../model'\nimport { Menu } from './menu'\nimport { Icon } from '$/shared/ui'\n\ntype CategoriesMobileProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n phone: string\n}\n\nexport const CategoriesMobile = ({ categories, helpers, phone }: CategoriesMobileProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const containerClientRect = containerRef.current?.getBoundingClientRect()\n\n const [open, setOpen] = useState<boolean>(false)\n\n const onOpenToggle = () => setOpen(!open)\n\n return (\n <div\n ref={containerRef}\n className='relative flex w-full items-center justify-between border-b border-b-blue-grey-500 py-4 desktop:hidden'\n >\n <Icon name='brandLogos/logoMain' className='w-[130px]' />\n <button aria-label='Open menu' type='button' onClick={onOpenToggle} className='h-max w-max'>\n <Icon name={open ? 'general/close' : 'general/menu'} className='size-6 text-color-primary-default' />\n </button>\n\n {open &&\n createPortal(\n <Menu\n categories={categories}\n helpers={helpers}\n phone={phone}\n style={{ top: containerClientRect ? containerClientRect.top + containerClientRect.height : 0 }}\n />,\n /**\n * Нужно для preview, чтобы категории рендерились в iframe\n */\n document.body.querySelector<HTMLIFrameElement>('#modal-preview')?.contentDocument?.body ?? document.body\n )}\n </div>\n )\n}\n","import { ResponsiveContainer } from '../../shared/ui'\nimport { type Breadcrumb, Breadcrumbs } from '../breadcrumbs'\nimport { widgetIds } from '../model'\nimport type { Category, SeoHeaderHelpers } from './model'\nimport { CategoriesDesktop, CategoriesMobile } from './ui'\nimport { useDevice } from '$/shared/hooks'\nimport { capitalize, cn } from '$/shared/utils'\n\nexport type SeoHeaderClasses = {\n root?: string\n}\n\nexport type SeoHeaderProps = {\n categories: Category[]\n helpers: SeoHeaderHelpers[]\n breadcrumbs: Breadcrumb[]\n phone: string\n classes?: SeoHeaderClasses\n}\n\nexport const SeoHeader = ({ categories, helpers, phone, breadcrumbs, classes }: SeoHeaderProps) => {\n const { isMobile } = useDevice()\n\n return (\n <div id={widgetIds.seoHeader} data-test-id={widgetIds.seoHeader} className={cn('w-full bg-color-white', classes?.root)}>\n <ResponsiveContainer className='mx-auto w-full'>\n <CategoriesMobile categories={categories.map((category) => category.children).flat()} helpers={helpers} phone={phone} />\n <CategoriesDesktop categories={categories} helpers={helpers} phone={phone} />\n <Breadcrumbs\n ellipsis={isMobile ? 1 : undefined}\n breadcrumbs={breadcrumbs}\n matcher={(breadcrumb) => ({ label: capitalize(breadcrumb.label).split('-').join(' ') })}\n />\n </ResponsiveContainer>\n </div>\n )\n}\n\nexport default SeoHeader\n","import type { FieldValues } from 'react-hook-form'\nimport { z } from 'zod'\nimport type { CalculatorViewProps } from '../CalculatorView'\nimport type { InfoListItemMode } from '../ui'\nimport type { CalculatorSuffix, ValueWithFormula } from './types'\nimport { getDynamicSchema } from '@/shared/utils'\n\nexport const isFormula = (value: ValueWithFormula | string): value is ValueWithFormula => {\n return typeof value !== 'string' && 'formula' in value\n}\n\nexport const formatWithIntl = (suffix: CalculatorSuffix, value: number) => {\n let calculationValue = value\n\n const options: Intl.NumberFormatOptions = {\n style: suffix\n }\n\n switch (suffix) {\n case 'currency':\n options.currency = 'RUB'\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 0\n break\n\n case 'percent':\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 1\n calculationValue = calculationValue / 100\n break\n default:\n return null\n }\n\n const formatter = new Intl.NumberFormat('ru-RU', options)\n return formatter.format(calculationValue)\n}\n\nexport const formatValueToRenderInfoItem = (renderMode: InfoListItemMode, value: string) => {\n switch (renderMode) {\n case 'text':\n return value\n default:\n return formatWithIntl(renderMode, Number(value))\n }\n}\n\nexport const getCalculatorSchema = <T extends FieldValues>(\n props: CalculatorViewProps<T>['calculatorFieldsConfig']['fieldsGroup']\n) => {\n const groups = Object.values(props)\n\n return groups.reduce<z.ZodObject<any>>((acc, item) => acc.merge(getDynamicSchema(item.fields)), z.object({}))\n}\n","import { TypeGuards } from '../../../shared/utils'\nimport type { InfoListItemDTO, InfoListItemProps } from '../ui'\nimport type { CalculatorVariables } from './types'\nimport { isFormula } from './utils'\n\nconst validateFormula = (formula: string, variables: CalculatorVariables) => {\n const variablesInFormula = formula.match(/[a-zA-Z_$][a-zA-Z0-9_$]*/g) || []\n const missingVariables = variablesInFormula.filter((varName) => !(varName in variables))\n\n if (missingVariables.length > 0) {\n return ''\n // throw new Error(`Отсутствуют переменные для калькулятора: ${missingVariables.join(', ')}`) 12 + 14 / select1\n }\n\n return formula\n}\n\nexport const evaluateFormula = (formula: string, variables: CalculatorVariables): string => {\n const entries = Object.entries(variables).map(([key, value]) => [key, !TypeGuards.isNil(value) ? value : '1'])\n\n const variablesKeys = entries.map(([key]) => key)\n const variablesValues = entries.map(([, value]) => value)\n\n const validatedFormula = validateFormula(formula, Object.fromEntries(entries))\n\n const replaceVariables = new Function(...variablesKeys, `return ${validatedFormula};`)\n\n const replaceResult: number = replaceVariables(...variablesValues.map(Number))\n\n if (Number.isNaN(Number(replaceResult))) {\n return '0'\n }\n\n return replaceResult.toString()\n}\n\nexport const formatInfoList = (list: InfoListItemDTO[], variables: CalculatorVariables): InfoListItemProps[] => {\n return list.map((item) => {\n return {\n ...item,\n value: isFormula(item.value) ? evaluateFormula(item.value.formula, variables) : item.value\n }\n })\n}\n","import { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoHeadClasses = {\n wrapper?: string\n title?: string\n subtitle?: string\n}\n\nexport interface CalculatorInfoHeadProps {\n title?: string\n subtitle?: string\n classes?: CalculatorInfoHeadClasses\n}\n\nexport const CalculatorInfoHead = ({ subtitle, title, classes }: CalculatorInfoHeadProps) => {\n return (\n <>\n {(title || subtitle) && (\n <div className={cn('flex flex-col gap-2', classes?.wrapper)}>\n {title && (\n <Heading as='h3' className={classes?.title}>\n {title}\n </Heading>\n )}\n {subtitle && <div className={cn('desk-body-regular-l text-color-dark', classes?.subtitle)}>{subtitle}</div>}\n </div>\n )}\n </>\n )\n}\n","import { type CalculatorSuffix, type CalculatorValue, formatWithIntl } from '../../../model'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatedBlockClasses = {\n wrapper?: string\n description?: string\n value?: string\n}\n\nexport interface CalculatedBlockProps {\n rootDescription: string\n rootValue: CalculatorValue\n suffix: CalculatorSuffix\n classes?: CalculatedBlockClasses\n}\n\nexport const CalculatedBlock = ({ rootDescription, rootValue, suffix, classes }: CalculatedBlockProps) => {\n return (\n <div className={cn('mb-6 flex items-center justify-between gap-6', classes?.wrapper)}>\n <p className={cn('desk-body-regular-l text-color-dark', classes?.description)}>{rootDescription}</p>\n <div className={cn('desk-title-bold-l flex items-center gap-1 text-color-dark mobile:mob-title-bold-l', classes?.value)}>\n {formatWithIntl(suffix, Number(rootValue))}\n </div>\n </div>\n )\n}\n","import { type CalculatorSuffix, type CalculatorValue, formatValueToRenderInfoItem } from '../../../model'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type InfoListItemMode = CalculatorSuffix | 'text'\nexport type InfoListItemColor = 'dark' | 'blue'\n\nexport interface InfoListItemCommon {\n label: string\n mode: InfoListItemMode\n hint?: string\n accent?: boolean\n color?: InfoListItemColor\n withFormula?: boolean\n}\n\nexport interface InfoListItemDTO extends InfoListItemCommon {\n value: CalculatorValue\n}\n\nexport interface InfoListItemProps extends InfoListItemCommon {\n value: string\n}\n\nexport const InfoListItem = ({ hint, value, label, mode, color = 'dark', accent = false }: InfoListItemProps) => {\n return (\n <div className='flex items-center justify-between gap-4'>\n <div className='flex items-center gap-2'>\n <p className='desk-body-regular-l text-color-dark'>{label}</p>\n {hint && (\n <Popover\n withCloseBtn={false}\n triggerElement={<Icon className='size-5 text-icon-blue-grey-600' name='info/helpCircle' />}\n >\n <p>{hint}</p>\n </Popover>\n )}\n </div>\n <span\n className={cn('desk-body-medium-l text-color-dark', {\n '[&&]:desk-title-bold-s': accent,\n 'text-color-primary-default': color === 'blue'\n })}\n >\n {formatValueToRenderInfoItem(mode, value)}\n </span>\n </div>\n )\n}\n","import { useFormContext } from 'react-hook-form'\nimport { type CalculatorSchema, formatInfoList } from '../../../model'\nimport { InfoListItem, type InfoListItemDTO } from './InfoListItem'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoBodyClasses = {\n wrapper?: string\n}\n\nexport interface CalculatedInfoBodyProps {\n infoList: InfoListItemDTO[]\n classes?: CalculatorInfoBodyClasses\n}\n\nexport const CalculatorInfoBody = ({ infoList, classes }: CalculatedInfoBodyProps) => {\n const { watch } = useFormContext<CalculatorSchema>()\n const watchedFields = watch()\n const formattedInfoList = formatInfoList(infoList, watchedFields)\n\n return (\n <div className={cn('mb-6 mt-4 flex flex-col gap-3 border-t border-solid border-blue-grey-500 pt-4', classes?.wrapper)}>\n {formattedInfoList?.map((listItem) => (\n <InfoListItem key={listItem.label} {...listItem} />\n ))}\n </div>\n )\n}\n","import { type AllowedIcons, Icon, Popover, type PopoverProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AssistHintClasses = {\n wrapper?: string\n block?: string\n icon?: string\n description?: string\n}\n\nexport interface AssistHintProps {\n iconName: AllowedIcons\n text: string\n hint?: string\n classes?: AssistHintClasses\n popoverProps?: PopoverProps\n}\n\nexport const AssistHint = ({ iconName, text, hint, classes, popoverProps }: AssistHintProps) => {\n return (\n <div className={cn('mb-6 flex items-center gap-2', classes?.wrapper)}>\n <div className={cn('flex items-center gap-1', classes?.block)}>\n <Icon name={iconName} className={cn('size-6 text-icon-blue-grey-800', classes?.icon)} />\n <p className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}>{text}</p>\n </div>\n\n {hint && (\n <Popover\n withCloseBtn={false}\n triggerElement={<Icon name='info/helpCircle' className='size-5 text-icon-blue-grey-600' />}\n {...popoverProps}\n >\n {hint}\n </Popover>\n )}\n </div>\n )\n}\n","import { ButtonWithHandlers, type ButtonWithHandlersProps } from '../../../../buttonWithHandlers'\nimport { AssistHint, type AssistHintClasses, type AssistHintProps } from './AssistHint'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoFooterClasses = {\n assistHint?: AssistHintClasses\n buttonsWrapper?: string\n bottomDescription?: string\n}\n\nexport interface CalculatorInfoFooterProps {\n assistHint?: AssistHintProps\n buttonsConfig: ButtonWithHandlersProps[]\n bottomDescription?: string\n classes?: CalculatorInfoFooterClasses\n}\n\nexport const CalculatorInfoFooter = ({ assistHint, buttonsConfig, bottomDescription, classes }: CalculatorInfoFooterProps) => {\n return (\n <div>\n {assistHint && <AssistHint {...assistHint} classes={classes?.assistHint} />}\n\n <div className={cn('flex items-center gap-4 mobile:flex-col', classes?.buttonsWrapper)}>\n {buttonsConfig?.map((button, index) => (\n <ButtonWithHandlers key={index} className='w-full' {...button} />\n ))}\n </div>\n {bottomDescription && (\n <p className={cn('desk-body-regular-m mt-4 text-color-secondary', classes?.bottomDescription)}>{bottomDescription}</p>\n )}\n </div>\n )\n}\n","import {\n CalculatedBlock,\n type CalculatedBlockClasses,\n type CalculatedBlockProps,\n type CalculatedInfoBodyProps,\n CalculatorInfoBody,\n type CalculatorInfoBodyClasses,\n CalculatorInfoFooter,\n type CalculatorInfoFooterClasses,\n type CalculatorInfoFooterProps,\n CalculatorInfoHead,\n type CalculatorInfoHeadClasses,\n type CalculatorInfoHeadProps\n} from './ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorInfoClasses = {\n wrapper?: string\n calculatedBlock?: CalculatedBlockClasses\n calculatedInfoHead?: CalculatorInfoHeadClasses\n calculatorInfoBody?: CalculatorInfoBodyClasses\n calculatorInfoFooter?: CalculatorInfoFooterClasses\n}\n\nexport interface CalculatorInfoProps\n extends Omit<CalculatedBlockProps, 'classes'>,\n Omit<CalculatorInfoHeadProps, 'classes'>,\n Omit<CalculatedInfoBodyProps, 'classes'>,\n Omit<CalculatorInfoFooterProps, 'classes'> {\n classes?: CalculatorInfoClasses\n}\n\nexport const CalculatorInfo = ({\n rootDescription,\n bottomDescription,\n rootValue,\n title,\n subtitle,\n buttonsConfig,\n infoList,\n suffix,\n assistHint,\n classes\n}: CalculatorInfoProps) => {\n return (\n <div className={cn('w-full max-w-[456px] rounded-md bg-color-blue-grey-100 p-8 mobile:px-4 mobile:py-8', classes?.wrapper)}>\n <CalculatedBlock\n suffix={suffix}\n rootValue={rootValue}\n rootDescription={rootDescription}\n classes={classes?.calculatedBlock}\n />\n <CalculatorInfoHead title={title} subtitle={subtitle} classes={classes?.calculatedInfoHead} />\n <CalculatorInfoBody infoList={infoList} classes={classes?.calculatorInfoBody} />\n <CalculatorInfoFooter\n assistHint={assistHint}\n buttonsConfig={buttonsConfig}\n bottomDescription={bottomDescription}\n classes={classes?.calculatorInfoFooter}\n />\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { type FieldValues, type Path, type PathValue, useFormContext } from 'react-hook-form'\nimport { TypeGuards } from '../../../../../shared/utils'\nimport { type AdditionalSliderGroupConfig, type SlidersGroupProps } from '../ui'\n\ninterface UseAdditionalSlider<T extends FieldValues> {\n additionalSliderGroupConfig?: AdditionalSliderGroupConfig<T>\n slidersGroupConfig?: SlidersGroupProps<T>\n}\n\nconst ADDITIONAL_MONEY_MINIMUM = 20_000\n\nexport const useAdditionalSlider = <T extends FieldValues>({\n slidersGroupConfig,\n additionalSliderGroupConfig\n}: UseAdditionalSlider<T>) => {\n const [sliderVisible, setSliderVisible] = useState<boolean>(false)\n\n const { watch, setValue } = useFormContext<T>()\n\n const sliderSumGroup = slidersGroupConfig?.fields.find(({ args }) => args.name === 'sum')\n const { args } = sliderSumGroup || {}\n const { max: sumMax, name: sumName, defaultValue: sumDefaultValue } = args || {}\n const sumValue = watch(sumName as Path<T>)\n\n const { min: additionalSliderMin, name: additionalSliderName } = additionalSliderGroupConfig?.args ?? {}\n const additionalSliderValue = watch(additionalSliderName as Path<T>)\n const additionalSliderMax = Number(sumMax ?? 0) - (sumValue ?? sumDefaultValue)\n\n useEffect(() => {\n if (additionalSliderValue > additionalSliderMax) {\n setValue(additionalSliderName as Path<T>, additionalSliderMax as PathValue<T, Path<T>>)\n }\n }, [additionalSliderMax, additionalSliderValue, setValue, sumValue])\n\n useEffect(() => {\n if (Number(sumMax) === sumValue) {\n setSliderVisible(false)\n }\n }, [setSliderVisible, sumMax, sumValue])\n\n const onCheckedChange = () => {\n setSliderVisible((prevValue) => !prevValue)\n\n if (additionalSliderValue <= 0) {\n setValue(additionalSliderName as Path<T>, additionalSliderMin as PathValue<T, Path<T>>)\n }\n\n if (Number(sumMax) === sumValue) {\n setValue((sumName ?? '') as Path<T>, (sumValue - ADDITIONAL_MONEY_MINIMUM) as PathValue<T, Path<T>>)\n setValue(additionalSliderName as Path<T>, additionalSliderMin as PathValue<T, Path<T>>)\n }\n }\n\n return {\n sliderVisible,\n setSliderVisible,\n sumMax,\n sumName,\n sumDefaultValue,\n sumValue,\n additionalSliderMax,\n onCheckedChange,\n sliderSumExist: !TypeGuards.isObjectEmpty(sliderSumGroup?.args),\n sliderSumCorrectType: sliderSumGroup?.args.componentType === 'algorithmic' || sliderSumGroup?.args.componentType === 'step'\n }\n}\n","import type { ModalContentVariant } from '../../../model'\nimport { useBoolean } from '$/shared/hooks'\nimport { Modal, type ModalProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorModalClasses = {\n wrapper?: string\n description?: string\n button?: string\n}\n\nexport interface CalculatorModalProps {\n triggerText: string\n contentVariant: ModalContentVariant\n modalTitle?: string\n description?: string\n classes?: CalculatorModalClasses\n modalProps?: ModalProps\n}\n\nconst renderModalContent = (contentVariant: ModalContentVariant) => {\n switch (contentVariant) {\n case 'content1':\n return <div>content 1</div>\n case 'content2':\n return <div>content 2</div>\n }\n}\n\nexport const CalculatorModal = ({\n triggerText,\n modalTitle,\n description,\n classes,\n modalProps,\n contentVariant\n}: CalculatorModalProps) => {\n const [isModalOpen, modalSetter] = useBoolean(false)\n\n return (\n <div className={cn('flex flex-col gap-4 rounded-sm bg-color-blue-grey-100 p-4', classes?.wrapper)}>\n {description && <p className={cn('desk-body-regular-l text-color-tetriary', classes?.description)}>{description}</p>}\n <button\n onClick={() => modalSetter(true)}\n className={cn(\n 'desk-body-regular-l w-max cursor-pointer text-color-primary-default underline underline-offset-4',\n classes?.button\n )}\n >\n {triggerText}\n </button>\n <Modal title={modalTitle} isModalOpen={isModalOpen} closeModal={() => modalSetter(false)} {...modalProps}>\n {renderModalContent(contentVariant)}\n </Modal>\n </div>\n )\n}\n","import { type FieldValues, useFormContext } from 'react-hook-form'\nimport { type FieldElementWithoutControl, FieldMapper } from '../../../../fieldMapper'\nimport type { FieldValidation } from '@/shared/utils'\nimport { type SliderAdditionalProps } from '$/shared/ui/formElements/uncontrolled/slider'\n\nexport type ValidationField = { validation: FieldValidation }\n\nexport interface SelectGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SelectControl', ValidationField>[]\n}\n\nexport interface CheckboxGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'CheckboxControl', ValidationField>[]\n}\n\ntype RadioGroupFields<T extends FieldValues> = FieldElementWithoutControl<\n T,\n 'RadioGroupTabControl' | 'RadioGroupControl' | 'RadioGroupCardControl',\n ValidationField\n>[]\n\nexport interface RadioGroupProps<T extends FieldValues> {\n fields: RadioGroupFields<T>\n}\n\nexport interface SlidersGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SliderControl', ValidationField>[]\n}\n\nexport interface SwitchGroupProps<T extends FieldValues> {\n fields: FieldElementWithoutControl<T, 'SwitchControl', ValidationField>[]\n}\n\nexport interface AdditionalSliderGroupConfig<T extends FieldValues> {\n args: SliderAdditionalProps<T>\n type: 'SliderControl'\n}\n\nexport type FieldsGroupProps<T extends FieldValues> =\n | SelectGroupProps<T>\n | CheckboxGroupProps<T>\n | RadioGroupProps<T>\n | SlidersGroupProps<T>\n | SwitchGroupProps<T>\n\nexport const FieldsGroup = <T extends FieldValues>({ fields }: FieldsGroupProps<T>) => {\n const { control } = useFormContext<T>()\n\n return <FieldMapper control={control} fields={fields} />\n}\n","import { type FieldValues, useFormContext } from 'react-hook-form'\nimport { useAdditionalSlider } from '../hooks'\nimport type { AdditionalSliderGroupConfig, SlidersGroupProps } from './FieldsGroup'\nimport { Controlled, Uncontrolled } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type AdditionalSliderClasses = {\n wrapper?: string\n block?: string\n //TODO: add reexport to classes for form elements (checkbox, switch, input, etc.)\n // slider: SliderBaseClasses\n // switch?: SwitchBaseClasses\n}\n\ninterface AdditionalSliderProps<T extends FieldValues> {\n additionalSliderGroupConfig: AdditionalSliderGroupConfig<T>\n slidersGroupConfig: SlidersGroupProps<T>\n classes?: AdditionalSliderClasses\n}\n\nexport const AdditionalSlider = <T extends FieldValues>({\n slidersGroupConfig,\n additionalSliderGroupConfig,\n classes\n}: AdditionalSliderProps<T>) => {\n const { control } = useFormContext<T>()\n\n const { sliderVisible, additionalSliderMax, onCheckedChange } = useAdditionalSlider({\n slidersGroupConfig: slidersGroupConfig,\n additionalSliderGroupConfig: additionalSliderGroupConfig\n })\n\n if (TypeGuards.isNil(additionalSliderGroupConfig?.args) || !additionalSliderGroupConfig?.args) return null\n\n return (\n <div className={cn('flex flex-col gap-4', classes?.wrapper)}>\n <div className={cn('inline-flex items-center gap-2', classes?.block)}>\n <Uncontrolled.SwitchBase checked={sliderVisible} onCheckedChange={onCheckedChange} />\n <p className='desk-body-regular-l'>Хочу получить деньги дополнительно</p>\n </div>\n {sliderVisible && (\n <Controlled.SliderControl\n {...additionalSliderGroupConfig.args}\n control={control}\n componentType='algorithmic'\n suffix='currency'\n defaultValue={additionalSliderGroupConfig?.args.min}\n max={additionalSliderMax}\n />\n )}\n </div>\n )\n}\n","import { type FieldValues } from 'react-hook-form'\nimport { useAdditionalSlider } from './hooks'\nimport {\n AdditionalSlider,\n type AdditionalSliderGroupConfig,\n CalculatorModal,\n type CalculatorModalClasses,\n type CalculatorModalProps,\n type CheckboxGroupProps,\n type RadioGroupProps,\n type SelectGroupProps,\n type SlidersGroupProps,\n type SwitchGroupProps\n} from './ui'\nimport { FieldsGroup } from './ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type CalculatorFieldsClasses = {\n rootFieldsWrapper?: string\n selectFieldsWrapper?: string\n checkboxFieldsWrapper?: string\n switchFieldsWrapper?: string\n modalClasses?: CalculatorModalClasses\n}\n\nexport interface CalculatorFieldsProps<T extends FieldValues> {\n classes?: CalculatorFieldsClasses\n modalConfig?: CalculatorModalProps\n fieldsGroup: {\n selectGroupConfig?: SelectGroupProps<T>\n slidersGroupConfig?: SlidersGroupProps<T>\n radioGroupTabConfig?: RadioGroupProps<T>\n checkboxGroupConfig?: CheckboxGroupProps<T>\n radioGroupConfig?: RadioGroupProps<T>\n radioGroupCardConfig?: RadioGroupProps<T>\n switchGroupConfig?: SwitchGroupProps<T>\n additionalSliderGroupConfig?: AdditionalSliderGroupConfig<T> & { fields: any[] }\n }\n}\n\n//TODO: Переписать лаконично убрать дубляж\n// type BaseFieldsGroup<Fields> = {\n// fields: Fields\n// }\n// const hasFields = <T extends BaseFieldsGroup<T>>(groupConfig: T) => groupConfig && !TypeGuards.isArrayEmpty(groupConfig?.fields)\n\nexport const CalculatorFields = <T extends FieldValues>({ modalConfig, fieldsGroup, classes }: CalculatorFieldsProps<T>) => {\n const { sliderSumExist, sliderSumCorrectType } = useAdditionalSlider({\n slidersGroupConfig: fieldsGroup.slidersGroupConfig,\n additionalSliderGroupConfig: fieldsGroup.additionalSliderGroupConfig\n })\n\n return (\n <div className={cn('flex flex-1 flex-col gap-6 mobile:w-full desktop:gap-8', classes?.rootFieldsWrapper)}>\n {modalConfig?.triggerText && modalConfig?.contentVariant && (\n <CalculatorModal classes={classes?.modalClasses} {...modalConfig} />\n )}\n {fieldsGroup?.selectGroupConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.selectGroupConfig?.fields) && (\n <div className={cn('flex flex-col gap-4', classes?.selectFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.selectGroupConfig} />\n </div>\n )}\n {fieldsGroup?.slidersGroupConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.slidersGroupConfig?.fields) && (\n <FieldsGroup {...fieldsGroup?.slidersGroupConfig} />\n )}\n {fieldsGroup?.radioGroupTabConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.radioGroupTabConfig?.fields) && (\n <FieldsGroup {...fieldsGroup?.radioGroupTabConfig} />\n )}\n {fieldsGroup?.checkboxGroupConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.checkboxGroupConfig?.fields) && (\n <div className={cn('flex flex-col gap-4', classes?.checkboxFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.checkboxGroupConfig} />\n </div>\n )}\n {fieldsGroup?.radioGroupConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.radioGroupConfig?.fields) && (\n <FieldsGroup {...fieldsGroup?.radioGroupConfig} />\n )}\n {fieldsGroup?.radioGroupCardConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.radioGroupCardConfig?.fields) && (\n <FieldsGroup {...fieldsGroup?.radioGroupCardConfig} />\n )}\n {fieldsGroup?.switchGroupConfig && !TypeGuards.isArrayEmpty(fieldsGroup?.switchGroupConfig?.fields) && (\n <div className={cn('flex flex-col gap-4', classes?.switchFieldsWrapper)}>\n <FieldsGroup {...fieldsGroup?.switchGroupConfig} />\n </div>\n )}\n {fieldsGroup.additionalSliderGroupConfig?.args.enabled &&\n fieldsGroup.slidersGroupConfig &&\n fieldsGroup.additionalSliderGroupConfig &&\n sliderSumExist &&\n sliderSumCorrectType && (\n <AdditionalSlider\n slidersGroupConfig={fieldsGroup.slidersGroupConfig}\n additionalSliderGroupConfig={fieldsGroup.additionalSliderGroupConfig}\n />\n )}\n </div>\n )\n}\n","import { type Dispatch, memo, type SetStateAction } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport type CalculatorTabsClasses = {\n wrapper?: string\n tab?: string\n}\n\nexport interface CalculatorTab {\n name: string\n label: string\n}\n\nexport type CalculatorTabValue = CalculatorTab['name']\n\nexport interface CalculatorTabsProps {\n calculatorTabs?: CalculatorTab[]\n activeCalculator: CalculatorTabValue\n setActiveCalculator: Dispatch<SetStateAction<CalculatorTabValue>>\n classes?: CalculatorTabsClasses\n}\n\nexport const CalculatorTabs = memo(({ calculatorTabs, activeCalculator, setActiveCalculator, classes }: CalculatorTabsProps) => {\n return (\n <div className={cn('mb-8 flex items-center gap-4', classes?.wrapper)}>\n {calculatorTabs?.map(({ name, label }) => (\n <button\n key={name}\n onClick={() => setActiveCalculator(name)}\n className={cn(\n 'mob-body-regular-m text-nowrap rounded-sm bg-color-blue-grey-100 px-3 py-1.5 text-color-secondary outline-1 outline-offset-4 outline-transparent desktop:desk-body-regular-l focus:outline-primary-focus desktop:px-4 desktop:py-3',\n { 'bg-icon-primary-default text-color-white': activeCalculator === name },\n classes?.tab\n )}\n >\n {label}\n </button>\n ))}\n </div>\n )\n})\n","import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', JSON.stringify(watchedFields))\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { cn } from '../../shared/utils'\nimport { widgetIds } from '../model'\nimport { CalculatorView, type CalculatorViewClasses, type CalculatorViewProps } from './CalculatorView'\nimport { CalculatorTabs, type CalculatorTabsClasses, type CalculatorTabValue } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport type CalculatorClasses = {\n root?: string\n container?: string\n headline?: string\n wrapper?: string\n calculatorView?: CalculatorViewClasses\n calculatorTabs?: CalculatorTabsClasses\n}\n\nexport interface CalculatorProps {\n headline: string\n calculators: CalculatorViewProps[]\n classes?: CalculatorClasses\n}\n\nexport const Calculator = ({ calculators, headline, classes }: CalculatorProps) => {\n const shouldShowTabs = calculators.length > 1\n\n const [activeCalculator, setActiveCalculator] = useState<CalculatorTabValue>(shouldShowTabs ? calculators[0]?.name : '')\n\n const calculatorsTabs = useMemo(() => calculators?.map(({ name, label }) => ({ name, label })), [calculators])\n\n const currentCalculatorIndex = shouldShowTabs\n ? calculatorsTabs?.findIndex((tab) => tab.name === activeCalculator) // Активный калькулятор по значению таба\n : 0 // Берем первый калькулятор если табов нет\n\n const currentCalculator = calculators[currentCalculatorIndex]\n\n return (\n <section id={widgetIds.calculator} data-test-id={widgetIds.calculator} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn(classes?.wrapper)}>\n <Heading className={cn('mb-8 desktop:mb-12', classes?.headline)} as='h2'>\n {headline}\n </Heading>\n {shouldShowTabs && (\n <CalculatorTabs\n calculatorTabs={calculatorsTabs}\n activeCalculator={activeCalculator}\n setActiveCalculator={setActiveCalculator}\n classes={classes?.calculatorTabs}\n />\n )}\n\n <CalculatorView\n name={currentCalculator.name}\n label={currentCalculator.label}\n calculatorInfoConfig={currentCalculator.calculatorInfoConfig}\n calculatorFieldsConfig={currentCalculator.calculatorFieldsConfig}\n classes={classes?.calculatorView}\n />\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Calculator\n","import { CustomLink, type CustomLinkProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n list?: string\n customLink?: CustomLinkProps['classes']\n}\n\nexport interface LinksListProps {\n linksList?: CustomLinkProps[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ linksList, classes }: LinksListProps) => {\n return (\n <div className={cn('mt-4 flex flex-wrap items-center gap-4 desktop:mt-12 desktop:gap-8', classes?.list)}>\n {linksList?.map((link, index) => (\n <CustomLink key={index} withUnderline size='md' classes={classes?.customLink} {...link} />\n ))}\n </div>\n )\n}\n","import { ButtonWithHandlers, type ButtonWithHandlersProps } from '../../buttonWithHandlers'\nimport { type Images } from '../model/types'\nimport { LinksList, type LinksListClasses, type LinksListProps } from './LinksList'\nimport { Heading } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type RootContentClasses = {\n wrapper?: string\n textBlock?: string\n heading?: string\n description?: string\n imageMobileWrapper?: string\n imageMobile?: string\n buttonsGroup?: string\n linksList?: LinksListClasses\n}\n\nexport interface RootContentProps extends Omit<LinksListProps, 'classes'> {\n heading: string\n description?: string\n buttonsGroup?: ButtonWithHandlersProps[]\n images: Images\n classes?: RootContentClasses\n}\n\nexport const RootContent = ({ heading, buttonsGroup, description, images, linksList, classes }: RootContentProps) => {\n const withButtons = buttonsGroup && buttonsGroup?.length > 0\n const withLinks = linksList && linksList?.length > 0\n\n return (\n <div className={cn('flex flex-col', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-4 mobile:mb-2', classes?.textBlock)}>\n <Heading as='h2' className={cn(classes?.heading)}>\n {heading}\n </Heading>\n {description && (\n <p\n dangerouslySetInnerHTML={{ __html: description }}\n className={cn('desk-body-regular-l text-color-dark', classes?.description)}\n />\n )}\n </div>\n\n <div className={cn('h-full w-full desktop:hidden', classes?.imageMobileWrapper)}>\n <img src={images?.mobile} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageMobile)} />\n </div>\n\n {withButtons && (\n <div className={cn('mt-2 flex items-center gap-3 mobile:flex-col desktop:mt-8 desktop:gap-8', classes?.buttonsGroup)}>\n {buttonsGroup?.map((button, index) => (\n <ButtonWithHandlers key={index} className='w-full desktop:w-[216px]' {...button} />\n ))}\n </div>\n )}\n\n {withLinks && <LinksList linksList={linksList} classes={classes?.linksList} />}\n </div>\n )\n}\n","import { widgetIds } from '../model'\nimport { RootContent, type RootContentClasses, type RootContentProps } from './ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype InfoBlockClasses = {\n root?: string\n container?: string\n wrapper?: string\n rootContent?: RootContentClasses\n imageDesktopWrapper?: string\n imageDesktop?: string\n}\n\nexport interface InfoBlockProps extends RootContentProps {\n size?: 'sm' | 'md'\n classes?: InfoBlockClasses\n backgroundColor?: BackgroundBannerColors\n}\n\nexport const InfoBlock = (props: InfoBlockProps) => {\n const { size = 'md', backgroundColor = '#F4F8FE', images, classes, ...rest } = props\n\n return (\n <section\n id={widgetIds.infoBlock}\n data-test-id={widgetIds.infoBlock}\n style={{ backgroundColor: backgroundColor }}\n className={cn('py-14', classes?.root)}\n >\n <ResponsiveContainer>\n <div className={cn('flex items-center justify-between gap-11 mobile:flex-col', classes?.container)}>\n <RootContent images={images} classes={classes?.rootContent} {...rest} />\n\n <div\n className={cn('h-[200px] w-full max-w-[432px] mobile:hidden', classes?.imageDesktopWrapper, {\n 'h-[238px]': size === 'md'\n })}\n >\n <img src={images?.desktop} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageDesktop)} />\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InfoBlock\n","import { useState } from 'react'\nimport type { FormStepSetter } from '../types'\n\nexport type UseRatingReturn = {\n selectedRating: number\n hoveredRatings: number\n handleMouseEnter: (index: number) => void\n handleMouseLeave: () => void\n handleSelectRating: (index: number) => void\n}\n\nexport const useRating = (setFormStep: FormStepSetter): UseRatingReturn => {\n const [selectedRating, setSelectedRating] = useState(0)\n const [hoveredRatings, setHoveredRatings] = useState(0)\n\n const handleMouseEnter = (index: number) => {\n setHoveredRatings(index)\n }\n\n const handleMouseLeave = () => {\n setHoveredRatings(selectedRating)\n }\n\n const handleSelectRating = (index: number) => {\n setSelectedRating(index)\n setFormStep('review')\n }\n\n return {\n selectedRating,\n hoveredRatings,\n handleMouseEnter,\n handleMouseLeave,\n handleSelectRating\n }\n}\n","import { z } from 'zod'\nimport { zodValidators } from '$/shared/validation'\n\nexport const userReviewSchema = z.object({\n review: zodValidators.base.getStringSchema({ required: false })\n})\n","import { memo, useEffect, useState } from 'react'\nimport { useObserverWidgets } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const FeedbackTrigger = memo(() => {\n const isObserved = useObserverWidgets({ ids: ['banner'] })\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n setIsVisible(false)\n const timer = setTimeout(() => {\n setIsVisible(true)\n }, 10000)\n\n return () => clearTimeout(timer)\n }, [])\n\n return (\n <div\n className={cn(\n 'invisible flex size-16 items-center justify-center rounded-full bg-color-secondary-default opacity-0 transition-all hover:bg-color-secondary-hover',\n { 'opacity-1 visible': isVisible && !isObserved }\n )}\n >\n <Icon name='general/heart' className='size-7 fill-transparent stroke-white stroke-[3px]' />\n </div>\n )\n})\n","import { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst defaultTitle = 'Спасибо за оценку!'\n\nexport type FinallyClasses = {\n wrapper?: string\n icon?: string\n title?: string\n}\n\nexport interface FinallyProps {\n title?: string\n classes?: FinallyClasses\n}\n\nexport const Finally = ({ title = defaultTitle, classes }: FinallyProps) => {\n return (\n <div className={cn('flex flex-col items-center gap-4 text-center', classes?.wrapper)}>\n <Icon name='status/succesCircle' className={cn(classes?.icon)} />\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '../../../shared/utils'\nimport { type FormStepSetter, type SubmitCallback, type UserReviewSchema, userReviewSchema } from '../model'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, Controlled, type TextareaControlProps } from '$/shared/ui'\nimport { ZodUtils } from '$/shared/validation'\n\nconst defaultTitle = 'Расскажите о впечатлениях'\nconst defaultSubtitle = (\n <>\n Вам нравится сайт банка? <br /> У вас есть предложения по его улучшению?\n </>\n)\n\nexport type UserReviewClasses = {\n form?: string\n textBlock?: string\n title?: string\n subtitle?: string\n textareaClasses?: TextareaControlProps['classes']\n button?: string\n}\n\nexport interface UserReviewProps {\n submitCallback: SubmitCallback\n setFormStep: FormStepSetter\n rating: number\n title?: string\n subtitle?: ReactNode\n classes?: UserReviewClasses\n}\n\nexport const UserReview = ({\n submitCallback,\n rating,\n setFormStep,\n title = defaultTitle,\n subtitle = defaultSubtitle,\n classes\n}: UserReviewProps) => {\n const { control, handleSubmit } = useControlledForm({\n mode: 'onBlur',\n schema: userReviewSchema,\n defaultValues: ZodUtils.getZodDefaults(userReviewSchema)\n })\n\n const onSubmit = async (values: UserReviewSchema) => {\n if (submitCallback) {\n await submitCallback({\n rating,\n pageUrl: window?.location?.href,\n ...values\n })\n setFormStep('finally')\n }\n }\n\n return (\n <form onSubmit={handleSubmit(onSubmit)} className={cn('flex flex-col gap-4', classes?.form)}>\n <div className={cn('flex flex-col gap-2 text-center', classes?.textBlock)}>\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n <p className={cn('desk-body-regular-l', classes?.subtitle)}>{subtitle}</p>\n </div>\n <Controlled.TextareaControl\n control={control}\n name='review'\n label='Поделитесь вашим мнением'\n classes={classes?.textareaClasses}\n />\n <Button type='submit' size='sm' intent='negative' className={cn('w-full', classes?.button)}>\n Отправить\n </Button>\n </form>\n )\n}\n","import type { UseRatingReturn } from '../model'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst ratings = Array(5).fill(0)\nconst defaultTitle = 'Ваше мнение важно для нас!'\nconst defaultSubtitle = 'Пожалуйста, оцените работу сайта, чтобы мы сделали его еще удобнее'\n\nexport type SelectRatingClasses = {\n wrapper?: string\n textBlock?: string\n title?: string\n subtitle?: string\n ratingsWrapper?: string\n ratingBtn?: string\n ratingIcon?: string\n}\n\nexport interface SelectRatingProps {\n title?: string\n subtitle?: string\n classes?: SelectRatingClasses\n}\n\nexport const SelectRating = ({\n handleMouseLeave,\n hoveredRatings,\n selectedRating,\n handleSelectRating,\n handleMouseEnter,\n title = defaultTitle,\n subtitle = defaultSubtitle,\n classes\n}: SelectRatingProps & UseRatingReturn) => {\n return (\n <div className={cn('flex flex-col items-center gap-4', classes?.wrapper)}>\n <div className={cn('flex flex-col gap-2 text-center', classes?.textBlock)}>\n <p className={cn('desk-body-medium-l', classes?.title)}>{title}</p>\n <p className={cn('desk-body-regular-l', classes?.subtitle)}>{subtitle}</p>\n </div>\n\n <div className={cn('flex items-center gap-2', classes?.ratingsWrapper)}>\n {ratings.map((_, index) => (\n <button\n key={index}\n className={cn('size-8', classes?.ratingBtn)}\n onMouseEnter={() => handleMouseEnter(index + 1)}\n onMouseLeave={() => handleMouseLeave()}\n onClick={() => handleSelectRating(index + 1)}\n >\n <Icon\n name='general/heart'\n className={cn('fill-[#b0c0d2] transition-colors duration-12', classes?.ratingIcon, {\n 'fill-secondary-default': index < (hoveredRatings || selectedRating)\n })}\n />\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { useState } from 'react'\nimport { type FormStep, type FormStepSetter, type SubmitCallback, useRating, type UseRatingReturn } from './model'\nimport {\n FeedbackTrigger,\n Finally,\n type FinallyClasses,\n type FinallyProps,\n SelectRating,\n type SelectRatingClasses,\n type SelectRatingProps,\n UserReview,\n type UserReviewClasses,\n type UserReviewProps\n} from './ui'\nimport { Popover, type PopoverProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type RenderFormStep = UserFeedbackProps & {\n formStep: FormStep\n setFormStep: FormStepSetter\n ratingProps: UseRatingReturn\n submitCallback: SubmitCallback\n}\n\nconst renderFormStep = ({ formStep, setFormStep, ratingProps, ...props }: RenderFormStep) => {\n switch (formStep) {\n case 'rating':\n return <SelectRating {...ratingProps} classes={props.classes?.selectRating} {...props.selectRatingStepProps} />\n\n case 'review':\n return (\n <UserReview\n submitCallback={props.submitCallback}\n setFormStep={setFormStep}\n rating={ratingProps.selectedRating}\n classes={props.classes?.userReview}\n {...props.userReviewStepProps}\n />\n )\n\n case 'finally':\n return <Finally classes={props.classes?.finally} {...props.finallyStepProps} />\n }\n}\n\ntype UserFeedbackClasses = {\n root?: string\n wrapper?: string\n selectRating?: SelectRatingClasses\n userReview?: UserReviewClasses\n finally?: FinallyClasses\n}\n\nexport type UserFeedbackProps = {\n submitCallback: SubmitCallback\n selectRatingStepProps?: SelectRatingProps\n userReviewStepProps?: Pick<UserReviewProps, 'title' | 'subtitle'>\n finallyStepProps?: FinallyProps\n classes?: UserFeedbackClasses\n popoverProps?: PopoverProps\n}\n\nexport const UserFeedback = (props: UserFeedbackProps) => {\n const [formStep, setFormStep] = useState<FormStep>('rating')\n const ratingProps = useRating(setFormStep)\n const { classes } = props\n\n return (\n <div className={cn('fixed right-5 top-[80%] z-[1000]', classes?.root)}>\n <Popover\n side='top'\n align='end'\n sideOffset={10}\n withArrow={false}\n withCloseBtn={false}\n classes={{\n content: 'max-w-[330px] w-[330px] p-6'\n }}\n triggerElement={<FeedbackTrigger />}\n {...props?.popoverProps}\n >\n <div className={cn('w-full', classes?.wrapper)}>{renderFormStep({ formStep, setFormStep, ratingProps, ...props })}</div>\n </Popover>\n </div>\n )\n}\n\nexport default UserFeedback\n"],"names":["QueryCache","_a","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","Mutation","Removable","_Mutation_instances","_observers","_mutationCache","_retryer","getDefaultState","observer","x","variables","onContinue","__privateMethod","dispatch_fn","createRetryer","failureCount","error","restored","isPaused","_b","context","_d","_c","data","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","action","reducer","MutationCache","_mutations","_scopes","_mutationId","mutation","__privateWrapper","scope","scopeFor","scopedMutations","index","mutationsWithSameScope","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","result","currentPage","fetchFn","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","queryFnContext2","page","maxPages","addTo","addToStart","addToEnd","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","defaultedOptions","cachedData","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","Banner","lazy","Calculator","DynamicForm","DynamicFormDialog","Footer","Header","InterLinking","LongBanner","SeoHeader","Stepper","UsefulInfo","Benefit","InfoBlock","UserFeedback","WIDGET_LIST_MAP","KEYS_OF_WIDGET_LIST","widgetIds","acc","widget","useButtonHandler","handlerOptions","useCallback","url","target","rel","isClient","widgetId","scrollToElement","dialogId","dialog","ButtonWithHandlers","className","props","handleClick","jsx","Button","cn","itemConfig","cva","BenefitItem","subtitle","title","img","mobileImg","classes","withButton","button","variant","color","isDesktop","useDevice","jsxs","TypeGuards","gridConfig","headline","details","ResponsiveContainer","card","renderContentVariant","PhoneView","createPhoneNumber","logoPath","logoType","Buttons","buttonConfig","primary","secondary","Advantages","items","description","Heading","BannerImageFull","headTitle","buttonsConfig","advantages","images","backgroundColor","isMobile","advantagesExist","Fragment","BannerWithSeparateImg","SocialLinks","socialsLinks","iconName","href","rest","Icon","PhonesBlock","phones","phone","text","NavLinks","column","groupLabel","links","path","label","CustomLink","Copyright","currentYear","FooterLogo","SiteMap","Ligal","isExpanded","setIsExpanded","React","isClamped","setIsClamped","ligalRef","element","prev","ligal","copyright","siteMap","SingleStep","StepperCarousel","currentStepper","visibleIndex","setVisibleIndex","useState","carouselClasses","carouselSlideClasses","CarouselBase","slide","slideIndex","CarouselSlide","StepperTabs","memo","stepperTabs","activeStepper","setActiveStepper","steppers","shouldShowTabs","steppersTabs","useMemo","currentStepperIndex","tab","step","titleConfig","listItemConfig","containerImgConfig","TextItem","intent","popover","Popover","Title","desktopHidden","mobileHidden","TextList","image","isFourItems","isTwoItems","AUTH_PROVIDER_MODE","AuthWrapper","children","isLoading","loaderProps","Loader","EsiaLogo","Links","mainLink","subLink","MobileId","badge","Badge","Esia","renderProvider","esiaConfig","mobileIdConfig","HeadWrapper","AuthProvider","LinksList","ColumnGroup","mobileAccordionProps","Accordion","Column","group","columnsWrapper","rootAccordionProps","defaultOpen","Tabs","tabsNames","activeTab","setActiveTab","tabName","tabIndex","isHtml","entity","isDocuments","isTable","Html","html","accordionConfig","content","transformMobileRows","rows","headings","row","cell","tableConfig","headingsConfig","DesktopHeadings","columnsVariant","desktopRowConfig","DesktopRow","tableVariant","rowIndex","cellIndex","mobileRowConfig","MobileRow","headingsExist","heading","TableBody","formattedRows","Table","iconsMap","iconConfig","Document","size","iconType","Documents","docs","doc","renderEntity","accordionsConfig","htmlDetails","documentsDetails","tableDetails","RenderEntity","tabs","FieldMapper","fields","control","type","args","Component","Controlled","BaseHTMLParser","__publicField","node","as","elements","includeSolidText","recursive","elementNode","elementName","child","includeBody","stringNodes","nodes","isBrowser","HTMLParser","HTMLRenderer","Wrapper","getFieldsProgress","progress","field","existDadataSchemas","createFieldSchema","schema","validator","createBaseFieldSchema","zodValidators","createDadataFieldSchema","getDynamicSchema","shape","validation","queryClient","QueryClientProvider","QueryClientProviderBase","withApprovement","approvement","checked","onCheckedChange","Uncontrolled","chips","submitProps","buttonGroup","submitCallback","defaultValues","ZodUtils","handleSubmit","useControlledForm","fieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","ProgressBar","disabled","createElement","Dialog","statusConfig","FallbacksView","status","navigationFn","Breadcrumb","breadcrumb","defaultBreadcrumbs","renderBreadcrumbs","breadcrumbs","separator","isLast","Breadcrumbs","ellipsis","hiddenCrumbsOpen","setHiddenCrumbsOpen","hiddenCrumbsRef","useRef","useClickOutside","first","middle","last","separatedElement","CategoryActionType","useCategoryReducer","initialValue","dispatch","useReducer","currentCategoryAction","payload","rootCategoryAction","TabContent","categories","createPortal","motion","category","CategoryTitle","InnerComponent","forwardRef","active","onActiveTabChange","ref","rootRef","triggerClientRect","contentShouldRender","Tab","triggerRef","AnimatePresence","CategoryTabs","RootTab","selectedCategory","onCurrentCategoryChange","onRootCategoryChange","CategoriesDesktop","helpers","store","cat","helper","MenuItem","isLink","innerChild","getSelectCategories","Menu","selectCategories","selected","setSelected","onCategoryChange","option","selectedSubCategories","subCategory","CategoriesMobile","containerRef","containerClientRect","open","setOpen","onOpenToggle","capitalize","isFormula","value","formatWithIntl","suffix","calculationValue","formatValueToRenderInfoItem","renderMode","getCalculatorSchema","item","z.object","validateFormula","formula","varName","evaluateFormula","entries","key","variablesKeys","variablesValues","validatedFormula","replaceResult","formatInfoList","list","CalculatorInfoHead","CalculatedBlock","rootDescription","rootValue","InfoListItem","hint","mode","accent","CalculatorInfoBody","infoList","watch","useFormContext","watchedFields","formattedInfoList","listItem","AssistHint","popoverProps","CalculatorInfoFooter","assistHint","bottomDescription","CalculatorInfo","ADDITIONAL_MONEY_MINIMUM","useAdditionalSlider","slidersGroupConfig","additionalSliderGroupConfig","sliderVisible","setSliderVisible","setValue","sliderSumGroup","sumMax","sumName","sumDefaultValue","sumValue","additionalSliderMin","additionalSliderName","additionalSliderValue","additionalSliderMax","useEffect","prevValue","renderModalContent","contentVariant","CalculatorModal","triggerText","modalTitle","modalProps","isModalOpen","modalSetter","useBoolean","Modal","FieldsGroup","AdditionalSlider","CalculatorFields","modalConfig","fieldsGroup","sliderSumExist","sliderSumCorrectType","CalculatorTabs","calculatorTabs","activeCalculator","setActiveCalculator","name","CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","calculatorSchema","formMethods","localStorageActions","calculatedValue","mergedCalcInfoConfig","FormProvider","calculators","calculatorsTabs","currentCalculatorIndex","currentCalculator","linksList","link","RootContent","buttonsGroup","withButtons","withLinks","useRating","setFormStep","selectedRating","setSelectedRating","hoveredRatings","setHoveredRatings","userReviewSchema","FeedbackTrigger","isObserved","useObserverWidgets","isVisible","setIsVisible","timer","defaultTitle","Finally","defaultSubtitle","UserReview","rating","ratings","SelectRating","handleMouseLeave","handleSelectRating","handleMouseEnter","_","renderFormStep","formStep","ratingProps"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|