dating-schema 0.39.2 → 0.41.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- 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 +44 -52
- 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/01-hero-identity.d.ts.map +1 -1
- package/dist/profile-fields/01-hero-identity.js +66 -0
- package/dist/profile-fields/01-hero-identity.js.map +1 -1
- package/dist/profile-fields/02-story-prompts.d.ts.map +1 -1
- package/dist/profile-fields/02-story-prompts.js +12 -0
- package/dist/profile-fields/02-story-prompts.js.map +1 -1
- package/dist/profile-fields/03-basics.d.ts.map +1 -1
- package/dist/profile-fields/03-basics.js +13 -112
- package/dist/profile-fields/03-basics.js.map +1 -1
- package/dist/profile-fields/04-looking-for.d.ts.map +1 -1
- package/dist/profile-fields/04-looking-for.js +15 -0
- 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 +66 -0
- 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 +57 -0
- 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 +97 -0
- 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 +39 -0
- package/dist/profile-fields/15-finance-legal.js.map +1 -1
- package/dist/profile-fields/17-religion-community.d.ts +3 -0
- package/dist/profile-fields/17-religion-community.d.ts.map +1 -0
- package/dist/profile-fields/17-religion-community.js +687 -0
- package/dist/profile-fields/17-religion-community.js.map +1 -0
- package/dist/profile-fields/index.d.ts +1 -0
- package/dist/profile-fields/index.d.ts.map +1 -1
- package/dist/profile-fields/index.js +3 -0
- package/dist/profile-fields/index.js.map +1 -1
- package/dist/profile-fields/types.d.ts +6 -0
- package/dist/profile-fields/types.d.ts.map +1 -1
- package/dist/profile-fields/types.js.map +1 -1
- package/dist/profile.d.ts +74 -28
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +24 -0
- package/dist/profile.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
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',
|
package/dist/plan-limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-limits.js","sourceRoot":"","sources":["../src/plan-limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * dating-schema — Plan limits configuration\n *\n * Single source of truth for feature gating by pricing plan.\n * Both backend middleware and frontend UI read from this config.\n *\n * To add/remove a gated feature:\n * 1. Add/remove the key in PlanLimits interface\n * 2. Set values for each plan in PLAN_LIMITS\n * 3. Backend: add enforceDatingPlanLimit('featureKey') middleware to the route\n * That's it — no scattered if-checks needed.\n *\n * @module dating-schema/plan-limits\n */\n\nimport { PLAN_FEATURE_DISPLAY_DATA as PLAN_FEATURE_DISPLAY_ITEMS } from './plan-features-data.js';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\n/** The 5 pricing plans. Black is the exclusive celebrity/HNI tier. */\nexport type PlanId = 'spark' | 'gold' | 'diamond' | 'platinum' | 'black';\n\n/** Filter capability levels by plan. */\nexport type FilterLevel = 'basic' | 'advanced' | 'full';\n\n/** \"Who liked you\" visibility levels by plan. */\nexport type WhoLikedYouLevel = 'none' | 'blurred' | 'full' | 'realtime';\n\n/** Explore category access levels by plan. */\nexport type ExploreAccessLevel = 'basic' | 'premium';\n\n/** Compatibility score breakdown visibility by plan. */\nexport type ScoreBreakdownLevel = 'none' | 'score' | 'breakdown';\n\n/** All numeric limit keys (daily/periodic counters enforced server-side). */\nexport type NumericFeatureKey =\n | 'dailyLikes'\n | 'dailyCompliments'\n | 'dailyRewinds'\n | 'dailyProfileVisits'\n | 'monthlyNewChatThreads'\n | 'monthlyBoosts'\n | 'dailyVoiceCalls'\n | 'dailyVideoCalls'\n | 'voiceCallDurationMin'\n | 'videoCallDurationMin'\n | 'monthlyIntentChanges'\n | 'scoreVisibleProfiles';\n\n/** All boolean feature keys (on/off per plan). */\nexport type BooleanFeatureKey =\n | 'readReceipts'\n | 'incognitoMode'\n | 'voiceMessages'\n | 'voiceCalls'\n | 'videoCalls'\n | 'showAds'\n | 'seeProfileViewers'\n | 'messageBeforeMatch'\n | 'travelMode'\n | 'profileContentUnlock'\n | 'photoInsights'\n | 'viewContactNumber'\n | 'exclusiveLeague'\n | 'seePublicBlackProfiles';\n\n/** All string-enum feature keys. */\nexport type EnumFeatureKey = 'filterLevel' | 'whoLikedYou' | 'exploreAccess' | 'scoreBreakdown';\n\n/** Union of all feature keys that can be gated. */\nexport type FeatureKey = NumericFeatureKey | BooleanFeatureKey | EnumFeatureKey;\n\n/** Complete plan limits definition. */\nexport interface PlanLimits {\n // ── Numeric limits (daily/periodic) ──\n dailyLikes: number;\n dailyCompliments: number;\n dailyRewinds: number;\n dailyProfileVisits: number;\n monthlyNewChatThreads: number;\n monthlyBoosts: number;\n\n dailyVoiceCalls: number;\n dailyVideoCalls: number;\n voiceCallDurationMin: number;\n videoCallDurationMin: number;\n monthlyIntentChanges: number;\n scoreVisibleProfiles: number;\n\n // ── Enum limits ──\n filterLevel: FilterLevel;\n whoLikedYou: WhoLikedYouLevel;\n exploreAccess: ExploreAccessLevel;\n scoreBreakdown: ScoreBreakdownLevel;\n\n // ── Boolean flags ──\n readReceipts: boolean;\n incognitoMode: boolean;\n voiceMessages: boolean;\n voiceCalls: boolean;\n videoCalls: boolean;\n showAds: boolean;\n seeProfileViewers: boolean;\n messageBeforeMatch: boolean;\n travelMode: boolean;\n profileContentUnlock: boolean;\n photoInsights: boolean;\n viewContactNumber: boolean;\n exclusiveLeague: boolean;\n seePublicBlackProfiles: boolean;\n}\n\n// ─── Plan Limits Config ──────────────────────────────────────────────────────\n\nexport const PLAN_LIMITS: Record<PlanId, PlanLimits> = {\n // ── Spark (Free) — Generous enough to hook, limited enough to upgrade ──\n spark: {\n dailyLikes: 50,\n dailyCompliments: 1,\n dailyRewinds: 0,\n dailyProfileVisits: 20,\n monthlyNewChatThreads: Infinity, // no chat cap — matches can always chat\n monthlyBoosts: 0,\n\n dailyVoiceCalls: 0,\n dailyVideoCalls: 0,\n voiceCallDurationMin: 0,\n videoCallDurationMin: 0,\n monthlyIntentChanges: 2,\n scoreVisibleProfiles: 3,\n filterLevel: 'basic',\n whoLikedYou: 'none',\n exploreAccess: 'basic',\n scoreBreakdown: 'none',\n readReceipts: false,\n incognitoMode: false,\n voiceMessages: false,\n voiceCalls: false,\n videoCalls: false,\n showAds: true,\n seeProfileViewers: false,\n messageBeforeMatch: false,\n travelMode: false,\n profileContentUnlock: false,\n photoInsights: false,\n viewContactNumber: false,\n exclusiveLeague: false,\n seePublicBlackProfiles: false,\n },\n\n // ── Gold — Removes all friction, more generous than Tinder Plus ──\n gold: {\n dailyLikes: 150, // generous but not unlimited\n dailyCompliments: 3,\n dailyRewinds: Infinity, // no rewind cap for paid users\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 1,\n\n dailyVoiceCalls: 0, // voice/video starts at Diamond\n dailyVideoCalls: 0,\n voiceCallDurationMin: 0,\n videoCallDurationMin: 0,\n monthlyIntentChanges: 4,\n scoreVisibleProfiles: Infinity,\n filterLevel: 'advanced',\n whoLikedYou: 'blurred',\n exploreAccess: 'premium',\n scoreBreakdown: 'score',\n readReceipts: false,\n incognitoMode: false,\n voiceMessages: false,\n voiceCalls: false,\n videoCalls: false,\n showAds: false,\n seeProfileViewers: false,\n messageBeforeMatch: false,\n travelMode: false,\n profileContentUnlock: true,\n photoInsights: false,\n viewContactNumber: false,\n exclusiveLeague: false,\n seePublicBlackProfiles: false,\n },\n\n // ── Diamond (DECOY) — Almost Platinum but capped, pushes upgrade ──\n diamond: {\n dailyLikes: 300,\n dailyCompliments: 5,\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 3,\n\n dailyVoiceCalls: 3,\n dailyVideoCalls: 2,\n voiceCallDurationMin: 15,\n videoCallDurationMin: 10,\n monthlyIntentChanges: 8,\n scoreVisibleProfiles: Infinity,\n filterLevel: 'full',\n whoLikedYou: 'full',\n exploreAccess: 'premium',\n scoreBreakdown: 'score',\n readReceipts: true,\n incognitoMode: false,\n voiceMessages: true,\n voiceCalls: true,\n videoCalls: true,\n showAds: false,\n seeProfileViewers: true,\n messageBeforeMatch: false,\n travelMode: false,\n profileContentUnlock: true,\n photoInsights: false,\n viewContactNumber: false,\n exclusiveLeague: false,\n seePublicBlackProfiles: false,\n },\n\n // ── Platinum — The aspirational tier, everything unlocked ──\n platinum: {\n dailyLikes: Infinity,\n dailyCompliments: 10,\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 5,\n\n dailyVoiceCalls: Infinity,\n dailyVideoCalls: Infinity,\n voiceCallDurationMin: Infinity,\n videoCallDurationMin: Infinity,\n monthlyIntentChanges: Infinity,\n scoreVisibleProfiles: Infinity,\n filterLevel: 'full',\n whoLikedYou: 'realtime',\n exploreAccess: 'premium',\n scoreBreakdown: 'breakdown',\n readReceipts: true,\n incognitoMode: true,\n voiceMessages: true,\n voiceCalls: true,\n videoCalls: true,\n showAds: false,\n seeProfileViewers: true,\n messageBeforeMatch: true,\n travelMode: true,\n profileContentUnlock: true,\n photoInsights: true,\n viewContactNumber: true,\n exclusiveLeague: false,\n seePublicBlackProfiles: true,\n },\n\n // ── Black — Exclusive league for celebrities & HNIs ──\n black: {\n dailyLikes: Infinity,\n dailyCompliments: Infinity, // unlimited for Black\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 10, // 2x Platinum\n\n dailyVoiceCalls: Infinity,\n dailyVideoCalls: Infinity,\n voiceCallDurationMin: Infinity,\n videoCallDurationMin: Infinity,\n monthlyIntentChanges: Infinity,\n scoreVisibleProfiles: Infinity,\n filterLevel: 'full',\n whoLikedYou: 'realtime',\n exploreAccess: 'premium',\n scoreBreakdown: 'breakdown',\n readReceipts: true,\n incognitoMode: true,\n voiceMessages: true,\n voiceCalls: true,\n videoCalls: true,\n showAds: false,\n seeProfileViewers: true,\n messageBeforeMatch: true,\n travelMode: true,\n profileContentUnlock: true,\n photoInsights: true,\n viewContactNumber: true,\n exclusiveLeague: true,\n seePublicBlackProfiles: true,\n },\n} as const;\n\n// ─── Plan Tier Helpers ──────────────────────────────────────────────────────\n\n/** All valid plan IDs in tier order. */\nexport const PLAN_IDS: PlanId[] = ['spark', 'gold', 'diamond', 'platinum', 'black'];\n\n/** Paid plans (Gold and above). */\nexport const PAID_PLANS: PlanId[] = ['gold', 'diamond', 'platinum', 'black'];\n\n/** Premium plans (Diamond and above). */\nexport const PREMIUM_PLANS: PlanId[] = ['diamond', 'platinum', 'black'];\n\n/** Top-tier plans (Platinum and Black). */\nexport const TOP_PLANS: PlanId[] = ['platinum', 'black'];\n\n/** Check if a plan is paid (not Spark). */\nexport function isPaidPlan(planId: PlanId): boolean {\n return planId !== 'spark';\n}\n\n/** Premium explore categories that require Gold+ to access. */\nexport const PREMIUM_EXPLORE_CATEGORIES = [\n 'high-iq',\n 'elite-institute',\n 'nri-dating',\n 'senior-dating',\n 'lgbtq',\n 'second-innings',\n] as const;\n\n// ─── Feature Display Config (UI source of truth) ────────────────────────────\n\n/** How a feature appears in UI — per-plan value can be a string (quantity), true (check), or false (locked). */\n/** Structured value for numeric/descriptive plan features */\nexport interface FeatureValue {\n /** Quantity — e.g. \"10\", \"Unlimited\", \"3\", \"All 147\", \"Blurred preview\" */\n qty: string;\n /** Feature noun — e.g. \"compliments\", \"swipes\", \"filters\", \"of likes\" */\n text: string;\n /** Time/frequency unit — e.g. \"per day\", \"per month\". Omit if not applicable. */\n unit?: string;\n}\n\nexport interface FeatureDisplayItem {\n /** Unique key matching a FeatureKey or custom display key */\n key: string;\n /** Short, clear label shown when feature is locked */\n label: string;\n /** Tooltip help text explaining what this feature does */\n helpText: string;\n /** Whether this feature is live. If false, hidden from UI entirely (not yet rolled out). */\n available: boolean;\n /** Per-plan display value: FeatureValue = structured text, true = checkmark, false = locked */\n plans: Record<PlanId, FeatureValue | boolean>;\n}\n\n/** Render a plan feature value to a single display string */\nexport function renderFeatureValue(value: FeatureValue | boolean, label: string): string {\n if (value === true) return label;\n if (value === false) return label;\n const parts = [value.qty, value.text];\n if (value.unit) parts.push(value.unit);\n return parts.join(' ');\n}\n\n/**\n * Master feature list for plan comparison UI.\n * Now in plan-features-data.ts for cleaner separation.\n */\nexport { PLAN_FEATURE_DISPLAY_DATA as PLAN_FEATURE_DISPLAY } from './plan-features-data.js';\n\n/**\n * Get features for a plan, split into included (with values) and locked.\n * Included features come first, locked features last.\n * Only includes features where `available: true` (hides unreleased features).\n */\nexport function getPlanFeatureDisplay(planId: PlanId): {\n included: { key: string; label: string; helpText: string; value: string | true }[];\n locked: { key: string; label: string; helpText: string }[];\n} {\n const included: { key: string; label: string; helpText: string; value: string | true }[] = [];\n const locked: { key: string; label: string; helpText: string }[] = [];\n\n for (const f of PLAN_FEATURE_DISPLAY_ITEMS) {\n // Skip features not yet rolled out\n if (!f.available) continue;\n\n const val = f.plans[planId];\n if (val === false) {\n locked.push({ key: f.key, label: f.label, helpText: f.helpText });\n } else if (val === true) {\n included.push({ key: f.key, label: f.label, helpText: f.helpText, value: true });\n } else {\n included.push({\n key: f.key,\n label: f.label,\n helpText: f.helpText,\n value: renderFeatureValue(val, f.label),\n });\n }\n }\n\n return { included, locked };\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\n/** Get the limits object for a plan. */\nexport function getPlanLimits(planId: PlanId): PlanLimits {\n return PLAN_LIMITS[planId];\n}\n\n/** Get a specific limit value for a plan + feature. */\nexport function getPlanLimit<K extends FeatureKey>(planId: PlanId, feature: K): PlanLimits[K] {\n return PLAN_LIMITS[planId][feature];\n}\n\n/**\n * Check if a boolean feature is enabled for a plan.\n * Returns `false` for non-boolean features.\n */\nexport function isFeatureEnabled(planId: PlanId, feature: BooleanFeatureKey): boolean {\n return PLAN_LIMITS[planId][feature];\n}\n\n/**\n * Check if a numeric feature has remaining capacity.\n * Returns `true` if the limit is Infinity or greater than current usage.\n */\nexport function hasRemainingQuota(\n planId: PlanId,\n feature: NumericFeatureKey,\n currentUsage: number,\n): boolean {\n const limit = PLAN_LIMITS[planId][feature];\n return limit === Infinity || currentUsage < limit;\n}\n\n/**\n * Get the minimum plan required for a boolean feature.\n * Returns undefined if no plan enables it.\n */\nexport function getMinPlanForFeature(feature: BooleanFeatureKey): PlanId | undefined {\n return PLAN_IDS.find((id) => PLAN_LIMITS[id][feature] === true);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"plan-limits.js","sourceRoot":"","sources":["../src/plan-limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * dating-schema — Plan limits configuration\n *\n * Single source of truth for feature gating by pricing plan.\n * Both backend middleware and frontend UI read from this config.\n *\n * 4-tier system: Lite (free) → Basic (decoy) → Premium (target) → Black (elite)\n *\n * To add/remove a gated feature:\n * 1. Add/remove the key in PlanLimits interface\n * 2. Set values for each plan in PLAN_LIMITS\n * 3. Backend: add enforceDatingPlanLimit('featureKey') middleware to the route\n * That's it — no scattered if-checks needed.\n *\n * @module dating-schema/plan-limits\n */\n\nimport { PLAN_FEATURE_DISPLAY_DATA as PLAN_FEATURE_DISPLAY_ITEMS } from './plan-features-data.js';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\n/** The 4 pricing plans. Black is the exclusive celebrity/HNI tier. */\nexport type PlanId = 'lite' | 'basic' | 'premium' | 'black';\n\n/** Filter capability levels by plan. */\nexport type FilterLevel = 'basic' | 'advanced' | 'full';\n\n/** \"Who liked you\" visibility levels by plan. */\nexport type WhoLikedYouLevel = 'none' | 'blurred' | 'full' | 'realtime';\n\n/** Explore category access levels by plan. */\nexport type ExploreAccessLevel = 'basic' | 'premium';\n\n/** Compatibility score breakdown visibility by plan. */\nexport type ScoreBreakdownLevel = 'none' | 'score' | 'breakdown';\n\n/** All numeric limit keys (daily/periodic counters enforced server-side). */\nexport type NumericFeatureKey =\n | 'dailyLikes'\n | 'dailyCompliments'\n | 'dailyRewinds'\n | 'dailyProfileVisits'\n | 'monthlyNewChatThreads'\n | 'monthlyBoosts'\n | 'dailyVoiceCalls'\n | 'dailyVideoCalls'\n | 'voiceCallDurationMin'\n | 'videoCallDurationMin'\n | 'monthlyIntentChanges'\n | 'scoreVisibleProfiles';\n\n/** All boolean feature keys (on/off per plan). */\nexport type BooleanFeatureKey =\n | 'readReceipts'\n | 'incognitoMode'\n | 'voiceMessages'\n | 'voiceCalls'\n | 'videoCalls'\n | 'showAds'\n | 'seeProfileViewers'\n | 'messageBeforeMatch'\n | 'travelMode'\n | 'profileContentUnlock'\n | 'photoInsights'\n | 'viewContactNumber'\n | 'exclusiveLeague'\n | 'seePublicBlackProfiles';\n\n/** All string-enum feature keys. */\nexport type EnumFeatureKey = 'filterLevel' | 'whoLikedYou' | 'exploreAccess' | 'scoreBreakdown';\n\n/** Union of all feature keys that can be gated. */\nexport type FeatureKey = NumericFeatureKey | BooleanFeatureKey | EnumFeatureKey;\n\n/** Complete plan limits definition. */\nexport interface PlanLimits {\n // ── Numeric limits (daily/periodic) ──\n dailyLikes: number;\n dailyCompliments: number;\n dailyRewinds: number;\n dailyProfileVisits: number;\n monthlyNewChatThreads: number;\n monthlyBoosts: number;\n\n dailyVoiceCalls: number;\n dailyVideoCalls: number;\n voiceCallDurationMin: number;\n videoCallDurationMin: number;\n monthlyIntentChanges: number;\n scoreVisibleProfiles: number;\n\n // ── Enum limits ──\n filterLevel: FilterLevel;\n whoLikedYou: WhoLikedYouLevel;\n exploreAccess: ExploreAccessLevel;\n scoreBreakdown: ScoreBreakdownLevel;\n\n // ── Boolean flags ──\n readReceipts: boolean;\n incognitoMode: boolean;\n voiceMessages: boolean;\n voiceCalls: boolean;\n videoCalls: boolean;\n showAds: boolean;\n seeProfileViewers: boolean;\n messageBeforeMatch: boolean;\n travelMode: boolean;\n profileContentUnlock: boolean;\n photoInsights: boolean;\n viewContactNumber: boolean;\n exclusiveLeague: boolean;\n seePublicBlackProfiles: boolean;\n}\n\n// ─── Plan Limits Config ──────────────────────────────────────────────────────\n\nexport const PLAN_LIMITS: Record<PlanId, PlanLimits> = {\n // ── Lite (Free) — Hook users, limited enough to upgrade ──\n lite: {\n dailyLikes: 10,\n dailyCompliments: 1,\n dailyRewinds: 0,\n dailyProfileVisits: 20,\n monthlyNewChatThreads: Infinity, // no chat cap — matches can always chat\n monthlyBoosts: 0,\n\n dailyVoiceCalls: 0,\n dailyVideoCalls: 0,\n voiceCallDurationMin: 0,\n videoCallDurationMin: 0,\n monthlyIntentChanges: 2,\n scoreVisibleProfiles: 3,\n\n filterLevel: 'basic',\n whoLikedYou: 'none',\n exploreAccess: 'basic',\n scoreBreakdown: 'none',\n\n readReceipts: false,\n incognitoMode: false,\n voiceMessages: false,\n voiceCalls: false,\n videoCalls: false,\n showAds: true,\n seeProfileViewers: false,\n messageBeforeMatch: false,\n travelMode: false,\n profileContentUnlock: false,\n photoInsights: false,\n viewContactNumber: false,\n exclusiveLeague: false,\n seePublicBlackProfiles: false,\n },\n\n // ── Basic (DECOY) — Good enough to taste, limited enough to push Premium ──\n basic: {\n dailyLikes: 50,\n dailyCompliments: 5,\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 3,\n\n dailyVoiceCalls: 3, // hidden feature — not yet rolled out\n dailyVideoCalls: 2, // hidden feature — not yet rolled out\n voiceCallDurationMin: 15, // hidden feature — not yet rolled out\n videoCallDurationMin: 10, // hidden feature — not yet rolled out\n monthlyIntentChanges: 8,\n scoreVisibleProfiles: Infinity,\n\n filterLevel: 'advanced',\n whoLikedYou: 'blurred',\n exploreAccess: 'basic', // NO premium explore — key decoy differentiator\n scoreBreakdown: 'score',\n\n readReceipts: false, // key decoy limitation — only Premium gets this\n incognitoMode: false,\n voiceMessages: true, // hidden feature — not yet rolled out\n voiceCalls: true, // hidden feature — not yet rolled out\n videoCalls: true, // hidden feature — not yet rolled out\n showAds: false, // ad-free\n seeProfileViewers: false,\n messageBeforeMatch: false,\n travelMode: false,\n profileContentUnlock: true,\n photoInsights: false,\n viewContactNumber: false,\n exclusiveLeague: false,\n seePublicBlackProfiles: false,\n },\n\n // ── Premium — The aspirational tier, almost everything unlocked ──\n premium: {\n dailyLikes: 300,\n dailyCompliments: 10,\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 5,\n\n dailyVoiceCalls: Infinity, // hidden feature — not yet rolled out\n dailyVideoCalls: Infinity, // hidden feature — not yet rolled out\n voiceCallDurationMin: Infinity, // hidden feature — not yet rolled out\n videoCallDurationMin: Infinity, // hidden feature — not yet rolled out\n monthlyIntentChanges: Infinity,\n scoreVisibleProfiles: Infinity,\n\n filterLevel: 'full',\n whoLikedYou: 'realtime',\n exploreAccess: 'premium',\n scoreBreakdown: 'breakdown',\n\n readReceipts: true,\n incognitoMode: true,\n voiceMessages: true, // hidden feature — not yet rolled out\n voiceCalls: true, // hidden feature — not yet rolled out\n videoCalls: true, // hidden feature — not yet rolled out\n showAds: false,\n seeProfileViewers: true,\n messageBeforeMatch: true,\n travelMode: true,\n profileContentUnlock: true,\n photoInsights: true,\n viewContactNumber: true,\n exclusiveLeague: false,\n seePublicBlackProfiles: true,\n },\n\n // ── Black — Exclusive league for celebrities & HNIs ──\n black: {\n dailyLikes: Infinity,\n dailyCompliments: Infinity,\n dailyRewinds: Infinity,\n dailyProfileVisits: Infinity,\n monthlyNewChatThreads: Infinity,\n monthlyBoosts: 10,\n\n dailyVoiceCalls: Infinity,\n dailyVideoCalls: Infinity,\n voiceCallDurationMin: Infinity,\n videoCallDurationMin: Infinity,\n monthlyIntentChanges: Infinity,\n scoreVisibleProfiles: Infinity,\n\n filterLevel: 'full',\n whoLikedYou: 'realtime',\n exploreAccess: 'premium',\n scoreBreakdown: 'breakdown',\n\n readReceipts: true,\n incognitoMode: true,\n voiceMessages: true,\n voiceCalls: true,\n videoCalls: true,\n showAds: false,\n seeProfileViewers: true,\n messageBeforeMatch: true,\n travelMode: true,\n profileContentUnlock: true,\n photoInsights: true,\n viewContactNumber: true,\n exclusiveLeague: true,\n seePublicBlackProfiles: true,\n },\n} as const;\n\n// ─── Plan Tier Helpers ──────────────────────────────────────────────────────\n\n/** All valid plan IDs in tier order. */\nexport const PLAN_IDS: PlanId[] = ['lite', 'basic', 'premium', 'black'];\n\n/** Paid plans (Basic and above). */\nexport const PAID_PLANS: PlanId[] = ['basic', 'premium', 'black'];\n\n/** Premium plans (Premium and above). */\nexport const PREMIUM_PLANS: PlanId[] = ['premium', 'black'];\n\n/** Top-tier plans (Black only). */\nexport const TOP_PLANS: PlanId[] = ['black'];\n\n/** Check if a plan is paid (not Lite). */\nexport function isPaidPlan(planId: PlanId): boolean {\n return planId !== 'lite';\n}\n\n/** Premium explore categories that require Premium+ to access. */\nexport const PREMIUM_EXPLORE_CATEGORIES = [\n 'high-iq',\n 'elite-institute',\n 'nri-dating',\n 'senior-dating',\n 'lgbtq',\n 'second-innings',\n] as const;\n\n// ─── Feature Display Config (UI source of truth) ────────────────────────────\n\n/** How a feature appears in UI — per-plan value can be a string (quantity), true (check), or false (locked). */\n/** Structured value for numeric/descriptive plan features */\nexport interface FeatureValue {\n /** Quantity — e.g. \"10\", \"Unlimited\", \"3\", \"All 147\", \"Blurred preview\" */\n qty: string;\n /** Feature noun — e.g. \"compliments\", \"swipes\", \"filters\", \"of likes\" */\n text: string;\n /** Time/frequency unit — e.g. \"per day\", \"per month\". Omit if not applicable. */\n unit?: string;\n}\n\nexport interface FeatureDisplayItem {\n /** Unique key matching a FeatureKey or custom display key */\n key: string;\n /** Short, clear label shown when feature is locked */\n label: string;\n /** Tooltip help text explaining what this feature does */\n helpText: string;\n /** Whether this feature is live. If false, hidden from UI entirely (not yet rolled out). */\n available: boolean;\n /** Per-plan display value: FeatureValue = structured text, true = checkmark, false = locked */\n plans: Record<PlanId, FeatureValue | boolean>;\n}\n\n/** Render a plan feature value to a single display string */\nexport function renderFeatureValue(value: FeatureValue | boolean, label: string): string {\n if (value === true) return label;\n if (value === false) return label;\n const parts = [value.qty, value.text];\n if (value.unit) parts.push(value.unit);\n return parts.join(' ');\n}\n\n/**\n * Master feature list for plan comparison UI.\n * Now in plan-features-data.ts for cleaner separation.\n */\nexport { PLAN_FEATURE_DISPLAY_DATA as PLAN_FEATURE_DISPLAY } from './plan-features-data.js';\n\n/**\n * Get features for a plan, split into included (with values) and locked.\n * Included features come first, locked features last.\n * Only includes features where `available: true` (hides unreleased features).\n */\nexport function getPlanFeatureDisplay(planId: PlanId): {\n included: { key: string; label: string; helpText: string; value: string | true }[];\n locked: { key: string; label: string; helpText: string }[];\n} {\n const included: { key: string; label: string; helpText: string; value: string | true }[] = [];\n const locked: { key: string; label: string; helpText: string }[] = [];\n\n for (const f of PLAN_FEATURE_DISPLAY_ITEMS) {\n // Skip features not yet rolled out\n if (!f.available) continue;\n\n const val = f.plans[planId];\n if (val === false) {\n locked.push({ key: f.key, label: f.label, helpText: f.helpText });\n } else if (val === true) {\n included.push({ key: f.key, label: f.label, helpText: f.helpText, value: true });\n } else {\n included.push({\n key: f.key,\n label: f.label,\n helpText: f.helpText,\n value: renderFeatureValue(val, f.label),\n });\n }\n }\n\n return { included, locked };\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\n/** Get the limits object for a plan. */\nexport function getPlanLimits(planId: PlanId): PlanLimits {\n return PLAN_LIMITS[planId];\n}\n\n/** Get a specific limit value for a plan + feature. */\nexport function getPlanLimit<K extends FeatureKey>(planId: PlanId, feature: K): PlanLimits[K] {\n return PLAN_LIMITS[planId][feature];\n}\n\n/**\n * Check if a boolean feature is enabled for a plan.\n * Returns `false` for non-boolean features.\n */\nexport function isFeatureEnabled(planId: PlanId, feature: BooleanFeatureKey): boolean {\n return PLAN_LIMITS[planId][feature];\n}\n\n/**\n * Check if a numeric feature has remaining capacity.\n * Returns `true` if the limit is Infinity or greater than current usage.\n */\nexport function hasRemainingQuota(\n planId: PlanId,\n feature: NumericFeatureKey,\n currentUsage: number,\n): boolean {\n const limit = PLAN_LIMITS[planId][feature];\n return limit === Infinity || currentUsage < limit;\n}\n\n/**\n * Get the minimum plan required for a boolean feature.\n * Returns undefined if no plan enables it.\n */\nexport function getMinPlanForFeature(feature: BooleanFeatureKey): PlanId | undefined {\n return PLAN_IDS.find((id) => PLAN_LIMITS[id][feature] === true);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"01-hero-identity.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-hero-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"01-hero-identity.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-hero-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAwd1B,CAAC"}
|
|
@@ -401,6 +401,72 @@ export const heroIdentity = {
|
|
|
401
401
|
{ value: 'prefer_not_to_say', label: 'Prefer not to say' },
|
|
402
402
|
],
|
|
403
403
|
},
|
|
404
|
+
// ── Orphan fields (exist in Mongoose model, now registered in schema) ──
|
|
405
|
+
{
|
|
406
|
+
order: 13,
|
|
407
|
+
key: 'phoneNumber',
|
|
408
|
+
label: 'Phone Number',
|
|
409
|
+
type: 'text',
|
|
410
|
+
tier: 1,
|
|
411
|
+
isFilter: false,
|
|
412
|
+
isOnboarding: true,
|
|
413
|
+
description: 'Primary contact number with country code',
|
|
414
|
+
sensitive: true,
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
order: 14,
|
|
418
|
+
key: 'phoneVisible',
|
|
419
|
+
label: 'Phone Visible to Matches',
|
|
420
|
+
type: 'single_select',
|
|
421
|
+
tier: 1,
|
|
422
|
+
isFilter: false,
|
|
423
|
+
isOnboarding: true,
|
|
424
|
+
options: [
|
|
425
|
+
{ value: 'true', label: 'Yes' },
|
|
426
|
+
{ value: 'false', label: 'No' },
|
|
427
|
+
],
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
order: 15,
|
|
431
|
+
key: 'guardianContact',
|
|
432
|
+
label: 'Guardian / Family Contact',
|
|
433
|
+
type: 'object_array',
|
|
434
|
+
itemShape: { phoneNumber: 'string', relation: 'string', visible: 'boolean' },
|
|
435
|
+
tier: 2,
|
|
436
|
+
isFilter: false,
|
|
437
|
+
isOnboarding: true,
|
|
438
|
+
isOnboardingOptional: true,
|
|
439
|
+
description: 'Family member contact for interested matches',
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
order: 16,
|
|
443
|
+
key: 'currentAddress',
|
|
444
|
+
label: 'Current Address',
|
|
445
|
+
type: 'location',
|
|
446
|
+
tier: 1,
|
|
447
|
+
isFilter: false,
|
|
448
|
+
isOnboarding: false,
|
|
449
|
+
description: 'Your current residential address',
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
order: 17,
|
|
453
|
+
key: 'hometownAddress',
|
|
454
|
+
label: 'Hometown Address',
|
|
455
|
+
type: 'location',
|
|
456
|
+
tier: 1,
|
|
457
|
+
isFilter: false,
|
|
458
|
+
isOnboarding: false,
|
|
459
|
+
description: 'Your hometown / native place address',
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
order: 18,
|
|
463
|
+
key: 'hometownState',
|
|
464
|
+
label: 'Hometown State',
|
|
465
|
+
type: 'text',
|
|
466
|
+
tier: 1,
|
|
467
|
+
isFilter: true,
|
|
468
|
+
isOnboarding: true,
|
|
469
|
+
},
|
|
404
470
|
],
|
|
405
471
|
};
|
|
406
472
|
//# sourceMappingURL=01-hero-identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"01-hero-identity.js","sourceRoot":"","sources":["../../src/profile-fields/01-hero-identity.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const heroIdentity: FieldGroup = {\n key: 'hero_identity',\n label: 'Hero & Identity',\n description: 'Core identity shown in the hero section of your profile.',\n tier: 1,\n fields: [\n {\n order: 1,\n key: 'photos',\n label: 'Photos',\n type: 'image_upload',\n min: 2,\n max: 6,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n description: 'Upload 2-6 photos. Your first photo is your first impression.',\n },\n {\n order: 2,\n key: 'displayName',\n label: 'Display Name',\n type: 'text',\n maxLength: 50,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n prefillFrom: 'user.firstName + user.lastName',\n description: 'Your name as shown to others.',\n },\n {\n order: 3,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.dateOfBirth',\n description: 'Your age is computed from this. Only age is shown, not the date.',\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.gender',\n options: [\n { value: 'man', label: 'Man', description: 'Identify as male' },\n { value: 'woman', label: 'Woman', description: 'Identify as female' },\n {\n value: 'non_binary',\n label: 'Non-binary',\n description: 'Neither exclusively male nor female',\n },\n {\n value: 'trans_man',\n label: 'Trans Man',\n description: 'Assigned female at birth, identify as male',\n },\n {\n value: 'trans_woman',\n label: 'Trans Woman',\n description: 'Assigned male at birth, identify as female',\n },\n {\n value: 'genderfluid',\n label: 'Genderfluid',\n description: 'Gender identity shifts over time',\n },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'agender', label: 'Agender', description: 'No gender identity or gender-neutral' },\n {\n value: 'bigender',\n label: 'Bigender',\n description: 'Identify as two genders simultaneously or alternating',\n },\n {\n value: 'pangender',\n label: 'Pangender',\n description: 'Identify with all genders or many gender identities',\n },\n {\n value: 'androgynous',\n label: 'Androgynous',\n description: 'Blend of masculine and feminine expression',\n },\n {\n value: 'intersex',\n label: 'Intersex',\n description: \"Born with sex characteristics that don't fit typical male/female\",\n },\n {\n value: 'gender_nonconforming',\n label: 'Gender Non-conforming',\n description: \"Expression doesn't align with conventional expectations\",\n },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n {\n value: 'hijra',\n label: 'Hijra',\n description: 'South Asian third-gender identity — legally recognized in India',\n },\n { value: 'other', label: 'Other', description: 'Another identity not listed here' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 5,\n key: 'pronouns',\n label: 'Pronouns',\n type: 'single_select',\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n options: [\n { value: 'he_him', label: 'He/Him', description: 'Masculine pronouns' },\n { value: 'she_her', label: 'She/Her', description: 'Feminine pronouns' },\n { value: 'they_them', label: 'They/Them', description: 'Gender-neutral pronouns' },\n { value: 'he_they', label: 'He/They', description: 'Use either he/him or they/them' },\n { value: 'she_they', label: 'She/They', description: 'Use either she/her or they/them' },\n { value: 'ze_zir', label: 'Ze/Zir', description: 'Neopronouns — ze laughed, I called zir' },\n { value: 'xe_xem', label: 'Xe/Xem', description: 'Neopronouns — xe laughed, I called xem' },\n {\n value: 'any_pronouns',\n label: 'Any Pronouns',\n description: 'Comfortable with all pronouns',\n },\n { value: 'ask_me', label: 'Ask Me', description: 'Prefer to be asked in person' },\n { value: 'other', label: 'Other', description: 'Pronouns not listed here' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 6,\n key: 'currentLocation',\n label: 'Current Location',\n type: 'location',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.currentLocationDisplay',\n description: 'Where you currently live.',\n },\n {\n order: 7,\n key: 'hometown',\n label: 'Hometown / Native Place',\n type: 'text',\n maxLength: 100,\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.hometown',\n description: \"Where you're originally from.\",\n },\n {\n order: 8,\n key: 'searchRadius',\n label: 'Search Radius',\n type: 'range_slider',\n min: 1,\n max: 500,\n unit: 'km',\n default: 50,\n tier: 'internal',\n isFilter: true,\n isOnboarding: false,\n description: 'How far to search for matches.',\n },\n {\n order: 9,\n key: 'relationshipIntent',\n label: 'Relationship Intent',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n {\n value: 'life_partner',\n label: 'Life Partner / Marriage',\n description: 'Ready to settle down — looking for a spouse or lifelong commitment',\n },\n {\n value: 'long_term',\n label: 'Long-term Relationship',\n description: 'Serious & committed, but not necessarily leading to marriage',\n },\n {\n value: 'long_term_open_to_short',\n label: 'Long-term, Open to Short',\n description: 'Ideally something serious, but open to seeing where things go',\n },\n {\n value: 'short_term_open_to_long',\n label: 'Short-term, Open to Long',\n description: \"Keeping it light for now, but won't say no if it turns serious\",\n },\n {\n value: 'casual_dating',\n label: 'Casual Dating',\n description: 'Going on dates & having fun — no commitment pressure',\n },\n {\n value: 'companionship',\n label: 'Companionship',\n description: 'Emotional connection & company — without traditional relationship labels',\n },\n {\n value: 'ethical_non_monogamy',\n label: 'ENM / Poly Partner',\n description: 'Looking for additional partner(s) in an ethically non-monogamous setup',\n },\n {\n value: 'activity_partner',\n label: 'Activity Partner',\n description:\n 'Someone to share hobbies & experiences with — hiking, travel, concerts etc.',\n },\n {\n value: 'new_friends',\n label: 'New Friends',\n description: 'Platonic friendships — no romantic expectations',\n },\n {\n value: 'figuring_out',\n label: 'Still Figuring It Out',\n description: 'Not sure yet — just exploring and seeing what clicks',\n },\n ],\n },\n {\n order: 10,\n key: 'sexualOrientation',\n label: 'Sexual Orientation',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n { value: 'straight', label: 'Straight', description: 'Attracted to the opposite gender' },\n { value: 'gay', label: 'Gay', description: 'Men attracted to men' },\n { value: 'lesbian', label: 'Lesbian', description: 'Women attracted to women' },\n { value: 'bisexual', label: 'Bisexual', description: 'Attracted to both men and women' },\n {\n value: 'pansexual',\n label: 'Pansexual',\n description: 'Attracted to people regardless of gender',\n },\n {\n value: 'asexual',\n label: 'Asexual',\n description: 'Little or no sexual attraction to anyone',\n },\n {\n value: 'demisexual',\n label: 'Demisexual',\n description: 'Sexual attraction only after emotional bond',\n },\n {\n value: 'aromantic',\n label: 'Aromantic',\n description: 'Little or no romantic attraction — may still feel sexual attraction',\n },\n {\n value: 'graysexual',\n label: 'Graysexual',\n description: 'Rarely experiences sexual attraction — between asexual and sexual',\n },\n {\n value: 'omnisexual',\n label: 'Omnisexual',\n description: 'Attracted to all genders, but gender plays a role in attraction',\n },\n {\n value: 'fluid',\n label: 'Fluid',\n description: 'Sexual orientation shifts over time or context',\n },\n {\n value: 'queer',\n label: 'Queer',\n description: 'Umbrella term for non-straight identities',\n },\n {\n value: 'questioning',\n label: 'Questioning',\n description: 'Still exploring your orientation',\n },\n {\n value: 'homoflexible',\n label: 'Homoflexible',\n description: 'Mostly same-gender attracted, occasionally not',\n },\n {\n value: 'heteroflexible',\n label: 'Heteroflexible',\n description: 'Mostly opposite-gender attracted, occasionally not',\n },\n {\n value: 'sapiosexual',\n label: 'Sapiosexual',\n description: 'Attracted primarily to intelligence',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 11,\n key: 'relationshipStructure',\n label: 'Relationship Structure',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n { value: 'monogamy', label: 'Monogamy', description: 'One committed partner' },\n {\n value: 'ethical_non_monogamy',\n label: 'Ethical non-monogamy',\n description: 'Open with honesty and consent',\n },\n {\n value: 'open_relationship',\n label: 'Open relationship',\n description: 'Committed primary partner, open to others',\n },\n { value: 'polyamory', label: 'Polyamory', description: 'Multiple loving relationships' },\n {\n value: 'relationship_anarchy',\n label: 'Relationship Anarchy',\n description: 'No hierarchy — each relationship defined on its own terms',\n },\n {\n value: 'open_to_exploring',\n label: 'Open to exploring',\n description: 'Flexible, willing to discuss',\n },\n {\n value: 'figuring_out',\n label: 'Figuring out my relationship type',\n description: 'Still learning what works for you',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 12,\n key: 'mbtiType',\n label: 'MBTI Personality Type',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n isOnboardingOptional: true,\n options: [\n { value: 'INTJ', label: 'INTJ — The Architect' },\n { value: 'INTP', label: 'INTP — The Logician' },\n { value: 'ENTJ', label: 'ENTJ — The Commander' },\n { value: 'ENTP', label: 'ENTP — The Debater' },\n { value: 'INFJ', label: 'INFJ — The Advocate' },\n { value: 'INFP', label: 'INFP — The Mediator' },\n { value: 'ENFJ', label: 'ENFJ — The Protagonist' },\n { value: 'ENFP', label: 'ENFP — The Campaigner' },\n { value: 'ISTJ', label: 'ISTJ — The Logistician' },\n { value: 'ISFJ', label: 'ISFJ — The Defender' },\n { value: 'ESTJ', label: 'ESTJ — The Executive' },\n { value: 'ESFJ', label: 'ESFJ — The Consul' },\n { value: 'ISTP', label: 'ISTP — The Virtuoso' },\n { value: 'ISFP', label: 'ISFP — The Adventurer' },\n { value: 'ESTP', label: 'ESTP — The Entrepreneur' },\n { value: 'ESFP', label: 'ESFP — The Entertainer' },\n { value: 'dont_know', label: \"Don't know yet\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"01-hero-identity.js","sourceRoot":"","sources":["../../src/profile-fields/01-hero-identity.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const heroIdentity: FieldGroup = {\n key: 'hero_identity',\n label: 'Hero & Identity',\n description: 'Core identity shown in the hero section of your profile.',\n tier: 1,\n fields: [\n {\n order: 1,\n key: 'photos',\n label: 'Photos',\n type: 'image_upload',\n min: 2,\n max: 6,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n description: 'Upload 2-6 photos. Your first photo is your first impression.',\n },\n {\n order: 2,\n key: 'displayName',\n label: 'Display Name',\n type: 'text',\n maxLength: 50,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n prefillFrom: 'user.firstName + user.lastName',\n description: 'Your name as shown to others.',\n },\n {\n order: 3,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.dateOfBirth',\n description: 'Your age is computed from this. Only age is shown, not the date.',\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.gender',\n options: [\n { value: 'man', label: 'Man', description: 'Identify as male' },\n { value: 'woman', label: 'Woman', description: 'Identify as female' },\n {\n value: 'non_binary',\n label: 'Non-binary',\n description: 'Neither exclusively male nor female',\n },\n {\n value: 'trans_man',\n label: 'Trans Man',\n description: 'Assigned female at birth, identify as male',\n },\n {\n value: 'trans_woman',\n label: 'Trans Woman',\n description: 'Assigned male at birth, identify as female',\n },\n {\n value: 'genderfluid',\n label: 'Genderfluid',\n description: 'Gender identity shifts over time',\n },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'agender', label: 'Agender', description: 'No gender identity or gender-neutral' },\n {\n value: 'bigender',\n label: 'Bigender',\n description: 'Identify as two genders simultaneously or alternating',\n },\n {\n value: 'pangender',\n label: 'Pangender',\n description: 'Identify with all genders or many gender identities',\n },\n {\n value: 'androgynous',\n label: 'Androgynous',\n description: 'Blend of masculine and feminine expression',\n },\n {\n value: 'intersex',\n label: 'Intersex',\n description: \"Born with sex characteristics that don't fit typical male/female\",\n },\n {\n value: 'gender_nonconforming',\n label: 'Gender Non-conforming',\n description: \"Expression doesn't align with conventional expectations\",\n },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n {\n value: 'hijra',\n label: 'Hijra',\n description: 'South Asian third-gender identity — legally recognized in India',\n },\n { value: 'other', label: 'Other', description: 'Another identity not listed here' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 5,\n key: 'pronouns',\n label: 'Pronouns',\n type: 'single_select',\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n options: [\n { value: 'he_him', label: 'He/Him', description: 'Masculine pronouns' },\n { value: 'she_her', label: 'She/Her', description: 'Feminine pronouns' },\n { value: 'they_them', label: 'They/Them', description: 'Gender-neutral pronouns' },\n { value: 'he_they', label: 'He/They', description: 'Use either he/him or they/them' },\n { value: 'she_they', label: 'She/They', description: 'Use either she/her or they/them' },\n { value: 'ze_zir', label: 'Ze/Zir', description: 'Neopronouns — ze laughed, I called zir' },\n { value: 'xe_xem', label: 'Xe/Xem', description: 'Neopronouns — xe laughed, I called xem' },\n {\n value: 'any_pronouns',\n label: 'Any Pronouns',\n description: 'Comfortable with all pronouns',\n },\n { value: 'ask_me', label: 'Ask Me', description: 'Prefer to be asked in person' },\n { value: 'other', label: 'Other', description: 'Pronouns not listed here' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 6,\n key: 'currentLocation',\n label: 'Current Location',\n type: 'location',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.currentLocationDisplay',\n description: 'Where you currently live.',\n },\n {\n order: 7,\n key: 'hometown',\n label: 'Hometown / Native Place',\n type: 'text',\n maxLength: 100,\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n prefillFrom: 'user.hometown',\n description: \"Where you're originally from.\",\n },\n {\n order: 8,\n key: 'searchRadius',\n label: 'Search Radius',\n type: 'range_slider',\n min: 1,\n max: 500,\n unit: 'km',\n default: 50,\n tier: 'internal',\n isFilter: true,\n isOnboarding: false,\n description: 'How far to search for matches.',\n },\n {\n order: 9,\n key: 'relationshipIntent',\n label: 'Relationship Intent',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n {\n value: 'life_partner',\n label: 'Life Partner / Marriage',\n description: 'Ready to settle down — looking for a spouse or lifelong commitment',\n },\n {\n value: 'long_term',\n label: 'Long-term Relationship',\n description: 'Serious & committed, but not necessarily leading to marriage',\n },\n {\n value: 'long_term_open_to_short',\n label: 'Long-term, Open to Short',\n description: 'Ideally something serious, but open to seeing where things go',\n },\n {\n value: 'short_term_open_to_long',\n label: 'Short-term, Open to Long',\n description: \"Keeping it light for now, but won't say no if it turns serious\",\n },\n {\n value: 'casual_dating',\n label: 'Casual Dating',\n description: 'Going on dates & having fun — no commitment pressure',\n },\n {\n value: 'companionship',\n label: 'Companionship',\n description: 'Emotional connection & company — without traditional relationship labels',\n },\n {\n value: 'ethical_non_monogamy',\n label: 'ENM / Poly Partner',\n description: 'Looking for additional partner(s) in an ethically non-monogamous setup',\n },\n {\n value: 'activity_partner',\n label: 'Activity Partner',\n description:\n 'Someone to share hobbies & experiences with — hiking, travel, concerts etc.',\n },\n {\n value: 'new_friends',\n label: 'New Friends',\n description: 'Platonic friendships — no romantic expectations',\n },\n {\n value: 'figuring_out',\n label: 'Still Figuring It Out',\n description: 'Not sure yet — just exploring and seeing what clicks',\n },\n ],\n },\n {\n order: 10,\n key: 'sexualOrientation',\n label: 'Sexual Orientation',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n { value: 'straight', label: 'Straight', description: 'Attracted to the opposite gender' },\n { value: 'gay', label: 'Gay', description: 'Men attracted to men' },\n { value: 'lesbian', label: 'Lesbian', description: 'Women attracted to women' },\n { value: 'bisexual', label: 'Bisexual', description: 'Attracted to both men and women' },\n {\n value: 'pansexual',\n label: 'Pansexual',\n description: 'Attracted to people regardless of gender',\n },\n {\n value: 'asexual',\n label: 'Asexual',\n description: 'Little or no sexual attraction to anyone',\n },\n {\n value: 'demisexual',\n label: 'Demisexual',\n description: 'Sexual attraction only after emotional bond',\n },\n {\n value: 'aromantic',\n label: 'Aromantic',\n description: 'Little or no romantic attraction — may still feel sexual attraction',\n },\n {\n value: 'graysexual',\n label: 'Graysexual',\n description: 'Rarely experiences sexual attraction — between asexual and sexual',\n },\n {\n value: 'omnisexual',\n label: 'Omnisexual',\n description: 'Attracted to all genders, but gender plays a role in attraction',\n },\n {\n value: 'fluid',\n label: 'Fluid',\n description: 'Sexual orientation shifts over time or context',\n },\n {\n value: 'queer',\n label: 'Queer',\n description: 'Umbrella term for non-straight identities',\n },\n {\n value: 'questioning',\n label: 'Questioning',\n description: 'Still exploring your orientation',\n },\n {\n value: 'homoflexible',\n label: 'Homoflexible',\n description: 'Mostly same-gender attracted, occasionally not',\n },\n {\n value: 'heteroflexible',\n label: 'Heteroflexible',\n description: 'Mostly opposite-gender attracted, occasionally not',\n },\n {\n value: 'sapiosexual',\n label: 'Sapiosexual',\n description: 'Attracted primarily to intelligence',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 11,\n key: 'relationshipStructure',\n label: 'Relationship Structure',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n { value: 'monogamy', label: 'Monogamy', description: 'One committed partner' },\n {\n value: 'ethical_non_monogamy',\n label: 'Ethical non-monogamy',\n description: 'Open with honesty and consent',\n },\n {\n value: 'open_relationship',\n label: 'Open relationship',\n description: 'Committed primary partner, open to others',\n },\n { value: 'polyamory', label: 'Polyamory', description: 'Multiple loving relationships' },\n {\n value: 'relationship_anarchy',\n label: 'Relationship Anarchy',\n description: 'No hierarchy — each relationship defined on its own terms',\n },\n {\n value: 'open_to_exploring',\n label: 'Open to exploring',\n description: 'Flexible, willing to discuss',\n },\n {\n value: 'figuring_out',\n label: 'Figuring out my relationship type',\n description: 'Still learning what works for you',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n {\n order: 12,\n key: 'mbtiType',\n label: 'MBTI Personality Type',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n isOnboardingOptional: true,\n options: [\n { value: 'INTJ', label: 'INTJ — The Architect' },\n { value: 'INTP', label: 'INTP — The Logician' },\n { value: 'ENTJ', label: 'ENTJ — The Commander' },\n { value: 'ENTP', label: 'ENTP — The Debater' },\n { value: 'INFJ', label: 'INFJ — The Advocate' },\n { value: 'INFP', label: 'INFP — The Mediator' },\n { value: 'ENFJ', label: 'ENFJ — The Protagonist' },\n { value: 'ENFP', label: 'ENFP — The Campaigner' },\n { value: 'ISTJ', label: 'ISTJ — The Logistician' },\n { value: 'ISFJ', label: 'ISFJ — The Defender' },\n { value: 'ESTJ', label: 'ESTJ — The Executive' },\n { value: 'ESFJ', label: 'ESFJ — The Consul' },\n { value: 'ISTP', label: 'ISTP — The Virtuoso' },\n { value: 'ISFP', label: 'ISFP — The Adventurer' },\n { value: 'ESTP', label: 'ESTP — The Entrepreneur' },\n { value: 'ESFP', label: 'ESFP — The Entertainer' },\n { value: 'dont_know', label: \"Don't know yet\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── Orphan fields (exist in Mongoose model, now registered in schema) ──\n {\n order: 13,\n key: 'phoneNumber',\n label: 'Phone Number',\n type: 'text',\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n description: 'Primary contact number with country code',\n sensitive: true,\n },\n {\n order: 14,\n key: 'phoneVisible',\n label: 'Phone Visible to Matches',\n type: 'single_select',\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n options: [\n { value: 'true', label: 'Yes' },\n { value: 'false', label: 'No' },\n ],\n },\n {\n order: 15,\n key: 'guardianContact',\n label: 'Guardian / Family Contact',\n type: 'object_array',\n itemShape: { phoneNumber: 'string', relation: 'string', visible: 'boolean' },\n tier: 2,\n isFilter: false,\n isOnboarding: true,\n isOnboardingOptional: true,\n description: 'Family member contact for interested matches',\n },\n {\n order: 16,\n key: 'currentAddress',\n label: 'Current Address',\n type: 'location',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Your current residential address',\n },\n {\n order: 17,\n key: 'hometownAddress',\n label: 'Hometown Address',\n type: 'location',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Your hometown / native place address',\n },\n {\n order: 18,\n key: 'hometownState',\n label: 'Hometown State',\n type: 'text',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n },\n ],\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"02-story-prompts.d.ts","sourceRoot":"","sources":["../../src/profile-fields/02-story-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"02-story-prompts.d.ts","sourceRoot":"","sources":["../../src/profile-fields/02-story-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAqL1B,CAAC"}
|
|
@@ -166,6 +166,18 @@ export const storyPrompts = {
|
|
|
166
166
|
{ value: 'nerdy', label: 'Nerdy' },
|
|
167
167
|
],
|
|
168
168
|
},
|
|
169
|
+
{
|
|
170
|
+
order: 20,
|
|
171
|
+
key: 'myStory',
|
|
172
|
+
label: 'My Story',
|
|
173
|
+
type: 'textarea',
|
|
174
|
+
maxLength: 2000,
|
|
175
|
+
tier: 1,
|
|
176
|
+
isFilter: false,
|
|
177
|
+
isOnboarding: true,
|
|
178
|
+
isOnboardingOptional: true,
|
|
179
|
+
description: 'Your journey, personality, what shaped you — help people truly know you',
|
|
180
|
+
},
|
|
169
181
|
],
|
|
170
182
|
};
|
|
171
183
|
//# sourceMappingURL=02-story-prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"02-story-prompts.js","sourceRoot":"","sources":["../../src/profile-fields/02-story-prompts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const storyPrompts: FieldGroup = {\n key: 'story_prompts',\n label: 'Story & Prompts',\n tier: 1,\n fields: [\n {\n order: 13,\n key: 'bio',\n label: 'Bio / My Story',\n type: 'textarea',\n maxLength: 500,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n description: 'Tell people about yourself in your own words.',\n },\n {\n order: 14,\n key: 'prompts',\n label: 'Story Prompts',\n type: 'prompt_array',\n min: 1,\n max: 3,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n maxAnswerLength: 250,\n promptPool: [\n \"I'm looking for someone who...\",\n 'A life goal of mine...',\n 'My simple pleasures...',\n 'I geek out on...',\n 'The way to win me over is...',\n 'My most controversial opinion is...',\n \"I'll know it's time for a second date when...\",\n 'A fun fact about me...',\n 'My ideal Sunday looks like...',\n 'The key to my heart is...',\n \"I'm weirdly attracted to...\",\n 'Two truths and a lie...',\n \"The most spontaneous thing I've done...\",\n \"I bet you can't guess that I...\",\n 'My comfort food is...',\n 'I recently discovered that...',\n \"Something that's non-negotiable for me...\",\n \"Biggest risk I've taken...\",\n 'Change my mind about...',\n 'Together, we could...',\n ],\n },\n {\n order: 15,\n key: 'voicePrompt',\n label: 'Voice Prompt',\n type: 'audio_upload',\n maxDurationSeconds: 30,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Record a voice note to let people hear your voice.',\n },\n {\n order: 16,\n key: 'bornTo',\n label: 'You are born to...?',\n type: 'text',\n maxLength: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'What do you feel you were meant to do?',\n },\n {\n order: 17,\n key: 'senseOfSelf',\n label: 'What is your sense of self?',\n type: 'text',\n maxLength: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n },\n {\n order: 18,\n key: 'selfKeywords',\n label: 'What you think about yourself',\n type: 'keyword_select',\n maxSelect: 5,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Pick 5 words that describe you.',\n options: [\n { value: 'creative', label: 'Creative' },\n { value: 'loyal', label: 'Loyal' },\n { value: 'ambitious', label: 'Ambitious' },\n { value: 'empathetic', label: 'Empathetic' },\n { value: 'funny', label: 'Funny' },\n { value: 'adventurous', label: 'Adventurous' },\n { value: 'introverted', label: 'Introverted' },\n { value: 'extroverted', label: 'Extroverted' },\n { value: 'thoughtful', label: 'Thoughtful' },\n { value: 'independent', label: 'Independent' },\n { value: 'caring', label: 'Caring' },\n { value: 'curious', label: 'Curious' },\n { value: 'passionate', label: 'Passionate' },\n { value: 'resilient', label: 'Resilient' },\n { value: 'honest', label: 'Honest' },\n { value: 'spontaneous', label: 'Spontaneous' },\n { value: 'reliable', label: 'Reliable' },\n { value: 'overthinking', label: 'Overthinker' },\n { value: 'stubborn', label: 'Stubborn' },\n { value: 'emotional', label: 'Emotional' },\n { value: 'logical', label: 'Logical' },\n { value: 'spiritual', label: 'Spiritual' },\n { value: 'grounded', label: 'Grounded' },\n { value: 'dreamer', label: 'Dreamer' },\n { value: 'perfectionist', label: 'Perfectionist' },\n { value: 'easygoing', label: 'Easy-going' },\n { value: 'intense', label: 'Intense' },\n { value: 'optimistic', label: 'Optimistic' },\n { value: 'realistic', label: 'Realistic' },\n { value: 'nerdy', label: 'Nerdy' },\n ],\n },\n {\n order: 19,\n key: 'othersKeywords',\n label: 'What others think of you',\n type: 'keyword_select',\n maxSelect: 5,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Pick 5 words that others would use to describe you.',\n options: [\n { value: 'creative', label: 'Creative' },\n { value: 'loyal', label: 'Loyal' },\n { value: 'ambitious', label: 'Ambitious' },\n { value: 'empathetic', label: 'Empathetic' },\n { value: 'funny', label: 'Funny' },\n { value: 'adventurous', label: 'Adventurous' },\n { value: 'introverted', label: 'Introverted' },\n { value: 'extroverted', label: 'Extroverted' },\n { value: 'thoughtful', label: 'Thoughtful' },\n { value: 'independent', label: 'Independent' },\n { value: 'caring', label: 'Caring' },\n { value: 'curious', label: 'Curious' },\n { value: 'passionate', label: 'Passionate' },\n { value: 'resilient', label: 'Resilient' },\n { value: 'honest', label: 'Honest' },\n { value: 'spontaneous', label: 'Spontaneous' },\n { value: 'reliable', label: 'Reliable' },\n { value: 'overthinking', label: 'Overthinker' },\n { value: 'stubborn', label: 'Stubborn' },\n { value: 'emotional', label: 'Emotional' },\n { value: 'logical', label: 'Logical' },\n { value: 'spiritual', label: 'Spiritual' },\n { value: 'grounded', label: 'Grounded' },\n { value: 'dreamer', label: 'Dreamer' },\n { value: 'perfectionist', label: 'Perfectionist' },\n { value: 'easygoing', label: 'Easy-going' },\n { value: 'intense', label: 'Intense' },\n { value: 'optimistic', label: 'Optimistic' },\n { value: 'realistic', label: 'Realistic' },\n { value: 'nerdy', label: 'Nerdy' },\n ],\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"02-story-prompts.js","sourceRoot":"","sources":["../../src/profile-fields/02-story-prompts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const storyPrompts: FieldGroup = {\n key: 'story_prompts',\n label: 'Story & Prompts',\n tier: 1,\n fields: [\n {\n order: 13,\n key: 'bio',\n label: 'Bio / My Story',\n type: 'textarea',\n maxLength: 500,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n description: 'Tell people about yourself in your own words.',\n },\n {\n order: 14,\n key: 'prompts',\n label: 'Story Prompts',\n type: 'prompt_array',\n min: 1,\n max: 3,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n maxAnswerLength: 250,\n promptPool: [\n \"I'm looking for someone who...\",\n 'A life goal of mine...',\n 'My simple pleasures...',\n 'I geek out on...',\n 'The way to win me over is...',\n 'My most controversial opinion is...',\n \"I'll know it's time for a second date when...\",\n 'A fun fact about me...',\n 'My ideal Sunday looks like...',\n 'The key to my heart is...',\n \"I'm weirdly attracted to...\",\n 'Two truths and a lie...',\n \"The most spontaneous thing I've done...\",\n \"I bet you can't guess that I...\",\n 'My comfort food is...',\n 'I recently discovered that...',\n \"Something that's non-negotiable for me...\",\n \"Biggest risk I've taken...\",\n 'Change my mind about...',\n 'Together, we could...',\n ],\n },\n {\n order: 15,\n key: 'voicePrompt',\n label: 'Voice Prompt',\n type: 'audio_upload',\n maxDurationSeconds: 30,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Record a voice note to let people hear your voice.',\n },\n {\n order: 16,\n key: 'bornTo',\n label: 'You are born to...?',\n type: 'text',\n maxLength: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'What do you feel you were meant to do?',\n },\n {\n order: 17,\n key: 'senseOfSelf',\n label: 'What is your sense of self?',\n type: 'text',\n maxLength: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n },\n {\n order: 18,\n key: 'selfKeywords',\n label: 'What you think about yourself',\n type: 'keyword_select',\n maxSelect: 5,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Pick 5 words that describe you.',\n options: [\n { value: 'creative', label: 'Creative' },\n { value: 'loyal', label: 'Loyal' },\n { value: 'ambitious', label: 'Ambitious' },\n { value: 'empathetic', label: 'Empathetic' },\n { value: 'funny', label: 'Funny' },\n { value: 'adventurous', label: 'Adventurous' },\n { value: 'introverted', label: 'Introverted' },\n { value: 'extroverted', label: 'Extroverted' },\n { value: 'thoughtful', label: 'Thoughtful' },\n { value: 'independent', label: 'Independent' },\n { value: 'caring', label: 'Caring' },\n { value: 'curious', label: 'Curious' },\n { value: 'passionate', label: 'Passionate' },\n { value: 'resilient', label: 'Resilient' },\n { value: 'honest', label: 'Honest' },\n { value: 'spontaneous', label: 'Spontaneous' },\n { value: 'reliable', label: 'Reliable' },\n { value: 'overthinking', label: 'Overthinker' },\n { value: 'stubborn', label: 'Stubborn' },\n { value: 'emotional', label: 'Emotional' },\n { value: 'logical', label: 'Logical' },\n { value: 'spiritual', label: 'Spiritual' },\n { value: 'grounded', label: 'Grounded' },\n { value: 'dreamer', label: 'Dreamer' },\n { value: 'perfectionist', label: 'Perfectionist' },\n { value: 'easygoing', label: 'Easy-going' },\n { value: 'intense', label: 'Intense' },\n { value: 'optimistic', label: 'Optimistic' },\n { value: 'realistic', label: 'Realistic' },\n { value: 'nerdy', label: 'Nerdy' },\n ],\n },\n {\n order: 19,\n key: 'othersKeywords',\n label: 'What others think of you',\n type: 'keyword_select',\n maxSelect: 5,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Pick 5 words that others would use to describe you.',\n options: [\n { value: 'creative', label: 'Creative' },\n { value: 'loyal', label: 'Loyal' },\n { value: 'ambitious', label: 'Ambitious' },\n { value: 'empathetic', label: 'Empathetic' },\n { value: 'funny', label: 'Funny' },\n { value: 'adventurous', label: 'Adventurous' },\n { value: 'introverted', label: 'Introverted' },\n { value: 'extroverted', label: 'Extroverted' },\n { value: 'thoughtful', label: 'Thoughtful' },\n { value: 'independent', label: 'Independent' },\n { value: 'caring', label: 'Caring' },\n { value: 'curious', label: 'Curious' },\n { value: 'passionate', label: 'Passionate' },\n { value: 'resilient', label: 'Resilient' },\n { value: 'honest', label: 'Honest' },\n { value: 'spontaneous', label: 'Spontaneous' },\n { value: 'reliable', label: 'Reliable' },\n { value: 'overthinking', label: 'Overthinker' },\n { value: 'stubborn', label: 'Stubborn' },\n { value: 'emotional', label: 'Emotional' },\n { value: 'logical', label: 'Logical' },\n { value: 'spiritual', label: 'Spiritual' },\n { value: 'grounded', label: 'Grounded' },\n { value: 'dreamer', label: 'Dreamer' },\n { value: 'perfectionist', label: 'Perfectionist' },\n { value: 'easygoing', label: 'Easy-going' },\n { value: 'intense', label: 'Intense' },\n { value: 'optimistic', label: 'Optimistic' },\n { value: 'realistic', label: 'Realistic' },\n { value: 'nerdy', label: 'Nerdy' },\n ],\n },\n {\n order: 20,\n key: 'myStory',\n label: 'My Story',\n type: 'textarea',\n maxLength: 2000,\n tier: 1,\n isFilter: false,\n isOnboarding: true,\n isOnboardingOptional: true,\n description: 'Your journey, personality, what shaped you — help people truly know you',\n },\n ],\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"03-basics.d.ts","sourceRoot":"","sources":["../../src/profile-fields/03-basics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuG7C,eAAO,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"03-basics.d.ts","sourceRoot":"","sources":["../../src/profile-fields/03-basics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuG7C,eAAO,MAAM,MAAM,EAAE,UAwsBpB,CAAC"}
|