diff --git a/docs/REGISTRATION_FIELD_KEY.md b/docs/REGISTRATION_FIELD_KEY.md new file mode 100644 index 0000000..e37a784 --- /dev/null +++ b/docs/REGISTRATION_FIELD_KEY.md @@ -0,0 +1,354 @@ +# Registration Field Key для List Single Selection + +## Описание + +Функциональность `registrationFieldKey` позволяет автоматически передавать выбранные значения из list single selection экранов в payload регистрации пользователя при авторизации через email экран. + +## Как это работает + +### 1. Настройка в админке + +Для list экранов с `selectionType: "single"` в админке появляется дополнительное поле **"Ключ поля для регистрации"**. + +В это поле можно указать путь к полю в объекте регистрации, используя точечную нотацию для вложенных объектов. + +**Примеры:** +- `profile.gender` → `{ profile: { gender: "selected-id" } }` +- `profile.relationship_status` → `{ profile: { relationship_status: "selected-id" } }` +- `partner.gender` → `{ partner: { gender: "selected-id" } }` + +### 2. Пример JSON конфигурации + +```json +{ + "id": "gender-screen", + "template": "list", + "title": { + "text": "What is your gender?" + }, + "list": { + "selectionType": "single", + "registrationFieldKey": "profile.gender", + "options": [ + { + "id": "male", + "label": "Male", + "emoji": "👨" + }, + { + "id": "female", + "label": "Female", + "emoji": "👩" + }, + { + "id": "other", + "label": "Other", + "emoji": "🧑" + } + ] + } +} +``` + +### 3. Как данные попадают в регистрацию и сессию + +#### **Передача в сессию (на каждом экране):** + +1. **Пользователь выбирает вариант** на экране (например, "Male" с id "male") +2. **Ответ сохраняется** в `FunnelAnswers` под ключом экрана: `{ "gender-screen": ["male"] }` +3. **При переходе вперед** (нажатие Continue или автопереход): + - Вызывается `buildSessionDataFromScreen()` для текущего экрана + - Создается объект с вложенной структурой: `{ profile: { gender: "male" } }` + - Вызывается `updateSession()` с данными: + ```typescript + { + answers: { "gender-screen": ["male"] }, // Старая логика + profile: { gender: "male" } // Новая логика с registrationFieldKey + } + ``` +4. **Данные отправляются в API** и сохраняются в сессии пользователя + +#### **Передача в регистрацию (при авторизации):** + +1. **При переходе на email экран** вызывается функция `buildRegistrationDataFromAnswers()` +2. **Функция обрабатывает** все list single selection экраны с `registrationFieldKey` +3. **Создается объект** с вложенной структурой из всех экранов: `{ profile: { gender: "male", relationship_status: "single" } }` +4. **При авторизации** этот объект объединяется с базовым payload +5. **Отправляется на сервер** в составе `ICreateAuthorizeRequest` + +### 4. Структура payload регистрации + +**Базовый payload (без registrationFieldKey):** +```typescript +{ + email: "user@example.com", + timezone: "Europe/Moscow", + locale: "en", + source: "funnel-id", + sign: true, + signDate: "2024-01-01T00:00:00.000Z", + feature: "stripe" +} +``` + +**С registrationFieldKey (profile.gender = "male"):** +```typescript +{ + email: "user@example.com", + timezone: "Europe/Moscow", + locale: "en", + source: "funnel-id", + sign: true, + signDate: "2024-01-01T00:00:00.000Z", + feature: "stripe", + profile: { + gender: "male" + } +} +``` + +**С несколькими registrationFieldKey:** +```typescript +{ + email: "user@example.com", + timezone: "Europe/Moscow", + locale: "en", + source: "funnel-id", + sign: true, + signDate: "2024-01-01T00:00:00.000Z", + feature: "stripe", + profile: { + gender: "male", + relationship_status: "single" + }, + partner: { + gender: "female" + } +} +``` + +## Полный пример воронки + +```json +{ + "meta": { + "id": "dating-funnel", + "title": "Dating Profile", + "firstScreenId": "gender" + }, + "screens": [ + { + "id": "gender", + "template": "list", + "title": { "text": "What is your gender?" }, + "list": { + "selectionType": "single", + "registrationFieldKey": "profile.gender", + "options": [ + { "id": "male", "label": "Male", "emoji": "👨" }, + { "id": "female", "label": "Female", "emoji": "👩" } + ] + }, + "navigation": { + "defaultNextScreenId": "relationship-status" + } + }, + { + "id": "relationship-status", + "template": "list", + "title": { "text": "What is your relationship status?" }, + "list": { + "selectionType": "single", + "registrationFieldKey": "profile.relationship_status", + "options": [ + { "id": "single", "label": "Single" }, + { "id": "relationship", "label": "In a relationship" }, + { "id": "married", "label": "Married" } + ] + }, + "navigation": { + "defaultNextScreenId": "partner-gender" + } + }, + { + "id": "partner-gender", + "template": "list", + "title": { "text": "What is your partner's gender?" }, + "list": { + "selectionType": "single", + "registrationFieldKey": "partner.gender", + "options": [ + { "id": "male", "label": "Male", "emoji": "👨" }, + { "id": "female", "label": "Female", "emoji": "👩" } + ] + }, + "navigation": { + "defaultNextScreenId": "email" + } + }, + { + "id": "email", + "template": "email", + "title": { "text": "Enter your email" }, + "emailInput": { + "label": "Email", + "placeholder": "your@email.com" + } + } + ] +} +``` + +**Результат после прохождения воронки:** + +Если пользователь выбрал: +- Gender: Male +- Relationship Status: Single +- Partner Gender: Female +- Email: user@example.com + +Payload регистрации будет: +```typescript +{ + email: "user@example.com", + timezone: "Europe/Moscow", + locale: "en", + source: "dating-funnel", + sign: true, + signDate: "2024-01-01T00:00:00.000Z", + feature: "stripe", + profile: { + gender: "male", + relationship_status: "single" + }, + partner: { + gender: "female" + } +} +``` + +## Ограничения + +1. **Только для single selection** - работает только с `selectionType: "single"` +2. **Только ID опции** - передается именно `id` выбранной опции, а не `label` или `value` +3. **Перезапись значений** - если несколько экранов используют один и тот же ключ, последний перезапишет предыдущий +4. **Обязательный email экран** - данные передаются только при авторизации через email экран + +## Техническая реализация + +### Файлы + +- **types.ts** - добавлено поле `registrationFieldKey` в `ListScreenDefinition` +- **ListScreenConfig.tsx** - UI для настройки ключа в админке +- **registrationHelpers.ts** - утилиты `buildRegistrationDataFromAnswers()` и `buildSessionDataFromScreen()` +- **FunnelRuntime.tsx** - вызывает `buildSessionDataFromScreen()` при переходе вперед и передает в `updateSession()` +- **useAuth.ts** - принимает `registrationData` и объединяет с базовым payload +- **EmailTemplate.tsx** - вызывает `buildRegistrationDataFromAnswers()` и передает в `useAuth` +- **screenRenderer.tsx** - передает `answers` в `EmailTemplate` + +### Функция buildRegistrationDataFromAnswers + +Используется при авторизации для сбора данных со всех экранов воронки: + +```typescript +export function buildRegistrationDataFromAnswers( + funnel: FunnelDefinition, + answers: FunnelAnswers +): RegistrationDataObject { + const registrationData: RegistrationDataObject = {}; + + for (const screen of funnel.screens) { + if (screen.template === "list") { + const listScreen = screen as ListScreenDefinition; + + if ( + listScreen.list.selectionType === "single" && + listScreen.list.registrationFieldKey && + answers[screen.id] && + answers[screen.id].length > 0 + ) { + const selectedId = answers[screen.id][0]; + const fieldKey = listScreen.list.registrationFieldKey; + + // Устанавливаем значение по многоуровневому ключу + setNestedValue(registrationData, fieldKey, selectedId); + } + } + } + + return registrationData; +} +``` + +### Функция buildSessionDataFromScreen + +Используется при переходе вперед для сбора данных с текущего экрана: + +```typescript +export function buildSessionDataFromScreen( + screen: { template: string; id: string; list?: { selectionType?: string; registrationFieldKey?: string } }, + selectedIds: string[] +): RegistrationDataObject { + const sessionData: RegistrationDataObject = {}; + + if (screen.template === "list" && screen.list) { + const { selectionType, registrationFieldKey } = screen.list; + + if ( + selectionType === "single" && + registrationFieldKey && + selectedIds.length > 0 + ) { + const selectedId = selectedIds[0]; + setNestedValue(sessionData, registrationFieldKey, selectedId); + } + } + + return sessionData; +} +``` + +## Best Practices + +1. **Используйте понятные ID** - ID опций должны соответствовать ожидаемым значениям на сервере +2. **Документируйте ключи** - ведите список используемых `registrationFieldKey` для избежания конфликтов +3. **Проверяйте типы** - убедитесь что ID опций соответствуют типам полей в `ICreateAuthorizeRequest` +4. **Тестируйте payload** - проверяйте что данные корректно попадают в регистрацию + +## Примеры использования + +### Простой профиль +```json +{ + "list": { + "selectionType": "single", + "registrationFieldKey": "profile.gender", + "options": [...] + } +} +``` + +### Вложенная структура +```json +{ + "list": { + "selectionType": "single", + "registrationFieldKey": "partner.birthplace.country", + "options": [ + { "id": "US", "label": "United States" }, + { "id": "UK", "label": "United Kingdom" } + ] + } +} +``` + +### Без регистрации (обычный list) +```json +{ + "list": { + "selectionType": "single", + // registrationFieldKey не указан - данные не попадут в регистрацию + "options": [...] + } +} +``` diff --git a/public/funnels/soulmate.json b/public/funnels/soulmate.json index 0c70c03..1719284 100644 --- a/public/funnels/soulmate.json +++ b/public/funnels/soulmate.json @@ -1,95 +1,47 @@ { "meta": { "id": "soulmate", - "title": "Soulmate V1", - "description": "Soulmate", + "title": "Новая воронка", + "description": "Описание новой воронки", "firstScreenId": "onboarding" }, "defaultTexts": { - "nextButton": "Next", - "privacyBanner": "Мы не передаем личную информацию, она остаётся в безопасности и под вашим контролем." + "nextButton": "Continue" }, "screens": [ { "id": "onboarding", - "template": "soulmate", - "header": { - "showBackButton": false, - "show": false - }, + "template": "info", "title": { - "text": "Soulmate Portrait", + "text": "Добро пожаловать!", "show": true, "font": "manrope", "weight": "bold", - "size": "2xl", + "size": "md", "align": "center", "color": "default" }, - "bottomActionButton": { + "subtitle": { + "text": "Это ваша новая воронка. Начните редактирование.", "show": true, - "text": "Continue", - "cornerRadius": "3xl", - "showPrivacyTermsConsent": true + "font": "manrope", + "weight": "regular", + "size": "md", + "align": "center", + "color": "muted" }, "navigation": { "rules": [], "defaultNextScreenId": "gender", "isEndScreen": false }, - "description": { - "text": "Готов увидеть, кто твоя настоящая Родственная душа?", - "font": "manrope", - "weight": "regular", - "size": "md", - "align": "center", - "color": "default" + "icon": { + "type": "emoji", + "value": "🎯", + "size": "lg" }, - "variants": [], - "soulmatePortraitsDelivered": { - "image": "/soulmate-portrait-delivered-male.jpg", - "text": { - "text": "soulmate portraits delivered today", - "font": "inter", - "weight": "medium", - "size": "sm", - "color": "primary" - }, - "avatars": [ - { - "src": "/avatars/male-1.jpg", - "alt": "Male 1" - }, - { - "src": "/avatars/male-2.jpg", - "alt": "Male 2" - }, - { - "src": "/avatars/male-3.jpg", - "alt": "Male 3" - }, - { - "src": "", - "fallbackText": "900+" - } - ] - }, - "textList": { - "items": [ - { - "text": "Всего 2 минуты — и Портрет откроет того, кто связан с тобой судьбой." - }, - { - "text": "Поразительная точность 99%." - }, - { - "text": "Тебя ждёт неожиданное открытие." - }, - { - "text": "Осталось лишь осмелиться взглянуть." - } - ] - } + "variables": [], + "variants": [] }, { "id": "gender", @@ -99,7 +51,7 @@ "show": true }, "title": { - "text": "Какого ты пола?", + "text": "Новый экран", "show": true, "font": "manrope", "weight": "bold", @@ -108,7 +60,7 @@ "color": "default" }, "subtitle": { - "text": "Все начинается с тебя! Выбери свой пол.", + "text": "Добавьте детали справа", "show": true, "font": "manrope", "weight": "medium", @@ -123,286 +75,36 @@ }, "navigation": { "rules": [], - "defaultNextScreenId": "relationship-status", + "defaultNextScreenId": "example", "isEndScreen": false }, "list": { "selectionType": "single", "options": [ - { - "id": "female", - "label": "FEMALE", - "emoji": "🩷", - "disabled": false - }, { "id": "male", - "label": "MALE", - "emoji": "💙", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "relationship-status", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Вы сейчаc?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "subtitle": { - "text": "Это нужно, чтобы портрет и советы были точнее.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "analysis-target", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "in_relationship", - "label": "В отношениях", + "label": "male", "disabled": false }, { - "id": "single", - "label": "Свободны", + "id": "female", + "label": "female", "disabled": false - }, - { - "id": "after_breakup", - "label": " После расставания", - "disabled": false - }, - { - "id": "its_complicated", - "label": "Всё сложно", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "analysis-target", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Кого анализируем?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-age", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "current_partner", - "label": "Текущего партнёра", - "disabled": false - }, - { - "id": "crush", - "label": "Человека, который нравится", - "disabled": false - }, - { - "id": "ex_partner", - "label": "Бывшего", - "disabled": false - }, - { - "id": "future_date", - "label": "Будущую встречу", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-age", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Возраст текущего партнера", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [ - { - "conditions": [ - { - "screenId": "partner-age", - "conditionType": "options", - "operator": "includesAny", - "optionIds": [ - "under_29" - ], - "values": [] - } - ], - "nextScreenId": "partner-age-detail" } ], - "defaultNextScreenId": "partner-ethnicity", - "isEndScreen": false + "registrationFieldKey": "profile.gender" }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "under_29", - "label": "До 29", - "disabled": false - }, - { - "id": "from_30_to_39", - "label": "30–39", - "disabled": false - }, - { - "id": "from_40_to_49", - "label": "40–49", - "disabled": false - }, - { - "id": "from_50_to_59", - "label": "50–59", - "disabled": false - }, - { - "id": "over_60", - "label": "60+", - "disabled": false - } - ] - }, - "variants": [ - { - "conditions": [ - { - "screenId": "analysis-target", - "operator": "includesAny", - "optionIds": [ - "current_partner" - ] - } - ], - "overrides": {} - }, - { - "conditions": [ - { - "screenId": "analysis-target", - "operator": "includesAny", - "optionIds": [ - "crush" - ] - } - ], - "overrides": { - "title": { - "text": "Возраст человека, который нравится" - } - } - }, - { - "conditions": [ - { - "screenId": "analysis-target", - "operator": "includesAny", - "optionIds": [ - "ex_partner" - ] - } - ], - "overrides": { - "title": { - "text": "Возраст бывшего" - } - } - }, - { - "conditions": [ - { - "screenId": "analysis-target", - "operator": "includesAny", - "optionIds": [ - "future_date" - ] - } - ], - "overrides": { - "title": { - "text": "Возраст будущего партнёра" - } - } - } - ] + "variants": [] }, { - "id": "partner-age-detail", + "id": "example", "template": "list", "header": { "showBackButton": true, "show": true }, "title": { - "text": "Уточните чуть точнее", + "text": "Новый экран", "show": true, "font": "manrope", "weight": "bold", @@ -411,7 +113,7 @@ "color": "default" }, "subtitle": { - "text": "Чтобы портрет был максимально похож.", + "text": "Добавьте детали справа", "show": true, "font": "manrope", "weight": "medium", @@ -419,319 +121,6 @@ "align": "left", "color": "default" }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-ethnicity", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "from_18_to_21", - "label": "18–21", - "disabled": false - }, - { - "id": "from_22_to_25", - "label": "22–25", - "disabled": false - }, - { - "id": "from_26_to_29", - "label": "26–29", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-ethnicity", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Этническая принадлежность твоей второй половинки?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-eye-color", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "white", - "label": "White", - "disabled": false - }, - { - "id": "hispanic_latino", - "label": "Hispanic / Latino", - "disabled": false - }, - { - "id": "african_african_american", - "label": "African / African-American", - "disabled": false - }, - { - "id": "asian", - "label": "Asian", - "disabled": false - }, - { - "id": "indian_south_asian", - "label": "Indian / South Asian", - "disabled": false - }, - { - "id": "middle_eastern_arab", - "label": "Middle Eastern / Arab", - "disabled": false - }, - { - "id": "native_american_indigenous", - "label": "Native American / Indigenous", - "disabled": false - }, - { - "id": "no_preference", - "label": "No preference", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-eye-color", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Цвет глаз твоей второй половинки?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-hair-length", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "brown", - "label": "Brown", - "disabled": false - }, - { - "id": "blue", - "label": "Голубые", - "disabled": false - }, - { - "id": "hazel", - "label": "Hazel", - "disabled": false - }, - { - "id": "green", - "label": "Green", - "disabled": false - }, - { - "id": "amber", - "label": "Янтарные", - "disabled": false - }, - { - "id": "gray", - "label": "Серые", - "disabled": false - }, - { - "id": "unknown", - "label": "Не знаю", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-hair-length", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Выберите длину волос", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "subtitle": { - "text": "От неё зависит форма и настроение портрета.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "burnout-support", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "short", - "label": "Короткие", - "disabled": false - }, - { - "id": "medium", - "label": "Средние", - "disabled": false - }, - { - "id": "long", - "label": "Длинные", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "burnout-support", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Когда ты выгораешь, тебе нужно чтобы партнёр", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "burnout-result", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "acknowledged_and_calmed", - "label": "Признал ваше разочарование и успокоил", - "disabled": false - }, - { - "id": "gave_emotional_support", - "label": "Дал эмоциональную опору и безопасное пространство", - "disabled": false - }, - { - "id": "took_over_tasks", - "label": "Перехватил быт/дела, чтобы вы восстановились", - "disabled": false - }, - { - "id": "inspired_with_plan", - "label": "Вдохнул энергию через цель и короткий план действий", - "disabled": false - }, - { - "id": "shifted_to_positive", - "label": "Переключил на позитив: прогулка, кино, смешные истории", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "burnout-result", - "template": "info", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "burnout-result", - "show": false, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "center", - "color": "default" - }, - "subtitle": { - "text": "Такой партнёр **умеет слышать и поддерживать**, а вы — **человек с глубокой душой**, который ценит искренность и силу настоящих чувств.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "center", - "color": "default" - }, "bottomActionButton": { "show": true, "cornerRadius": "3xl", @@ -742,90 +131,22 @@ "defaultNextScreenId": "birthdate", "isEndScreen": false }, - "icon": { - "type": "image", - "value": "/images/9a720927-20de-4ebc-9b4b-b7589f59567c.png", - "size": "lg" + "list": { + "selectionType": "single", + "options": [ + { + "id": "option-1", + "label": "Вариант 1", + "disabled": false + }, + { + "id": "option-2", + "label": "Вариант 2", + "disabled": false + } + ] }, - "variables": [], - "variants": [ - { - "conditions": [ - { - "screenId": "burnout-support", - "operator": "includesAny", - "optionIds": [ - "acknowledged_and_calmed" - ] - } - ], - "overrides": {} - }, - { - "conditions": [ - { - "screenId": "burnout-support", - "operator": "includesAny", - "optionIds": [ - "gave_emotional_support" - ] - } - ], - "overrides": { - "subtitle": { - "text": "Такой человек создаёт **чувство надёжности**, а вы обладаете мудростью и внутренней зрелостью, выбирая близость и доверие." - } - } - }, - { - "conditions": [ - { - "screenId": "burnout-support", - "operator": "includesAny", - "optionIds": [ - "took_over_tasks" - ] - } - ], - "overrides": { - "subtitle": { - "text": "Такой партнёр готов **подставить плечо** в нужный момент, а вы сильны тем, что умеете **доверять** и **принимать поддержку** — это ваша природная мудрость." - } - } - }, - { - "conditions": [ - { - "screenId": "burnout-support", - "operator": "includesAny", - "optionIds": [ - "inspired_with_plan" - ] - } - ], - "overrides": { - "subtitle": { - "text": "Такой человек **заряжает ясностью** и **мотивирует**, а вы выделяетесь **силой воли** и **стремлением к росту** — вы не боитесь идти вперёд." - } - } - }, - { - "conditions": [ - { - "screenId": "burnout-support", - "operator": "includesAny", - "optionIds": [ - "shifted_to_positive" - ] - } - ], - "overrides": { - "subtitle": { - "text": "Такой партнёр умеет **возвращать радость**, а вы показываете свою силу в умении **сохранять лёгкость** и **светлый взгляд** на жизнь." - } - } - } - ] + "variants": [] }, { "id": "birthdate", @@ -835,7 +156,7 @@ "show": true }, "title": { - "text": "Когда ты родился?", + "text": "Новый экран", "show": true, "font": "manrope", "weight": "bold", @@ -844,7 +165,7 @@ "color": "default" }, "subtitle": { - "text": "В момент вашего рождения заложенны глубинные закономерности.", + "text": "Добавьте детали справа", "show": true, "font": "manrope", "weight": "medium", @@ -853,13 +174,13 @@ "color": "default" }, "bottomActionButton": { - "show": false, + "show": true, "cornerRadius": "3xl", "showPrivacyTermsConsent": false }, "navigation": { "rules": [], - "defaultNextScreenId": "nature-archetype", + "defaultNextScreenId": "email", "isEndScreen": false }, "dateInput": { @@ -875,1232 +196,8 @@ "zodiac": { "enabled": true, "storageKey": "userZodiac" - } - }, - "variants": [] - }, - { - "id": "nature-archetype", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Какой природный образ ближе вашему характеру?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "love-priority", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "flower", - "label": "Цветок — нежность, забота, притягательность", - "emoji": "🌹", - "disabled": false - }, - { - "id": "sea", - "label": "Море — глубина, тайна, эмоции", - "emoji": "🌊", - "disabled": false - }, - { - "id": "sun", - "label": "Солнце — энергия, сила, яркость", - "emoji": "🌞️", - "disabled": false - }, - { - "id": "moon", - "label": "Луна — интуиция, чувствительность", - "emoji": "🌙", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "love-priority", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Когда речь о любви, что для вас важнее: сердце или разум?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "love-priority-result", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "follow_heart", - "label": "Доверяю сердцу", - "emoji": "🧡", - "disabled": false - }, - { - "id": "follow_mind", - "label": "Опираюсь на разум", - "emoji": "🧠", - "disabled": false - }, - { - "id": "balance_heart_mind", - "label": "Сочетание сердца и разума", - "emoji": "🎯", - "disabled": false - }, - { - "id": "depends_on_situation", - "label": "Зависит от ситуации", - "emoji": "⚖️", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "love-priority-result", - "template": "info", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Заголовок информации", - "show": false, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "center", - "color": "default" - }, - "subtitle": { - "text": "По нашей статистике **51 % {{gender}} {{zodiac}}** доверяются эмоциям. Но одной чувствительности мало. Мы покажем, какие качества второй половинки дадут тепло и уверенность, и изобразим её портрет.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "center", - "color": "default" - }, - "bottomActionButton": { - "show": true, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-block", - "isEndScreen": false - }, - "icon": { - "type": "image", - "value": "/images/95f56ee0-0a58-465e-882f-d4e03fa7b518.png", - "size": "xl" - }, - "variables": [ - { - "name": "gender", - "mappings": [ - { - "conditions": [ - { - "screenId": "gender", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "male" - ] - } - ], - "value": "мужчин" - } - ], - "fallback": "женщин" }, - { - "name": "zodiac", - "mappings": [ - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "aries" - ] - } - ], - "value": "Овнов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "taurus" - ] - } - ], - "value": "Тельцов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "gemini" - ] - } - ], - "value": "Близнецов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "cancer" - ] - } - ], - "value": "Раков" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "leo" - ] - } - ], - "value": "Львов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "virgo" - ] - } - ], - "value": "Дев" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "libra" - ] - } - ], - "value": "Весов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "scorpio" - ] - } - ], - "value": "Скорпионов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "sagittarius" - ] - } - ], - "value": "Стрельцов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "capricorn" - ] - } - ], - "value": "Козерогов" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "aquarius" - ] - } - ], - "value": "Водолеев" - }, - { - "conditions": [ - { - "screenId": "userZodiac", - "conditionType": "values", - "operator": "includesAny", - "values": [ - "pisces" - ] - } - ], - "value": "Рыб" - } - ], - "fallback": "Овнов" - } - ], - "variants": [ - { - "conditions": [ - { - "screenId": "love-priority", - "operator": "includesAny", - "optionIds": [ - "follow_mind" - ] - } - ], - "overrides": { - "subtitle": { - "text": "По нашей статистике **43 % {{gender}} {{zodiac}}** выбирают разум. Но одних расчётов недостаточно. Мы откроем, какие черты второй половинки принесут доверие, и нарисуем её образ." - }, - "icon": { - "value": "/images/3f8d6d3c-a016-4c9d-8ee7-ece69f927bd6.png" - } - } - }, - { - "conditions": [ - { - "screenId": "love-priority", - "operator": "includesAny", - "optionIds": [ - "balance_heart_mind" - ] - } - ], - "overrides": { - "subtitle": { - "text": "По нашей статистике **47 % {{gender}} {{zodiac}}** ищут баланс. Но удержать его непросто. Мы покажем, какие качества второй половинки соединят страсть и надёжность, и создадим её портрет." - }, - "icon": { - "value": "/images/9200a254-3f17-4bcc-ad1b-f745917f04f0.png" - } - } - }, - { - "conditions": [ - { - "screenId": "onboarding", - "operator": "includesAny", - "optionIds": [] - } - ], - "overrides": { - "icon": { - "value": "/images/9200a254-3f17-4bcc-ad1b-f745917f04f0.png" - } - } - } - ] - }, - { - "id": "relationship-block", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Что больше всего мешает вам в отношениях?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-block-result", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "fear_of_wrong_choice", - "label": "Страх снова ошибиться в выборе", - "emoji": "💔", - "disabled": false - }, - { - "id": "wasted_years", - "label": "Трата лет на “не того” человека", - "emoji": "🕰️", - "disabled": false - }, - { - "id": "lack_of_depth", - "label": "Есть страсть, но не хватает глубины", - "emoji": "🔥", - "disabled": false - }, - { - "id": "unclear_desires", - "label": "Не понимаю, чего на самом деле хочу", - "emoji": "🗝", - "disabled": false - }, - { - "id": "stuck_in_past", - "label": "Не могу отпустить прошлые отношения", - "emoji": "👻", - "disabled": false - }, - { - "id": "fear_of_loneliness", - "label": "Боюсь остаться в одиночестве", - "emoji": "🕯", - "disabled": false - } - ] - }, - "variants": [ - { - "conditions": [ - { - "screenId": "relationship-status", - "operator": "includesAny", - "optionIds": [ - "single", - "after_breakup" - ] - } - ], - "overrides": { - "list": { - "options": [ - { - "id": "fear_of_wrong_choice", - "label": "Страх снова ошибиться в выборе", - "emoji": "💔" - }, - { - "id": "wasted_years", - "label": "Ощущение, что годы уходят впустую", - "emoji": "🕰️" - }, - { - "id": "wrong_people", - "label": "Встречаю интересных, но не тех самых", - "emoji": "😕" - }, - { - "id": "unclear_needs", - "label": "Не понимаю, кто мне действительно нужен", - "emoji": "🧩" - }, - { - "id": "stuck_in_past", - "label": "Прошлое не даёт двигаться дальше", - "emoji": "👻" - }, - { - "id": "fear_of_loneliness", - "label": "Боюсь остаться в одиночестве", - "emoji": "🕯" - } - ] - }, - "title": { - "text": "Что больше всего мешает вам в поиске любви?" - } - } - } - ] - }, - { - "id": "relationship-block-result", - "template": "info", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Вы не одиноки в этом страхе", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "center", - "color": "default" - }, - "subtitle": { - "text": "Многие боятся повторить прошлый опыт. Мы поможем распознать верные сигналы и выбрать «своего» человека.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "center", - "color": "default" - }, - "bottomActionButton": { - "show": true, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "core-need", - "isEndScreen": false - }, - "icon": { - "type": "image", - "value": "/images/e49915b8-6371-4235-8fd8-e04d5e431b00.png", - "size": "xl" - }, - "variables": [], - "variants": [ - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "wasted_years" - ] - } - ], - "overrides": { - "title": { - "text": "Эта боль знакома многим" - }, - "subtitle": { - "text": "Ощущение потраченного времени тяжело. Мы подскажем, как перестать застревать в прошлом и двигаться вперёд." - }, - "icon": { - "value": "/images/723f89af-9627-46a4-938f-7036a3f2c0c3.png" - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "lack_of_depth" - ] - } - ], - "overrides": { - "title": { - "text": "Многие сталкиваются с этим" - }, - "subtitle": { - "text": "Яркие эмоции быстро гаснут, если нет основы. Мы поможем превратить связь в настоящую близость." - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "unclear_desires" - ] - } - ], - "overrides": { - "title": { - "text": "С этим часто трудно разобраться" - }, - "subtitle": { - "text": "Понять себя — ключ к правильному выбору. Мы поможем прояснить, какие качества действительно важны для вас." - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "stuck_in_past" - ] - } - ], - "overrides": { - "title": { - "text": "Вы не единственные, кто застрял в прошлом" - }, - "subtitle": { - "text": "Прошлое может держать слишком крепко. Мы покажем, как освободиться и дать место новой любви." - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "fear_of_loneliness" - ] - } - ], - "overrides": { - "title": { - "text": "Этот страх очень знаком многим" - }, - "subtitle": { - "text": "Мысль о будущем в одиночестве пугает. Мы поможем построить путь, где рядом будет близкий человек." - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "wrong_people" - ] - } - ], - "overrides": { - "title": { - "text": "Многие через это проходят" - } - } - }, - { - "conditions": [ - { - "screenId": "relationship-block", - "operator": "includesAny", - "optionIds": [ - "unclear_needs" - ] - } - ], - "overrides": { - "title": { - "text": "Это нормально - не знать сразу" - }, - "subtitle": { - "text": "Разобраться в том, какой партнёр нужен именно вам, непросто. Мы поможем увидеть, какие качества действительно важны." - } - } - } - ] - }, - { - "id": "core-need", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "В чём ваша базовая потребность сейчас?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-similarity", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "safety_and_support", - "label": "Безопасность и опора", - "disabled": false - }, - { - "id": "passion_and_spark", - "label": "Страсть и искра", - "disabled": false - }, - { - "id": "calm_and_acceptance", - "label": "Спокойствие и принятие", - "disabled": false - }, - { - "id": "inspiration_and_growth", - "label": "Вдохновение и рост", - "disabled": false - }, - { - "id": "not_important", - "label": "Неважно", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-similarity", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Твоя вторая половинка похожа на тебя?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "partner-role", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "similar", - "label": "Да, есть сходство", - "disabled": false - }, - { - "id": "different", - "label": "Мы совершенно разные", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "partner-role", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Предпочитаемая роль партнёра", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-strength", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "leader", - "label": "Ведущий", - "disabled": false - }, - { - "id": "equal", - "label": "Равный", - "disabled": false - }, - { - "id": "supportive", - "label": "Поддерживающий", - "disabled": false - }, - { - "id": "flexible", - "label": "Гибкая роль", - "disabled": false - }, - { - "id": "dependent", - "label": "Зависимый от меня", - "disabled": false - }, - { - "id": "situational", - "label": "По ситуации", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "relationship-strength", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Что для тебя главный источник силы в отношениях?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "love-expression", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "support_and_care", - "label": "Поддержка и забота", - "disabled": false - }, - { - "id": "admiration_and_recognition", - "label": "Восхищение и признание", - "disabled": false - }, - { - "id": "freedom_and_space", - "label": "Свобода и пространство", - "disabled": false - }, - { - "id": "shared_goals_and_plans", - "label": "Общие цели и планы", - "disabled": false - }, - { - "id": "joy_and_lightness", - "label": "Радость и лёгкость", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "love-expression", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Как ты проявляешь любовь?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-future", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "words", - "label": "Словами", - "disabled": false - }, - { - "id": "actions", - "label": "Поступками", - "disabled": false - }, - { - "id": "quality_time", - "label": "Совместным временем", - "disabled": false - }, - { - "id": "care", - "label": "Заботой", - "disabled": false - }, - { - "id": "passion", - "label": "Страстью", - "disabled": false - }, - { - "id": "in_my_own_way", - "label": "По-своему", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "relationship-future", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Как ты воспринимаешь будущее твоей пары?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-energy", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "home_and_family", - "label": "Совместный дом и семья", - "disabled": false - }, - { - "id": "travel_and_discovery", - "label": "Путешествия и открытия", - "disabled": false - }, - { - "id": "shared_goals", - "label": "Совместные проекты и цели", - "disabled": false - }, - { - "id": "present_moment", - "label": "Просто быть рядом «здесь и сейчас»", - "disabled": false - }, - { - "id": "unsure", - "label": "Пока сложно сказать", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "relationship-energy", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Какую энергию ты хочешь в отношениях?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": false, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "relationship-metaphor", - "isEndScreen": false - }, - "list": { - "selectionType": "single", - "options": [ - { - "id": "lightness_and_joy", - "label": "Лёгкость и радость", - "disabled": false - }, - { - "id": "strength_and_drive", - "label": "Сила и драйв", - "disabled": false - }, - { - "id": "comfort_and_safety", - "label": "Уют и надёжность", - "disabled": false - }, - { - "id": "depth_and_meaning", - "label": "Глубина и смысл", - "disabled": false - }, - { - "id": "freedom_and_space", - "label": "Свобода и простор", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "relationship-metaphor", - "template": "list", - "header": { - "showBackButton": true, - "show": true - }, - "title": { - "text": "Какой образ отношений вам ближе?", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, - "subtitle": { - "text": "Можно выбрать несколько вариантов.", - "show": true, - "font": "manrope", - "weight": "medium", - "size": "lg", - "align": "left", - "color": "default" - }, - "bottomActionButton": { - "show": true, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "portrait-generation", - "isEndScreen": false - }, - "list": { - "selectionType": "multi", - "options": [ - { - "id": "bridge", - "label": "Мост — связь сквозь препятствия", - "disabled": false - }, - { - "id": "mountain_path", - "label": "Путь в горах — испытания и смысл", - "disabled": false - }, - { - "id": "dance", - "label": "Танец — баланс и взаимные шаги", - "disabled": false - }, - { - "id": "key_and_lock", - "label": "Ключ и замок — совпадение ценностей", - "disabled": false - }, - { - "id": "harbor", - "label": "Гавань — безопасность и покой", - "disabled": false - }, - { - "id": "lighthouse", - "label": "Маяк — ориентир и поддержка", - "disabled": false - }, - { - "id": "ocean_after_storm", - "label": "Океан после шторма — очищение и новое", - "disabled": false - }, - { - "id": "garden", - "label": "Сад — забота и рост", - "disabled": false - } - ] - }, - "variants": [] - }, - { - "id": "portrait-generation", - "template": "loaders", - "header": { - "showBackButton": false, - "show": false - }, - "title": { - "text": "Создаем портрет твоей второй половинки.", - "show": true, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "center", - "color": "default" - }, - "bottomActionButton": { - "show": true, - "text": "Continue", - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "rules": [], - "defaultNextScreenId": "email", - "isEndScreen": false - }, - "progressbars": { - "items": [ - { - "processingTitle": "Анализ твоих ответов", - "processingSubtitle": "Processing...", - "completedTitle": "Анализ твоих ответов", - "completedSubtitle": "Complete" - }, - { - "processingTitle": "Portrait of the Soulmate", - "processingSubtitle": "Processing...", - "completedTitle": "Portrait of the Soulmate", - "completedSubtitle": "Complete" - }, - { - "processingTitle": "Portrait of the Soulmate", - "processingSubtitle": "Processing...", - "completedTitle": "Connection Insights", - "completedSubtitle": "Complete" - } - ], - "transitionDuration": 3000 + "registrationFieldKey": "profile.birthdate" }, "variants": [] }, @@ -2122,17 +219,16 @@ }, "bottomActionButton": { "show": true, - "text": "Continue", "cornerRadius": "3xl", "showPrivacyTermsConsent": true }, "navigation": { "rules": [], - "defaultNextScreenId": "coupon", + "defaultNextScreenId": "final", "isEndScreen": false }, "emailInput": { - "label": "Email", + "label": "Email адрес", "placeholder": "example@email.com" }, "image": { @@ -2158,14 +254,14 @@ ] }, { - "id": "coupon", - "template": "coupon", + "id": "final", + "template": "info", "header": { "showBackButton": true, "show": true }, "title": { - "text": "Тебе повезло!", + "text": "Спасибо за регистрацию", "show": true, "font": "manrope", "weight": "bold", @@ -2174,7 +270,7 @@ "color": "default" }, "subtitle": { - "text": "Ты получил специальную эксклюзивную скидку на 94%", + "text": "Добавьте подзаголовок для информационного экрана", "show": true, "font": "manrope", "weight": "medium", @@ -2182,79 +278,6 @@ "align": "center", "color": "default" }, - "bottomActionButton": { - "show": true, - "cornerRadius": "3xl", - "showPrivacyTermsConsent": false - }, - "navigation": { - "defaultNextScreenId": "payment", - "isEndScreen": false, - "rules": [] - }, - "coupon": { - "title": { - "text": "Special Offer", - "font": "manrope", - "weight": "bold", - "align": "center", - "size": "lg", - "color": "default" - }, - "offer": { - "title": { - "text": "94% OFF", - "font": "manrope", - "weight": "bold", - "align": "center", - "size": "3xl", - "color": "primary" - }, - "description": { - "text": "Одноразовая эксклюзивная скидка", - "font": "inter", - "weight": "medium", - "color": "muted", - "align": "center", - "size": "md" - } - }, - "promoCode": { - "text": "SOULMATE94", - "font": "geistMono", - "weight": "bold", - "align": "center", - "size": "lg", - "color": "accent" - }, - "footer": { - "text": "Скопируйте или нажмите **Continue**", - "font": "inter", - "weight": "medium", - "color": "muted", - "align": "center", - "size": "sm" - } - }, - "copiedMessage": "Промокод скопирован!", - "variants": [] - }, - { - "id": "payment", - "template": "trialPayment", - "header": { - "showBackButton": true, - "show": false - }, - "title": { - "text": "Новый экран", - "show": false, - "font": "manrope", - "weight": "bold", - "size": "2xl", - "align": "left", - "color": "default" - }, "bottomActionButton": { "show": false, "cornerRadius": "3xl", @@ -2262,424 +285,15 @@ }, "navigation": { "rules": [], - "isEndScreen": false + "isEndScreen": true }, - "variants": [], - "headerBlock": { - "text": { - "text": "⚠️ Your sketch expires soon!" - }, - "timer": { - "text": "" - }, - "timerSeconds": 600 + "icon": { + "type": "emoji", + "value": "ℹ️", + "size": "xl" }, - "unlockYourSketch": { - "title": { - "text": "Unlock Your Sketch" - }, - "subtitle": { - "text": "Just One Click to Reveal Your Match!" - }, - "image": { - "src": "/trial-payment/portrait-female.jpg" - }, - "blur": { - "text": { - "text": "Unlock to reveal your personalized portrait" - }, - "icon": "lock" - }, - "buttonText": "Get Me Soulmate Sketch" - }, - "joinedToday": { - "count": { - "text": "954" - }, - "text": { - "text": "Joined today" - } - }, - "trustedByOver": { - "text": { - "text": "Trusted by over 355,000 people." - } - }, - "findingOneGuide": { - "header": { - "emoji": { - "text": "❤️" - }, - "title": { - "text": "Finding the One Guide" - } - }, - "text": { - "text": "You're not just looking for someone — you're. You're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you're. You're not just looking for someone — you're. You're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you're" - }, - "blur": { - "text": { - "text": "Чтобы открыть весь отчёт, нужен полный доступ." - }, - "icon": "lock" - } - }, - "tryForDays": { - "title": { - "text": "Попробуйте в течение 7 дней!" - }, - "textList": { - "items": [ - { - "text": "Receive a hand-drawn sketch of your soulmate." - }, - { - "text": "Reveal the path with the guide." - }, - { - "text": "Talk to live experts and get guidance." - }, - { - "text": "Start your 7-day trial for just $1.00." - }, - { - "text": "Cancel anytime—just 24 hours before renewal." - } - ] - } - }, - "totalPrice": { - "couponContainer": { - "title": { - "text": "Coupon\nCode" - }, - "buttonText": "SOULMATE94" - }, - "priceContainer": { - "title": { - "text": "Total" - }, - "price": { - "text": "$1.00" - }, - "oldPrice": { - "text": "$14.99" - }, - "discount": { - "text": "94% discount applied" - } - } - }, - "paymentButtons": { - "buttons": [ - { - "text": "Pay", - "icon": "pay" - }, - { - "text": "Pay", - "icon": "google" - }, - { - "text": "Credit or debit card", - "icon": "card", - "primary": true - } - ] - }, - "moneyBackGuarantee": { - "title": { - "text": "30-DAY MONEY-BACK GUARANTEE" - }, - "text": { - "text": "If you don't receive your soulmate sketch, we'll refund your money!" - } - }, - "policy": { - "text": { - "text": "By clicking Continue, you agree to our Terms of Use & Service and Privacy Policy. You also acknowledge that your 1 week introductory plan to Respontika, billed at $1.00, will automatically renew at $14.50 every 1 week unless canceled before the end of the trial period." - } - }, - "usersPortraits": { - "title": { - "text": "Our Users' Soulmate Portraits" - }, - "images": [ - { - "src": "/trial-payment/users-portraits/1.jpg" - }, - { - "src": "/trial-payment/users-portraits/2.jpg" - }, - { - "src": "/trial-payment/users-portraits/3.jpg" - } - ], - "buttonText": "Get me soulmate sketch" - }, - "joinedTodayWithAvatars": { - "count": { - "text": "954" - }, - "text": { - "text": "people joined today" - }, - "avatars": { - "images": [ - { - "src": "/trial-payment/avatars/1.jpg" - }, - { - "src": "/trial-payment/avatars/2.jpg" - }, - { - "src": "/trial-payment/avatars/3.jpg" - }, - { - "src": "/trial-payment/avatars/4.jpg" - }, - { - "src": "/trial-payment/avatars/5.jpg" - } - ] - } - }, - "progressToSeeSoulmate": { - "title": { - "text": "See Your Soulmate – Just One Step Away" - }, - "progress": { - "value": 92 - }, - "leftText": { - "text": "Step 2 of 5" - }, - "rightText": { - "text": "99% Complete" - } - }, - "stepsToSeeSoulmate": { - "steps": [ - { - "title": { - "text": "Questions Answered" - }, - "description": { - "text": "You've provided all the necessary information." - }, - "icon": "questions", - "isActive": true - }, - { - "title": { - "text": "Profile Analysis" - }, - "description": { - "text": "Creating your perfect soulmate profile." - }, - "icon": "profile", - "isActive": true - }, - { - "title": { - "text": "Sketch Creation" - }, - "description": { - "text": "Your personalized soulmate sketch will be created." - }, - "icon": "sketch" - }, - { - "title": { - "text": "Астрологические Идеи" - }, - "description": { - "text": "Уникальные астрологические рекомендации." - }, - "icon": "astro" - }, - { - "title": { - "text": "Персонализированный чат с экспертом" - }, - "description": { - "text": "Персональные советы." - }, - "icon": "chat" - } - ], - "buttonText": "Show Me My Soulmate" - }, - "reviews": { - "title": { - "text": "Loved and Trusted Worldwide" - }, - "items": [ - { - "name": { - "text": "Jennifer Wilson 🇺🇸" - }, - "text": { - "text": "**“Я увидела свои ошибки… и нашла мужа”**\nПортрет сразу зацепил — было чувство, что я уже где-то его видела. Но настоящий перелом произошёл после гайда: я поняла, почему снова и снова выбирала «не тех». И самое удивительное — вскоре я познакомилась с мужчиной, который оказался точной копией того самого портрета. Сейчас он мой муж, и когда мы сравнили рисунок с его фото, сходство было просто вау." - }, - "avatar": { - "src": "/trial-payment/reviews/avatars/1.jpg" - }, - "portrait": { - "src": "/trial-payment/reviews/portraits/1.jpg" - }, - "photo": { - "src": "/trial-payment/reviews/photos/1.jpg" - }, - "rating": 5, - "date": { - "text": "1 day ago" - } - }, - { - "name": { - "text": "Amanda Davis 🇨🇦" - }, - "text": { - "text": "**“Я поняла своего партнёра лучше за один вечер, чем за несколько лет”**\nПрошла тест ради интереса — портрет нас удивил. Но настоящий прорыв случился, когда я прочитала гайд о второй половинке. Там были точные подсказки о том, как мы можем поддерживать друг друга. Цена смешная, а ценность огромная: теперь у нас меньше недопониманий и больше тепла." - }, - "avatar": { - "src": "/trial-payment/reviews/avatars/2.jpg" - }, - "portrait": { - "src": "/trial-payment/reviews/portraits/2.jpg" - }, - "photo": { - "src": "/trial-payment/reviews/photos/2.jpg" - }, - "rating": 5, - "date": { - "text": "4 days ago" - } - }, - { - "name": { - "text": "Michael Johnson 🇬🇧" - }, - "text": { - "text": "**“Увидел её лицо — и мурашки по коже”**\nКогда пришёл результат теста и показали портрет, я реально замер. Это была та самая девушка, с которой я начал встречаться пару недель назад. И гайд прямо описал, почему мы тянемся друг к другу. Честно, я не ожидал такого совпадения." - }, - "avatar": { - "src": "/trial-payment/reviews/avatars/3.jpg" - }, - "portrait": { - "src": "/trial-payment/reviews/portraits/3.jpg" - }, - "photo": { - "src": "/trial-payment/reviews/photos/3.jpg" - }, - "rating": 5, - "date": { - "text": "1 week ago" - } - } - ] - }, - "stillHaveQuestions": { - "title": { - "text": "Still have questions? We're here to help!" - }, - "actionButtonText": "Get me Soulmate Sketch", - "contactButtonText": "Contact Support" - }, - "commonQuestions": { - "title": { - "text": "Common Questions" - }, - "items": [ - { - "question": "When will I receive my sketch?", - "answer": "Your personalized soulmate sketch will be delivered within 24-48 hours after completing your order. You'll receive an email notification when it's ready for viewing in your account." - }, - { - "question": "How do I cancel my subscription?", - "answer": "You can cancel anytime from your account settings. Make sure to cancel at least 24 hours before the renewal date to avoid being charged." - }, - { - "question": "How accurate are the readings?", - "answer": "Our readings are based on a combination of your answers and advanced pattern analysis. While they provide valuable insights, they are intended for guidance and entertainment purposes." - }, - { - "question": "Is my data secure and private?", - "answer": "Yes. We follow strict data protection standards. Your data is encrypted and never shared with third parties without your consent." - } - ] - }, - "footer": { - "title": { - "text": "WIT LAB ©" - }, - "contacts": { - "title": { - "text": "CONTACTS" - }, - "email": { - "href": "support@witlab.com", - "text": "support@witlab.com" - }, - "address": { - "text": "Wit Lab 2108 N ST STE N SACRAMENTO, CA95816, US" - } - }, - "legal": { - "title": { - "text": "LEGAL" - }, - "links": [ - { - "href": "https://witlab.com/terms", - "text": "Terms of Service" - }, - { - "href": "https://witlab.com/privacy", - "text": "Privacy Policy" - }, - { - "href": "https://witlab.com/refund", - "text": "Refund Policy" - } - ], - "copyright": { - "text": "Copyright © 2025 Wit Lab™. All rights reserved. All trademarks referenced herein are the properties of their respective owners." - } - }, - "paymentMethods": { - "title": { - "text": "PAYMENT METHODS" - }, - "methods": [ - { - "src": "/trial-payment/payment-methods/visa.svg", - "alt": "visa" - }, - { - "src": "/trial-payment/payment-methods/mastercard.svg", - "alt": "mastercard" - }, - { - "src": "/trial-payment/payment-methods/discover.svg", - "alt": "discover" - }, - { - "src": "/trial-payment/payment-methods/apple.svg", - "alt": "apple" - }, - { - "src": "/trial-payment/payment-methods/google.svg", - "alt": "google" - }, - { - "src": "/trial-payment/payment-methods/paypal.svg", - "alt": "paypal" - } - ] - } - } + "variables": [], + "variants": [] } ] } \ No newline at end of file diff --git a/public/funnels/soulmate_prod.json b/public/funnels/soulmate_prod.json new file mode 100644 index 0000000..0df78bc --- /dev/null +++ b/public/funnels/soulmate_prod.json @@ -0,0 +1,2685 @@ +{ + "meta": { + "id": "soulmate_prod", + "title": "Soulmate V1", + "description": "Soulmate", + "firstScreenId": "onboarding" + }, + "defaultTexts": { + "nextButton": "Next", + "privacyBanner": "Мы не передаем личную информацию, она остаётся в безопасности и под вашим контролем." + }, + "screens": [ + { + "id": "onboarding", + "template": "soulmate", + "header": { + "showBackButton": false, + "show": false + }, + "title": { + "text": "Soulmate Portrait", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "text": "Continue", + "cornerRadius": "3xl", + "showPrivacyTermsConsent": true + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "gender", + "isEndScreen": false + }, + "description": { + "text": "Готов увидеть, кто твоя настоящая Родственная душа?", + "font": "manrope", + "weight": "regular", + "size": "md", + "align": "center", + "color": "default" + }, + "variants": [], + "soulmatePortraitsDelivered": { + "image": "/soulmate-portrait-delivered-male.jpg", + "text": { + "text": "soulmate portraits delivered today", + "font": "inter", + "weight": "medium", + "size": "sm", + "color": "primary" + }, + "avatars": [ + { + "src": "/avatars/male-1.jpg", + "alt": "Male 1" + }, + { + "src": "/avatars/male-2.jpg", + "alt": "Male 2" + }, + { + "src": "/avatars/male-3.jpg", + "alt": "Male 3" + }, + { + "src": "", + "fallbackText": "900+" + } + ] + }, + "textList": { + "items": [ + { + "text": "Всего 2 минуты — и Портрет откроет того, кто связан с тобой судьбой." + }, + { + "text": "Поразительная точность 99%." + }, + { + "text": "Тебя ждёт неожиданное открытие." + }, + { + "text": "Осталось лишь осмелиться взглянуть." + } + ] + } + }, + { + "id": "gender", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Какого ты пола?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "Все начинается с тебя! Выбери свой пол.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-status", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "female", + "label": "FEMALE", + "emoji": "🩷", + "disabled": false + }, + { + "id": "male", + "label": "MALE", + "emoji": "💙", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "relationship-status", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Вы сейчаc?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "Это нужно, чтобы портрет и советы были точнее.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "analysis-target", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "in_relationship", + "label": "В отношениях", + "disabled": false + }, + { + "id": "single", + "label": "Свободны", + "disabled": false + }, + { + "id": "after_breakup", + "label": " После расставания", + "disabled": false + }, + { + "id": "its_complicated", + "label": "Всё сложно", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "analysis-target", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Кого анализируем?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-age", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "current_partner", + "label": "Текущего партнёра", + "disabled": false + }, + { + "id": "crush", + "label": "Человека, который нравится", + "disabled": false + }, + { + "id": "ex_partner", + "label": "Бывшего", + "disabled": false + }, + { + "id": "future_date", + "label": "Будущую встречу", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-age", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Возраст текущего партнера", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [ + { + "conditions": [ + { + "screenId": "partner-age", + "conditionType": "options", + "operator": "includesAny", + "optionIds": [ + "under_29" + ], + "values": [] + } + ], + "nextScreenId": "partner-age-detail" + } + ], + "defaultNextScreenId": "partner-ethnicity", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "under_29", + "label": "До 29", + "disabled": false + }, + { + "id": "from_30_to_39", + "label": "30–39", + "disabled": false + }, + { + "id": "from_40_to_49", + "label": "40–49", + "disabled": false + }, + { + "id": "from_50_to_59", + "label": "50–59", + "disabled": false + }, + { + "id": "over_60", + "label": "60+", + "disabled": false + } + ] + }, + "variants": [ + { + "conditions": [ + { + "screenId": "analysis-target", + "operator": "includesAny", + "optionIds": [ + "current_partner" + ] + } + ], + "overrides": {} + }, + { + "conditions": [ + { + "screenId": "analysis-target", + "operator": "includesAny", + "optionIds": [ + "crush" + ] + } + ], + "overrides": { + "title": { + "text": "Возраст человека, который нравится" + } + } + }, + { + "conditions": [ + { + "screenId": "analysis-target", + "operator": "includesAny", + "optionIds": [ + "ex_partner" + ] + } + ], + "overrides": { + "title": { + "text": "Возраст бывшего" + } + } + }, + { + "conditions": [ + { + "screenId": "analysis-target", + "operator": "includesAny", + "optionIds": [ + "future_date" + ] + } + ], + "overrides": { + "title": { + "text": "Возраст будущего партнёра" + } + } + } + ] + }, + { + "id": "partner-age-detail", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Уточните чуть точнее", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "Чтобы портрет был максимально похож.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-ethnicity", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "from_18_to_21", + "label": "18–21", + "disabled": false + }, + { + "id": "from_22_to_25", + "label": "22–25", + "disabled": false + }, + { + "id": "from_26_to_29", + "label": "26–29", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-ethnicity", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Этническая принадлежность твоей второй половинки?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-eye-color", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "white", + "label": "White", + "disabled": false + }, + { + "id": "hispanic_latino", + "label": "Hispanic / Latino", + "disabled": false + }, + { + "id": "african_african_american", + "label": "African / African-American", + "disabled": false + }, + { + "id": "asian", + "label": "Asian", + "disabled": false + }, + { + "id": "indian_south_asian", + "label": "Indian / South Asian", + "disabled": false + }, + { + "id": "middle_eastern_arab", + "label": "Middle Eastern / Arab", + "disabled": false + }, + { + "id": "native_american_indigenous", + "label": "Native American / Indigenous", + "disabled": false + }, + { + "id": "no_preference", + "label": "No preference", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-eye-color", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Цвет глаз твоей второй половинки?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-hair-length", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "brown", + "label": "Brown", + "disabled": false + }, + { + "id": "blue", + "label": "Голубые", + "disabled": false + }, + { + "id": "hazel", + "label": "Hazel", + "disabled": false + }, + { + "id": "green", + "label": "Green", + "disabled": false + }, + { + "id": "amber", + "label": "Янтарные", + "disabled": false + }, + { + "id": "gray", + "label": "Серые", + "disabled": false + }, + { + "id": "unknown", + "label": "Не знаю", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-hair-length", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Выберите длину волос", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "От неё зависит форма и настроение портрета.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "burnout-support", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "short", + "label": "Короткие", + "disabled": false + }, + { + "id": "medium", + "label": "Средние", + "disabled": false + }, + { + "id": "long", + "label": "Длинные", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "burnout-support", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Когда ты выгораешь, тебе нужно чтобы партнёр", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "burnout-result", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "acknowledged_and_calmed", + "label": "Признал ваше разочарование и успокоил", + "disabled": false + }, + { + "id": "gave_emotional_support", + "label": "Дал эмоциональную опору и безопасное пространство", + "disabled": false + }, + { + "id": "took_over_tasks", + "label": "Перехватил быт/дела, чтобы вы восстановились", + "disabled": false + }, + { + "id": "inspired_with_plan", + "label": "Вдохнул энергию через цель и короткий план действий", + "disabled": false + }, + { + "id": "shifted_to_positive", + "label": "Переключил на позитив: прогулка, кино, смешные истории", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "burnout-result", + "template": "info", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "burnout-result", + "show": false, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "subtitle": { + "text": "Такой партнёр **умеет слышать и поддерживать**, а вы — **человек с глубокой душой**, который ценит искренность и силу настоящих чувств.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "birthdate", + "isEndScreen": false + }, + "icon": { + "type": "image", + "value": "/images/9a720927-20de-4ebc-9b4b-b7589f59567c.png", + "size": "lg" + }, + "variables": [], + "variants": [ + { + "conditions": [ + { + "screenId": "burnout-support", + "operator": "includesAny", + "optionIds": [ + "acknowledged_and_calmed" + ] + } + ], + "overrides": {} + }, + { + "conditions": [ + { + "screenId": "burnout-support", + "operator": "includesAny", + "optionIds": [ + "gave_emotional_support" + ] + } + ], + "overrides": { + "subtitle": { + "text": "Такой человек создаёт **чувство надёжности**, а вы обладаете мудростью и внутренней зрелостью, выбирая близость и доверие." + } + } + }, + { + "conditions": [ + { + "screenId": "burnout-support", + "operator": "includesAny", + "optionIds": [ + "took_over_tasks" + ] + } + ], + "overrides": { + "subtitle": { + "text": "Такой партнёр готов **подставить плечо** в нужный момент, а вы сильны тем, что умеете **доверять** и **принимать поддержку** — это ваша природная мудрость." + } + } + }, + { + "conditions": [ + { + "screenId": "burnout-support", + "operator": "includesAny", + "optionIds": [ + "inspired_with_plan" + ] + } + ], + "overrides": { + "subtitle": { + "text": "Такой человек **заряжает ясностью** и **мотивирует**, а вы выделяетесь **силой воли** и **стремлением к росту** — вы не боитесь идти вперёд." + } + } + }, + { + "conditions": [ + { + "screenId": "burnout-support", + "operator": "includesAny", + "optionIds": [ + "shifted_to_positive" + ] + } + ], + "overrides": { + "subtitle": { + "text": "Такой партнёр умеет **возвращать радость**, а вы показываете свою силу в умении **сохранять лёгкость** и **светлый взгляд** на жизнь." + } + } + } + ] + }, + { + "id": "birthdate", + "template": "date", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Когда ты родился?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "В момент вашего рождения заложенны глубинные закономерности.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "nature-archetype", + "isEndScreen": false + }, + "dateInput": { + "monthLabel": "Месяц", + "dayLabel": "День", + "yearLabel": "Год", + "monthPlaceholder": "ММ", + "dayPlaceholder": "ДД", + "yearPlaceholder": "ГГГГ", + "showSelectedDate": true, + "selectedDateFormat": "dd MMMM yyyy", + "selectedDateLabel": "Выбранная дата:", + "zodiac": { + "enabled": true, + "storageKey": "userZodiac" + } + }, + "variants": [] + }, + { + "id": "nature-archetype", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Какой природный образ ближе вашему характеру?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "love-priority", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "flower", + "label": "Цветок — нежность, забота, притягательность", + "emoji": "🌹", + "disabled": false + }, + { + "id": "sea", + "label": "Море — глубина, тайна, эмоции", + "emoji": "🌊", + "disabled": false + }, + { + "id": "sun", + "label": "Солнце — энергия, сила, яркость", + "emoji": "🌞️", + "disabled": false + }, + { + "id": "moon", + "label": "Луна — интуиция, чувствительность", + "emoji": "🌙", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "love-priority", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Когда речь о любви, что для вас важнее: сердце или разум?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "love-priority-result", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "follow_heart", + "label": "Доверяю сердцу", + "emoji": "🧡", + "disabled": false + }, + { + "id": "follow_mind", + "label": "Опираюсь на разум", + "emoji": "🧠", + "disabled": false + }, + { + "id": "balance_heart_mind", + "label": "Сочетание сердца и разума", + "emoji": "🎯", + "disabled": false + }, + { + "id": "depends_on_situation", + "label": "Зависит от ситуации", + "emoji": "⚖️", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "love-priority-result", + "template": "info", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Заголовок информации", + "show": false, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "subtitle": { + "text": "По нашей статистике **51 % {{gender}} {{zodiac}}** доверяются эмоциям. Но одной чувствительности мало. Мы покажем, какие качества второй половинки дадут тепло и уверенность, и изобразим её портрет.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-block", + "isEndScreen": false + }, + "icon": { + "type": "image", + "value": "/images/95f56ee0-0a58-465e-882f-d4e03fa7b518.png", + "size": "xl" + }, + "variables": [ + { + "name": "gender", + "mappings": [ + { + "conditions": [ + { + "screenId": "gender", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "male" + ] + } + ], + "value": "мужчин" + } + ], + "fallback": "женщин" + }, + { + "name": "zodiac", + "mappings": [ + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "aries" + ] + } + ], + "value": "Овнов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "taurus" + ] + } + ], + "value": "Тельцов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "gemini" + ] + } + ], + "value": "Близнецов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "cancer" + ] + } + ], + "value": "Раков" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "leo" + ] + } + ], + "value": "Львов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "virgo" + ] + } + ], + "value": "Дев" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "libra" + ] + } + ], + "value": "Весов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "scorpio" + ] + } + ], + "value": "Скорпионов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "sagittarius" + ] + } + ], + "value": "Стрельцов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "capricorn" + ] + } + ], + "value": "Козерогов" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "aquarius" + ] + } + ], + "value": "Водолеев" + }, + { + "conditions": [ + { + "screenId": "userZodiac", + "conditionType": "values", + "operator": "includesAny", + "values": [ + "pisces" + ] + } + ], + "value": "Рыб" + } + ], + "fallback": "Овнов" + } + ], + "variants": [ + { + "conditions": [ + { + "screenId": "love-priority", + "operator": "includesAny", + "optionIds": [ + "follow_mind" + ] + } + ], + "overrides": { + "subtitle": { + "text": "По нашей статистике **43 % {{gender}} {{zodiac}}** выбирают разум. Но одних расчётов недостаточно. Мы откроем, какие черты второй половинки принесут доверие, и нарисуем её образ." + }, + "icon": { + "value": "/images/3f8d6d3c-a016-4c9d-8ee7-ece69f927bd6.png" + } + } + }, + { + "conditions": [ + { + "screenId": "love-priority", + "operator": "includesAny", + "optionIds": [ + "balance_heart_mind" + ] + } + ], + "overrides": { + "subtitle": { + "text": "По нашей статистике **47 % {{gender}} {{zodiac}}** ищут баланс. Но удержать его непросто. Мы покажем, какие качества второй половинки соединят страсть и надёжность, и создадим её портрет." + }, + "icon": { + "value": "/images/9200a254-3f17-4bcc-ad1b-f745917f04f0.png" + } + } + }, + { + "conditions": [ + { + "screenId": "onboarding", + "operator": "includesAny", + "optionIds": [] + } + ], + "overrides": { + "icon": { + "value": "/images/9200a254-3f17-4bcc-ad1b-f745917f04f0.png" + } + } + } + ] + }, + { + "id": "relationship-block", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Что больше всего мешает вам в отношениях?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-block-result", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "fear_of_wrong_choice", + "label": "Страх снова ошибиться в выборе", + "emoji": "💔", + "disabled": false + }, + { + "id": "wasted_years", + "label": "Трата лет на “не того” человека", + "emoji": "🕰️", + "disabled": false + }, + { + "id": "lack_of_depth", + "label": "Есть страсть, но не хватает глубины", + "emoji": "🔥", + "disabled": false + }, + { + "id": "unclear_desires", + "label": "Не понимаю, чего на самом деле хочу", + "emoji": "🗝", + "disabled": false + }, + { + "id": "stuck_in_past", + "label": "Не могу отпустить прошлые отношения", + "emoji": "👻", + "disabled": false + }, + { + "id": "fear_of_loneliness", + "label": "Боюсь остаться в одиночестве", + "emoji": "🕯", + "disabled": false + } + ] + }, + "variants": [ + { + "conditions": [ + { + "screenId": "relationship-status", + "operator": "includesAny", + "optionIds": [ + "single", + "after_breakup" + ] + } + ], + "overrides": { + "list": { + "options": [ + { + "id": "fear_of_wrong_choice", + "label": "Страх снова ошибиться в выборе", + "emoji": "💔" + }, + { + "id": "wasted_years", + "label": "Ощущение, что годы уходят впустую", + "emoji": "🕰️" + }, + { + "id": "wrong_people", + "label": "Встречаю интересных, но не тех самых", + "emoji": "😕" + }, + { + "id": "unclear_needs", + "label": "Не понимаю, кто мне действительно нужен", + "emoji": "🧩" + }, + { + "id": "stuck_in_past", + "label": "Прошлое не даёт двигаться дальше", + "emoji": "👻" + }, + { + "id": "fear_of_loneliness", + "label": "Боюсь остаться в одиночестве", + "emoji": "🕯" + } + ] + }, + "title": { + "text": "Что больше всего мешает вам в поиске любви?" + } + } + } + ] + }, + { + "id": "relationship-block-result", + "template": "info", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Вы не одиноки в этом страхе", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "subtitle": { + "text": "Многие боятся повторить прошлый опыт. Мы поможем распознать верные сигналы и выбрать «своего» человека.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "core-need", + "isEndScreen": false + }, + "icon": { + "type": "image", + "value": "/images/e49915b8-6371-4235-8fd8-e04d5e431b00.png", + "size": "xl" + }, + "variables": [], + "variants": [ + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "wasted_years" + ] + } + ], + "overrides": { + "title": { + "text": "Эта боль знакома многим" + }, + "subtitle": { + "text": "Ощущение потраченного времени тяжело. Мы подскажем, как перестать застревать в прошлом и двигаться вперёд." + }, + "icon": { + "value": "/images/723f89af-9627-46a4-938f-7036a3f2c0c3.png" + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "lack_of_depth" + ] + } + ], + "overrides": { + "title": { + "text": "Многие сталкиваются с этим" + }, + "subtitle": { + "text": "Яркие эмоции быстро гаснут, если нет основы. Мы поможем превратить связь в настоящую близость." + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "unclear_desires" + ] + } + ], + "overrides": { + "title": { + "text": "С этим часто трудно разобраться" + }, + "subtitle": { + "text": "Понять себя — ключ к правильному выбору. Мы поможем прояснить, какие качества действительно важны для вас." + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "stuck_in_past" + ] + } + ], + "overrides": { + "title": { + "text": "Вы не единственные, кто застрял в прошлом" + }, + "subtitle": { + "text": "Прошлое может держать слишком крепко. Мы покажем, как освободиться и дать место новой любви." + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "fear_of_loneliness" + ] + } + ], + "overrides": { + "title": { + "text": "Этот страх очень знаком многим" + }, + "subtitle": { + "text": "Мысль о будущем в одиночестве пугает. Мы поможем построить путь, где рядом будет близкий человек." + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "wrong_people" + ] + } + ], + "overrides": { + "title": { + "text": "Многие через это проходят" + } + } + }, + { + "conditions": [ + { + "screenId": "relationship-block", + "operator": "includesAny", + "optionIds": [ + "unclear_needs" + ] + } + ], + "overrides": { + "title": { + "text": "Это нормально - не знать сразу" + }, + "subtitle": { + "text": "Разобраться в том, какой партнёр нужен именно вам, непросто. Мы поможем увидеть, какие качества действительно важны." + } + } + } + ] + }, + { + "id": "core-need", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "В чём ваша базовая потребность сейчас?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-similarity", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "safety_and_support", + "label": "Безопасность и опора", + "disabled": false + }, + { + "id": "passion_and_spark", + "label": "Страсть и искра", + "disabled": false + }, + { + "id": "calm_and_acceptance", + "label": "Спокойствие и принятие", + "disabled": false + }, + { + "id": "inspiration_and_growth", + "label": "Вдохновение и рост", + "disabled": false + }, + { + "id": "not_important", + "label": "Неважно", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-similarity", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Твоя вторая половинка похожа на тебя?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "partner-role", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "similar", + "label": "Да, есть сходство", + "disabled": false + }, + { + "id": "different", + "label": "Мы совершенно разные", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "partner-role", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Предпочитаемая роль партнёра", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-strength", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "leader", + "label": "Ведущий", + "disabled": false + }, + { + "id": "equal", + "label": "Равный", + "disabled": false + }, + { + "id": "supportive", + "label": "Поддерживающий", + "disabled": false + }, + { + "id": "flexible", + "label": "Гибкая роль", + "disabled": false + }, + { + "id": "dependent", + "label": "Зависимый от меня", + "disabled": false + }, + { + "id": "situational", + "label": "По ситуации", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "relationship-strength", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Что для тебя главный источник силы в отношениях?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "love-expression", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "support_and_care", + "label": "Поддержка и забота", + "disabled": false + }, + { + "id": "admiration_and_recognition", + "label": "Восхищение и признание", + "disabled": false + }, + { + "id": "freedom_and_space", + "label": "Свобода и пространство", + "disabled": false + }, + { + "id": "shared_goals_and_plans", + "label": "Общие цели и планы", + "disabled": false + }, + { + "id": "joy_and_lightness", + "label": "Радость и лёгкость", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "love-expression", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Как ты проявляешь любовь?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-future", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "words", + "label": "Словами", + "disabled": false + }, + { + "id": "actions", + "label": "Поступками", + "disabled": false + }, + { + "id": "quality_time", + "label": "Совместным временем", + "disabled": false + }, + { + "id": "care", + "label": "Заботой", + "disabled": false + }, + { + "id": "passion", + "label": "Страстью", + "disabled": false + }, + { + "id": "in_my_own_way", + "label": "По-своему", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "relationship-future", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Как ты воспринимаешь будущее твоей пары?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-energy", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "home_and_family", + "label": "Совместный дом и семья", + "disabled": false + }, + { + "id": "travel_and_discovery", + "label": "Путешествия и открытия", + "disabled": false + }, + { + "id": "shared_goals", + "label": "Совместные проекты и цели", + "disabled": false + }, + { + "id": "present_moment", + "label": "Просто быть рядом «здесь и сейчас»", + "disabled": false + }, + { + "id": "unsure", + "label": "Пока сложно сказать", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "relationship-energy", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Какую энергию ты хочешь в отношениях?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "relationship-metaphor", + "isEndScreen": false + }, + "list": { + "selectionType": "single", + "options": [ + { + "id": "lightness_and_joy", + "label": "Лёгкость и радость", + "disabled": false + }, + { + "id": "strength_and_drive", + "label": "Сила и драйв", + "disabled": false + }, + { + "id": "comfort_and_safety", + "label": "Уют и надёжность", + "disabled": false + }, + { + "id": "depth_and_meaning", + "label": "Глубина и смысл", + "disabled": false + }, + { + "id": "freedom_and_space", + "label": "Свобода и простор", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "relationship-metaphor", + "template": "list", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Какой образ отношений вам ближе?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "subtitle": { + "text": "Можно выбрать несколько вариантов.", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "portrait-generation", + "isEndScreen": false + }, + "list": { + "selectionType": "multi", + "options": [ + { + "id": "bridge", + "label": "Мост — связь сквозь препятствия", + "disabled": false + }, + { + "id": "mountain_path", + "label": "Путь в горах — испытания и смысл", + "disabled": false + }, + { + "id": "dance", + "label": "Танец — баланс и взаимные шаги", + "disabled": false + }, + { + "id": "key_and_lock", + "label": "Ключ и замок — совпадение ценностей", + "disabled": false + }, + { + "id": "harbor", + "label": "Гавань — безопасность и покой", + "disabled": false + }, + { + "id": "lighthouse", + "label": "Маяк — ориентир и поддержка", + "disabled": false + }, + { + "id": "ocean_after_storm", + "label": "Океан после шторма — очищение и новое", + "disabled": false + }, + { + "id": "garden", + "label": "Сад — забота и рост", + "disabled": false + } + ] + }, + "variants": [] + }, + { + "id": "portrait-generation", + "template": "loaders", + "header": { + "showBackButton": false, + "show": false + }, + "title": { + "text": "Создаем портрет твоей второй половинки.", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "text": "Continue", + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "email", + "isEndScreen": false + }, + "progressbars": { + "items": [ + { + "processingTitle": "Анализ твоих ответов", + "processingSubtitle": "Processing...", + "completedTitle": "Анализ твоих ответов", + "completedSubtitle": "Complete" + }, + { + "processingTitle": "Portrait of the Soulmate", + "processingSubtitle": "Processing...", + "completedTitle": "Portrait of the Soulmate", + "completedSubtitle": "Complete" + }, + { + "processingTitle": "Portrait of the Soulmate", + "processingSubtitle": "Processing...", + "completedTitle": "Connection Insights", + "completedSubtitle": "Complete" + } + ], + "transitionDuration": 3000 + }, + "variants": [] + }, + { + "id": "email", + "template": "email", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Портрет твоей второй половинки готов! Куда нам его отправить?", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "text": "Continue", + "cornerRadius": "3xl", + "showPrivacyTermsConsent": true + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "coupon", + "isEndScreen": false + }, + "emailInput": { + "label": "Email", + "placeholder": "example@email.com" + }, + "image": { + "src": "/female-portrait.jpg" + }, + "variants": [ + { + "conditions": [ + { + "screenId": "gender", + "operator": "includesAny", + "optionIds": [ + "male" + ] + } + ], + "overrides": { + "image": { + "src": "/male-portrait.jpg" + } + } + } + ] + }, + { + "id": "coupon", + "template": "coupon", + "header": { + "showBackButton": true, + "show": true + }, + "title": { + "text": "Тебе повезло!", + "show": true, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "center", + "color": "default" + }, + "subtitle": { + "text": "Ты получил специальную эксклюзивную скидку на 94%", + "show": true, + "font": "manrope", + "weight": "medium", + "size": "lg", + "align": "center", + "color": "default" + }, + "bottomActionButton": { + "show": true, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "defaultNextScreenId": "payment", + "isEndScreen": false + }, + "coupon": { + "title": { + "text": "Special Offer", + "font": "manrope", + "weight": "bold", + "align": "center", + "size": "lg", + "color": "default" + }, + "offer": { + "title": { + "text": "94% OFF", + "font": "manrope", + "weight": "bold", + "align": "center", + "size": "3xl", + "color": "primary" + }, + "description": { + "text": "Одноразовая эксклюзивная скидка", + "font": "inter", + "weight": "medium", + "color": "muted", + "align": "center", + "size": "md" + } + }, + "promoCode": { + "text": "SOULMATE94", + "font": "geistMono", + "weight": "bold", + "align": "center", + "size": "lg", + "color": "accent" + }, + "footer": { + "text": "Скопируйте или нажмите **Continue**", + "font": "inter", + "weight": "medium", + "color": "muted", + "align": "center", + "size": "sm" + } + }, + "copiedMessage": "Промокод скопирован!", + "variants": [] + }, + { + "id": "payment", + "template": "trialPayment", + "header": { + "showBackButton": true, + "show": false + }, + "title": { + "text": "Новый экран", + "show": false, + "font": "manrope", + "weight": "bold", + "size": "2xl", + "align": "left", + "color": "default" + }, + "bottomActionButton": { + "show": false, + "cornerRadius": "3xl", + "showPrivacyTermsConsent": false + }, + "navigation": { + "rules": [], + "isEndScreen": false + }, + "variants": [], + "headerBlock": { + "text": { + "text": "⚠️ Your sketch expires soon!" + }, + "timer": { + "text": "" + }, + "timerSeconds": 600 + }, + "unlockYourSketch": { + "title": { + "text": "Unlock Your Sketch" + }, + "subtitle": { + "text": "Just One Click to Reveal Your Match!" + }, + "image": { + "src": "/trial-payment/portrait-female.jpg" + }, + "blur": { + "text": { + "text": "Unlock to reveal your personalized portrait" + }, + "icon": "lock" + }, + "buttonText": "Get Me Soulmate Sketch" + }, + "joinedToday": { + "count": { + "text": "954" + }, + "text": { + "text": "Joined today" + } + }, + "trustedByOver": { + "text": { + "text": "Trusted by over 355,000 people." + } + }, + "findingOneGuide": { + "header": { + "emoji": { + "text": "❤️" + }, + "title": { + "text": "Finding the One Guide" + } + }, + "text": { + "text": "You're not just looking for someone — you're. You're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you're. You're not just looking for someone — you're. You're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you'reYou're not just looking for someone — you're" + }, + "blur": { + "text": { + "text": "Чтобы открыть весь отчёт, нужен полный доступ." + }, + "icon": "lock" + } + }, + "tryForDays": { + "title": { + "text": "Попробуйте в течение 7 дней!" + }, + "textList": { + "items": [ + { + "text": "Receive a hand-drawn sketch of your soulmate." + }, + { + "text": "Reveal the path with the guide." + }, + { + "text": "Talk to live experts and get guidance." + }, + { + "text": "Start your 7-day trial for just $1.00." + }, + { + "text": "Cancel anytime—just 24 hours before renewal." + } + ] + } + }, + "totalPrice": { + "couponContainer": { + "title": { + "text": "Coupon\nCode" + }, + "buttonText": "SOULMATE94" + }, + "priceContainer": { + "title": { + "text": "Total" + }, + "price": { + "text": "$1.00" + }, + "oldPrice": { + "text": "$14.99" + }, + "discount": { + "text": "94% discount applied" + } + } + }, + "paymentButtons": { + "buttons": [ + { + "text": "Pay", + "icon": "pay" + }, + { + "text": "Pay", + "icon": "google" + }, + { + "text": "Credit or debit card", + "icon": "card", + "primary": true + } + ] + }, + "moneyBackGuarantee": { + "title": { + "text": "30-DAY MONEY-BACK GUARANTEE" + }, + "text": { + "text": "If you don't receive your soulmate sketch, we'll refund your money!" + } + }, + "policy": { + "text": { + "text": "By clicking Continue, you agree to our Terms of Use & Service and Privacy Policy. You also acknowledge that your 1 week introductory plan to Respontika, billed at $1.00, will automatically renew at $14.50 every 1 week unless canceled before the end of the trial period." + } + }, + "usersPortraits": { + "title": { + "text": "Our Users' Soulmate Portraits" + }, + "images": [ + { + "src": "/trial-payment/users-portraits/1.jpg" + }, + { + "src": "/trial-payment/users-portraits/2.jpg" + }, + { + "src": "/trial-payment/users-portraits/3.jpg" + } + ], + "buttonText": "Get me soulmate sketch" + }, + "joinedTodayWithAvatars": { + "count": { + "text": "954" + }, + "text": { + "text": "people joined today" + }, + "avatars": { + "images": [ + { + "src": "/trial-payment/avatars/1.jpg" + }, + { + "src": "/trial-payment/avatars/2.jpg" + }, + { + "src": "/trial-payment/avatars/3.jpg" + }, + { + "src": "/trial-payment/avatars/4.jpg" + }, + { + "src": "/trial-payment/avatars/5.jpg" + } + ] + } + }, + "progressToSeeSoulmate": { + "title": { + "text": "See Your Soulmate – Just One Step Away" + }, + "progress": { + "value": 92 + }, + "leftText": { + "text": "Step 2 of 5" + }, + "rightText": { + "text": "99% Complete" + } + }, + "stepsToSeeSoulmate": { + "steps": [ + { + "title": { + "text": "Questions Answered" + }, + "description": { + "text": "You've provided all the necessary information." + }, + "icon": "questions", + "isActive": true + }, + { + "title": { + "text": "Profile Analysis" + }, + "description": { + "text": "Creating your perfect soulmate profile." + }, + "icon": "profile", + "isActive": true + }, + { + "title": { + "text": "Sketch Creation" + }, + "description": { + "text": "Your personalized soulmate sketch will be created." + }, + "icon": "sketch" + }, + { + "title": { + "text": "Астрологические Идеи" + }, + "description": { + "text": "Уникальные астрологические рекомендации." + }, + "icon": "astro" + }, + { + "title": { + "text": "Персонализированный чат с экспертом" + }, + "description": { + "text": "Персональные советы." + }, + "icon": "chat" + } + ], + "buttonText": "Show Me My Soulmate" + }, + "reviews": { + "title": { + "text": "Loved and Trusted Worldwide" + }, + "items": [ + { + "name": { + "text": "Jennifer Wilson 🇺🇸" + }, + "text": { + "text": "**“Я увидела свои ошибки… и нашла мужа”**\nПортрет сразу зацепил — было чувство, что я уже где-то его видела. Но настоящий перелом произошёл после гайда: я поняла, почему снова и снова выбирала «не тех». И самое удивительное — вскоре я познакомилась с мужчиной, который оказался точной копией того самого портрета. Сейчас он мой муж, и когда мы сравнили рисунок с его фото, сходство было просто вау." + }, + "avatar": { + "src": "/trial-payment/reviews/avatars/1.jpg" + }, + "portrait": { + "src": "/trial-payment/reviews/portraits/1.jpg" + }, + "photo": { + "src": "/trial-payment/reviews/photos/1.jpg" + }, + "rating": 5, + "date": { + "text": "1 day ago" + } + }, + { + "name": { + "text": "Amanda Davis 🇨🇦" + }, + "text": { + "text": "**“Я поняла своего партнёра лучше за один вечер, чем за несколько лет”**\nПрошла тест ради интереса — портрет нас удивил. Но настоящий прорыв случился, когда я прочитала гайд о второй половинке. Там были точные подсказки о том, как мы можем поддерживать друг друга. Цена смешная, а ценность огромная: теперь у нас меньше недопониманий и больше тепла." + }, + "avatar": { + "src": "/trial-payment/reviews/avatars/2.jpg" + }, + "portrait": { + "src": "/trial-payment/reviews/portraits/2.jpg" + }, + "photo": { + "src": "/trial-payment/reviews/photos/2.jpg" + }, + "rating": 5, + "date": { + "text": "4 days ago" + } + }, + { + "name": { + "text": "Michael Johnson 🇬🇧" + }, + "text": { + "text": "**“Увидел её лицо — и мурашки по коже”**\nКогда пришёл результат теста и показали портрет, я реально замер. Это была та самая девушка, с которой я начал встречаться пару недель назад. И гайд прямо описал, почему мы тянемся друг к другу. Честно, я не ожидал такого совпадения." + }, + "avatar": { + "src": "/trial-payment/reviews/avatars/3.jpg" + }, + "portrait": { + "src": "/trial-payment/reviews/portraits/3.jpg" + }, + "photo": { + "src": "/trial-payment/reviews/photos/3.jpg" + }, + "rating": 5, + "date": { + "text": "1 week ago" + } + } + ] + }, + "stillHaveQuestions": { + "title": { + "text": "Still have questions? We're here to help!" + }, + "actionButtonText": "Get me Soulmate Sketch", + "contactButtonText": "Contact Support" + }, + "commonQuestions": { + "title": { + "text": "Common Questions" + }, + "items": [ + { + "question": "When will I receive my sketch?", + "answer": "Your personalized soulmate sketch will be delivered within 24-48 hours after completing your order. You'll receive an email notification when it's ready for viewing in your account." + }, + { + "question": "How do I cancel my subscription?", + "answer": "You can cancel anytime from your account settings. Make sure to cancel at least 24 hours before the renewal date to avoid being charged." + }, + { + "question": "How accurate are the readings?", + "answer": "Our readings are based on a combination of your answers and advanced pattern analysis. While they provide valuable insights, they are intended for guidance and entertainment purposes." + }, + { + "question": "Is my data secure and private?", + "answer": "Yes. We follow strict data protection standards. Your data is encrypted and never shared with third parties without your consent." + } + ] + }, + "footer": { + "title": { + "text": "WIT LAB ©" + }, + "contacts": { + "title": { + "text": "CONTACTS" + }, + "email": { + "href": "support@witlab.com", + "text": "support@witlab.com" + }, + "address": { + "text": "Wit Lab 2108 N ST STE N SACRAMENTO, CA95816, US" + } + }, + "legal": { + "title": { + "text": "LEGAL" + }, + "links": [ + { + "href": "https://witlab.com/terms", + "text": "Terms of Service" + }, + { + "href": "https://witlab.com/privacy", + "text": "Privacy Policy" + }, + { + "href": "https://witlab.com/refund", + "text": "Refund Policy" + } + ], + "copyright": { + "text": "Copyright © 2025 Wit Lab™. All rights reserved. All trademarks referenced herein are the properties of their respective owners." + } + }, + "paymentMethods": { + "title": { + "text": "PAYMENT METHODS" + }, + "methods": [ + { + "src": "/trial-payment/payment-methods/visa.svg", + "alt": "visa" + }, + { + "src": "/trial-payment/payment-methods/mastercard.svg", + "alt": "mastercard" + }, + { + "src": "/trial-payment/payment-methods/discover.svg", + "alt": "discover" + }, + { + "src": "/trial-payment/payment-methods/apple.svg", + "alt": "apple" + }, + { + "src": "/trial-payment/payment-methods/google.svg", + "alt": "google" + }, + { + "src": "/trial-payment/payment-methods/paypal.svg", + "alt": "paypal" + } + ] + } + } + } + ] +} \ No newline at end of file diff --git a/src/components/admin/builder/templates/DateScreenConfig.tsx b/src/components/admin/builder/templates/DateScreenConfig.tsx index 9698b00..0771ae3 100644 --- a/src/components/admin/builder/templates/DateScreenConfig.tsx +++ b/src/components/admin/builder/templates/DateScreenConfig.tsx @@ -174,6 +174,23 @@ export function DateScreenConfig({ screen, onUpdate }: DateScreenConfigProps) { +
Использование: Выбранная дата будет передана в регистрацию и сессию по указанному ключу.
+Формат даты: YYYY-MM-DD HH:mm (например: 2000-07-03 12:00)
Пример: profile.birthdate → {`{ profile: { birthdate: "2000-07-03 12:00" } }`}
Использование: Выбранный ID варианта будет передан в регистрацию пользователя по указанному ключу.
+Пример: profile.gender → {`{ profile: { gender: "selected-id" } }`}