@umituz/react-native-subscription 3.1.28 → 3.1.30
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 +1 -1
- package/src/domains/paywall/components/PaywallFooter.tsx +29 -27
- package/src/domains/paywall/components/PaywallScreen.renderItem.tsx +2 -2
- package/src/domains/subscription/presentation/components/feedback/PaywallFeedbackScreen.parts.tsx +8 -4
- package/src/domains/subscription/presentation/components/feedback/PaywallFeedbackScreen.tsx +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-subscription",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.30",
|
|
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",
|
|
@@ -89,45 +89,47 @@ export const PaywallFooter: React.FC<PaywallFooterProps> = React.memo(({
|
|
|
89
89
|
</TouchableOpacity>
|
|
90
90
|
)}
|
|
91
91
|
|
|
92
|
-
{/*
|
|
93
|
-
{
|
|
94
|
-
|
|
95
|
-
onPress={onRestore}
|
|
96
|
-
disabled={isProcessing}
|
|
97
|
-
activeOpacity={0.6}
|
|
98
|
-
style={[footerStyles.restoreButton, { marginTop: spacing / 2 }]}
|
|
99
|
-
>
|
|
100
|
-
<AtomicText style={[footerStyles.restoreText, { color: tokens.colors.textSecondary }]}>
|
|
101
|
-
{translations.restoreButtonText}
|
|
102
|
-
</AtomicText>
|
|
103
|
-
</TouchableOpacity>
|
|
104
|
-
)}
|
|
105
|
-
|
|
106
|
-
{/* Legal Links - Responsive spacing */}
|
|
107
|
-
<View style={footerStyles.legalContainer}>
|
|
108
|
-
{legalUrls.termsUrl && (
|
|
92
|
+
{/* Footer Links - Stacked layout (Restore on top, Legal on bottom) */}
|
|
93
|
+
<View style={{ marginTop: spacing, alignItems: 'center', gap: 12 }}>
|
|
94
|
+
{onRestore && (
|
|
109
95
|
<TouchableOpacity
|
|
110
|
-
onPress={
|
|
96
|
+
onPress={onRestore}
|
|
97
|
+
disabled={isProcessing}
|
|
111
98
|
activeOpacity={0.6}
|
|
99
|
+
style={footerStyles.restoreButton}
|
|
112
100
|
>
|
|
113
|
-
<AtomicText style={[footerStyles.legalText, { color: tokens.colors.
|
|
114
|
-
{translations.
|
|
101
|
+
<AtomicText style={[footerStyles.legalText, { color: tokens.colors.textSecondary, fontWeight: '600' }]}>
|
|
102
|
+
{translations.restoreButtonText}
|
|
115
103
|
</AtomicText>
|
|
116
104
|
</TouchableOpacity>
|
|
117
105
|
)}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
106
|
+
|
|
107
|
+
<View style={footerStyles.legalContainer}>
|
|
108
|
+
{legalUrls.termsUrl && (
|
|
121
109
|
<TouchableOpacity
|
|
122
|
-
onPress={() => onLegalClick(legalUrls.
|
|
110
|
+
onPress={() => onLegalClick(legalUrls.termsUrl)}
|
|
123
111
|
activeOpacity={0.6}
|
|
124
112
|
>
|
|
125
113
|
<AtomicText style={[footerStyles.legalText, { color: tokens.colors.textTertiary }]}>
|
|
126
|
-
{translations.
|
|
114
|
+
{translations.termsOfServiceText}
|
|
127
115
|
</AtomicText>
|
|
128
116
|
</TouchableOpacity>
|
|
129
|
-
|
|
130
|
-
|
|
117
|
+
)}
|
|
118
|
+
|
|
119
|
+
{legalUrls.privacyUrl && (
|
|
120
|
+
<>
|
|
121
|
+
<AtomicText style={footerStyles.legalSeparator}> • </AtomicText>
|
|
122
|
+
<TouchableOpacity
|
|
123
|
+
onPress={() => onLegalClick(legalUrls.privacyUrl)}
|
|
124
|
+
activeOpacity={0.6}
|
|
125
|
+
>
|
|
126
|
+
<AtomicText style={[footerStyles.legalText, { color: tokens.colors.textTertiary }]}>
|
|
127
|
+
{translations.privacyText}
|
|
128
|
+
</AtomicText>
|
|
129
|
+
</TouchableOpacity>
|
|
130
|
+
</>
|
|
131
|
+
)}
|
|
132
|
+
</View>
|
|
131
133
|
</View>
|
|
132
134
|
</View>
|
|
133
135
|
);
|
|
@@ -45,9 +45,9 @@ export const PaywallRenderItem: React.FC<PaywallRenderItemProps> = React.memo(({
|
|
|
45
45
|
[responsive]
|
|
46
46
|
);
|
|
47
47
|
|
|
48
|
-
// Responsive feature icon size
|
|
48
|
+
// Responsive feature icon size - use spacing multiplier directly to avoid max/min constraints from getIconSize
|
|
49
49
|
const featureIconSize = React.useMemo(
|
|
50
|
-
() =>
|
|
50
|
+
() => Math.round(30 * responsive.spacingMultiplier),
|
|
51
51
|
[responsive]
|
|
52
52
|
);
|
|
53
53
|
|
package/src/domains/subscription/presentation/components/feedback/PaywallFeedbackScreen.parts.tsx
CHANGED
|
@@ -144,6 +144,8 @@ interface FeedbackSubmitButtonProps {
|
|
|
144
144
|
canSubmit: boolean;
|
|
145
145
|
backgroundColor: string;
|
|
146
146
|
textColor: string;
|
|
147
|
+
containerBackgroundColor?: string;
|
|
148
|
+
borderColor?: string;
|
|
147
149
|
onPress: () => void;
|
|
148
150
|
bottomInset: number;
|
|
149
151
|
}
|
|
@@ -153,6 +155,8 @@ export const FeedbackSubmitButton: React.FC<FeedbackSubmitButtonProps> = ({
|
|
|
153
155
|
canSubmit,
|
|
154
156
|
backgroundColor,
|
|
155
157
|
textColor,
|
|
158
|
+
containerBackgroundColor = 'rgba(255,255,255,0.98)',
|
|
159
|
+
borderColor = 'rgba(0,0,0,0.1)',
|
|
156
160
|
onPress,
|
|
157
161
|
bottomInset,
|
|
158
162
|
}) => (
|
|
@@ -165,8 +169,8 @@ export const FeedbackSubmitButton: React.FC<FeedbackSubmitButtonProps> = ({
|
|
|
165
169
|
paddingTop: 18,
|
|
166
170
|
paddingBottom: Math.max(bottomInset, 18),
|
|
167
171
|
borderTopWidth: 1,
|
|
168
|
-
borderTopColor:
|
|
169
|
-
}, { backgroundColor:
|
|
172
|
+
borderTopColor: borderColor,
|
|
173
|
+
}, { backgroundColor: containerBackgroundColor }]}>
|
|
170
174
|
<TouchableOpacity
|
|
171
175
|
style={[{
|
|
172
176
|
borderRadius: 16,
|
|
@@ -178,7 +182,7 @@ export const FeedbackSubmitButton: React.FC<FeedbackSubmitButtonProps> = ({
|
|
|
178
182
|
shadowRadius: 4,
|
|
179
183
|
elevation: 3,
|
|
180
184
|
}, {
|
|
181
|
-
backgroundColor: canSubmit ? backgroundColor : 'rgba(
|
|
185
|
+
backgroundColor: canSubmit ? backgroundColor : 'rgba(255,255,255,0.1)',
|
|
182
186
|
opacity: canSubmit ? 1 : 0.6,
|
|
183
187
|
}]}
|
|
184
188
|
onPress={onPress}
|
|
@@ -191,7 +195,7 @@ export const FeedbackSubmitButton: React.FC<FeedbackSubmitButtonProps> = ({
|
|
|
191
195
|
fontWeight: "700",
|
|
192
196
|
fontSize: 17,
|
|
193
197
|
letterSpacing: 0.3,
|
|
194
|
-
}, { color: canSubmit ? textColor : 'rgba(
|
|
198
|
+
}, { color: canSubmit ? textColor : 'rgba(255,255,255,0.4)' }]}
|
|
195
199
|
>
|
|
196
200
|
{title}
|
|
197
201
|
</AtomicText>
|
|
@@ -85,6 +85,8 @@ export const PaywallFeedbackScreen: React.FC<PaywallFeedbackScreenProps> = React
|
|
|
85
85
|
canSubmit={canSubmit}
|
|
86
86
|
backgroundColor={tokens.colors.primary}
|
|
87
87
|
textColor={tokens.colors.textPrimary}
|
|
88
|
+
containerBackgroundColor={tokens.colors.backgroundPrimary}
|
|
89
|
+
borderColor="rgba(255, 255, 255, 0.1)"
|
|
88
90
|
onPress={handleSubmit}
|
|
89
91
|
bottomInset={insets.bottom}
|
|
90
92
|
/>
|