@umituz/react-native-onboarding 2.0.1 → 2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-onboarding",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
4
4
  "description": "Advanced onboarding flow for React Native apps with personalization questions, gradient backgrounds, animations, and customizable slides. SOLID, DRY, KISS principles applied.",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -23,49 +23,52 @@ export const OnboardingSlide: React.FC<OnboardingSlideProps> = ({ slide }) => {
23
23
  const IconComponent = !isEmoji ? (LucideIcons as any)[slide.icon] : null;
24
24
 
25
25
  return (
26
- <ScrollView
27
- contentContainerStyle={styles.content}
28
- showsVerticalScrollIndicator={false}
29
- scrollEnabled={false}
30
- >
31
- <View style={styles.slideContent}>
32
- <View style={styles.iconContainer}>
33
- {isEmoji ? (
34
- <Text style={styles.icon}>{slide.icon}</Text>
35
- ) : IconComponent ? (
36
- <IconComponent size={60} color="#FFFFFF" />
37
- ) : (
38
- <Text style={styles.icon}>📱</Text>
26
+ <View style={styles.container}>
27
+ <View style={styles.content}>
28
+ <View style={styles.slideContent}>
29
+ <View style={styles.iconContainer}>
30
+ {isEmoji ? (
31
+ <Text style={styles.icon}>{slide.icon}</Text>
32
+ ) : IconComponent ? (
33
+ <IconComponent size={60} color="#FFFFFF" />
34
+ ) : (
35
+ <Text style={styles.icon}>📱</Text>
36
+ )}
37
+ </View>
38
+ <Text style={styles.title}>{slide.title}</Text>
39
+ <Text style={styles.description}>{slide.description}</Text>
40
+ {slide.features && slide.features.length > 0 && (
41
+ <View style={styles.featuresContainer}>
42
+ {slide.features.map((feature, index) => (
43
+ <View key={index} style={styles.featureItem}>
44
+ <Text style={styles.featureBullet}>•</Text>
45
+ <Text style={styles.featureText}>{feature}</Text>
46
+ </View>
47
+ ))}
48
+ </View>
39
49
  )}
40
50
  </View>
41
- <Text style={styles.title}>{slide.title}</Text>
42
- <Text style={styles.description}>{slide.description}</Text>
43
- {slide.features && slide.features.length > 0 && (
44
- <View style={styles.featuresContainer}>
45
- {slide.features.map((feature, index) => (
46
- <View key={index} style={styles.featureItem}>
47
- <Text style={styles.featureBullet}>•</Text>
48
- <Text style={styles.featureText}>{feature}</Text>
49
- </View>
50
- ))}
51
- </View>
52
- )}
53
51
  </View>
54
- </ScrollView>
52
+ </View>
55
53
  );
56
54
  };
57
55
 
58
56
  const getStyles = () =>
59
57
  StyleSheet.create({
58
+ container: {
59
+ flex: 1,
60
+ },
60
61
  content: {
61
62
  flex: 1,
62
63
  justifyContent: "center",
63
64
  alignItems: "center",
64
65
  paddingHorizontal: 30,
66
+ paddingVertical: 40,
65
67
  },
66
68
  slideContent: {
67
69
  alignItems: "center",
68
70
  maxWidth: 400,
71
+ width: "100%",
69
72
  },
70
73
  iconContainer: {
71
74
  width: 120,
@@ -120,6 +120,8 @@ export const OnboardingScreen: React.FC<OnboardingScreenProps> = ({
120
120
  currentIndex,
121
121
  goToNext,
122
122
  goToPrevious,
123
+ complete: completeOnboarding,
124
+ skip: skipOnboarding,
123
125
  isLastSlide,
124
126
  isFirstSlide,
125
127
  } = useOnboardingNavigation(filteredSlides.length, handleComplete, handleSkip);
@@ -131,11 +133,9 @@ export const OnboardingScreen: React.FC<OnboardingScreenProps> = ({
131
133
  }
132
134
 
133
135
  if (isLastSlide) {
134
- if (autoComplete) {
135
- handleComplete();
136
- } else {
137
- handleComplete();
138
- }
136
+ // Use useOnboardingNavigation's complete function
137
+ // This will call handleComplete callback and emit event
138
+ await completeOnboarding();
139
139
  } else {
140
140
  goToNext();
141
141
  // Load next slide's answer