@developer_tribe/react-builder 1.2.30 → 1.2.32

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 (154) hide show
  1. package/dist/build-components/BIcon/BIcon.d.ts +1 -1
  2. package/dist/build-components/BIcon/BIconProps.generated.d.ts +1 -1
  3. package/dist/build-components/BackgroundImage/BackgroundImage.d.ts +1 -1
  4. package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +1 -1
  5. package/dist/build-components/Button/Button.d.ts +1 -1
  6. package/dist/build-components/Button/ButtonProps.generated.d.ts +1 -1
  7. package/dist/build-components/Carousel/CarouselProps.generated.d.ts +1 -1
  8. package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +1 -1
  9. package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +5 -1
  10. package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +1 -1
  11. package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +1 -1
  12. package/dist/build-components/CountDown/CountDownProps.generated.d.ts +1 -1
  13. package/dist/build-components/Image/ImageProps.generated.d.ts +1 -1
  14. package/dist/build-components/Main/MainProps.generated.d.ts +1 -1
  15. package/dist/build-components/NavigationBarColor/NavigationBarColorProps.generated.d.ts +1 -1
  16. package/dist/build-components/Onboard/OnboardProps.generated.d.ts +1 -1
  17. package/dist/build-components/OnboardButton/OnboardButton.d.ts +1 -1
  18. package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +2 -4
  19. package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +1 -1
  20. package/dist/build-components/OnboardDot/OnboardDot.d.ts +1 -1
  21. package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +1 -1
  22. package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +1 -1
  23. package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +1 -1
  24. package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +1 -1
  25. package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +1 -1
  26. package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +1 -1
  27. package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +1 -1
  28. package/dist/build-components/PaywallBackground/PaywallBackgroundProps.generated.d.ts +1 -1
  29. package/dist/build-components/PaywallCloseButton/PaywallCloseButton.d.ts +1 -1
  30. package/dist/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.d.ts +1 -1
  31. package/dist/build-components/PaywallOptions/PaywallOptionsProps.generated.d.ts +1 -1
  32. package/dist/build-components/PaywallProvider/PaywallProviderProps.generated.d.ts +1 -1
  33. package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.d.ts +1 -1
  34. package/dist/build-components/PriceTag/PriceTagProps.generated.d.ts +1 -1
  35. package/dist/build-components/Pricing/PricingProps.generated.d.ts +1 -1
  36. package/dist/build-components/Promo/PromoProps.generated.d.ts +1 -1
  37. package/dist/build-components/RadioButton/RadioButtonProps.generated.d.ts +1 -1
  38. package/dist/build-components/Separator/SeparatorProps.generated.d.ts +1 -1
  39. package/dist/build-components/StatusBarColor/StatusBarColorProps.generated.d.ts +1 -1
  40. package/dist/build-components/Text/Text.d.ts +1 -1
  41. package/dist/build-components/Text/TextProps.generated.d.ts +1 -1
  42. package/dist/build-components/View/ViewProps.generated.d.ts +1 -1
  43. package/dist/build-components/patterns.generated.d.ts +73 -69
  44. package/dist/index.cjs.js +1 -1
  45. package/dist/index.cjs.js.map +1 -1
  46. package/dist/index.esm.js +1 -1
  47. package/dist/index.esm.js.map +1 -1
  48. package/dist/index.web.cjs.js +4 -4
  49. package/dist/index.web.cjs.js.map +1 -1
  50. package/dist/index.web.esm.js +4 -4
  51. package/dist/index.web.esm.js.map +1 -1
  52. package/dist/utils/attributeStyle.d.ts +2 -2
  53. package/dist/utils/patterns.d.ts +2 -2
  54. package/dist/utils/useMergedStyle.d.ts +1 -1
  55. package/package.json +1 -1
  56. package/scripts/prebuild/utils/createGeneratedProps.js +9 -9
  57. package/scripts/prebuild/utils/validateAllComponentsOrThrow.js +9 -9
  58. package/src/RenderPage.tsx +42 -1
  59. package/src/assets/meta.json +1 -1
  60. package/src/assets/samples/vpn-onboard-1.json +21 -45
  61. package/src/assets/samples/vpn-onboard-2.json +21 -45
  62. package/src/assets/samples/vpn-onboard-3.json +21 -53
  63. package/src/assets/samples/vpn-onboard-4.json +21 -21
  64. package/src/assets/samples/vpn-onboard-5.json +33 -33
  65. package/src/assets/samples/vpn-onboard-6.json +21 -21
  66. package/src/assets/samples/vpn-onboard-7.json +21 -21
  67. package/src/build-components/BIcon/BIcon.tsx +1 -1
  68. package/src/build-components/BIcon/BIconProps.generated.ts +1 -1
  69. package/src/build-components/BIcon/pattern.json +4 -2
  70. package/src/build-components/BackgroundImage/BackgroundImage.tsx +2 -2
  71. package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +1 -1
  72. package/src/build-components/BackgroundImage/pattern.json +11 -3
  73. package/src/build-components/Button/Button.tsx +3 -3
  74. package/src/build-components/Button/ButtonProps.generated.ts +1 -1
  75. package/src/build-components/Button/pattern.json +5 -3
  76. package/src/build-components/Carousel/CarouselProps.generated.ts +1 -1
  77. package/src/build-components/Carousel/pattern.json +9 -3
  78. package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +1 -1
  79. package/src/build-components/CarouselDots/CarouselDots.tsx +8 -17
  80. package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +5 -1
  81. package/src/build-components/CarouselDots/pattern.json +12 -1
  82. package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +1 -1
  83. package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +1 -1
  84. package/src/build-components/CarouselProvider/pattern.json +5 -2
  85. package/src/build-components/CountDown/CountDownProps.generated.ts +1 -1
  86. package/src/build-components/CountDown/pattern.json +4 -2
  87. package/src/build-components/Image/ImageProps.generated.ts +1 -1
  88. package/src/build-components/Image/pattern.json +11 -4
  89. package/src/build-components/Main/Main.tsx +1 -0
  90. package/src/build-components/Main/MainProps.generated.ts +1 -1
  91. package/src/build-components/Main/pattern.json +4 -2
  92. package/src/build-components/NavigationBarColor/NavigationBarColorProps.generated.ts +1 -1
  93. package/src/build-components/NavigationBarColor/pattern.json +5 -3
  94. package/src/build-components/Onboard/OnboardProps.generated.ts +1 -1
  95. package/src/build-components/Onboard/pattern.json +7 -3
  96. package/src/build-components/OnboardButton/OnboardButton.tsx +3 -22
  97. package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +2 -4
  98. package/src/build-components/OnboardButton/pattern.json +42 -44
  99. package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +1 -1
  100. package/src/build-components/OnboardButtons/pattern.json +16 -5
  101. package/src/build-components/OnboardDot/OnboardDot.tsx +10 -22
  102. package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +1 -1
  103. package/src/build-components/OnboardDot/pattern.json +6 -3
  104. package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +1 -1
  105. package/src/build-components/OnboardFooter/pattern.json +4 -2
  106. package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +1 -1
  107. package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +1 -1
  108. package/src/build-components/OnboardItem/pattern.json +12 -4
  109. package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +1 -1
  110. package/src/build-components/OnboardProvider/pattern.json +9 -3
  111. package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +1 -1
  112. package/src/build-components/OnboardSubtitle/pattern.json +5 -2
  113. package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +1 -1
  114. package/src/build-components/OnboardTitle/pattern.json +5 -2
  115. package/src/build-components/PaywallBackground/PaywallBackgroundProps.generated.ts +1 -1
  116. package/src/build-components/PaywallBackground/pattern.json +4 -2
  117. package/src/build-components/PaywallCloseButton/PaywallCloseButton.tsx +2 -2
  118. package/src/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.ts +1 -1
  119. package/src/build-components/PaywallCloseButton/pattern.json +4 -2
  120. package/src/build-components/PaywallOptions/PaywallOptionsProps.generated.ts +1 -1
  121. package/src/build-components/PaywallOptions/pattern.json +4 -2
  122. package/src/build-components/PaywallProvider/PaywallProviderProps.generated.ts +1 -1
  123. package/src/build-components/PaywallProvider/pattern.json +4 -2
  124. package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.ts +1 -1
  125. package/src/build-components/PaywallSubscribeButton/pattern.json +4 -2
  126. package/src/build-components/PriceTag/PriceTagProps.generated.ts +1 -1
  127. package/src/build-components/PriceTag/pattern.json +10 -4
  128. package/src/build-components/Pricing/PricingProps.generated.ts +1 -1
  129. package/src/build-components/Pricing/pattern.json +4 -2
  130. package/src/build-components/Promo/PromoProps.generated.ts +1 -1
  131. package/src/build-components/Promo/pattern.json +4 -2
  132. package/src/build-components/RadioButton/RadioButton.tsx +6 -3
  133. package/src/build-components/RadioButton/RadioButtonProps.generated.ts +1 -1
  134. package/src/build-components/RenderNode.generated.tsx +7 -7
  135. package/src/build-components/Separator/SeparatorProps.generated.ts +1 -1
  136. package/src/build-components/Separator/pattern.json +5 -3
  137. package/src/build-components/StatusBarColor/StatusBarColorProps.generated.ts +1 -1
  138. package/src/build-components/StatusBarColor/pattern.json +5 -3
  139. package/src/build-components/Text/Text.tsx +2 -2
  140. package/src/build-components/Text/TextProps.generated.ts +1 -1
  141. package/src/build-components/Text/pattern.json +5 -3
  142. package/src/build-components/View/ViewProps.generated.ts +1 -1
  143. package/src/build-components/View/pattern.json +18 -6
  144. package/src/build-components/patterns.generated.ts +73 -69
  145. package/src/build-components/useNode.ts +2 -16
  146. package/src/components/BuilderProvider.tsx +1 -1
  147. package/src/hooks/useLocalize.ts +1 -1
  148. package/src/migrations/migrations/1.1.2_extract_component_attributes_from_style.ts +31 -10
  149. package/src/utils/analyseNodeByPatterns.ts +2 -2
  150. package/src/utils/attributeStyle.ts +9 -3
  151. package/src/utils/extractImageStyle.ts +4 -4
  152. package/src/utils/patterns.ts +3 -3
  153. package/src/utils/projectColors.ts +3 -2
  154. package/src/utils/useMergedStyle.ts +9 -7
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Shared utilities for attribute/style bag access.
3
- * schemaVersion=2 uses `attributes.styles`, legacy uses `attributes.style`.
3
+ * schemaVersion=2 uses `attributes.styles` exclusively.
4
4
  */
5
5
  import type { NodeDefaultAttribute } from '../types/Node';
6
- /** Returns styles or style bag from attributes (schemaVersion=2 uses styles, legacy uses style). */
6
+ /** Returns styles bag from attributes (schemaVersion=2 uses `styles` only). Throws if legacy `style` is found. */
7
7
  export declare function getStyleBag(attributes: NodeDefaultAttribute | undefined): Record<string, unknown> | undefined;
8
8
  /** Safe indexed access to attributes. Use for reading style/direct props. */
9
9
  export declare function toAttributeRecord(attributes: unknown): Record<string, unknown>;
@@ -53,11 +53,11 @@ type Pattern = {
53
53
  export type BuilderPlatform = 'web' | 'native';
54
54
  /**
55
55
  * Keys that conceptually behave like component props (behavior/flags) rather than
56
- * style properties. These should NOT be normalized into `attributes.style`.
56
+ * style properties. These should NOT be normalized into `attributes.styles`.
57
57
  */
58
58
  export declare const NON_STYLE_ATTRIBUTE_KEYS: Set<string>;
59
59
  /**
60
- * schemaVersion=2 stores style-like keys inside `attributes.style`.
60
+ * schemaVersion=2 stores style-like keys inside `attributes.styles`.
61
61
  *
62
62
  * We treat View+Text schema keys as style-like by default, but explicitly exclude
63
63
  * known non-style props (behavior flags).
@@ -1,2 +1,2 @@
1
1
  import type { CSSProperties } from 'react';
2
- export declare function useMergedStyle(base?: CSSProperties, override?: CSSProperties): CSSProperties;
2
+ export declare function useMergedStyle(...args: (CSSProperties | undefined | null | false)[]): CSSProperties;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@developer_tribe/react-builder",
3
- "version": "1.2.30",
3
+ "version": "1.2.32",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "restricted": true,
@@ -142,11 +142,11 @@ export async function createGeneratedProps(
142
142
  return ` ${key}?: ${tsType};`;
143
143
  });
144
144
 
145
- // In schema v2, the source of truth for "style bag" fields is `pattern.attributes.style`.
145
+ // In schema v2, the source of truth for "style bag" fields is `pattern.attributes.styles`.
146
146
  // `meta.styles` is UI metadata (and can include non-style fields like "scrollable" or "condition"),
147
- // so we must NOT treat its keys as belonging to `attributes.style`.
148
- const nestedStyleSchema = isPlainObject(attributes?.style)
149
- ? attributes.style
147
+ // so we must NOT treat its keys as belonging to `attributes.styles`.
148
+ const nestedStyleSchema = isPlainObject(attributes?.styles)
149
+ ? attributes.styles
150
150
  : {};
151
151
  const styleKeys = Object.keys(nestedStyleSchema);
152
152
  const styleInterfaceName = `${componentName}StyleGenerated`;
@@ -173,17 +173,17 @@ export async function createGeneratedProps(
173
173
  `\n}\n`
174
174
  : '';
175
175
 
176
- // In schema v2 we always allow a nested `style` object.
176
+ // In schema v2 we always allow a nested `styles` object.
177
177
  // If pattern.json declares meta.styles keys, we expose them for autocomplete while keeping flexibility via an index signature.
178
178
  const styleLine =
179
179
  styleKeys.length > 0
180
- ? ` style?: ${styleInterfaceName};`
181
- : ` style?: Record<string, unknown>;`;
180
+ ? ` styles?: ${styleInterfaceName};`
181
+ : ` styles?: Record<string, unknown>;`;
182
182
 
183
- // Avoid emitting `attributes.style?: string;` when `pattern.attributes.style` is the nested style schema object.
183
+ // Avoid emitting `attributes.styles?: string;` when `pattern.attributes.styles` is the nested style schema object.
184
184
  const attributeLinesWithoutNestedStyle =
185
185
  styleKeys.length > 0
186
- ? attributeLines.filter(line => !line.trim().startsWith('style?:'))
186
+ ? attributeLines.filter(line => !line.trim().startsWith('styles?:'))
187
187
  : attributeLines;
188
188
 
189
189
  const childTsType =
@@ -203,17 +203,17 @@ async function validatePatternJson(componentDir, componentName) {
203
203
 
204
204
  // Validate attributes accept primitive, enum array, or custom type refs (including X[])
205
205
  for (const [attrName, attrType] of Object.entries(pattern.attributes)) {
206
- if (attrName === 'style') {
206
+ if (attrName === 'styles') {
207
207
  if (!isPlainObject(attrType)) {
208
208
  return fail(
209
- `[${componentName}] pattern.json -> 'pattern.attributes.style' must be an object`
209
+ `[${componentName}] pattern.json -> 'pattern.attributes.styles' must be an object`
210
210
  );
211
211
  }
212
212
  for (const [styleKey, styleType] of Object.entries(attrType)) {
213
213
  const res = validateAttrType(
214
214
  styleKey,
215
215
  styleType,
216
- 'pattern.attributes.style'
216
+ 'pattern.attributes.styles'
217
217
  );
218
218
  if (res) return res;
219
219
  }
@@ -335,15 +335,15 @@ async function validatePatternJson(componentDir, componentName) {
335
335
  const parentAttributes = parentData?.pattern?.attributes || {};
336
336
  const childAttributes = data?.pattern?.attributes || {};
337
337
  const mergedAttributes = { ...parentAttributes, ...childAttributes };
338
- // Deep-merge nested schema `attributes.style` when present (so parent style keys propagate).
339
- const parentStyle = isPlainObject(parentAttributes?.style)
340
- ? parentAttributes.style
338
+ // Deep-merge nested schema `attributes.styles` when present (so parent style keys propagate).
339
+ const parentStyle = isPlainObject(parentAttributes?.styles)
340
+ ? parentAttributes.styles
341
341
  : null;
342
- const childStyle = isPlainObject(childAttributes?.style)
343
- ? childAttributes.style
342
+ const childStyle = isPlainObject(childAttributes?.styles)
343
+ ? childAttributes.styles
344
344
  : null;
345
345
  if (parentStyle || childStyle) {
346
- mergedAttributes.style = {
346
+ mergedAttributes.styles = {
347
347
  ...(parentStyle || {}),
348
348
  ...(childStyle || {}),
349
349
  };
@@ -1,4 +1,4 @@
1
- import { useRef } from 'react';
1
+ import { useEffect, useRef } from 'react';
2
2
  import { DeviceMockFrame } from './DeviceMockFrame';
3
3
  import { Node } from './types/Node';
4
4
  import { RenderNode } from './build-components';
@@ -10,6 +10,8 @@ import {
10
10
  } from './components/BuilderProvider';
11
11
  import { RenderErrorBoundary } from './components/RenderErrorBoundary';
12
12
  import { usePreviewSelection } from './hooks/usePreviewSelection';
13
+ import { defaultLocalization } from './types/PreviewConfig';
14
+ import { defaultProjectColors } from './utils/projectColors';
13
15
  export type ScreenStyle = {
14
16
  light: { backgroundColor: string; color: string; seperatorColor?: string };
15
17
  dark: { backgroundColor: string; color: string; seperatorColor?: string };
@@ -67,6 +69,7 @@ export function RenderPage({
67
69
  setCurrent: s.setCurrent,
68
70
  }));
69
71
  const previewRootRef = useRef<HTMLDivElement | null>(null);
72
+ const hasAlertedRef = useRef(false);
70
73
  const showEmptyState = isNullish(data);
71
74
 
72
75
  usePreviewSelection({
@@ -78,6 +81,44 @@ export function RenderPage({
78
81
  forceRender,
79
82
  });
80
83
 
84
+ // Alert once per page when default localization or project colors are used
85
+ useEffect(() => {
86
+ if (hasAlertedRef.current) return;
87
+
88
+ const locKeys = overrideLocalization
89
+ ? Object.keys(overrideLocalization)
90
+ : [];
91
+ const pcKeys = overrideProjectColors
92
+ ? [
93
+ ...Object.keys(overrideProjectColors.STATIC_COLORS ?? {}),
94
+ ...Object.keys(overrideProjectColors.THEME_COLORS ?? {}),
95
+ ]
96
+ : [];
97
+
98
+ const isDefaultLocalization =
99
+ !overrideLocalization ||
100
+ locKeys.length === 0 ||
101
+ JSON.stringify(overrideLocalization) ===
102
+ JSON.stringify(defaultLocalization);
103
+
104
+ const isDefaultProjectColors =
105
+ !overrideProjectColors ||
106
+ JSON.stringify(overrideProjectColors) ===
107
+ JSON.stringify(defaultProjectColors);
108
+
109
+ if (isDefaultLocalization || isDefaultProjectColors) {
110
+ const parts: string[] = [];
111
+ if (isDefaultLocalization) parts.push('localization');
112
+ if (isDefaultProjectColors) parts.push('projectColors');
113
+
114
+ hasAlertedRef.current = true;
115
+ alert(
116
+ `[RenderPage] ⚠️ Using default ${parts.join(' & ')}. ` +
117
+ 'Provide overrides via the store or params to avoid fallback values.',
118
+ );
119
+ }
120
+ }, [overrideLocalization, overrideProjectColors]);
121
+
81
122
  return (
82
123
  <RenderErrorBoundary subtitle="caught by RenderPage">
83
124
  <BuilderProvider
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "supportedProjectVersion": "1.1.2",
3
- "reactBuilderVersion": "1.2.29"
3
+ "reactBuilderVersion": "1.2.31"
4
4
  }
@@ -2,30 +2,6 @@
2
2
  "name": "vpn-onboard-1",
3
3
  "version": "1.1.2",
4
4
  "type": "onboard",
5
- "appConfig": {
6
- "localication": {
7
- "ar": {
8
- "onboard.title.one-page": "أمّن اتصالك",
9
- "onboard.title.two-page": "وصول إلى المحتوى حول العالم",
10
- "onboard.title.three-page": "سرعة واعتمادية",
11
- "onboard.title.four-page": "إشعارات وحماية دائمة",
12
- "onboard.subtitle.one-page": "قم بتشفير حركة المرور وحماية خصوصيتك على شبكات Wi‑Fi العامة.",
13
- "onboard.subtitle.two-page": "اتصل بخوادم عالية السرعة في بلدان متعددة بضغطة واحدة.",
14
- "onboard.subtitle.three-page": "يتصل التطبيق تلقائياً بأفضل خادم لسرعة وثبات أعلى.",
15
- "onboard.subtitle.four-page": "فعّل الإشعارات لمعرفة حالة الاتصال والحصول على نصائح الأمان.",
16
- "onboard.next.one-page": "التالي",
17
- "onboard.next.two-page": "التالي",
18
- "onboard.next.three-page": "التالي",
19
- "onboard.skip.one-page": "تخطي",
20
- "onboard.skip.two-page": "تخطي",
21
- "onboard.skip.three-page": "تخطي",
22
- "onboard.allow.four-page": "السماح",
23
- "view.onboarding.footer.description": "بالمتابعة، فإنك توافق على",
24
- "view.onboarding.btnPrivacy": "سياسة الخصوصية",
25
- "view.onboarding.btnTerms": "شروط الخدمة"
26
- }
27
- }
28
- },
29
5
  "data": {
30
6
  "type": "Main",
31
7
  "isMain": true,
@@ -304,8 +280,6 @@
304
280
  "type": "OnboardButton",
305
281
  "attributes": {
306
282
  "labelKey": "onboard.skip.one-page",
307
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
308
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
309
283
  "events": [
310
284
  {
311
285
  "type": "Navigate",
@@ -314,7 +288,9 @@
314
288
  }
315
289
  ],
316
290
  "styles": {
317
- "flex": 1
291
+ "flex": 1,
292
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
293
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
318
294
  }
319
295
  }
320
296
  },
@@ -322,8 +298,6 @@
322
298
  "type": "OnboardButton",
323
299
  "attributes": {
324
300
  "labelKey": "onboard.next.one-page",
325
- "button_text_color": "STATIC_COLORS.WHITE",
326
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
327
301
  "events": [
328
302
  {
329
303
  "type": "Navigate",
@@ -332,7 +306,9 @@
332
306
  }
333
307
  ],
334
308
  "styles": {
335
- "flex": 1
309
+ "flex": 1,
310
+ "color": "STATIC_COLORS.WHITE",
311
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
336
312
  }
337
313
  }
338
314
  }
@@ -357,8 +333,6 @@
357
333
  "type": "OnboardButton",
358
334
  "attributes": {
359
335
  "labelKey": "onboard.skip.two-page",
360
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
361
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
362
336
  "events": [
363
337
  {
364
338
  "type": "Permission",
@@ -371,7 +345,9 @@
371
345
  }
372
346
  ],
373
347
  "styles": {
374
- "flex": 1
348
+ "flex": 1,
349
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
350
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
375
351
  }
376
352
  }
377
353
  },
@@ -379,8 +355,6 @@
379
355
  "type": "OnboardButton",
380
356
  "attributes": {
381
357
  "labelKey": "onboard.next.two-page",
382
- "button_text_color": "STATIC_COLORS.WHITE",
383
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
384
358
  "events": [
385
359
  {
386
360
  "type": "Permission",
@@ -393,7 +367,9 @@
393
367
  }
394
368
  ],
395
369
  "styles": {
396
- "flex": 1
370
+ "flex": 1,
371
+ "color": "STATIC_COLORS.WHITE",
372
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
397
373
  }
398
374
  }
399
375
  }
@@ -418,8 +394,6 @@
418
394
  "type": "OnboardButton",
419
395
  "attributes": {
420
396
  "labelKey": "onboard.skip.three-page",
421
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
422
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
423
397
  "events": [
424
398
  {
425
399
  "type": "Navigate",
@@ -428,7 +402,9 @@
428
402
  }
429
403
  ],
430
404
  "styles": {
431
- "flex": 1
405
+ "flex": 1,
406
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
407
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
432
408
  }
433
409
  }
434
410
  },
@@ -436,8 +412,6 @@
436
412
  "type": "OnboardButton",
437
413
  "attributes": {
438
414
  "labelKey": "onboard.next.three-page",
439
- "button_text_color": "STATIC_COLORS.WHITE",
440
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
441
415
  "events": [
442
416
  {
443
417
  "type": "Permission",
@@ -450,7 +424,9 @@
450
424
  }
451
425
  ],
452
426
  "styles": {
453
- "flex": 1
427
+ "flex": 1,
428
+ "color": "STATIC_COLORS.WHITE",
429
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
454
430
  }
455
431
  }
456
432
  }
@@ -475,8 +451,6 @@
475
451
  "type": "OnboardButton",
476
452
  "attributes": {
477
453
  "labelKey": "onboard.allow.four-page",
478
- "button_text_color": "STATIC_COLORS.WHITE",
479
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
480
454
  "events": [
481
455
  {
482
456
  "type": "Permission",
@@ -488,7 +462,9 @@
488
462
  }
489
463
  ],
490
464
  "styles": {
491
- "flex": 1
465
+ "flex": 1,
466
+ "color": "STATIC_COLORS.WHITE",
467
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
492
468
  }
493
469
  }
494
470
  }
@@ -2,30 +2,6 @@
2
2
  "name": "vpn-onboard-2",
3
3
  "version": "1.1.2",
4
4
  "type": "onboard",
5
- "appConfig": {
6
- "localication": {
7
- "ar": {
8
- "onboard.title.one-page": " العربية",
9
- "onboard.title.two-page": " العربية",
10
- "onboard.title.three-page": " العربية",
11
- "onboard.title.four-page": " العربية",
12
- "onboard.subtitle.one-page": " العربية",
13
- "onboard.subtitle.two-page": " العربية",
14
- "onboard.subtitle.three-page": " العربية",
15
- "onboard.subtitle.four-page": " العربية",
16
- "onboard.next.one-page": "التالي",
17
- "onboard.next.two-page": "التالي",
18
- "onboard.next.three-page": "التالي",
19
- "onboard.skip.one-page": "تخطي",
20
- "onboard.skip.two-page": "تخطي",
21
- "onboard.skip.three-page": "تخطي",
22
- "onboard.allow.four-page": "السماح",
23
- "view.onboarding.footer.description": "بالمتابعة فإنك توافق على",
24
- "view.onboarding.btnPrivacy": "الخصوصية",
25
- "view.onboarding.btnTerms": "الشروط"
26
- }
27
- }
28
- },
29
5
  "data": {
30
6
  "type": "Main",
31
7
  "isMain": true,
@@ -304,10 +280,8 @@
304
280
  "type": "OnboardButton",
305
281
  "attributes": {
306
282
  "labelKey": "onboard.skip.one-page",
307
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
308
283
  "animation": "line-animation",
309
284
  "animation_color": "STATIC_COLORS.WHITE",
310
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
311
285
  "events": [
312
286
  {
313
287
  "type": "Navigate",
@@ -316,7 +290,9 @@
316
290
  }
317
291
  ],
318
292
  "styles": {
319
- "flex": 1
293
+ "flex": 1,
294
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
295
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
320
296
  }
321
297
  }
322
298
  },
@@ -324,9 +300,7 @@
324
300
  "type": "OnboardButton",
325
301
  "attributes": {
326
302
  "labelKey": "onboard.next.one-page",
327
- "button_text_color": "STATIC_COLORS.WHITE",
328
303
  "animation": "simple-animation",
329
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
330
304
  "events": [
331
305
  {
332
306
  "type": "Navigate",
@@ -335,7 +309,9 @@
335
309
  }
336
310
  ],
337
311
  "styles": {
338
- "flex": 1
312
+ "flex": 1,
313
+ "color": "STATIC_COLORS.WHITE",
314
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
339
315
  }
340
316
  }
341
317
  }
@@ -360,8 +336,6 @@
360
336
  "type": "OnboardButton",
361
337
  "attributes": {
362
338
  "labelKey": "onboard.skip.two-page",
363
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
364
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
365
339
  "events": [
366
340
  {
367
341
  "type": "Permission",
@@ -374,7 +348,9 @@
374
348
  }
375
349
  ],
376
350
  "styles": {
377
- "flex": 1
351
+ "flex": 1,
352
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
353
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
378
354
  }
379
355
  }
380
356
  },
@@ -382,8 +358,6 @@
382
358
  "type": "OnboardButton",
383
359
  "attributes": {
384
360
  "labelKey": "onboard.next.two-page",
385
- "button_text_color": "STATIC_COLORS.WHITE",
386
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
387
361
  "events": [
388
362
  {
389
363
  "type": "Permission",
@@ -396,7 +370,9 @@
396
370
  }
397
371
  ],
398
372
  "styles": {
399
- "flex": 1
373
+ "flex": 1,
374
+ "color": "STATIC_COLORS.WHITE",
375
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
400
376
  }
401
377
  }
402
378
  }
@@ -421,8 +397,6 @@
421
397
  "type": "OnboardButton",
422
398
  "attributes": {
423
399
  "labelKey": "onboard.skip.three-page",
424
- "button_text_color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
425
- "button_background_color": "STATIC_COLORS.TRANSPARENT",
426
400
  "events": [
427
401
  {
428
402
  "type": "Navigate",
@@ -431,7 +405,9 @@
431
405
  }
432
406
  ],
433
407
  "styles": {
434
- "flex": 1
408
+ "flex": 1,
409
+ "color": "THEME_COLORS.ONBOARD_BUTTON_SECONDARY_TEXT",
410
+ "backgroundColor": "STATIC_COLORS.TRANSPARENT"
435
411
  }
436
412
  }
437
413
  },
@@ -439,8 +415,6 @@
439
415
  "type": "OnboardButton",
440
416
  "attributes": {
441
417
  "labelKey": "onboard.next.three-page",
442
- "button_text_color": "STATIC_COLORS.WHITE",
443
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
444
418
  "events": [
445
419
  {
446
420
  "type": "Permission",
@@ -453,7 +427,9 @@
453
427
  }
454
428
  ],
455
429
  "styles": {
456
- "flex": 1
430
+ "flex": 1,
431
+ "color": "STATIC_COLORS.WHITE",
432
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
457
433
  }
458
434
  }
459
435
  }
@@ -478,8 +454,6 @@
478
454
  "type": "OnboardButton",
479
455
  "attributes": {
480
456
  "labelKey": "onboard.allow.four-page",
481
- "button_text_color": "STATIC_COLORS.WHITE",
482
- "button_background_color": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND",
483
457
  "events": [
484
458
  {
485
459
  "type": "Permission",
@@ -491,7 +465,9 @@
491
465
  }
492
466
  ],
493
467
  "styles": {
494
- "flex": 1
468
+ "flex": 1,
469
+ "color": "STATIC_COLORS.WHITE",
470
+ "backgroundColor": "STATIC_COLORS.ONBOARD_BUTTON_PRIMARY_BACKGROUND"
495
471
  }
496
472
  }
497
473
  }