@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.
- package/dist/build-components/BIcon/BIcon.d.ts +1 -1
- package/dist/build-components/BIcon/BIconProps.generated.d.ts +1 -1
- package/dist/build-components/BackgroundImage/BackgroundImage.d.ts +1 -1
- package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +1 -1
- package/dist/build-components/Button/Button.d.ts +1 -1
- package/dist/build-components/Button/ButtonProps.generated.d.ts +1 -1
- package/dist/build-components/Carousel/CarouselProps.generated.d.ts +1 -1
- package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +1 -1
- package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +5 -1
- package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +1 -1
- package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +1 -1
- package/dist/build-components/CountDown/CountDownProps.generated.d.ts +1 -1
- package/dist/build-components/Image/ImageProps.generated.d.ts +1 -1
- package/dist/build-components/Main/MainProps.generated.d.ts +1 -1
- package/dist/build-components/NavigationBarColor/NavigationBarColorProps.generated.d.ts +1 -1
- package/dist/build-components/Onboard/OnboardProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardButton/OnboardButton.d.ts +1 -1
- package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +2 -4
- package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardDot/OnboardDot.d.ts +1 -1
- package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +1 -1
- package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +1 -1
- package/dist/build-components/PaywallBackground/PaywallBackgroundProps.generated.d.ts +1 -1
- package/dist/build-components/PaywallCloseButton/PaywallCloseButton.d.ts +1 -1
- package/dist/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.d.ts +1 -1
- package/dist/build-components/PaywallOptions/PaywallOptionsProps.generated.d.ts +1 -1
- package/dist/build-components/PaywallProvider/PaywallProviderProps.generated.d.ts +1 -1
- package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.d.ts +1 -1
- package/dist/build-components/PriceTag/PriceTagProps.generated.d.ts +1 -1
- package/dist/build-components/Pricing/PricingProps.generated.d.ts +1 -1
- package/dist/build-components/Promo/PromoProps.generated.d.ts +1 -1
- package/dist/build-components/RadioButton/RadioButtonProps.generated.d.ts +1 -1
- package/dist/build-components/Separator/SeparatorProps.generated.d.ts +1 -1
- package/dist/build-components/StatusBarColor/StatusBarColorProps.generated.d.ts +1 -1
- package/dist/build-components/Text/Text.d.ts +1 -1
- package/dist/build-components/Text/TextProps.generated.d.ts +1 -1
- package/dist/build-components/View/ViewProps.generated.d.ts +1 -1
- package/dist/build-components/patterns.generated.d.ts +73 -69
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.web.cjs.js +4 -4
- package/dist/index.web.cjs.js.map +1 -1
- package/dist/index.web.esm.js +4 -4
- package/dist/index.web.esm.js.map +1 -1
- package/dist/utils/attributeStyle.d.ts +2 -2
- package/dist/utils/patterns.d.ts +2 -2
- package/dist/utils/useMergedStyle.d.ts +1 -1
- package/package.json +1 -1
- package/scripts/prebuild/utils/createGeneratedProps.js +9 -9
- package/scripts/prebuild/utils/validateAllComponentsOrThrow.js +9 -9
- package/src/RenderPage.tsx +42 -1
- package/src/assets/meta.json +1 -1
- package/src/assets/samples/vpn-onboard-1.json +21 -45
- package/src/assets/samples/vpn-onboard-2.json +21 -45
- package/src/assets/samples/vpn-onboard-3.json +21 -53
- package/src/assets/samples/vpn-onboard-4.json +21 -21
- package/src/assets/samples/vpn-onboard-5.json +33 -33
- package/src/assets/samples/vpn-onboard-6.json +21 -21
- package/src/assets/samples/vpn-onboard-7.json +21 -21
- package/src/build-components/BIcon/BIcon.tsx +1 -1
- package/src/build-components/BIcon/BIconProps.generated.ts +1 -1
- package/src/build-components/BIcon/pattern.json +4 -2
- package/src/build-components/BackgroundImage/BackgroundImage.tsx +2 -2
- package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +1 -1
- package/src/build-components/BackgroundImage/pattern.json +11 -3
- package/src/build-components/Button/Button.tsx +3 -3
- package/src/build-components/Button/ButtonProps.generated.ts +1 -1
- package/src/build-components/Button/pattern.json +5 -3
- package/src/build-components/Carousel/CarouselProps.generated.ts +1 -1
- package/src/build-components/Carousel/pattern.json +9 -3
- package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +1 -1
- package/src/build-components/CarouselDots/CarouselDots.tsx +8 -17
- package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +5 -1
- package/src/build-components/CarouselDots/pattern.json +12 -1
- package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +1 -1
- package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +1 -1
- package/src/build-components/CarouselProvider/pattern.json +5 -2
- package/src/build-components/CountDown/CountDownProps.generated.ts +1 -1
- package/src/build-components/CountDown/pattern.json +4 -2
- package/src/build-components/Image/ImageProps.generated.ts +1 -1
- package/src/build-components/Image/pattern.json +11 -4
- package/src/build-components/Main/Main.tsx +1 -0
- package/src/build-components/Main/MainProps.generated.ts +1 -1
- package/src/build-components/Main/pattern.json +4 -2
- package/src/build-components/NavigationBarColor/NavigationBarColorProps.generated.ts +1 -1
- package/src/build-components/NavigationBarColor/pattern.json +5 -3
- package/src/build-components/Onboard/OnboardProps.generated.ts +1 -1
- package/src/build-components/Onboard/pattern.json +7 -3
- package/src/build-components/OnboardButton/OnboardButton.tsx +3 -22
- package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +2 -4
- package/src/build-components/OnboardButton/pattern.json +42 -44
- package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +1 -1
- package/src/build-components/OnboardButtons/pattern.json +16 -5
- package/src/build-components/OnboardDot/OnboardDot.tsx +10 -22
- package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +1 -1
- package/src/build-components/OnboardDot/pattern.json +6 -3
- package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +1 -1
- package/src/build-components/OnboardFooter/pattern.json +4 -2
- package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +1 -1
- package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +1 -1
- package/src/build-components/OnboardItem/pattern.json +12 -4
- package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +1 -1
- package/src/build-components/OnboardProvider/pattern.json +9 -3
- package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +1 -1
- package/src/build-components/OnboardSubtitle/pattern.json +5 -2
- package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +1 -1
- package/src/build-components/OnboardTitle/pattern.json +5 -2
- package/src/build-components/PaywallBackground/PaywallBackgroundProps.generated.ts +1 -1
- package/src/build-components/PaywallBackground/pattern.json +4 -2
- package/src/build-components/PaywallCloseButton/PaywallCloseButton.tsx +2 -2
- package/src/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.ts +1 -1
- package/src/build-components/PaywallCloseButton/pattern.json +4 -2
- package/src/build-components/PaywallOptions/PaywallOptionsProps.generated.ts +1 -1
- package/src/build-components/PaywallOptions/pattern.json +4 -2
- package/src/build-components/PaywallProvider/PaywallProviderProps.generated.ts +1 -1
- package/src/build-components/PaywallProvider/pattern.json +4 -2
- package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.ts +1 -1
- package/src/build-components/PaywallSubscribeButton/pattern.json +4 -2
- package/src/build-components/PriceTag/PriceTagProps.generated.ts +1 -1
- package/src/build-components/PriceTag/pattern.json +10 -4
- package/src/build-components/Pricing/PricingProps.generated.ts +1 -1
- package/src/build-components/Pricing/pattern.json +4 -2
- package/src/build-components/Promo/PromoProps.generated.ts +1 -1
- package/src/build-components/Promo/pattern.json +4 -2
- package/src/build-components/RadioButton/RadioButton.tsx +6 -3
- package/src/build-components/RadioButton/RadioButtonProps.generated.ts +1 -1
- package/src/build-components/RenderNode.generated.tsx +7 -7
- package/src/build-components/Separator/SeparatorProps.generated.ts +1 -1
- package/src/build-components/Separator/pattern.json +5 -3
- package/src/build-components/StatusBarColor/StatusBarColorProps.generated.ts +1 -1
- package/src/build-components/StatusBarColor/pattern.json +5 -3
- package/src/build-components/Text/Text.tsx +2 -2
- package/src/build-components/Text/TextProps.generated.ts +1 -1
- package/src/build-components/Text/pattern.json +5 -3
- package/src/build-components/View/ViewProps.generated.ts +1 -1
- package/src/build-components/View/pattern.json +18 -6
- package/src/build-components/patterns.generated.ts +73 -69
- package/src/build-components/useNode.ts +2 -16
- package/src/components/BuilderProvider.tsx +1 -1
- package/src/hooks/useLocalize.ts +1 -1
- package/src/migrations/migrations/1.1.2_extract_component_attributes_from_style.ts +31 -10
- package/src/utils/analyseNodeByPatterns.ts +2 -2
- package/src/utils/attributeStyle.ts +9 -3
- package/src/utils/extractImageStyle.ts +4 -4
- package/src/utils/patterns.ts +3 -3
- package/src/utils/projectColors.ts +3 -2
- 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
|
|
3
|
+
* schemaVersion=2 uses `attributes.styles` exclusively.
|
|
4
4
|
*/
|
|
5
5
|
import type { NodeDefaultAttribute } from '../types/Node';
|
|
6
|
-
/** Returns styles
|
|
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>;
|
package/dist/utils/patterns.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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(
|
|
2
|
+
export declare function useMergedStyle(...args: (CSSProperties | undefined | null | false)[]): CSSProperties;
|
package/package.json
CHANGED
|
@@ -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.
|
|
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.
|
|
148
|
-
const nestedStyleSchema = isPlainObject(attributes?.
|
|
149
|
-
? attributes.
|
|
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 `
|
|
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
|
-
? `
|
|
181
|
-
: `
|
|
180
|
+
? ` styles?: ${styleInterfaceName};`
|
|
181
|
+
: ` styles?: Record<string, unknown>;`;
|
|
182
182
|
|
|
183
|
-
// Avoid emitting `attributes.
|
|
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('
|
|
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 === '
|
|
206
|
+
if (attrName === 'styles') {
|
|
207
207
|
if (!isPlainObject(attrType)) {
|
|
208
208
|
return fail(
|
|
209
|
-
`[${componentName}] pattern.json -> 'pattern.attributes.
|
|
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.
|
|
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.
|
|
339
|
-
const parentStyle = isPlainObject(parentAttributes?.
|
|
340
|
-
? parentAttributes.
|
|
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?.
|
|
343
|
-
? childAttributes.
|
|
342
|
+
const childStyle = isPlainObject(childAttributes?.styles)
|
|
343
|
+
? childAttributes.styles
|
|
344
344
|
: null;
|
|
345
345
|
if (parentStyle || childStyle) {
|
|
346
|
-
mergedAttributes.
|
|
346
|
+
mergedAttributes.styles = {
|
|
347
347
|
...(parentStyle || {}),
|
|
348
348
|
...(childStyle || {}),
|
|
349
349
|
};
|
package/src/RenderPage.tsx
CHANGED
|
@@ -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
|
package/src/assets/meta.json
CHANGED
|
@@ -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
|
}
|