dating-schema 0.40.0 → 0.42.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/dist/plan-features-data.d.ts +2 -0
- package/dist/plan-features-data.d.ts.map +1 -1
- package/dist/plan-features-data.js +66 -57
- package/dist/plan-features-data.js.map +1 -1
- package/dist/plan-limits.d.ts +9 -7
- package/dist/plan-limits.d.ts.map +1 -1
- package/dist/plan-limits.js +43 -74
- package/dist/plan-limits.js.map +1 -1
- package/dist/profile-fields/03-basics.d.ts.map +1 -1
- package/dist/profile-fields/03-basics.js +10 -1
- package/dist/profile-fields/03-basics.js.map +1 -1
- package/dist/profile-fields/04-looking-for.js +1 -1
- package/dist/profile-fields/04-looking-for.js.map +1 -1
- package/dist/profile-fields/05-personality.d.ts.map +1 -1
- package/dist/profile-fields/05-personality.js +65 -5
- package/dist/profile-fields/05-personality.js.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.d.ts.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.js +42 -12
- package/dist/profile-fields/13-relationship-intimacy.js.map +1 -1
- package/dist/profile-fields/14-family-home.d.ts.map +1 -1
- package/dist/profile-fields/14-family-home.js +88 -14
- package/dist/profile-fields/14-family-home.js.map +1 -1
- package/dist/profile-fields/15-finance-legal.d.ts.map +1 -1
- package/dist/profile-fields/15-finance-legal.js +33 -6
- package/dist/profile-fields/15-finance-legal.js.map +1 -1
- package/dist/profile-fields/17-religion-community.d.ts.map +1 -1
- package/dist/profile-fields/17-religion-community.js +66 -14
- package/dist/profile-fields/17-religion-community.js.map +1 -1
- package/dist/subscription.d.ts +2 -3
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +1 -1
- package/dist/subscription.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Each plan value uses { qty, text, unit? } so the frontend renders:
|
|
4
4
|
* `${qty} ${text} ${unit}` → "10 compliments per day"
|
|
5
5
|
* Boolean true = checkmark (show label), false = locked.
|
|
6
|
+
*
|
|
7
|
+
* 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)
|
|
6
8
|
*/
|
|
7
9
|
import type { FeatureDisplayItem } from './plan-limits.js';
|
|
8
10
|
export declare const PLAN_FEATURE_DISPLAY_DATA: FeatureDisplayItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-features-data.d.ts","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plan-features-data.d.ts","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,kBAAkB,CAAC;AAQzE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EAmPzD,CAAC"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Each plan value uses { qty, text, unit? } so the frontend renders:
|
|
4
4
|
* `${qty} ${text} ${unit}` → "10 compliments per day"
|
|
5
5
|
* Boolean true = checkmark (show label), false = locked.
|
|
6
|
+
*
|
|
7
|
+
* 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)
|
|
6
8
|
*/
|
|
7
9
|
/** Shorthand helpers */
|
|
8
10
|
const u = (text) => ({ qty: 'Unlimited', text });
|
|
@@ -17,10 +19,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
17
19
|
available: true,
|
|
18
20
|
helpText: 'The number of profiles you can like each day. Passing left is always unlimited.',
|
|
19
21
|
plans: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
platinum: u('likes'),
|
|
22
|
+
lite: n('10', 'likes', 'per day'),
|
|
23
|
+
basic: n('50', 'likes', 'per day'),
|
|
24
|
+
premium: n('300', 'likes', 'per day'),
|
|
24
25
|
black: u('likes'),
|
|
25
26
|
},
|
|
26
27
|
},
|
|
@@ -30,10 +31,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
30
31
|
available: true,
|
|
31
32
|
helpText: 'Send a compliment with a personal note to stand out. They see it even before matching with you.',
|
|
32
33
|
plans: {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
platinum: n('10', 'compliments', 'per day'),
|
|
34
|
+
lite: n('1', 'compliment', 'per day'),
|
|
35
|
+
basic: n('5', 'compliments', 'per day'),
|
|
36
|
+
premium: n('10', 'compliments', 'per day'),
|
|
37
37
|
black: u('compliments'),
|
|
38
38
|
},
|
|
39
39
|
},
|
|
@@ -43,10 +43,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
43
43
|
available: true,
|
|
44
44
|
helpText: 'Accidentally passed on someone? Tap rewind to bring their profile back instantly.',
|
|
45
45
|
plans: {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
platinum: u('rewinds'),
|
|
46
|
+
lite: false,
|
|
47
|
+
basic: u('rewinds'),
|
|
48
|
+
premium: u('rewinds'),
|
|
50
49
|
black: u('rewinds'),
|
|
51
50
|
},
|
|
52
51
|
},
|
|
@@ -56,7 +55,7 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
56
55
|
label: 'Ad-free experience',
|
|
57
56
|
available: true,
|
|
58
57
|
helpText: 'Browse profiles, chat, and explore without any ads interrupting your experience.',
|
|
59
|
-
plans: {
|
|
58
|
+
plans: { lite: false, basic: true, premium: true, black: true },
|
|
60
59
|
},
|
|
61
60
|
{
|
|
62
61
|
key: 'whoLikedYou',
|
|
@@ -64,10 +63,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
64
63
|
available: true,
|
|
65
64
|
helpText: 'See the list of people who already liked your profile, so you can match with them instantly.',
|
|
66
65
|
plans: {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
platinum: d('Instant', 'like alerts'),
|
|
66
|
+
lite: false,
|
|
67
|
+
basic: d('See who likes you', '(blurred)'),
|
|
68
|
+
premium: d('Instant', 'like alerts'),
|
|
71
69
|
black: d('Instant', 'like alerts'),
|
|
72
70
|
},
|
|
73
71
|
},
|
|
@@ -77,10 +75,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
77
75
|
available: true,
|
|
78
76
|
helpText: 'Filter profiles by age, location, religion, education, profession, and more.',
|
|
79
77
|
plans: {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
platinum: d('All', 'filters'),
|
|
78
|
+
lite: d('Basic', 'filters'),
|
|
79
|
+
basic: d('Advanced', 'filters'),
|
|
80
|
+
premium: d('All', 'filters'),
|
|
84
81
|
black: d('All', 'filters'),
|
|
85
82
|
},
|
|
86
83
|
},
|
|
@@ -90,36 +87,45 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
90
87
|
available: true,
|
|
91
88
|
helpText: 'See how compatible you are with each profile based on 120+ data points across Social Fit, Personality, and Intimacy.',
|
|
92
89
|
plans: {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
platinum: u('scores'),
|
|
90
|
+
lite: n('3', 'scores', 'per day'),
|
|
91
|
+
basic: u('scores'),
|
|
92
|
+
premium: u('scores'),
|
|
97
93
|
black: u('scores'),
|
|
98
94
|
},
|
|
99
95
|
},
|
|
100
96
|
{
|
|
101
97
|
key: 'scoreBreakdown',
|
|
102
|
-
label: '
|
|
98
|
+
label: 'Compatibility score breakdown',
|
|
103
99
|
available: true,
|
|
104
|
-
helpText: 'See the detailed breakdown across Social Fit, Personality, and Intimacy dimensions
|
|
100
|
+
helpText: 'See the detailed compatibility breakdown across Social Fit, Personality, and Intimacy dimensions for every profile.',
|
|
105
101
|
plans: {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
lite: false,
|
|
103
|
+
basic: false,
|
|
104
|
+
premium: d('Full', 'breakdown'),
|
|
105
|
+
black: d('Full', 'breakdown'),
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: 'dimensionControl',
|
|
110
|
+
label: 'Compatibility dimension control',
|
|
111
|
+
available: true,
|
|
112
|
+
helpText: 'Control which compatibility dimensions (Social Fit, Personality, Intimacy) matter most to you. Your discover feed re-ranks profiles based on your priorities.',
|
|
113
|
+
plans: {
|
|
114
|
+
lite: false,
|
|
115
|
+
basic: false,
|
|
116
|
+
premium: true,
|
|
117
|
+
black: true,
|
|
111
118
|
},
|
|
112
119
|
},
|
|
113
120
|
{
|
|
114
121
|
key: 'premiumExplore',
|
|
115
122
|
label: 'Premium Explore categories',
|
|
116
123
|
available: true,
|
|
117
|
-
helpText: 'Access exclusive Explore categories like
|
|
124
|
+
helpText: 'Access exclusive Explore categories like High IQ Dating, IIT/IIM Dating, Casual Dating, Elite Black Circle, and more curated collections.',
|
|
118
125
|
plans: {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
platinum: true,
|
|
126
|
+
lite: false,
|
|
127
|
+
basic: false,
|
|
128
|
+
premium: true,
|
|
123
129
|
black: true,
|
|
124
130
|
},
|
|
125
131
|
},
|
|
@@ -129,10 +135,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
129
135
|
available: true,
|
|
130
136
|
helpText: 'Boost your profile to the top of the discover feed for 30 minutes and get seen by more people.',
|
|
131
137
|
plans: {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
platinum: n('5', 'boosts', 'per month'),
|
|
138
|
+
lite: false,
|
|
139
|
+
basic: n('3', 'boosts', 'per month'),
|
|
140
|
+
premium: n('5', 'boosts', 'per month'),
|
|
136
141
|
black: n('10', 'boosts', 'per month'),
|
|
137
142
|
},
|
|
138
143
|
},
|
|
@@ -142,7 +147,7 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
142
147
|
label: 'Read receipts',
|
|
143
148
|
available: true,
|
|
144
149
|
helpText: 'Know exactly when someone has read your message. No more guessing.',
|
|
145
|
-
plans: {
|
|
150
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
146
151
|
},
|
|
147
152
|
{
|
|
148
153
|
key: 'calls',
|
|
@@ -150,10 +155,9 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
150
155
|
available: false,
|
|
151
156
|
helpText: 'Talk face-to-face or voice-only with your matches — directly inside the app, no phone number needed.',
|
|
152
157
|
plans: {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
platinum: u('calls'),
|
|
158
|
+
lite: false,
|
|
159
|
+
basic: n('3 voice + 2 video', 'calls', 'per day'),
|
|
160
|
+
premium: u('calls'),
|
|
157
161
|
black: u('calls'),
|
|
158
162
|
},
|
|
159
163
|
},
|
|
@@ -162,14 +166,14 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
162
166
|
label: 'Voice messages in chat',
|
|
163
167
|
available: false,
|
|
164
168
|
helpText: 'Record and send short voice clips in chat instead of typing.',
|
|
165
|
-
plans: {
|
|
169
|
+
plans: { lite: false, basic: true, premium: true, black: true },
|
|
166
170
|
},
|
|
167
171
|
{
|
|
168
172
|
key: 'messageBeforeMatch',
|
|
169
173
|
label: 'Send a message first',
|
|
170
174
|
available: false,
|
|
171
175
|
helpText: 'Introduce yourself with a message before the other person swipes on you.',
|
|
172
|
-
plans: {
|
|
176
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
173
177
|
},
|
|
174
178
|
// ── Insights ──
|
|
175
179
|
{
|
|
@@ -177,14 +181,14 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
177
181
|
label: 'Photo Insights',
|
|
178
182
|
available: true,
|
|
179
183
|
helpText: 'See which of your photos gets the most likes and attention, and get tips to improve.',
|
|
180
|
-
plans: {
|
|
184
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
181
185
|
},
|
|
182
186
|
{
|
|
183
187
|
key: 'viewContactNumber',
|
|
184
188
|
label: 'View contact number',
|
|
185
189
|
available: true,
|
|
186
190
|
helpText: 'See the phone number of profiles who have chosen to share it. Both the user and their family contact if shared.',
|
|
187
|
-
plans: {
|
|
191
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
188
192
|
},
|
|
189
193
|
// ── Premium perks ──
|
|
190
194
|
{
|
|
@@ -192,21 +196,26 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
192
196
|
label: 'Incognito Mode',
|
|
193
197
|
available: true,
|
|
194
198
|
helpText: 'Go invisible. Your profile is hidden from everyone except the people you choose to like.',
|
|
195
|
-
plans: {
|
|
199
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
196
200
|
},
|
|
197
201
|
{
|
|
198
202
|
key: 'travelMode',
|
|
199
203
|
label: 'Teleport Mode',
|
|
200
204
|
available: true,
|
|
201
205
|
helpText: 'Browse profiles in any city, district, or state — without physically being there.',
|
|
202
|
-
plans: {
|
|
206
|
+
plans: { lite: false, basic: false, premium: true, black: true },
|
|
203
207
|
},
|
|
204
208
|
{
|
|
205
209
|
key: 'seePublicBlackProfiles',
|
|
206
210
|
label: 'Discover Black Circle profiles',
|
|
207
211
|
available: true,
|
|
208
|
-
helpText: '
|
|
209
|
-
plans: {
|
|
212
|
+
helpText: 'Premium members can see Black Circle profiles that are publicly discoverable. Black Circle members get full unrestricted access to all Black Circle profiles.',
|
|
213
|
+
plans: {
|
|
214
|
+
lite: false,
|
|
215
|
+
basic: false,
|
|
216
|
+
premium: d('Public', 'profiles only'),
|
|
217
|
+
black: d('Full', 'access to all'),
|
|
218
|
+
},
|
|
210
219
|
},
|
|
211
220
|
// ── Black exclusive ──
|
|
212
221
|
{
|
|
@@ -214,21 +223,21 @@ export const PLAN_FEATURE_DISPLAY_DATA = [
|
|
|
214
223
|
label: 'The Black Circle',
|
|
215
224
|
available: true,
|
|
216
225
|
helpText: 'An exclusive community of celebrities, founders, and high-net-worth individuals. Your profile is only visible to other verified Black Circle members.',
|
|
217
|
-
plans: {
|
|
226
|
+
plans: { lite: false, basic: false, premium: false, black: true },
|
|
218
227
|
},
|
|
219
228
|
{
|
|
220
229
|
key: 'verifiedBadge',
|
|
221
230
|
label: 'Verified Elite badge',
|
|
222
231
|
available: true,
|
|
223
232
|
helpText: 'A distinctive badge on your profile, granted after admin verification. Signals you are a verified Black Circle member.',
|
|
224
|
-
plans: {
|
|
233
|
+
plans: { lite: false, basic: false, premium: false, black: true },
|
|
225
234
|
},
|
|
226
235
|
{
|
|
227
236
|
key: 'vipSupport',
|
|
228
237
|
label: 'Dedicated concierge',
|
|
229
238
|
available: true,
|
|
230
239
|
helpText: 'A personal matchmaking concierge who helps curate your matches and provides priority support.',
|
|
231
|
-
plans: {
|
|
240
|
+
plans: { lite: false, basic: false, premium: false, black: true },
|
|
232
241
|
},
|
|
233
242
|
];
|
|
234
243
|
//# sourceMappingURL=plan-features-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-features-data.js","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan feature display data — separated to keep plan-limits.ts clean.\n * Each plan value uses { qty, text, unit? } so the frontend renders:\n * `${qty} ${text} ${unit}` → \"10 compliments per day\"\n * Boolean true = checkmark (show label), false = locked.\n */\n\nimport type { FeatureDisplayItem, FeatureValue } from './plan-limits.js';\n\n/** Shorthand helpers */\nconst u = (text: string): FeatureValue => ({ qty: 'Unlimited', text });\nconst n = (qty: string, text: string, unit: string): FeatureValue => ({ qty, text, unit });\nconst d = (qty: string, text: string): FeatureValue => ({ qty, text });\n\n// prettier-ignore\nexport const PLAN_FEATURE_DISPLAY_DATA: FeatureDisplayItem[] = [\n // ── Core actions ──\n {\n key: 'dailyLikes',\n label: 'Likes per day',\n available: true,\n helpText: 'The number of profiles you can like each day. Passing left is always unlimited.',\n plans: {\n spark: n('50', 'likes', 'per day'),\n gold: n('150', 'likes', 'per day'),\n diamond: n('300', 'likes', 'per day'),\n platinum: u('likes'),\n black: u('likes'),\n },\n },\n {\n key: 'dailyCompliments',\n label: 'Compliments',\n available: true,\n helpText:\n 'Send a compliment with a personal note to stand out. They see it even before matching with you.',\n plans: {\n spark: n('1', 'compliment', 'per day'),\n gold: n('3', 'compliments', 'per day'),\n diamond: n('5', 'compliments', 'per day'),\n platinum: n('10', 'compliments', 'per day'),\n black: u('compliments'),\n },\n },\n {\n key: 'dailyRewinds',\n label: 'Rewind',\n available: true,\n helpText: 'Accidentally passed on someone? Tap rewind to bring their profile back instantly.',\n plans: {\n spark: false,\n gold: u('rewinds'),\n diamond: u('rewinds'),\n platinum: u('rewinds'),\n black: u('rewinds'),\n },\n },\n // ── Visibility & discovery ──\n {\n key: 'showAds',\n label: 'Ad-free experience',\n available: true,\n helpText: 'Browse profiles, chat, and explore without any ads interrupting your experience.',\n plans: { spark: false, gold: true, diamond: true, platinum: true, black: true },\n },\n {\n key: 'whoLikedYou',\n label: 'See who likes you',\n available: true,\n helpText:\n 'See the list of people who already liked your profile, so you can match with them instantly.',\n plans: {\n spark: false,\n gold: d('See who likes you', '(blurred)'),\n diamond: d('See who', 'likes you'),\n platinum: d('Instant', 'like alerts'),\n black: d('Instant', 'like alerts'),\n },\n },\n {\n key: 'filterLevel',\n label: 'Search filters',\n available: true,\n helpText: 'Filter profiles by age, location, religion, education, profession, and more.',\n plans: {\n spark: d('Basic', 'filters'),\n gold: d('Advanced', 'filters'),\n diamond: d('All', 'filters'),\n platinum: d('All', 'filters'),\n black: d('All', 'filters'),\n },\n },\n {\n key: 'scoreVisibleProfiles',\n label: 'Compatibility scores',\n available: true,\n helpText:\n 'See how compatible you are with each profile based on 120+ data points across Social Fit, Personality, and Intimacy.',\n plans: {\n spark: n('3', 'scores', 'per day'),\n gold: u('scores'),\n diamond: u('scores'),\n platinum: u('scores'),\n black: u('scores'),\n },\n },\n {\n key: 'scoreBreakdown',\n label: 'Score breakdown & dimension control',\n available: true,\n helpText:\n 'See the detailed breakdown across Social Fit, Personality, and Intimacy dimensions. Control which dimensions matter most in your discover feed.',\n plans: {\n spark: false,\n gold: false,\n diamond: false,\n platinum: d('Full', 'breakdown + control'),\n black: d('Full', 'breakdown + control'),\n },\n },\n {\n key: 'premiumExplore',\n label: 'Premium Explore categories',\n available: true,\n helpText:\n 'Access exclusive Explore categories like Top IIT/IIM, High IQ Dating, Elite Professionals, and more curated collections.',\n plans: {\n spark: false,\n gold: true,\n diamond: true,\n platinum: true,\n black: true,\n },\n },\n {\n key: 'monthlyBoosts',\n label: 'Profile boosts',\n available: true,\n helpText:\n 'Boost your profile to the top of the discover feed for 30 minutes and get seen by more people.',\n plans: {\n spark: false,\n gold: n('1', 'boost', 'per month'),\n diamond: n('3', 'boosts', 'per month'),\n platinum: n('5', 'boosts', 'per month'),\n black: n('10', 'boosts', 'per month'),\n },\n },\n // ── Communication ──\n {\n key: 'readReceipts',\n label: 'Read receipts',\n available: true,\n helpText: 'Know exactly when someone has read your message. No more guessing.',\n plans: { spark: false, gold: false, diamond: true, platinum: true, black: true },\n },\n {\n key: 'calls',\n label: 'Voice & video calls',\n available: false,\n helpText:\n 'Talk face-to-face or voice-only with your matches — directly inside the app, no phone number needed.',\n plans: {\n spark: false,\n gold: false,\n diamond: n('3 voice + 2 video', 'calls', 'per day'),\n platinum: u('calls'),\n black: u('calls'),\n },\n },\n {\n key: 'voiceMessages',\n label: 'Voice messages in chat',\n available: false,\n helpText: 'Record and send short voice clips in chat instead of typing.',\n plans: { spark: false, gold: false, diamond: true, platinum: true, black: true },\n },\n {\n key: 'messageBeforeMatch',\n label: 'Send a message first',\n available: false,\n helpText: 'Introduce yourself with a message before the other person swipes on you.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n // ── Insights ──\n {\n key: 'photoInsights',\n label: 'Photo Insights',\n available: true,\n helpText:\n 'See which of your photos gets the most likes and attention, and get tips to improve.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n {\n key: 'viewContactNumber',\n label: 'View contact number',\n available: true,\n helpText:\n 'See the phone number of profiles who have chosen to share it. Both the user and their family contact if shared.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n // ── Premium perks ──\n {\n key: 'incognitoMode',\n label: 'Incognito Mode',\n available: true,\n helpText:\n 'Go invisible. Your profile is hidden from everyone except the people you choose to like.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n {\n key: 'travelMode',\n label: 'Teleport Mode',\n available: true,\n helpText: 'Browse profiles in any city, district, or state — without physically being there.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n {\n key: 'seePublicBlackProfiles',\n label: 'Discover Black Circle profiles',\n available: true,\n helpText:\n 'See profiles of Black Circle members who have chosen to be publicly discoverable. An exclusive window into the elite community.',\n plans: { spark: false, gold: false, diamond: false, platinum: true, black: true },\n },\n // ── Black exclusive ──\n {\n key: 'exclusiveLeague',\n label: 'The Black Circle',\n available: true,\n helpText:\n 'An exclusive community of celebrities, founders, and high-net-worth individuals. Your profile is only visible to other verified Black Circle members.',\n plans: { spark: false, gold: false, diamond: false, platinum: false, black: true },\n },\n {\n key: 'verifiedBadge',\n label: 'Verified Elite badge',\n available: true,\n helpText:\n 'A distinctive badge on your profile, granted after admin verification. Signals you are a verified Black Circle member.',\n plans: { spark: false, gold: false, diamond: false, platinum: false, black: true },\n },\n {\n key: 'vipSupport',\n label: 'Dedicated concierge',\n available: true,\n helpText:\n 'A personal matchmaking concierge who helps curate your matches and provides priority support.',\n plans: { spark: false, gold: false, diamond: false, platinum: false, black: true },\n },\n];\n"]}
|
|
1
|
+
{"version":3,"file":"plan-features-data.js","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan feature display data — separated to keep plan-limits.ts clean.\n * Each plan value uses { qty, text, unit? } so the frontend renders:\n * `${qty} ${text} ${unit}` → \"10 compliments per day\"\n * Boolean true = checkmark (show label), false = locked.\n *\n * 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)\n */\n\nimport type { FeatureDisplayItem, FeatureValue } from './plan-limits.js';\n\n/** Shorthand helpers */\nconst u = (text: string): FeatureValue => ({ qty: 'Unlimited', text });\nconst n = (qty: string, text: string, unit: string): FeatureValue => ({ qty, text, unit });\nconst d = (qty: string, text: string): FeatureValue => ({ qty, text });\n\n// prettier-ignore\nexport const PLAN_FEATURE_DISPLAY_DATA: FeatureDisplayItem[] = [\n // ── Core actions ──\n {\n key: 'dailyLikes',\n label: 'Likes per day',\n available: true,\n helpText: 'The number of profiles you can like each day. Passing left is always unlimited.',\n plans: {\n lite: n('10', 'likes', 'per day'),\n basic: n('50', 'likes', 'per day'),\n premium: n('300', 'likes', 'per day'),\n black: u('likes'),\n },\n },\n {\n key: 'dailyCompliments',\n label: 'Compliments',\n available: true,\n helpText:\n 'Send a compliment with a personal note to stand out. They see it even before matching with you.',\n plans: {\n lite: n('1', 'compliment', 'per day'),\n basic: n('5', 'compliments', 'per day'),\n premium: n('10', 'compliments', 'per day'),\n black: u('compliments'),\n },\n },\n {\n key: 'dailyRewinds',\n label: 'Rewind',\n available: true,\n helpText: 'Accidentally passed on someone? Tap rewind to bring their profile back instantly.',\n plans: {\n lite: false,\n basic: u('rewinds'),\n premium: u('rewinds'),\n black: u('rewinds'),\n },\n },\n // ── Visibility & discovery ──\n {\n key: 'showAds',\n label: 'Ad-free experience',\n available: true,\n helpText: 'Browse profiles, chat, and explore without any ads interrupting your experience.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'whoLikedYou',\n label: 'See who likes you',\n available: true,\n helpText:\n 'See the list of people who already liked your profile, so you can match with them instantly.',\n plans: {\n lite: false,\n basic: d('See who likes you', '(blurred)'),\n premium: d('Instant', 'like alerts'),\n black: d('Instant', 'like alerts'),\n },\n },\n {\n key: 'filterLevel',\n label: 'Search filters',\n available: true,\n helpText: 'Filter profiles by age, location, religion, education, profession, and more.',\n plans: {\n lite: d('Basic', 'filters'),\n basic: d('Advanced', 'filters'),\n premium: d('All', 'filters'),\n black: d('All', 'filters'),\n },\n },\n {\n key: 'scoreVisibleProfiles',\n label: 'Compatibility scores',\n available: true,\n helpText:\n 'See how compatible you are with each profile based on 120+ data points across Social Fit, Personality, and Intimacy.',\n plans: {\n lite: n('3', 'scores', 'per day'),\n basic: u('scores'),\n premium: u('scores'),\n black: u('scores'),\n },\n },\n {\n key: 'scoreBreakdown',\n label: 'Compatibility score breakdown',\n available: true,\n helpText:\n 'See the detailed compatibility breakdown across Social Fit, Personality, and Intimacy dimensions for every profile.',\n plans: {\n lite: false,\n basic: false,\n premium: d('Full', 'breakdown'),\n black: d('Full', 'breakdown'),\n },\n },\n {\n key: 'dimensionControl',\n label: 'Compatibility dimension control',\n available: true,\n helpText:\n 'Control which compatibility dimensions (Social Fit, Personality, Intimacy) matter most to you. Your discover feed re-ranks profiles based on your priorities.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'premiumExplore',\n label: 'Premium Explore categories',\n available: true,\n helpText:\n 'Access exclusive Explore categories like High IQ Dating, IIT/IIM Dating, Casual Dating, Elite Black Circle, and more curated collections.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'monthlyBoosts',\n label: 'Profile boosts',\n available: true,\n helpText:\n 'Boost your profile to the top of the discover feed for 30 minutes and get seen by more people.',\n plans: {\n lite: false,\n basic: n('3', 'boosts', 'per month'),\n premium: n('5', 'boosts', 'per month'),\n black: n('10', 'boosts', 'per month'),\n },\n },\n // ── Communication ──\n {\n key: 'readReceipts',\n label: 'Read receipts',\n available: true,\n helpText: 'Know exactly when someone has read your message. No more guessing.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'calls',\n label: 'Voice & video calls',\n available: false,\n helpText:\n 'Talk face-to-face or voice-only with your matches — directly inside the app, no phone number needed.',\n plans: {\n lite: false,\n basic: n('3 voice + 2 video', 'calls', 'per day'),\n premium: u('calls'),\n black: u('calls'),\n },\n },\n {\n key: 'voiceMessages',\n label: 'Voice messages in chat',\n available: false,\n helpText: 'Record and send short voice clips in chat instead of typing.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'messageBeforeMatch',\n label: 'Send a message first',\n available: false,\n helpText: 'Introduce yourself with a message before the other person swipes on you.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n // ── Insights ──\n {\n key: 'photoInsights',\n label: 'Photo Insights',\n available: true,\n helpText:\n 'See which of your photos gets the most likes and attention, and get tips to improve.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'viewContactNumber',\n label: 'View contact number',\n available: true,\n helpText:\n 'See the phone number of profiles who have chosen to share it. Both the user and their family contact if shared.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n // ── Premium perks ──\n {\n key: 'incognitoMode',\n label: 'Incognito Mode',\n available: true,\n helpText:\n 'Go invisible. Your profile is hidden from everyone except the people you choose to like.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'travelMode',\n label: 'Teleport Mode',\n available: true,\n helpText: 'Browse profiles in any city, district, or state — without physically being there.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'seePublicBlackProfiles',\n label: 'Discover Black Circle profiles',\n available: true,\n helpText:\n 'Premium members can see Black Circle profiles that are publicly discoverable. Black Circle members get full unrestricted access to all Black Circle profiles.',\n plans: {\n lite: false,\n basic: false,\n premium: d('Public', 'profiles only'),\n black: d('Full', 'access to all'),\n },\n },\n // ── Black exclusive ──\n {\n key: 'exclusiveLeague',\n label: 'The Black Circle',\n available: true,\n helpText:\n 'An exclusive community of celebrities, founders, and high-net-worth individuals. Your profile is only visible to other verified Black Circle members.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'verifiedBadge',\n label: 'Verified Elite badge',\n available: true,\n helpText:\n 'A distinctive badge on your profile, granted after admin verification. Signals you are a verified Black Circle member.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'vipSupport',\n label: 'Dedicated concierge',\n available: true,\n helpText:\n 'A personal matchmaking concierge who helps curate your matches and provides priority support.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n];\n"]}
|
package/dist/plan-limits.d.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Single source of truth for feature gating by pricing plan.
|
|
5
5
|
* Both backend middleware and frontend UI read from this config.
|
|
6
6
|
*
|
|
7
|
+
* 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)
|
|
8
|
+
*
|
|
7
9
|
* To add/remove a gated feature:
|
|
8
10
|
* 1. Add/remove the key in PlanLimits interface
|
|
9
11
|
* 2. Set values for each plan in PLAN_LIMITS
|
|
@@ -12,8 +14,8 @@
|
|
|
12
14
|
*
|
|
13
15
|
* @module dating-schema/plan-limits
|
|
14
16
|
*/
|
|
15
|
-
/** The
|
|
16
|
-
export type PlanId = '
|
|
17
|
+
/** The 4 pricing plans. Black is the exclusive celebrity/HNI tier. */
|
|
18
|
+
export type PlanId = 'lite' | 'basic' | 'premium' | 'black';
|
|
17
19
|
/** Filter capability levels by plan. */
|
|
18
20
|
export type FilterLevel = 'basic' | 'advanced' | 'full';
|
|
19
21
|
/** "Who liked you" visibility levels by plan. */
|
|
@@ -66,15 +68,15 @@ export interface PlanLimits {
|
|
|
66
68
|
export declare const PLAN_LIMITS: Record<PlanId, PlanLimits>;
|
|
67
69
|
/** All valid plan IDs in tier order. */
|
|
68
70
|
export declare const PLAN_IDS: PlanId[];
|
|
69
|
-
/** Paid plans (
|
|
71
|
+
/** Paid plans (Basic and above). */
|
|
70
72
|
export declare const PAID_PLANS: PlanId[];
|
|
71
|
-
/** Premium plans (
|
|
73
|
+
/** Premium plans (Premium and above). */
|
|
72
74
|
export declare const PREMIUM_PLANS: PlanId[];
|
|
73
|
-
/** Top-tier plans (
|
|
75
|
+
/** Top-tier plans (Black only). */
|
|
74
76
|
export declare const TOP_PLANS: PlanId[];
|
|
75
|
-
/** Check if a plan is paid (not
|
|
77
|
+
/** Check if a plan is paid (not Lite). */
|
|
76
78
|
export declare function isPaidPlan(planId: PlanId): boolean;
|
|
77
|
-
/** Premium explore categories that require
|
|
79
|
+
/** Premium explore categories that require Premium+ to access. */
|
|
78
80
|
export declare const PREMIUM_EXPLORE_CATEGORIES: readonly ["high-iq", "elite-institute", "nri-dating", "senior-dating", "lgbtq", "second-innings"];
|
|
79
81
|
/** How a feature appears in UI — per-plan value can be a string (quantity), true (check), or false (locked). */
|
|
80
82
|
/** Structured value for numeric/descriptive plan features */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-limits.d.ts","sourceRoot":"","sources":["../src/plan-limits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plan-limits.d.ts","sourceRoot":"","sources":["../src/plan-limits.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-limits.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Single source of truth for feature gating by pricing plan.
|
|
5
5
|
* Both backend middleware and frontend UI read from this config.
|
|
6
6
|
*
|
|
7
|
+
* 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)
|
|
8
|
+
*
|
|
7
9
|
* To add/remove a gated feature:
|
|
8
10
|
* 1. Add/remove the key in PlanLimits interface
|
|
9
11
|
* 2. Set values for each plan in PLAN_LIMITS
|
|
@@ -15,9 +17,9 @@
|
|
|
15
17
|
import { PLAN_FEATURE_DISPLAY_DATA as PLAN_FEATURE_DISPLAY_ITEMS } from './plan-features-data.js';
|
|
16
18
|
// ─── Plan Limits Config ──────────────────────────────────────────────────────
|
|
17
19
|
export const PLAN_LIMITS = {
|
|
18
|
-
// ──
|
|
19
|
-
|
|
20
|
-
dailyLikes:
|
|
20
|
+
// ── Lite (Free) — Hook users, limited enough to upgrade ──
|
|
21
|
+
lite: {
|
|
22
|
+
dailyLikes: 10,
|
|
21
23
|
dailyCompliments: 1,
|
|
22
24
|
dailyRewinds: 0,
|
|
23
25
|
dailyProfileVisits: 20,
|
|
@@ -48,64 +50,31 @@ export const PLAN_LIMITS = {
|
|
|
48
50
|
exclusiveLeague: false,
|
|
49
51
|
seePublicBlackProfiles: false,
|
|
50
52
|
},
|
|
51
|
-
// ──
|
|
52
|
-
|
|
53
|
-
dailyLikes:
|
|
54
|
-
dailyCompliments: 3,
|
|
55
|
-
dailyRewinds: Infinity, // no rewind cap for paid users
|
|
56
|
-
dailyProfileVisits: Infinity,
|
|
57
|
-
monthlyNewChatThreads: Infinity,
|
|
58
|
-
monthlyBoosts: 1,
|
|
59
|
-
dailyVoiceCalls: 0, // voice/video starts at Diamond
|
|
60
|
-
dailyVideoCalls: 0,
|
|
61
|
-
voiceCallDurationMin: 0,
|
|
62
|
-
videoCallDurationMin: 0,
|
|
63
|
-
monthlyIntentChanges: 4,
|
|
64
|
-
scoreVisibleProfiles: Infinity,
|
|
65
|
-
filterLevel: 'advanced',
|
|
66
|
-
whoLikedYou: 'blurred',
|
|
67
|
-
exploreAccess: 'premium',
|
|
68
|
-
scoreBreakdown: 'score',
|
|
69
|
-
readReceipts: false,
|
|
70
|
-
incognitoMode: false,
|
|
71
|
-
voiceMessages: false,
|
|
72
|
-
voiceCalls: false,
|
|
73
|
-
videoCalls: false,
|
|
74
|
-
showAds: false,
|
|
75
|
-
seeProfileViewers: false,
|
|
76
|
-
messageBeforeMatch: false,
|
|
77
|
-
travelMode: false,
|
|
78
|
-
profileContentUnlock: true,
|
|
79
|
-
photoInsights: false,
|
|
80
|
-
viewContactNumber: false,
|
|
81
|
-
exclusiveLeague: false,
|
|
82
|
-
seePublicBlackProfiles: false,
|
|
83
|
-
},
|
|
84
|
-
// ── Diamond (DECOY) — Almost Platinum but capped, pushes upgrade ──
|
|
85
|
-
diamond: {
|
|
86
|
-
dailyLikes: 300,
|
|
53
|
+
// ── Basic (DECOY) — Good enough to taste, limited enough to push Premium ──
|
|
54
|
+
basic: {
|
|
55
|
+
dailyLikes: 50,
|
|
87
56
|
dailyCompliments: 5,
|
|
88
57
|
dailyRewinds: Infinity,
|
|
89
58
|
dailyProfileVisits: Infinity,
|
|
90
59
|
monthlyNewChatThreads: Infinity,
|
|
91
60
|
monthlyBoosts: 3,
|
|
92
|
-
dailyVoiceCalls: 3,
|
|
93
|
-
dailyVideoCalls: 2,
|
|
94
|
-
voiceCallDurationMin: 15,
|
|
95
|
-
videoCallDurationMin: 10,
|
|
61
|
+
dailyVoiceCalls: 3, // hidden feature — not yet rolled out
|
|
62
|
+
dailyVideoCalls: 2, // hidden feature — not yet rolled out
|
|
63
|
+
voiceCallDurationMin: 15, // hidden feature — not yet rolled out
|
|
64
|
+
videoCallDurationMin: 10, // hidden feature — not yet rolled out
|
|
96
65
|
monthlyIntentChanges: 8,
|
|
97
66
|
scoreVisibleProfiles: Infinity,
|
|
98
|
-
filterLevel: '
|
|
99
|
-
whoLikedYou: '
|
|
100
|
-
exploreAccess: '
|
|
67
|
+
filterLevel: 'advanced',
|
|
68
|
+
whoLikedYou: 'blurred',
|
|
69
|
+
exploreAccess: 'basic', // NO premium explore — key decoy differentiator
|
|
101
70
|
scoreBreakdown: 'score',
|
|
102
|
-
readReceipts:
|
|
71
|
+
readReceipts: false, // key decoy limitation — only Premium gets this
|
|
103
72
|
incognitoMode: false,
|
|
104
|
-
voiceMessages: true,
|
|
105
|
-
voiceCalls: true,
|
|
106
|
-
videoCalls: true,
|
|
107
|
-
showAds: false,
|
|
108
|
-
seeProfileViewers:
|
|
73
|
+
voiceMessages: true, // hidden feature — not yet rolled out
|
|
74
|
+
voiceCalls: true, // hidden feature — not yet rolled out
|
|
75
|
+
videoCalls: true, // hidden feature — not yet rolled out
|
|
76
|
+
showAds: false, // ad-free
|
|
77
|
+
seeProfileViewers: false,
|
|
109
78
|
messageBeforeMatch: false,
|
|
110
79
|
travelMode: false,
|
|
111
80
|
profileContentUnlock: true,
|
|
@@ -114,18 +83,18 @@ export const PLAN_LIMITS = {
|
|
|
114
83
|
exclusiveLeague: false,
|
|
115
84
|
seePublicBlackProfiles: false,
|
|
116
85
|
},
|
|
117
|
-
// ──
|
|
118
|
-
|
|
119
|
-
dailyLikes:
|
|
86
|
+
// ── Premium — The aspirational tier, almost everything unlocked ──
|
|
87
|
+
premium: {
|
|
88
|
+
dailyLikes: 300,
|
|
120
89
|
dailyCompliments: 10,
|
|
121
90
|
dailyRewinds: Infinity,
|
|
122
91
|
dailyProfileVisits: Infinity,
|
|
123
92
|
monthlyNewChatThreads: Infinity,
|
|
124
93
|
monthlyBoosts: 5,
|
|
125
|
-
dailyVoiceCalls: Infinity,
|
|
126
|
-
dailyVideoCalls: Infinity,
|
|
127
|
-
voiceCallDurationMin: Infinity,
|
|
128
|
-
videoCallDurationMin: Infinity,
|
|
94
|
+
dailyVoiceCalls: Infinity, // hidden feature — not yet rolled out
|
|
95
|
+
dailyVideoCalls: Infinity, // hidden feature — not yet rolled out
|
|
96
|
+
voiceCallDurationMin: Infinity, // hidden feature — not yet rolled out
|
|
97
|
+
videoCallDurationMin: Infinity, // hidden feature — not yet rolled out
|
|
129
98
|
monthlyIntentChanges: Infinity,
|
|
130
99
|
scoreVisibleProfiles: Infinity,
|
|
131
100
|
filterLevel: 'full',
|
|
@@ -134,9 +103,9 @@ export const PLAN_LIMITS = {
|
|
|
134
103
|
scoreBreakdown: 'breakdown',
|
|
135
104
|
readReceipts: true,
|
|
136
105
|
incognitoMode: true,
|
|
137
|
-
voiceMessages: true,
|
|
138
|
-
voiceCalls: true,
|
|
139
|
-
videoCalls: true,
|
|
106
|
+
voiceMessages: true, // hidden feature — not yet rolled out
|
|
107
|
+
voiceCalls: true, // hidden feature — not yet rolled out
|
|
108
|
+
videoCalls: true, // hidden feature — not yet rolled out
|
|
140
109
|
showAds: false,
|
|
141
110
|
seeProfileViewers: true,
|
|
142
111
|
messageBeforeMatch: true,
|
|
@@ -150,11 +119,11 @@ export const PLAN_LIMITS = {
|
|
|
150
119
|
// ── Black — Exclusive league for celebrities & HNIs ──
|
|
151
120
|
black: {
|
|
152
121
|
dailyLikes: Infinity,
|
|
153
|
-
dailyCompliments: Infinity,
|
|
122
|
+
dailyCompliments: Infinity,
|
|
154
123
|
dailyRewinds: Infinity,
|
|
155
124
|
dailyProfileVisits: Infinity,
|
|
156
125
|
monthlyNewChatThreads: Infinity,
|
|
157
|
-
monthlyBoosts: 10,
|
|
126
|
+
monthlyBoosts: 10,
|
|
158
127
|
dailyVoiceCalls: Infinity,
|
|
159
128
|
dailyVideoCalls: Infinity,
|
|
160
129
|
voiceCallDurationMin: Infinity,
|
|
@@ -183,18 +152,18 @@ export const PLAN_LIMITS = {
|
|
|
183
152
|
};
|
|
184
153
|
// ─── Plan Tier Helpers ──────────────────────────────────────────────────────
|
|
185
154
|
/** All valid plan IDs in tier order. */
|
|
186
|
-
export const PLAN_IDS = ['
|
|
187
|
-
/** Paid plans (
|
|
188
|
-
export const PAID_PLANS = ['
|
|
189
|
-
/** Premium plans (
|
|
190
|
-
export const PREMIUM_PLANS = ['
|
|
191
|
-
/** Top-tier plans (
|
|
192
|
-
export const TOP_PLANS = ['
|
|
193
|
-
/** Check if a plan is paid (not
|
|
155
|
+
export const PLAN_IDS = ['lite', 'basic', 'premium', 'black'];
|
|
156
|
+
/** Paid plans (Basic and above). */
|
|
157
|
+
export const PAID_PLANS = ['basic', 'premium', 'black'];
|
|
158
|
+
/** Premium plans (Premium and above). */
|
|
159
|
+
export const PREMIUM_PLANS = ['premium', 'black'];
|
|
160
|
+
/** Top-tier plans (Black only). */
|
|
161
|
+
export const TOP_PLANS = ['black'];
|
|
162
|
+
/** Check if a plan is paid (not Lite). */
|
|
194
163
|
export function isPaidPlan(planId) {
|
|
195
|
-
return planId !== '
|
|
164
|
+
return planId !== 'lite';
|
|
196
165
|
}
|
|
197
|
-
/** Premium explore categories that require
|
|
166
|
+
/** Premium explore categories that require Premium+ to access. */
|
|
198
167
|
export const PREMIUM_EXPLORE_CATEGORIES = [
|
|
199
168
|
'high-iq',
|
|
200
169
|
'elite-institute',
|