@umituz/react-native-subscription 2.11.18 → 2.11.20

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-subscription",
3
- "version": "2.11.18",
3
+ "version": "2.11.20",
4
4
  "description": "Complete subscription management with RevenueCat, paywall UI, and credits system for React Native apps",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -45,19 +45,19 @@
45
45
  "react-native-safe-area-context": ">=5.0.0"
46
46
  },
47
47
  "devDependencies": {
48
+ "@tanstack/react-query": "^5.0.0",
49
+ "@types/react": "~19.1.10",
48
50
  "@umituz/react-native-design-system": "^2.1.3",
49
51
  "@umituz/react-native-firebase": "*",
50
52
  "@umituz/react-native-legal": "*",
51
53
  "@umituz/react-native-localization": "*",
52
54
  "@umituz/react-native-sentry": "*",
53
- "@tanstack/react-query": "^5.0.0",
54
55
  "expo-constants": "~16.0.0",
55
56
  "expo-linear-gradient": "~15.0.0",
56
57
  "firebase": "^10.0.0",
57
- "react-native-purchases": "^7.0.0",
58
- "@types/react": "~19.1.10",
59
58
  "react": "19.1.0",
60
59
  "react-native": "0.81.5",
60
+ "react-native-purchases": "^7.0.0",
61
61
  "react-native-safe-area-context": "^5.0.0",
62
62
  "typescript": "~5.9.2"
63
63
  },
@@ -68,5 +68,6 @@
68
68
  "src",
69
69
  "README.md",
70
70
  "LICENSE"
71
- ]
72
- }
71
+ ],
72
+ "dependencies": {}
73
+ }
@@ -55,14 +55,10 @@ export const SubscriptionFooter: React.FC<SubscriptionFooterProps> = React.memo(
55
55
  activeOpacity={0.8}
56
56
  >
57
57
  <LinearGradient
58
- colors={
59
- isDisabled
60
- ? [tokens.colors.border, tokens.colors.borderLight]
61
- : [tokens.colors.primary, tokens.colors.secondary]
62
- }
58
+ colors={[tokens.colors.primary, tokens.colors.secondary]}
63
59
  start={{ x: 0, y: 0 }}
64
60
  end={{ x: 1, y: 0 }}
65
- style={[styles.gradientButton, isDisabled && { opacity: 0.6 }]}
61
+ style={[styles.gradientButton, isDisabled && { opacity: 0.5 }]}
66
62
  >
67
63
  <AtomicText
68
64
  type="titleSmall"
@@ -11,6 +11,7 @@ import type { PurchasesPackage } from "react-native-purchases";
11
11
  import { SubscriptionModalHeader } from "./SubscriptionModalHeader";
12
12
  import { SubscriptionPackageList } from "./SubscriptionPackageList";
13
13
  import { SubscriptionFooter } from "./SubscriptionFooter";
14
+ import { PaywallFeaturesList } from "./PaywallFeaturesList";
14
15
  import { useSubscriptionModal } from "../../hooks/useSubscriptionModal";
15
16
 
16
17
  export interface SubscriptionModalProps {
@@ -40,6 +41,8 @@ export interface SubscriptionModalProps {
40
41
  billingPeriodLabel?: string;
41
42
  totalPriceLabel?: string;
42
43
  perMonthLabel?: string;
44
+ /** Optional: List of premium features to display */
45
+ features?: Array<{ icon: string; text: string }>;
43
46
  }
44
47
 
45
48
  export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo((props) => {
@@ -67,6 +70,7 @@ export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo((p
67
70
  billingPeriodLabel,
68
71
  totalPriceLabel,
69
72
  perMonthLabel,
73
+ features = [],
70
74
  } = props;
71
75
 
72
76
  const {
@@ -96,6 +100,13 @@ export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo((p
96
100
  showsVerticalScrollIndicator={false}
97
101
  bounces={false}
98
102
  >
103
+ {features.length > 0 && (
104
+ <PaywallFeaturesList
105
+ features={features}
106
+ containerStyle={styles.featuresList}
107
+ />
108
+ )}
109
+
99
110
  <SubscriptionPackageList
100
111
  packages={packages}
101
112
  isLoading={isLoading}
@@ -146,4 +157,8 @@ const styles = StyleSheet.create({
146
157
  flexGrow: 1,
147
158
  paddingBottom: 32,
148
159
  },
160
+ featuresList: {
161
+ paddingHorizontal: 24,
162
+ marginBottom: 24,
163
+ },
149
164
  });
@@ -7,7 +7,6 @@ import React from "react";
7
7
  import { View, TouchableOpacity, StyleSheet } from "react-native";
8
8
  import {
9
9
  AtomicText,
10
- AtomicIcon,
11
10
  useAppDesignTokens,
12
11
  withAlpha,
13
12
  } from "@umituz/react-native-design-system";
@@ -99,13 +98,6 @@ export const PlanCardHeader: React.FC<PlanCardHeaderProps> = ({
99
98
  >
100
99
  {price}
101
100
  </AtomicText>
102
- <View style={styles.expandIconContainer}>
103
- <AtomicIcon
104
- name={isExpanded ? "caret-up" : "caret-down"}
105
- size={18}
106
- color={tokens.colors.textSecondary as any}
107
- />
108
- </View>
109
101
  </View>
110
102
  </View>
111
103
  </TouchableOpacity>
@@ -158,10 +150,4 @@ const styles = StyleSheet.create({
158
150
  alignItems: "center",
159
151
  gap: 12,
160
152
  },
161
- expandIconContainer: {
162
- width: 24,
163
- height: 24,
164
- alignItems: "center",
165
- justifyContent: "center",
166
- },
167
153
  });