@rubixscript/react-native-onboarding 1.0.1 → 1.1.0
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/LICENSE +21 -21
- package/README.md +383 -383
- package/dist/components/NavigationButtons.js +17 -17
- package/dist/components/Onboarding.js +16 -16
- package/dist/components/Pagination.js +30 -30
- package/dist/components/SimpleOnboardingScreen.d.ts +54 -0
- package/dist/components/SimpleOnboardingScreen.d.ts.map +1 -0
- package/dist/components/SimpleOnboardingScreen.js +184 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +24 -27
- package/dist/slides/FormSlide.js +37 -37
- package/dist/slides/IconSlide.js +24 -24
- package/dist/slides/ImageSlide.js +20 -20
- package/dist/slides/VideoSlide.js +20 -20
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +9 -7
- package/package.json +73 -66
- package/src/components/NavigationButtons.tsx +198 -198
- package/src/components/Onboarding.tsx +337 -337
- package/src/components/Pagination.tsx +337 -337
- package/src/components/SimpleOnboardingScreen.tsx +266 -0
- package/src/components/index.ts +7 -5
- package/src/index.ts +69 -65
- package/src/presets/index.ts +391 -394
- package/src/slides/FormSlide.tsx +314 -314
- package/src/slides/IconSlide.tsx +166 -166
- package/src/slides/ImageSlide.tsx +132 -132
- package/src/slides/VideoSlide.tsx +146 -146
- package/src/slides/index.tsx +37 -37
- package/src/themes/index.ts +576 -574
- package/src/types/index.ts +247 -247
package/dist/slides/FormSlide.js
CHANGED
|
@@ -61,33 +61,33 @@ export const FormSlide = ({ data, theme, onSubmit, darkMode, isSubmitting = fals
|
|
|
61
61
|
const value = formData[field.key];
|
|
62
62
|
const error = errors[field.key];
|
|
63
63
|
if (field.type === 'select') {
|
|
64
|
-
return (<View key={field.key} style={styles.fieldContainer}>
|
|
65
|
-
<Text style={styles.label}>{field.label}</Text>
|
|
66
|
-
<View style={styles.optionsContainer}>
|
|
64
|
+
return (<View key={field.key} style={styles.fieldContainer}>
|
|
65
|
+
<Text style={styles.label}>{field.label}</Text>
|
|
66
|
+
<View style={styles.optionsContainer}>
|
|
67
67
|
{field.options?.map(option => (<TouchableOpacity key={option.value} style={[
|
|
68
68
|
styles.optionCard,
|
|
69
69
|
value === option.value && styles.optionCardActive,
|
|
70
70
|
{ borderColor: theme.colors.border },
|
|
71
|
-
]} onPress={() => updateField(field.key, option.value)}>
|
|
72
|
-
{option.icon && (<Ionicons name={option.icon} size={20} color={value === option.value ? theme.colors.text.inverse : theme.colors.text.secondary} style={{ marginRight: 8 }}/>)}
|
|
71
|
+
]} onPress={() => updateField(field.key, option.value)}>
|
|
72
|
+
{option.icon && (<Ionicons name={option.icon} size={20} color={value === option.value ? theme.colors.text.inverse : theme.colors.text.secondary} style={{ marginRight: 8 }}/>)}
|
|
73
73
|
<Text style={[
|
|
74
74
|
styles.optionLabel,
|
|
75
75
|
value === option.value && { color: theme.colors.text.inverse },
|
|
76
|
-
]}>
|
|
77
|
-
{option.label}
|
|
78
|
-
</Text>
|
|
79
|
-
</TouchableOpacity>))}
|
|
80
|
-
</View>
|
|
81
|
-
{error && <Text style={styles.errorText}>{error}</Text>}
|
|
76
|
+
]}>
|
|
77
|
+
{option.label}
|
|
78
|
+
</Text>
|
|
79
|
+
</TouchableOpacity>))}
|
|
80
|
+
</View>
|
|
81
|
+
{error && <Text style={styles.errorText}>{error}</Text>}
|
|
82
82
|
</View>);
|
|
83
83
|
}
|
|
84
|
-
return (<View key={field.key} style={styles.fieldContainer}>
|
|
85
|
-
<Text style={styles.label}>{field.label}</Text>
|
|
84
|
+
return (<View key={field.key} style={styles.fieldContainer}>
|
|
85
|
+
<Text style={styles.label}>{field.label}</Text>
|
|
86
86
|
<TextInput style={[
|
|
87
87
|
styles.input,
|
|
88
88
|
{ borderColor: error ? theme.colors.text.secondary : theme.colors.border },
|
|
89
|
-
]} placeholder={field.placeholder} placeholderTextColor={theme.colors.text.secondary} value={value} onChangeText={text => updateField(field.key, text)} keyboardType={field.type === 'number' ? 'numeric' : field.type === 'email' ? 'email-address' : 'default'} secureTextEntry={field.type === 'password'} multiline={field.multiline} numberOfLines={field.numberOfLines}/>
|
|
90
|
-
{error && <Text style={styles.errorText}>{error}</Text>}
|
|
89
|
+
]} placeholder={field.placeholder} placeholderTextColor={theme.colors.text.secondary} value={value} onChangeText={text => updateField(field.key, text)} keyboardType={field.type === 'number' ? 'numeric' : field.type === 'email' ? 'email-address' : 'default'} secureTextEntry={field.type === 'password'} multiline={field.multiline} numberOfLines={field.numberOfLines}/>
|
|
90
|
+
{error && <Text style={styles.errorText}>{error}</Text>}
|
|
91
91
|
</View>);
|
|
92
92
|
};
|
|
93
93
|
const headerStyle = useMemo(() => ({
|
|
@@ -102,30 +102,30 @@ export const FormSlide = ({ data, theme, onSubmit, darkMode, isSubmitting = fals
|
|
|
102
102
|
...styles.description,
|
|
103
103
|
color: gradientColors?.length ? theme.colors.text.secondary : theme.colors.text.secondary,
|
|
104
104
|
}), [gradientColors, theme]);
|
|
105
|
-
const content = (<KeyboardAvoidingView style={styles.keyboardContainer} behavior={Platform.OS === 'ios' ? 'padding' : 'height'} keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}>
|
|
106
|
-
<ScrollView style={styles.scrollView} contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
107
|
-
{/* Header */}
|
|
108
|
-
<Animated.View entering={FadeIn.duration(300)} style={headerStyle}>
|
|
109
|
-
{title && <Text style={titleStyle}>{title}</Text>}
|
|
110
|
-
{description && <Text style={descriptionStyle}>{description}</Text>}
|
|
111
|
-
</Animated.View>
|
|
112
|
-
|
|
113
|
-
{/* Form Fields */}
|
|
114
|
-
<View style={styles.formContainer}>
|
|
115
|
-
{fields.map(renderField)}
|
|
116
|
-
</View>
|
|
117
|
-
|
|
118
|
-
{/* Submit Button */}
|
|
119
|
-
<Animated.View entering={FadeIn.delay(300).duration(300)} style={styles.buttonContainer}>
|
|
120
|
-
<TouchableOpacity style={[styles.submitButton, { backgroundColor: theme.colors.primary }]} onPress={handleSubmit} disabled={isSubmitting} activeOpacity={0.8}>
|
|
121
|
-
<Text style={styles.submitButtonText}>{isSubmitting ? 'Submitting...' : submitLabel}</Text>
|
|
122
|
-
</TouchableOpacity>
|
|
123
|
-
</Animated.View>
|
|
124
|
-
</ScrollView>
|
|
105
|
+
const content = (<KeyboardAvoidingView style={styles.keyboardContainer} behavior={Platform.OS === 'ios' ? 'padding' : 'height'} keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}>
|
|
106
|
+
<ScrollView style={styles.scrollView} contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
107
|
+
{/* Header */}
|
|
108
|
+
<Animated.View entering={FadeIn.duration(300)} style={headerStyle}>
|
|
109
|
+
{title && <Text style={titleStyle}>{title}</Text>}
|
|
110
|
+
{description && <Text style={descriptionStyle}>{description}</Text>}
|
|
111
|
+
</Animated.View>
|
|
112
|
+
|
|
113
|
+
{/* Form Fields */}
|
|
114
|
+
<View style={styles.formContainer}>
|
|
115
|
+
{fields.map(renderField)}
|
|
116
|
+
</View>
|
|
117
|
+
|
|
118
|
+
{/* Submit Button */}
|
|
119
|
+
<Animated.View entering={FadeIn.delay(300).duration(300)} style={styles.buttonContainer}>
|
|
120
|
+
<TouchableOpacity style={[styles.submitButton, { backgroundColor: theme.colors.primary }]} onPress={handleSubmit} disabled={isSubmitting} activeOpacity={0.8}>
|
|
121
|
+
<Text style={styles.submitButtonText}>{isSubmitting ? 'Submitting...' : submitLabel}</Text>
|
|
122
|
+
</TouchableOpacity>
|
|
123
|
+
</Animated.View>
|
|
124
|
+
</ScrollView>
|
|
125
125
|
</KeyboardAvoidingView>);
|
|
126
126
|
if (gradientColors && gradientColors.length > 0) {
|
|
127
|
-
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
128
|
-
<View style={containerStyle}>{content}</View>
|
|
127
|
+
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
128
|
+
<View style={containerStyle}>{content}</View>
|
|
129
129
|
</LinearGradient>);
|
|
130
130
|
}
|
|
131
131
|
return <View style={containerStyle}>{content}</View>;
|
package/dist/slides/IconSlide.js
CHANGED
|
@@ -78,32 +78,32 @@ export const IconSlide = ({ data, theme, darkMode }) => {
|
|
|
78
78
|
...styles.description,
|
|
79
79
|
color: gradientColors?.length ? theme.colors.text.secondary : theme.colors.text.secondary,
|
|
80
80
|
}), [gradientColors, theme]);
|
|
81
|
-
const content = (<>
|
|
82
|
-
{/* Icon */}
|
|
83
|
-
<Animated.View style={iconAnimatedStyle}>
|
|
84
|
-
<View style={iconContainerStyle}>
|
|
85
|
-
{renderIcon()}
|
|
86
|
-
</View>
|
|
87
|
-
</Animated.View>
|
|
88
|
-
|
|
89
|
-
{/* Title */}
|
|
90
|
-
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
91
|
-
{title}
|
|
92
|
-
</Animated.Text>)}
|
|
93
|
-
|
|
94
|
-
{/* Subtitle */}
|
|
95
|
-
{subtitle && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={subtitleStyle}>
|
|
96
|
-
{subtitle}
|
|
97
|
-
</Animated.Text>)}
|
|
98
|
-
|
|
99
|
-
{/* Description */}
|
|
100
|
-
{description && (<Animated.Text entering={FadeInDown.delay(300).springify()} style={descriptionStyle}>
|
|
101
|
-
{description}
|
|
102
|
-
</Animated.Text>)}
|
|
81
|
+
const content = (<>
|
|
82
|
+
{/* Icon */}
|
|
83
|
+
<Animated.View style={iconAnimatedStyle}>
|
|
84
|
+
<View style={iconContainerStyle}>
|
|
85
|
+
{renderIcon()}
|
|
86
|
+
</View>
|
|
87
|
+
</Animated.View>
|
|
88
|
+
|
|
89
|
+
{/* Title */}
|
|
90
|
+
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
91
|
+
{title}
|
|
92
|
+
</Animated.Text>)}
|
|
93
|
+
|
|
94
|
+
{/* Subtitle */}
|
|
95
|
+
{subtitle && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={subtitleStyle}>
|
|
96
|
+
{subtitle}
|
|
97
|
+
</Animated.Text>)}
|
|
98
|
+
|
|
99
|
+
{/* Description */}
|
|
100
|
+
{description && (<Animated.Text entering={FadeInDown.delay(300).springify()} style={descriptionStyle}>
|
|
101
|
+
{description}
|
|
102
|
+
</Animated.Text>)}
|
|
103
103
|
</>);
|
|
104
104
|
if (gradientColors && gradientColors.length > 0) {
|
|
105
|
-
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
106
|
-
<View style={containerStyle}>{content}</View>
|
|
105
|
+
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
106
|
+
<View style={containerStyle}>{content}</View>
|
|
107
107
|
</LinearGradient>);
|
|
108
108
|
}
|
|
109
109
|
return <View style={containerStyle}>{content}</View>;
|
|
@@ -43,28 +43,28 @@ export const ImageSlide = ({ data, theme, darkMode }) => {
|
|
|
43
43
|
...styles.description,
|
|
44
44
|
color: gradientColors?.length ? theme.colors.text.secondary : theme.colors.text.secondary,
|
|
45
45
|
}), [gradientColors, theme]);
|
|
46
|
-
const content = (<>
|
|
47
|
-
{/* Image with optional overlay icon */}
|
|
48
|
-
<Animated.View entering={FadeIn.duration(400).springify()} style={imageContainerStyle}>
|
|
49
|
-
<Image source={image} style={baseImageStyle}/>
|
|
50
|
-
{overlayIcon && (<View style={styles.overlayIcon}>
|
|
51
|
-
<Ionicons name={overlayIcon.name} size={overlayIcon.size || 48} color={overlayIcon.color || '#FFFFFF'}/>
|
|
52
|
-
</View>)}
|
|
53
|
-
</Animated.View>
|
|
54
|
-
|
|
55
|
-
{/* Title */}
|
|
56
|
-
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
57
|
-
{title}
|
|
58
|
-
</Animated.Text>)}
|
|
59
|
-
|
|
60
|
-
{/* Description */}
|
|
61
|
-
{description && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={descriptionStyle}>
|
|
62
|
-
{description}
|
|
63
|
-
</Animated.Text>)}
|
|
46
|
+
const content = (<>
|
|
47
|
+
{/* Image with optional overlay icon */}
|
|
48
|
+
<Animated.View entering={FadeIn.duration(400).springify()} style={imageContainerStyle}>
|
|
49
|
+
<Image source={image} style={baseImageStyle}/>
|
|
50
|
+
{overlayIcon && (<View style={styles.overlayIcon}>
|
|
51
|
+
<Ionicons name={overlayIcon.name} size={overlayIcon.size || 48} color={overlayIcon.color || '#FFFFFF'}/>
|
|
52
|
+
</View>)}
|
|
53
|
+
</Animated.View>
|
|
54
|
+
|
|
55
|
+
{/* Title */}
|
|
56
|
+
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
57
|
+
{title}
|
|
58
|
+
</Animated.Text>)}
|
|
59
|
+
|
|
60
|
+
{/* Description */}
|
|
61
|
+
{description && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={descriptionStyle}>
|
|
62
|
+
{description}
|
|
63
|
+
</Animated.Text>)}
|
|
64
64
|
</>);
|
|
65
65
|
if (gradientColors && gradientColors.length > 0) {
|
|
66
|
-
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
67
|
-
<View style={containerStyle}>{content}</View>
|
|
66
|
+
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
67
|
+
<View style={containerStyle}>{content}</View>
|
|
68
68
|
</LinearGradient>);
|
|
69
69
|
}
|
|
70
70
|
return <View style={containerStyle}>{content}</View>;
|
|
@@ -52,28 +52,28 @@ export const VideoSlide = ({ data, theme, darkMode }) => {
|
|
|
52
52
|
color: gradientColors?.length ? theme.colors.text.secondary : theme.colors.text.secondary,
|
|
53
53
|
}), [gradientColors, theme]);
|
|
54
54
|
const videoSourceUri = typeof videoSource === 'string' ? { uri: videoSource } : videoSource;
|
|
55
|
-
const content = (<>
|
|
56
|
-
{/* Video */}
|
|
57
|
-
<Animated.View entering={FadeIn.duration(400)} style={videoContainerStyle}>
|
|
58
|
-
<View style={videoStyle}>
|
|
59
|
-
<Video ref={videoRef} source={videoSourceUri} style={StyleSheet.absoluteFillObject} useNativeControls={false} resizeMode={ResizeMode.CONTAIN} shouldPlay={autoPlay} isLooping={loop} isMuted={muted} onLoad={handleVideoLoad}/>
|
|
60
|
-
{!isReady && poster && (<Animated.Image source={poster} style={StyleSheet.absoluteFillObject} resizeMode="cover"/>)}
|
|
61
|
-
</View>
|
|
62
|
-
</Animated.View>
|
|
63
|
-
|
|
64
|
-
{/* Title */}
|
|
65
|
-
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
66
|
-
{title}
|
|
67
|
-
</Animated.Text>)}
|
|
68
|
-
|
|
69
|
-
{/* Description */}
|
|
70
|
-
{description && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={descriptionStyle}>
|
|
71
|
-
{description}
|
|
72
|
-
</Animated.Text>)}
|
|
55
|
+
const content = (<>
|
|
56
|
+
{/* Video */}
|
|
57
|
+
<Animated.View entering={FadeIn.duration(400)} style={videoContainerStyle}>
|
|
58
|
+
<View style={videoStyle}>
|
|
59
|
+
<Video ref={videoRef} source={videoSourceUri} style={StyleSheet.absoluteFillObject} useNativeControls={false} resizeMode={ResizeMode.CONTAIN} shouldPlay={autoPlay} isLooping={loop} isMuted={muted} onLoad={handleVideoLoad}/>
|
|
60
|
+
{!isReady && poster && (<Animated.Image source={poster} style={StyleSheet.absoluteFillObject} resizeMode="cover"/>)}
|
|
61
|
+
</View>
|
|
62
|
+
</Animated.View>
|
|
63
|
+
|
|
64
|
+
{/* Title */}
|
|
65
|
+
{title && (<Animated.Text entering={FadeInDown.delay(100).springify()} style={titleStyle}>
|
|
66
|
+
{title}
|
|
67
|
+
</Animated.Text>)}
|
|
68
|
+
|
|
69
|
+
{/* Description */}
|
|
70
|
+
{description && (<Animated.Text entering={FadeInDown.delay(200).springify()} style={descriptionStyle}>
|
|
71
|
+
{description}
|
|
72
|
+
</Animated.Text>)}
|
|
73
73
|
</>);
|
|
74
74
|
if (gradientColors && gradientColors.length > 0) {
|
|
75
|
-
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
76
|
-
<View style={containerStyle}>{content}</View>
|
|
75
|
+
return (<LinearGradient colors={gradientColors} style={StyleSheet.absoluteFillObject}>
|
|
76
|
+
<View style={containerStyle}>{content}</View>
|
|
77
77
|
</LinearGradient>);
|
|
78
78
|
}
|
|
79
79
|
return <View style={containerStyle}>{content}</View>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsEzD,eAAO,MAAM,YAAY,EAAE,eAuC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAmC3B,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,eAuC5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAmC7B,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,eAkCzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsEzD,eAAO,MAAM,YAAY,EAAE,eAuC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAmC3B,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,eAuC5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAmC7B,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,eAkCzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAsC1B,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,eAkCzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YA2B1B,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,eAiC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YA0B3B,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,eAkC3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YA8B5B,CAAC;AAMF,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,KAAG,eAUzC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,YAU1C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,eAAe,EAAE,SAAS,OAAO,CAAC,eAAe,CAAC,KAAG,eAUrF,CAAC;;;;;;;;;;;;;;uBAlC+B,MAAM,KAAG,eAAe;wBAYvB,MAAM,KAAG,YAAY;uBAYtB,eAAe,WAAW,OAAO,CAAC,eAAe,CAAC,KAAG,eAAe;;AAYrG,wBAgBE"}
|
package/dist/themes/index.js
CHANGED
|
@@ -275,19 +275,21 @@ export const pomodoPreset = {
|
|
|
275
275
|
borderRadius: 80,
|
|
276
276
|
justifyContent: 'center',
|
|
277
277
|
alignItems: 'center',
|
|
278
|
-
marginBottom:
|
|
278
|
+
marginBottom: 40,
|
|
279
279
|
},
|
|
280
280
|
title: {
|
|
281
|
-
fontSize:
|
|
282
|
-
marginBottom:
|
|
281
|
+
fontSize: 28,
|
|
282
|
+
marginBottom: 16,
|
|
283
283
|
textAlign: 'center',
|
|
284
|
-
fontWeight: '
|
|
284
|
+
fontWeight: '700',
|
|
285
|
+
color: '#000000',
|
|
285
286
|
},
|
|
286
287
|
description: {
|
|
287
|
-
fontSize:
|
|
288
|
+
fontSize: 17,
|
|
288
289
|
textAlign: 'center',
|
|
289
|
-
paddingHorizontal:
|
|
290
|
-
lineHeight:
|
|
290
|
+
paddingHorizontal: 40,
|
|
291
|
+
lineHeight: 24,
|
|
292
|
+
color: '#666666',
|
|
291
293
|
},
|
|
292
294
|
},
|
|
293
295
|
};
|
package/package.json
CHANGED
|
@@ -1,66 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rubixscript/react-native-onboarding",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "A comprehensive React Native onboarding library with customizable slide types, animations, and themes",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "tsc",
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
"react
|
|
35
|
-
"react-native
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"@
|
|
40
|
-
"
|
|
41
|
-
"expo-
|
|
42
|
-
"expo-
|
|
43
|
-
"
|
|
44
|
-
"react-native-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"typescript": "
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@rubixscript/react-native-onboarding",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "A comprehensive React Native onboarding library with customizable slide types, animations, and themes",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"build:rollup": "rollup -c",
|
|
10
|
+
"prepublishOnly": "npm run build",
|
|
11
|
+
"test": "jest",
|
|
12
|
+
"lint": "eslint src --ext .ts,.tsx",
|
|
13
|
+
"type-check": "tsc --noEmit"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"react-native",
|
|
17
|
+
"onboarding",
|
|
18
|
+
"walkthrough",
|
|
19
|
+
"tutorial",
|
|
20
|
+
"user-onboarding",
|
|
21
|
+
"expo",
|
|
22
|
+
"react",
|
|
23
|
+
"slides",
|
|
24
|
+
"carousel"
|
|
25
|
+
],
|
|
26
|
+
"author": "RubixScript Team",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/rubixscript/react-native-onboarding.git"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"expo": ">=48.0.0",
|
|
34
|
+
"react": ">=18.0.0",
|
|
35
|
+
"react-native": ">=0.70.0",
|
|
36
|
+
"react-native-reanimated": ">=3.0.0"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@expo/vector-icons": "^15.0.2",
|
|
40
|
+
"@react-native-async-storage/async-storage": ">=1.19.0",
|
|
41
|
+
"expo-av": "~15.0.0",
|
|
42
|
+
"expo-blur": "~15.0.7",
|
|
43
|
+
"expo-linear-gradient": "~15.0.7",
|
|
44
|
+
"react-native-reanimated": ">=3.0.0",
|
|
45
|
+
"react-native-safe-area-context": "~5.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@rollup/plugin-commonjs": "^28.0.0",
|
|
49
|
+
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
50
|
+
"@rollup/plugin-typescript": "^12.1.0",
|
|
51
|
+
"@testing-library/react-native": "^12.0.0",
|
|
52
|
+
"@types/jest": "^29.5.0",
|
|
53
|
+
"@types/react": "~19.1.10",
|
|
54
|
+
"@types/react-native": "^0.73.0",
|
|
55
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
56
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
57
|
+
"eslint": "^8.0.0",
|
|
58
|
+
"jest": "^29.0.0",
|
|
59
|
+
"rollup": "^4.28.0",
|
|
60
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
61
|
+
"tslib": "^2.8.1",
|
|
62
|
+
"typescript": "~5.9.2"
|
|
63
|
+
},
|
|
64
|
+
"files": [
|
|
65
|
+
"dist",
|
|
66
|
+
"src",
|
|
67
|
+
"README.md",
|
|
68
|
+
"LICENSE"
|
|
69
|
+
],
|
|
70
|
+
"engines": {
|
|
71
|
+
"node": ">=16.0.0"
|
|
72
|
+
}
|
|
73
|
+
}
|