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.
Files changed (56) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/plan-features-data.d.ts +2 -0
  6. package/dist/plan-features-data.d.ts.map +1 -1
  7. package/dist/plan-features-data.js +44 -52
  8. package/dist/plan-features-data.js.map +1 -1
  9. package/dist/plan-limits.d.ts +9 -7
  10. package/dist/plan-limits.d.ts.map +1 -1
  11. package/dist/plan-limits.js +43 -74
  12. package/dist/plan-limits.js.map +1 -1
  13. package/dist/profile-fields/01-hero-identity.d.ts.map +1 -1
  14. package/dist/profile-fields/01-hero-identity.js +66 -0
  15. package/dist/profile-fields/01-hero-identity.js.map +1 -1
  16. package/dist/profile-fields/02-story-prompts.d.ts.map +1 -1
  17. package/dist/profile-fields/02-story-prompts.js +12 -0
  18. package/dist/profile-fields/02-story-prompts.js.map +1 -1
  19. package/dist/profile-fields/03-basics.d.ts.map +1 -1
  20. package/dist/profile-fields/03-basics.js +13 -112
  21. package/dist/profile-fields/03-basics.js.map +1 -1
  22. package/dist/profile-fields/04-looking-for.d.ts.map +1 -1
  23. package/dist/profile-fields/04-looking-for.js +15 -0
  24. package/dist/profile-fields/04-looking-for.js.map +1 -1
  25. package/dist/profile-fields/05-personality.d.ts.map +1 -1
  26. package/dist/profile-fields/05-personality.js +66 -0
  27. package/dist/profile-fields/05-personality.js.map +1 -1
  28. package/dist/profile-fields/13-relationship-intimacy.d.ts.map +1 -1
  29. package/dist/profile-fields/13-relationship-intimacy.js +57 -0
  30. package/dist/profile-fields/13-relationship-intimacy.js.map +1 -1
  31. package/dist/profile-fields/14-family-home.d.ts.map +1 -1
  32. package/dist/profile-fields/14-family-home.js +97 -0
  33. package/dist/profile-fields/14-family-home.js.map +1 -1
  34. package/dist/profile-fields/15-finance-legal.d.ts.map +1 -1
  35. package/dist/profile-fields/15-finance-legal.js +39 -0
  36. package/dist/profile-fields/15-finance-legal.js.map +1 -1
  37. package/dist/profile-fields/17-religion-community.d.ts +3 -0
  38. package/dist/profile-fields/17-religion-community.d.ts.map +1 -0
  39. package/dist/profile-fields/17-religion-community.js +687 -0
  40. package/dist/profile-fields/17-religion-community.js.map +1 -0
  41. package/dist/profile-fields/index.d.ts +1 -0
  42. package/dist/profile-fields/index.d.ts.map +1 -1
  43. package/dist/profile-fields/index.js +3 -0
  44. package/dist/profile-fields/index.js.map +1 -1
  45. package/dist/profile-fields/types.d.ts +6 -0
  46. package/dist/profile-fields/types.d.ts.map +1 -1
  47. package/dist/profile-fields/types.js.map +1 -1
  48. package/dist/profile.d.ts +74 -28
  49. package/dist/profile.d.ts.map +1 -1
  50. package/dist/profile.js +24 -0
  51. package/dist/profile.js.map +1 -1
  52. package/dist/subscription.d.ts +2 -3
  53. package/dist/subscription.d.ts.map +1 -1
  54. package/dist/subscription.js +1 -1
  55. package/dist/subscription.js.map +1 -1
  56. package/package.json +1 -1
@@ -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
- // ── Spark (Free) — Generous enough to hook, limited enough to upgrade ──
19
- spark: {
20
- dailyLikes: 50,
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
- // ── GoldRemoves all friction, more generous than Tinder Plus ──
52
- gold: {
53
- dailyLikes: 150, // generous but not unlimited
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: 'full',
99
- whoLikedYou: 'full',
100
- exploreAccess: 'premium',
67
+ filterLevel: 'advanced',
68
+ whoLikedYou: 'blurred',
69
+ exploreAccess: 'basic', // NO premium explore — key decoy differentiator
101
70
  scoreBreakdown: 'score',
102
- readReceipts: true,
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: true,
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
- // ── Platinum — The aspirational tier, everything unlocked ──
118
- platinum: {
119
- dailyLikes: Infinity,
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, // unlimited for Black
122
+ dailyCompliments: Infinity,
154
123
  dailyRewinds: Infinity,
155
124
  dailyProfileVisits: Infinity,
156
125
  monthlyNewChatThreads: Infinity,
157
- monthlyBoosts: 10, // 2x Platinum
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 = ['spark', 'gold', 'diamond', 'platinum', 'black'];
187
- /** Paid plans (Gold and above). */
188
- export const PAID_PLANS = ['gold', 'diamond', 'platinum', 'black'];
189
- /** Premium plans (Diamond and above). */
190
- export const PREMIUM_PLANS = ['diamond', 'platinum', 'black'];
191
- /** Top-tier plans (Platinum and Black). */
192
- export const TOP_PLANS = ['platinum', 'black'];
193
- /** Check if a plan is paid (not Spark). */
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 !== 'spark';
164
+ return planId !== 'lite';
196
165
  }
197
- /** Premium explore categories that require Gold+ to access. */
166
+ /** Premium explore categories that require Premium+ to access. */
198
167
  export const PREMIUM_EXPLORE_CATEGORIES = [
199
168
  'high-iq',
200
169
  'elite-institute',
@@ -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,UAqZ1B,CAAC"}
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,UAyK1B,CAAC"}
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,UA+yBpB,CAAC"}
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"}