@developer_tribe/react-builder 1.2.37 → 1.2.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/build-components/BIcon/BIconProps.generated.d.ts +1 -0
  2. package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +1 -0
  3. package/dist/build-components/Button/ButtonProps.generated.d.ts +1 -0
  4. package/dist/build-components/Carousel/CarouselProps.generated.d.ts +1 -0
  5. package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +1 -0
  6. package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +1 -0
  7. package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +1 -0
  8. package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +1 -0
  9. package/dist/build-components/CountDown/CountDownProps.generated.d.ts +1 -0
  10. package/dist/build-components/Image/ImageProps.generated.d.ts +3 -0
  11. package/dist/build-components/Main/MainProps.generated.d.ts +1 -0
  12. package/dist/build-components/NavigationBarColor/NavigationBarColorProps.generated.d.ts +1 -0
  13. package/dist/build-components/Onboard/OnboardProps.generated.d.ts +1 -0
  14. package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +2 -0
  15. package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +1 -0
  16. package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +1 -0
  17. package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +1 -0
  18. package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +3 -0
  19. package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +1 -0
  20. package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +1 -0
  21. package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +1 -0
  22. package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +1 -0
  23. package/dist/build-components/PaywallBackground/PaywallBackgroundProps.generated.d.ts +1 -0
  24. package/dist/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.d.ts +1 -0
  25. package/dist/build-components/PaywallOptions/PaywallOptionsProps.generated.d.ts +1 -0
  26. package/dist/build-components/PaywallProvider/PaywallProviderProps.generated.d.ts +1 -0
  27. package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.d.ts +1 -0
  28. package/dist/build-components/PriceTag/PriceTagProps.generated.d.ts +1 -0
  29. package/dist/build-components/Pricing/PricingProps.generated.d.ts +1 -0
  30. package/dist/build-components/Promo/PromoProps.generated.d.ts +1 -0
  31. package/dist/build-components/RadioButton/RadioButtonProps.generated.d.ts +1 -0
  32. package/dist/build-components/Separator/SeparatorProps.generated.d.ts +1 -0
  33. package/dist/build-components/StatusBarColor/StatusBarColorProps.generated.d.ts +1 -39
  34. package/dist/build-components/Text/TextProps.generated.d.ts +1 -0
  35. package/dist/build-components/View/ViewProps.generated.d.ts +1 -0
  36. package/dist/build-components/patterns.generated.d.ts +1455 -1007
  37. package/dist/index.cjs.js +1 -1
  38. package/dist/index.cjs.js.map +1 -1
  39. package/dist/index.esm.js +1 -1
  40. package/dist/index.esm.js.map +1 -1
  41. package/dist/index.web.cjs.js +4 -4
  42. package/dist/index.web.cjs.js.map +1 -1
  43. package/dist/index.web.esm.js +4 -4
  44. package/dist/index.web.esm.js.map +1 -1
  45. package/dist/mockOS/context/MockOSContextBase.d.ts +1 -0
  46. package/dist/mockOS/managers/mockPermissionManager.d.ts +1 -1
  47. package/dist/types/PreviewConfig.d.ts +1 -1
  48. package/package.json +1 -1
  49. package/scripts/prebuild/utils/validateAllComponentsOrThrow.js +18 -0
  50. package/src/assets/meta.json +1 -1
  51. package/src/assets/prompt-scheme-onboard.generated.ts +1 -1
  52. package/src/assets/prompt-scheme-paywall.generated.ts +1 -1
  53. package/src/assets/samples/carousel-sample.json +49 -23
  54. package/src/assets/samples/paywall-1.json +61 -29
  55. package/src/assets/samples/paywall-2.json +53 -25
  56. package/src/assets/samples/paywall-app-delete-offer.json +55 -26
  57. package/src/assets/samples/paywall-app-open-offer.json +55 -26
  58. package/src/assets/samples/paywall-back-offer.json +55 -26
  59. package/src/assets/samples/paywall-notification-offer.json +55 -26
  60. package/src/assets/samples/simple-1.json +9 -3
  61. package/src/assets/samples/simple-2.json +51 -24
  62. package/src/assets/samples/unmigrated-builder-1.1.1.json +15 -6
  63. package/src/assets/samples/unmigrated-builder1.json +9 -3
  64. package/src/assets/samples/unvalidated-builder1.json +9 -3
  65. package/src/assets/samples/unvalidated-crash1.json +5 -1
  66. package/src/assets/samples/unvalidated-crashcomponent1.json +5 -1
  67. package/src/assets/samples/vpn-onboard-1.json +94 -51
  68. package/src/assets/samples/vpn-onboard-2.json +94 -51
  69. package/src/assets/samples/vpn-onboard-3.json +85 -48
  70. package/src/assets/samples/vpn-onboard-4.json +85 -48
  71. package/src/assets/samples/vpn-onboard-5.json +132 -73
  72. package/src/assets/samples/vpn-onboard-6.json +94 -51
  73. package/src/assets/samples/vpn-onboard-7.json +92 -50
  74. package/src/build-components/BIcon/BIconProps.generated.ts +1 -0
  75. package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +1 -0
  76. package/src/build-components/Button/ButtonProps.generated.ts +1 -0
  77. package/src/build-components/Carousel/CarouselProps.generated.ts +1 -0
  78. package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +1 -0
  79. package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +1 -0
  80. package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +1 -0
  81. package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +1 -0
  82. package/src/build-components/CountDown/CountDownProps.generated.ts +1 -0
  83. package/src/build-components/Image/ImageProps.generated.ts +7 -0
  84. package/src/build-components/Image/pattern.json +9 -0
  85. package/src/build-components/Main/MainProps.generated.ts +1 -0
  86. package/src/build-components/NavigationBarColor/NavigationBarColorProps.generated.ts +1 -0
  87. package/src/build-components/Onboard/OnboardProps.generated.ts +1 -0
  88. package/src/build-components/OnboardButton/OnboardButton.tsx +6 -6
  89. package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +2 -0
  90. package/src/build-components/OnboardButton/pattern.json +2 -1
  91. package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +1 -0
  92. package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +1 -0
  93. package/src/build-components/OnboardFooter/OnboardFooter.tsx +3 -3
  94. package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +1 -0
  95. package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +7 -0
  96. package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +1 -0
  97. package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +1 -0
  98. package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +1 -0
  99. package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +1 -0
  100. package/src/build-components/PaywallBackground/PaywallBackgroundProps.generated.ts +1 -0
  101. package/src/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.ts +1 -0
  102. package/src/build-components/PaywallOptions/PaywallOptionsProps.generated.ts +1 -0
  103. package/src/build-components/PaywallProvider/PaywallProviderProps.generated.ts +1 -0
  104. package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.ts +1 -0
  105. package/src/build-components/PriceTag/PriceTagProps.generated.ts +1 -0
  106. package/src/build-components/Pricing/PricingProps.generated.ts +1 -0
  107. package/src/build-components/Promo/PromoProps.generated.ts +1 -0
  108. package/src/build-components/RadioButton/RadioButtonProps.generated.ts +1 -0
  109. package/src/build-components/Separator/SeparatorProps.generated.ts +1 -0
  110. package/src/build-components/Separator/pattern.json +2 -1
  111. package/src/build-components/StatusBarColor/StatusBarColorProps.generated.ts +1 -51
  112. package/src/build-components/StatusBarColor/pattern.json +2 -2
  113. package/src/build-components/Text/TextProps.generated.ts +1 -0
  114. package/src/build-components/Text/pattern.json +1 -1
  115. package/src/build-components/View/ViewProps.generated.ts +1 -0
  116. package/src/build-components/View/pattern.json +2 -1
  117. package/src/build-components/patterns.generated.ts +1567 -1139
  118. package/src/mockOS/context/MockOSContext.tsx +32 -0
  119. package/src/mockOS/context/MockOSContextBase.ts +3 -0
  120. package/src/mockOS/managers/mockPermissionManager.ts +9 -3
  121. package/src/modals/InspectModal.tsx +37 -8
  122. package/src/product-base/buildPaywallLocalizationParams.ts +12 -3
  123. package/src/types/PreviewConfig.ts +70 -46
@@ -60,6 +60,12 @@ export function MockOSProvider({
60
60
  const [permission, setPermission] = useState<PermissionType | string | null>(
61
61
  null,
62
62
  );
63
+ const permissionResolverRef = useRef<
64
+ | ((
65
+ result: import('../managers/mockPermissionManager').PermissionStatus,
66
+ ) => void)
67
+ | null
68
+ >(null);
63
69
  const [subscriptionProductId, setSubscriptionProductId] = useState<
64
70
  string | null
65
71
  >(null);
@@ -133,6 +139,24 @@ export function MockOSProvider({
133
139
  });
134
140
  }, []);
135
141
 
142
+ const requestPermissionAsync = useCallback(
143
+ (requestedPermission: PermissionType | string) => {
144
+ // Cancel any existing pending request
145
+ if (permissionResolverRef.current) {
146
+ permissionResolverRef.current('not-determined');
147
+ permissionResolverRef.current = null;
148
+ }
149
+ setPermission(requestedPermission);
150
+
151
+ return new Promise<
152
+ import('../managers/mockPermissionManager').PermissionStatus
153
+ >((resolve) => {
154
+ permissionResolverRef.current = resolve;
155
+ });
156
+ },
157
+ [],
158
+ );
159
+
136
160
  const resolveSubscriptionPurchase = useCallback((result: boolean) => {
137
161
  const resolver = subscriptionResolverRef.current;
138
162
  subscriptionResolverRef.current = null;
@@ -146,6 +170,7 @@ export function MockOSProvider({
146
170
  permission,
147
171
  setPermission,
148
172
  requestSubscriptionPurchase,
173
+ requestPermissionAsync,
149
174
  currentRoute,
150
175
  navigation,
151
176
  goBack,
@@ -154,6 +179,7 @@ export function MockOSProvider({
154
179
  [
155
180
  permission,
156
181
  requestSubscriptionPurchase,
182
+ requestPermissionAsync,
157
183
  currentRoute,
158
184
  navigation,
159
185
  goBack,
@@ -162,11 +188,17 @@ export function MockOSProvider({
162
188
  );
163
189
 
164
190
  const handleAllow = () => {
191
+ const resolver = permissionResolverRef.current;
192
+ permissionResolverRef.current = null;
165
193
  setPermission(null);
194
+ resolver?.('granted');
166
195
  };
167
196
 
168
197
  const handleDeny = () => {
198
+ const resolver = permissionResolverRef.current;
199
+ permissionResolverRef.current = null;
169
200
  setPermission(null);
201
+ resolver?.('denied');
170
202
  };
171
203
 
172
204
  return (
@@ -18,6 +18,9 @@ export interface MockOSContextValue {
18
18
  permission: PermissionType | string | null;
19
19
  setPermission: (permission: PermissionType | string | null) => void;
20
20
  requestSubscriptionPurchase: (productId: string) => Promise<boolean>;
21
+ requestPermissionAsync: (
22
+ permission: PermissionType | string,
23
+ ) => Promise<import('../managers/mockPermissionManager').PermissionStatus>;
21
24
  // Router
22
25
  currentRoute: RouteType;
23
26
  navigation: (route: RouteType) => void;
@@ -18,7 +18,9 @@ export class MockPermissionManager {
18
18
  this.context = context;
19
19
  }
20
20
 
21
- requestPermission(permission: PermissionType | string): PermissionStatus {
21
+ async requestPermission(
22
+ permission: PermissionType | string,
23
+ ): Promise<PermissionStatus> {
22
24
  if (this.context === null) {
23
25
  alert(
24
26
  `Permission requested: ${permission}\n(Mock OS context not available)`,
@@ -26,9 +28,13 @@ export class MockPermissionManager {
26
28
  return 'not-determined';
27
29
  }
28
30
 
29
- // Set permission to trigger modal display
31
+ // Set permission to trigger modal display and wait for user's choice
32
+ if (this.context.requestPermissionAsync) {
33
+ return await this.context.requestPermissionAsync(permission);
34
+ }
35
+
36
+ // Fallback if requestPermissionAsync is not available yet
30
37
  this.context.setPermission(permission);
31
- // Default behavior: grant all permissions in mock environment
32
38
  return 'granted';
33
39
  }
34
40
 
@@ -101,9 +101,11 @@ function LocalizationsTab({
101
101
  const defaultLangKeys =
102
102
  defaultLocalization[language] ?? defaultLocalization['en'] ?? {};
103
103
 
104
- const entries = Object.entries(langKeys);
104
+ const allKeys = Array.from(
105
+ new Set([...Object.keys(defaultLangKeys), ...Object.keys(langKeys)]),
106
+ ).sort();
105
107
 
106
- if (entries.length === 0) {
108
+ if (allKeys.length === 0) {
107
109
  return (
108
110
  <p className="inspect-modal__empty">
109
111
  No localization keys found for &quot;{language}&quot;.
@@ -122,17 +124,32 @@ function LocalizationsTab({
122
124
  </tr>
123
125
  </thead>
124
126
  <tbody>
125
- {entries.map(([key, value]) => {
126
- const isDefault = defaultLangKeys[key] === value;
127
+ {allKeys.map((key) => {
128
+ const hasCustom = key in langKeys;
129
+ const customValue = langKeys[key];
130
+ const defaultValue = defaultLangKeys[key];
131
+
132
+ const isCustom =
133
+ hasCustom &&
134
+ customValue !== defaultValue &&
135
+ customValue !== undefined;
136
+ const value = isCustom ? customValue : (defaultValue ?? '');
137
+
127
138
  return (
128
139
  <tr key={key}>
129
140
  <td className="inspect-modal__cell-key">{key}</td>
130
141
  <td className="inspect-modal__cell-value">{value}</td>
131
142
  <td>
132
143
  <span
133
- className={`inspect-modal__badge${isDefault ? ' inspect-modal__badge--default' : ' inspect-modal__badge--custom'}`}
144
+ className={`inspect-modal__badge${!isCustom ? ' inspect-modal__badge--default' : ' inspect-modal__badge--custom'}`}
134
145
  >
135
- {isDefault ? 'default' : 'custom'}
146
+ {!isCustom ? (
147
+ <>
148
+ <span style={{ color: 'red' }}>!</span> fallback
149
+ </>
150
+ ) : (
151
+ 'custom'
152
+ )}
136
153
  </span>
137
154
  </td>
138
155
  </tr>
@@ -262,7 +279,13 @@ function ColorsTab({
262
279
  <span
263
280
  className={`inspect-modal__badge${isDefault ? ' inspect-modal__badge--default' : ' inspect-modal__badge--custom'}`}
264
281
  >
265
- {isDefault ? 'default' : 'custom'}
282
+ {isDefault ? (
283
+ <>
284
+ <span style={{ color: 'red' }}>!</span> fallback
285
+ </>
286
+ ) : (
287
+ 'custom'
288
+ )}
266
289
  </span>
267
290
  </td>
268
291
  </tr>
@@ -303,7 +326,13 @@ function ColorsTab({
303
326
  <span
304
327
  className={`inspect-modal__badge${isDefault ? ' inspect-modal__badge--default' : ' inspect-modal__badge--custom'}`}
305
328
  >
306
- {isDefault ? 'default' : 'custom'}
329
+ {isDefault ? (
330
+ <>
331
+ <span style={{ color: 'red' }}>!</span> fallback
332
+ </>
333
+ ) : (
334
+ 'custom'
335
+ )}
307
336
  </span>
308
337
  </td>
309
338
  </tr>
@@ -46,9 +46,18 @@ export function buildPaywallLocalizationParams(
46
46
  const periodKey = getPeriodLocalizationKey(period, false);
47
47
  const promoPeriodKey = hasPromo ? getPeriodLocalizationKey(period, true) : '';
48
48
 
49
- const localizedPromoPrice = hasPromo
50
- ? `${extractedParams.promoPrice} ${extractedParams.currency}`.trim()
51
- : '';
49
+ let localizedPromoPrice = '';
50
+ if (hasPromo) {
51
+ try {
52
+ localizedPromoPrice = new Intl.NumberFormat(undefined, {
53
+ style: 'currency',
54
+ currency: extractedParams.currency,
55
+ }).format(Number(extractedParams.promoPrice));
56
+ } catch {
57
+ localizedPromoPrice =
58
+ `${extractedParams.promoPrice} ${extractedParams.currency}`.trim();
59
+ }
60
+ }
52
61
 
53
62
  const localizedPeriod = resolve(periodKey);
54
63
  const localizedPromoPeriod = hasPromo ? resolve(promoPeriodKey) : '';
@@ -16,31 +16,37 @@ export type LocalizationKey =
16
16
  | 'base.builder.paywall.promo.freeTrial.text'
17
17
  | 'base.builder.paywall.promo.regular.text'
18
18
  // onboard – titles
19
- | 'onboard.title.one-page'
20
- | 'onboard.title.two-page'
21
- | 'onboard.title.three-page'
22
- | 'onboard.title.four-page'
23
- | 'onboard.title.one-page2'
24
- | 'onboard.title.two-page2'
25
- | 'onboard.title.three-page2'
26
- | 'onboard.title.four-page2'
19
+ | 'base.onboard.title.one-page'
20
+ | 'base.onboard.title.two-page'
21
+ | 'base.onboard.title.three-page'
22
+ | 'base.onboard.title.four-page'
23
+ | 'base.onboard.title.five-page'
24
+ | 'base.onboard.title.six-page'
25
+ | 'base.onboard.title.one-page2'
26
+ | 'base.onboard.title.two-page2'
27
+ | 'base.onboard.title.three-page2'
28
+ | 'base.onboard.title.four-page2'
27
29
  // onboard – subtitles
28
- | 'onboard.subtitle.one-page'
29
- | 'onboard.subtitle.two-page'
30
- | 'onboard.subtitle.three-page'
31
- | 'onboard.subtitle.four-page'
32
- | 'onboard.subtitle.one-page2'
33
- | 'onboard.subtitle.two-page2'
34
- | 'onboard.subtitle.three-page2'
35
- | 'onboard.subtitle.four-page2'
30
+ | 'base.onboard.subtitle.one-page'
31
+ | 'base.onboard.subtitle.two-page'
32
+ | 'base.onboard.subtitle.three-page'
33
+ | 'base.onboard.subtitle.four-page'
34
+ | 'base.onboard.subtitle.five-page'
35
+ | 'base.onboard.subtitle.six-page'
36
+ | 'base.onboard.subtitle.one-page2'
37
+ | 'base.onboard.subtitle.two-page2'
38
+ | 'base.onboard.subtitle.three-page2'
39
+ | 'base.onboard.subtitle.four-page2'
36
40
  // onboard – actions
37
- | 'onboard.next.one-page'
38
- | 'onboard.next.two-page'
39
- | 'onboard.next.three-page'
40
- | 'onboard.skip.one-page'
41
- | 'onboard.skip.two-page'
42
- | 'onboard.skip.three-page'
43
- | 'onboard.allow.four-page'
41
+ | 'base.onboard.next.one-page'
42
+ | 'base.onboard.next.two-page'
43
+ | 'base.onboard.next.three-page'
44
+ | 'base.onboard.next.five-page'
45
+ | 'base.onboard.skip.one-page'
46
+ | 'base.onboard.skip.two-page'
47
+ | 'base.onboard.skip.three-page'
48
+ | 'base.onboard.skip.five-page'
49
+ | 'base.onboard.allow.four-page'
44
50
  // onboard – footer
45
51
  | 'view.onboarding.footer.description'
46
52
  | 'view.onboarding.btnPrivacy'
@@ -74,39 +80,46 @@ export const defaultLocalization: Localication = {
74
80
  'base.builder.paywall.promo.regular.text':
75
81
  '@localizedPrice @localizedPeriod',
76
82
  // onboard – titles
77
- 'onboard.title.one-page': 'Secure your connection',
78
- 'onboard.title.two-page': 'Access content worldwide',
79
- 'onboard.title.three-page': 'Fast and reliable',
80
- 'onboard.title.four-page': 'Stay notified and safe',
81
- 'onboard.title.one-page2': 'Secure your connection',
82
- 'onboard.title.two-page2': 'Access content worldwide',
83
- 'onboard.title.three-page2': 'Fast and reliable',
84
- 'onboard.title.four-page2': 'Stay notified and safe',
83
+ 'base.onboard.title.one-page': 'Secure your connection',
84
+ 'base.onboard.title.two-page': 'Access content worldwide',
85
+ 'base.onboard.title.three-page': 'Fast and reliable',
86
+ 'base.onboard.title.four-page': 'Stay notified and safe',
87
+ 'base.onboard.title.five-page': 'Enhance your experience',
88
+ 'base.onboard.title.six-page': 'You are all set!',
89
+ 'base.onboard.title.one-page2': 'Secure your connection',
90
+ 'base.onboard.title.two-page2': 'Access content worldwide',
91
+ 'base.onboard.title.three-page2': 'Fast and reliable',
92
+ 'base.onboard.title.four-page2': 'Stay notified and safe',
85
93
  // onboard – subtitles
86
- 'onboard.subtitle.one-page':
94
+ 'base.onboard.subtitle.one-page':
87
95
  'Encrypt your traffic and protect your privacy on public Wi\u2011Fi.',
88
- 'onboard.subtitle.two-page':
96
+ 'base.onboard.subtitle.two-page':
89
97
  'Connect to high\u2011speed servers in many countries with one tap.',
90
- 'onboard.subtitle.three-page':
98
+ 'base.onboard.subtitle.three-page':
91
99
  'Auto\u2011connect to the best server for speed and stability.',
92
- 'onboard.subtitle.four-page':
100
+ 'base.onboard.subtitle.four-page':
93
101
  'Enable notifications for connection status and security tips.',
94
- 'onboard.subtitle.one-page2':
102
+ 'base.onboard.subtitle.five-page':
103
+ 'Get the most out of our app with premium features.',
104
+ 'base.onboard.subtitle.six-page': 'Enjoy secure and fast browsing.',
105
+ 'base.onboard.subtitle.one-page2':
95
106
  'Encrypt your traffic and protect your privacy on public Wi\u2011Fi.',
96
- 'onboard.subtitle.two-page2':
107
+ 'base.onboard.subtitle.two-page2':
97
108
  'Connect to high\u2011speed servers in many countries with one tap.',
98
- 'onboard.subtitle.three-page2':
109
+ 'base.onboard.subtitle.three-page2':
99
110
  'Auto\u2011connect to the best server for speed and stability.',
100
- 'onboard.subtitle.four-page2':
111
+ 'base.onboard.subtitle.four-page2':
101
112
  'Enable notifications for connection status and security tips.',
102
113
  // onboard – actions
103
- 'onboard.next.one-page': 'Next',
104
- 'onboard.next.two-page': 'Next',
105
- 'onboard.next.three-page': 'Next',
106
- 'onboard.skip.one-page': 'Skip',
107
- 'onboard.skip.two-page': 'Skip',
108
- 'onboard.skip.three-page': 'Skip',
109
- 'onboard.allow.four-page': 'Allow',
114
+ 'base.onboard.next.one-page': 'Next',
115
+ 'base.onboard.next.two-page': 'Next',
116
+ 'base.onboard.next.three-page': 'Next',
117
+ 'base.onboard.next.five-page': 'Next',
118
+ 'base.onboard.skip.one-page': 'Skip',
119
+ 'base.onboard.skip.two-page': 'Skip',
120
+ 'base.onboard.skip.three-page': 'Skip',
121
+ 'base.onboard.skip.five-page': 'Skip',
122
+ 'base.onboard.allow.four-page': 'Allow',
110
123
  // onboard – footer
111
124
  'view.onboarding.footer.description':
112
125
  'By clicking continue, you will be accepting the Terms of service and privacy policy',
@@ -133,6 +146,17 @@ export const defaultLocalization: Localication = {
133
146
  '@trialPeriod @trialPeriodUnit ücretsiz deneme',
134
147
  'base.builder.paywall.promo.regular.text':
135
148
  '@localizedPrice @localizedPeriod',
149
+ // onboard – titles
150
+ 'base.onboard.title.five-page': 'Deneyiminizi geliştirin',
151
+ 'base.onboard.title.six-page': 'Her şey hazır!',
152
+ // onboard – subtitles
153
+ 'base.onboard.subtitle.five-page':
154
+ 'Premium özelliklerle uygulamamızdan en iyi şekilde yararlanın.',
155
+ 'base.onboard.subtitle.six-page':
156
+ 'Güvenli ve hızlı gezinmenin keyfini çıkarın.',
157
+ // onboard – actions
158
+ 'base.onboard.next.five-page': 'İleri',
159
+ 'base.onboard.skip.five-page': 'Geç',
136
160
  },
137
161
  };
138
162