@sudobility/subscription_pages 0.0.4 → 0.0.6
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/index.js +146 -142
- package/dist/pages/SubscriptionByOfferPage.d.ts +6 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { jsx as i, jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { usePackagesByDuration as
|
|
4
|
-
import { SubscriptionLayout as
|
|
5
|
-
function
|
|
1
|
+
import { jsx as i, jsxs as E } from "react/jsx-runtime";
|
|
2
|
+
import { useState as S } from "react";
|
|
3
|
+
import { usePackagesByDuration as oe, useUserSubscription as V, getSubscriptionInstance as X, refreshSubscription as Z, useAllOfferings as le, useOfferingPackages as se, periodToMonths as J } from "@sudobility/subscription_lib";
|
|
4
|
+
import { SubscriptionLayout as L, SubscriptionTile as ue, SegmentedControl as ee } from "@sudobility/subscription-components";
|
|
5
|
+
function me({
|
|
6
6
|
isLoggedIn: n,
|
|
7
|
-
onNavigateToLogin:
|
|
8
|
-
userId:
|
|
7
|
+
onNavigateToLogin: l,
|
|
8
|
+
userId: p,
|
|
9
9
|
userEmail: o,
|
|
10
|
-
featuresByPackage:
|
|
11
|
-
freeFeatures:
|
|
12
|
-
title:
|
|
13
|
-
className:
|
|
10
|
+
featuresByPackage: f,
|
|
11
|
+
freeFeatures: s,
|
|
12
|
+
title: g = "Choose Your Plan",
|
|
13
|
+
className: y
|
|
14
14
|
}) {
|
|
15
15
|
const {
|
|
16
|
-
packagesByDuration:
|
|
17
|
-
availableDurations:
|
|
18
|
-
isLoading:
|
|
19
|
-
error:
|
|
20
|
-
} =
|
|
16
|
+
packagesByDuration: x,
|
|
17
|
+
availableDurations: h,
|
|
18
|
+
isLoading: D,
|
|
19
|
+
error: b
|
|
20
|
+
} = oe(), {
|
|
21
21
|
subscription: r,
|
|
22
|
-
isLoading:
|
|
23
|
-
error:
|
|
24
|
-
} = V({ userId:
|
|
22
|
+
isLoading: $,
|
|
23
|
+
error: B
|
|
24
|
+
} = V({ userId: p, userEmail: o }), [e, N] = S(null), [F, u] = S(null), [M, P] = S(!1), C = e ?? h[0] ?? null, O = D || $, I = b || B, w = async (t, m) => {
|
|
25
25
|
try {
|
|
26
|
-
|
|
26
|
+
P(!0), u(null), await X().purchase({
|
|
27
27
|
packageId: t,
|
|
28
|
-
offeringId:
|
|
28
|
+
offeringId: m,
|
|
29
29
|
customerEmail: o
|
|
30
30
|
}), await Z();
|
|
31
|
-
} catch (
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
} catch (d) {
|
|
32
|
+
u(
|
|
33
|
+
d instanceof Error ? d.message : "Purchase failed"
|
|
34
34
|
);
|
|
35
35
|
} finally {
|
|
36
|
-
|
|
36
|
+
P(!1);
|
|
37
37
|
}
|
|
38
|
-
},
|
|
38
|
+
}, R = () => n ? (r == null ? void 0 : r.isActive) && r.packageId ? {
|
|
39
39
|
title: "Free",
|
|
40
40
|
price: "$0",
|
|
41
|
-
features:
|
|
41
|
+
features: s ?? [],
|
|
42
42
|
ctaButton: {
|
|
43
43
|
label: "Cancel Subscription",
|
|
44
44
|
onClick: () => {
|
|
@@ -48,7 +48,7 @@ function he({
|
|
|
48
48
|
} : {
|
|
49
49
|
title: "Free",
|
|
50
50
|
price: "$0",
|
|
51
|
-
features:
|
|
51
|
+
features: s ?? [],
|
|
52
52
|
ctaButton: {
|
|
53
53
|
label: "Current Plan"
|
|
54
54
|
},
|
|
@@ -56,38 +56,38 @@ function he({
|
|
|
56
56
|
} : {
|
|
57
57
|
title: "Free",
|
|
58
58
|
price: "$0",
|
|
59
|
-
features:
|
|
59
|
+
features: s ?? [],
|
|
60
60
|
ctaButton: {
|
|
61
61
|
label: "Try it for Free",
|
|
62
|
-
onClick:
|
|
62
|
+
onClick: l
|
|
63
63
|
}
|
|
64
|
-
},
|
|
64
|
+
}, A = (t) => {
|
|
65
65
|
if (!n)
|
|
66
66
|
return {
|
|
67
67
|
label: "Log in to Continue",
|
|
68
|
-
onClick:
|
|
68
|
+
onClick: l
|
|
69
69
|
};
|
|
70
|
-
const
|
|
70
|
+
const m = (r == null ? void 0 : r.isActive) && r.packageId;
|
|
71
71
|
if ((r == null ? void 0 : r.packageId) !== t.package.packageId)
|
|
72
|
-
return
|
|
72
|
+
return m ? {
|
|
73
73
|
label: "Change Subscription",
|
|
74
|
-
onClick: () =>
|
|
74
|
+
onClick: () => w(t.package.packageId, t.offerId)
|
|
75
75
|
} : {
|
|
76
76
|
label: "Subscribe",
|
|
77
|
-
onClick: () =>
|
|
77
|
+
onClick: () => w(t.package.packageId, t.offerId)
|
|
78
78
|
};
|
|
79
79
|
};
|
|
80
|
-
if (
|
|
80
|
+
if (O)
|
|
81
81
|
return /* @__PURE__ */ i(
|
|
82
|
-
|
|
82
|
+
L,
|
|
83
83
|
{
|
|
84
|
-
title:
|
|
85
|
-
className:
|
|
84
|
+
title: g,
|
|
85
|
+
className: y,
|
|
86
86
|
variant: "cta",
|
|
87
87
|
children: /* @__PURE__ */ i("p", { children: "Loading subscription plans..." })
|
|
88
88
|
}
|
|
89
89
|
);
|
|
90
|
-
const
|
|
90
|
+
const T = F ?? (I ? I.message : null), U = n && (r != null && r.isActive) && r.packageId ? {
|
|
91
91
|
isActive: !0,
|
|
92
92
|
activeContent: {
|
|
93
93
|
title: "Active Subscription",
|
|
@@ -107,44 +107,44 @@ function he({
|
|
|
107
107
|
] : []
|
|
108
108
|
]
|
|
109
109
|
}
|
|
110
|
-
} : void 0,
|
|
110
|
+
} : void 0, Y = C ? x[C] ?? [] : [];
|
|
111
111
|
return /* @__PURE__ */ i(
|
|
112
|
-
|
|
112
|
+
L,
|
|
113
113
|
{
|
|
114
|
-
title:
|
|
115
|
-
className:
|
|
114
|
+
title: g,
|
|
115
|
+
className: y,
|
|
116
116
|
variant: "cta",
|
|
117
|
-
error:
|
|
118
|
-
currentStatus:
|
|
119
|
-
freeTileConfig:
|
|
120
|
-
aboveProducts:
|
|
117
|
+
error: T,
|
|
118
|
+
currentStatus: U,
|
|
119
|
+
freeTileConfig: R(),
|
|
120
|
+
aboveProducts: h.length > 1 ? /* @__PURE__ */ i(
|
|
121
121
|
ee,
|
|
122
122
|
{
|
|
123
|
-
options:
|
|
123
|
+
options: h.map((t) => ({
|
|
124
124
|
value: t,
|
|
125
125
|
label: t.charAt(0).toUpperCase() + t.slice(1)
|
|
126
126
|
})),
|
|
127
|
-
value:
|
|
128
|
-
onChange: (t) =>
|
|
127
|
+
value: C ?? h[0],
|
|
128
|
+
onChange: (t) => N(t)
|
|
129
129
|
}
|
|
130
130
|
) : void 0,
|
|
131
|
-
children:
|
|
132
|
-
var
|
|
133
|
-
const
|
|
131
|
+
children: Y.map((t) => {
|
|
132
|
+
var k;
|
|
133
|
+
const m = n && (r == null ? void 0 : r.isActive) && r.packageId === t.package.packageId, d = A(t);
|
|
134
134
|
return /* @__PURE__ */ i(
|
|
135
|
-
|
|
135
|
+
ue,
|
|
136
136
|
{
|
|
137
137
|
id: t.package.packageId,
|
|
138
138
|
title: t.package.name,
|
|
139
|
-
price: ((
|
|
139
|
+
price: ((k = t.package.product) == null ? void 0 : k.priceString) ?? "$0",
|
|
140
140
|
periodLabel: t.package.product ? `/${t.package.product.period}` : void 0,
|
|
141
|
-
features: (
|
|
141
|
+
features: (f == null ? void 0 : f[t.package.packageId]) ?? [],
|
|
142
142
|
isSelected: !1,
|
|
143
143
|
onSelect: () => {
|
|
144
144
|
},
|
|
145
|
-
isCurrentPlan:
|
|
146
|
-
ctaButton:
|
|
147
|
-
disabled:
|
|
145
|
+
isCurrentPlan: m,
|
|
146
|
+
ctaButton: d,
|
|
147
|
+
disabled: M
|
|
148
148
|
},
|
|
149
149
|
`${t.offerId}-${t.package.packageId}`
|
|
150
150
|
);
|
|
@@ -155,73 +155,76 @@ function he({
|
|
|
155
155
|
function K(n) {
|
|
156
156
|
return n.charAt(0).toUpperCase() + n.slice(1);
|
|
157
157
|
}
|
|
158
|
-
const
|
|
158
|
+
const de = {
|
|
159
159
|
weekly: "Weekly",
|
|
160
160
|
monthly: "Monthly",
|
|
161
161
|
quarterly: "Quarterly",
|
|
162
162
|
yearly: "Yearly",
|
|
163
163
|
lifetime: "Lifetime"
|
|
164
164
|
};
|
|
165
|
-
function
|
|
166
|
-
if (!n.product || !
|
|
167
|
-
const
|
|
168
|
-
if (
|
|
169
|
-
const
|
|
170
|
-
if (
|
|
171
|
-
const
|
|
172
|
-
(
|
|
165
|
+
function pe(n, l) {
|
|
166
|
+
if (!n.product || !l.product) return null;
|
|
167
|
+
const p = J(n.product.period), o = J(l.product.period);
|
|
168
|
+
if (p <= 0 || o <= 0 || p === 1 / 0 || o === 1 / 0 || p === o) return null;
|
|
169
|
+
const f = n.product.price / p, s = l.product.price / o;
|
|
170
|
+
if (f <= 0) return null;
|
|
171
|
+
const g = Math.round(
|
|
172
|
+
(f - s) / f * 100
|
|
173
173
|
);
|
|
174
|
-
return
|
|
174
|
+
return g > 0 ? g : null;
|
|
175
175
|
}
|
|
176
176
|
function ve({
|
|
177
177
|
isLoggedIn: n,
|
|
178
|
-
onNavigateToLogin:
|
|
179
|
-
userId:
|
|
178
|
+
onNavigateToLogin: l,
|
|
179
|
+
userId: p,
|
|
180
180
|
userEmail: o,
|
|
181
|
-
featuresByPackage:
|
|
182
|
-
freeFeatures:
|
|
183
|
-
title:
|
|
184
|
-
className:
|
|
185
|
-
t:
|
|
186
|
-
renderOfferingContent:
|
|
181
|
+
featuresByPackage: f,
|
|
182
|
+
freeFeatures: s,
|
|
183
|
+
title: g = "Choose Your Plan",
|
|
184
|
+
className: y,
|
|
185
|
+
t: x,
|
|
186
|
+
renderOfferingContent: h,
|
|
187
|
+
initialOfferId: D
|
|
187
188
|
}) {
|
|
188
189
|
var q;
|
|
189
|
-
const
|
|
190
|
-
offerings:
|
|
191
|
-
isLoading:
|
|
192
|
-
error:
|
|
193
|
-
} =
|
|
190
|
+
const b = (a, c) => x ? x(a, c) : c, {
|
|
191
|
+
offerings: r,
|
|
192
|
+
isLoading: $,
|
|
193
|
+
error: B
|
|
194
|
+
} = le(), {
|
|
194
195
|
subscription: e,
|
|
195
|
-
isLoading:
|
|
196
|
-
error:
|
|
197
|
-
} = V({ userId:
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
196
|
+
isLoading: N,
|
|
197
|
+
error: F
|
|
198
|
+
} = V({ userId: p, userEmail: o }), [u, M] = S(
|
|
199
|
+
D ?? "free"
|
|
200
|
+
), [P, C] = S(null), [O, I] = S(!1), w = ((q = r[0]) == null ? void 0 : q.offerId) ?? "", R = u !== "free" ? u : w, {
|
|
201
|
+
packages: A,
|
|
202
|
+
isLoading: T,
|
|
203
|
+
error: U
|
|
204
|
+
} = se(R), Y = $ || N || T, t = B || F || U, m = async (a, c) => {
|
|
202
205
|
try {
|
|
203
|
-
|
|
206
|
+
I(!0), C(null), await X().purchase({
|
|
204
207
|
packageId: a,
|
|
205
208
|
offeringId: c,
|
|
206
209
|
customerEmail: o
|
|
207
210
|
}), await Z();
|
|
208
|
-
} catch (
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
} catch (v) {
|
|
212
|
+
C(
|
|
213
|
+
v instanceof Error ? v.message : "Purchase failed"
|
|
211
214
|
);
|
|
212
215
|
} finally {
|
|
213
|
-
|
|
216
|
+
I(!1);
|
|
214
217
|
}
|
|
215
|
-
},
|
|
216
|
-
{ value: "free", label:
|
|
217
|
-
...
|
|
218
|
+
}, d = [
|
|
219
|
+
{ value: "free", label: b("free", "Free") },
|
|
220
|
+
...r.map((a) => ({
|
|
218
221
|
value: a.offerId,
|
|
219
|
-
label:
|
|
222
|
+
label: b(a.offerId, K(a.offerId))
|
|
220
223
|
}))
|
|
221
|
-
],
|
|
222
|
-
title:
|
|
224
|
+
], k = A[0] ?? null, re = () => n ? (e == null ? void 0 : e.isActive) && e.packageId ? {
|
|
225
|
+
title: b("free", "Free"),
|
|
223
226
|
price: "$0",
|
|
224
|
-
features:
|
|
227
|
+
features: s ?? [],
|
|
225
228
|
ctaButton: {
|
|
226
229
|
label: "Cancel Subscription",
|
|
227
230
|
onClick: () => {
|
|
@@ -229,37 +232,37 @@ function ve({
|
|
|
229
232
|
}
|
|
230
233
|
}
|
|
231
234
|
} : {
|
|
232
|
-
title:
|
|
235
|
+
title: b("free", "Free"),
|
|
233
236
|
price: "$0",
|
|
234
|
-
features:
|
|
237
|
+
features: s ?? [],
|
|
235
238
|
ctaButton: {
|
|
236
239
|
label: "Current Plan"
|
|
237
240
|
},
|
|
238
241
|
topBadge: { text: "Current Plan", color: "blue" }
|
|
239
242
|
} : {
|
|
240
|
-
title:
|
|
243
|
+
title: b("free", "Free"),
|
|
241
244
|
price: "$0",
|
|
242
|
-
features:
|
|
245
|
+
features: s ?? [],
|
|
243
246
|
ctaButton: {
|
|
244
247
|
label: "Try it for Free",
|
|
245
|
-
onClick:
|
|
248
|
+
onClick: l
|
|
246
249
|
}
|
|
247
|
-
},
|
|
248
|
-
if (!n) return
|
|
250
|
+
}, te = (a) => n ? (e == null ? void 0 : e.packageId) === a.packageId ? "Current Plan" : (e == null ? void 0 : e.isActive) && e.packageId ? "Change Subscription" : "Subscribe" : "Log in to Continue", ae = (a, c) => {
|
|
251
|
+
if (!n) return l;
|
|
249
252
|
if ((e == null ? void 0 : e.packageId) !== a.packageId)
|
|
250
|
-
return () =>
|
|
253
|
+
return () => m(a.packageId, c);
|
|
251
254
|
};
|
|
252
|
-
if (
|
|
255
|
+
if (Y)
|
|
253
256
|
return /* @__PURE__ */ i(
|
|
254
|
-
|
|
257
|
+
L,
|
|
255
258
|
{
|
|
256
|
-
title:
|
|
257
|
-
className:
|
|
259
|
+
title: g,
|
|
260
|
+
className: y,
|
|
258
261
|
variant: "cta",
|
|
259
262
|
children: /* @__PURE__ */ i("p", { children: "Loading subscription plans..." })
|
|
260
263
|
}
|
|
261
264
|
);
|
|
262
|
-
const
|
|
265
|
+
const ne = P ?? (t ? t.message : null), ie = n && (e != null && e.isActive) && e.packageId ? {
|
|
263
266
|
isActive: !0,
|
|
264
267
|
activeContent: {
|
|
265
268
|
title: "Active Subscription",
|
|
@@ -279,49 +282,50 @@ function ve({
|
|
|
279
282
|
] : []
|
|
280
283
|
]
|
|
281
284
|
}
|
|
282
|
-
} : void 0, _ =
|
|
285
|
+
} : void 0, _ = u === "free";
|
|
283
286
|
return /* @__PURE__ */ i(
|
|
284
|
-
|
|
287
|
+
L,
|
|
285
288
|
{
|
|
286
|
-
title:
|
|
287
|
-
className:
|
|
289
|
+
title: g,
|
|
290
|
+
className: y,
|
|
288
291
|
variant: "cta",
|
|
289
|
-
error:
|
|
290
|
-
currentStatus:
|
|
291
|
-
freeTileConfig: _ ?
|
|
292
|
-
aboveProducts:
|
|
292
|
+
error: ne,
|
|
293
|
+
currentStatus: ie,
|
|
294
|
+
freeTileConfig: _ ? re() : void 0,
|
|
295
|
+
aboveProducts: d.length > 1 ? /* @__PURE__ */ i("div", { className: "flex justify-center mb-6", children: /* @__PURE__ */ i(
|
|
293
296
|
ee,
|
|
294
297
|
{
|
|
295
|
-
options:
|
|
296
|
-
value:
|
|
297
|
-
onChange:
|
|
298
|
+
options: d,
|
|
299
|
+
value: u,
|
|
300
|
+
onChange: M
|
|
298
301
|
}
|
|
299
302
|
) }) : void 0,
|
|
300
|
-
children: !_ && /* @__PURE__ */
|
|
301
|
-
|
|
302
|
-
/* @__PURE__ */ i("div", { className: "space-y-3", children:
|
|
303
|
+
children: !_ && /* @__PURE__ */ E("div", { className: "col-span-full space-y-6", children: [
|
|
304
|
+
h && /* @__PURE__ */ i("div", { className: "rounded-xl bg-gray-50 dark:bg-gray-800/50 border border-gray-200 dark:border-gray-700 p-5", children: h(u) }),
|
|
305
|
+
/* @__PURE__ */ i("div", { className: "space-y-3", children: A.map((a) => {
|
|
303
306
|
var G, H;
|
|
304
|
-
const c = (G = a.product) == null ? void 0 : G.period,
|
|
305
|
-
return /* @__PURE__ */
|
|
307
|
+
const c = (G = a.product) == null ? void 0 : G.period, v = c ? b(c, de[c] ?? K(c)) : a.name, j = n && (e == null ? void 0 : e.isActive) && e.packageId === a.packageId, z = k && a.packageId !== k.packageId ? pe(k, a) : null, Q = te(a), W = ae(a, u), ce = ((H = a.product) == null ? void 0 : H.priceString) ?? "$0";
|
|
308
|
+
return /* @__PURE__ */ E(
|
|
306
309
|
"div",
|
|
307
310
|
{
|
|
308
|
-
className: "flex items-center justify-between rounded-xl p-4 transition-all " + (
|
|
311
|
+
className: "flex items-center justify-between rounded-xl p-4 transition-all " + (j ? "bg-blue-50 dark:bg-blue-900/20 border-2 border-blue-500 dark:border-blue-400" : "bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-700"),
|
|
309
312
|
children: [
|
|
310
|
-
/* @__PURE__ */
|
|
311
|
-
/* @__PURE__ */ i("p", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children:
|
|
312
|
-
|
|
313
|
+
/* @__PURE__ */ E("div", { className: "min-w-0 flex-1", children: [
|
|
314
|
+
/* @__PURE__ */ i("p", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children: v }),
|
|
315
|
+
/* @__PURE__ */ i("p", { className: "text-xs text-gray-400 dark:text-gray-500", children: a.packageId }),
|
|
316
|
+
z !== null ? /* @__PURE__ */ E("p", { className: "text-sm font-medium text-green-600 dark:text-green-400", children: [
|
|
313
317
|
"Save ",
|
|
314
318
|
z,
|
|
315
319
|
"%"
|
|
316
|
-
] }) :
|
|
320
|
+
] }) : j ? /* @__PURE__ */ i("p", { className: "text-sm font-medium text-blue-600 dark:text-blue-400", children: "Current Plan" }) : null
|
|
317
321
|
] }),
|
|
318
|
-
/* @__PURE__ */ i(
|
|
322
|
+
j ? /* @__PURE__ */ i("span", { className: "ml-4 flex-shrink-0 text-sm font-semibold text-blue-600 dark:text-blue-400", children: Q }) : /* @__PURE__ */ i(
|
|
319
323
|
"button",
|
|
320
324
|
{
|
|
321
325
|
onClick: W,
|
|
322
|
-
disabled:
|
|
323
|
-
className: "ml-4 flex-shrink-0 rounded-lg px-4 py-2 text-sm font-semibold transition-colors
|
|
324
|
-
children:
|
|
326
|
+
disabled: O || !W,
|
|
327
|
+
className: "ml-4 flex-shrink-0 rounded-lg px-4 py-2 text-sm font-semibold transition-colors bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
328
|
+
children: `${ce} · ${Q}`
|
|
325
329
|
}
|
|
326
330
|
)
|
|
327
331
|
]
|
|
@@ -334,6 +338,6 @@ function ve({
|
|
|
334
338
|
);
|
|
335
339
|
}
|
|
336
340
|
export {
|
|
337
|
-
|
|
341
|
+
me as SubscriptionByDurationPage,
|
|
338
342
|
ve as SubscriptionByOfferPage
|
|
339
343
|
};
|
|
@@ -29,5 +29,10 @@ export interface SubscriptionByOfferPageProps {
|
|
|
29
29
|
* Return a list of strings or React elements shown in a styled container.
|
|
30
30
|
*/
|
|
31
31
|
renderOfferingContent?: (offerId: string) => React.ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* If set, automatically select the specified offering on mount.
|
|
34
|
+
* Must match an offering identifier from RevenueCat.
|
|
35
|
+
*/
|
|
36
|
+
initialOfferId?: string;
|
|
32
37
|
}
|
|
33
|
-
export declare function SubscriptionByOfferPage({ isLoggedIn, onNavigateToLogin, userId, userEmail, featuresByPackage: _featuresByPackage, freeFeatures, title, className, t: translate, renderOfferingContent, }: SubscriptionByOfferPageProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export declare function SubscriptionByOfferPage({ isLoggedIn, onNavigateToLogin, userId, userEmail, featuresByPackage: _featuresByPackage, freeFeatures, title, className, t: translate, renderOfferingContent, initialOfferId, }: SubscriptionByOfferPageProps): import("react/jsx-runtime").JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/subscription_pages",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Subscription page components for React web applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"react": "^18.0.0 || ^19.0.0",
|
|
30
30
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
31
|
-
"@sudobility/subscription_lib": "^0.0.
|
|
31
|
+
"@sudobility/subscription_lib": "^0.0.27",
|
|
32
32
|
"@sudobility/subscription-components": "^1.0.27",
|
|
33
33
|
"@sudobility/types": "^1.9.58"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@sudobility/subscription-components": "^1.0.27",
|
|
37
|
-
"@sudobility/subscription_lib": "^0.0.
|
|
37
|
+
"@sudobility/subscription_lib": "^0.0.27",
|
|
38
38
|
"@sudobility/types": "^1.9.58",
|
|
39
39
|
"@testing-library/jest-dom": "^6.0.0",
|
|
40
40
|
"@testing-library/react": "^16.0.0",
|