dating-schema 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plan-features-data.d.ts +2 -0
- package/dist/plan-features-data.d.ts.map +1 -1
- package/dist/plan-features-data.js +66 -57
- package/dist/plan-features-data.js.map +1 -1
- package/dist/plan-limits.d.ts +9 -7
- package/dist/plan-limits.d.ts.map +1 -1
- package/dist/plan-limits.js +43 -74
- package/dist/plan-limits.js.map +1 -1
- package/dist/profile-fields/03-basics.d.ts.map +1 -1
- package/dist/profile-fields/03-basics.js +10 -1
- package/dist/profile-fields/03-basics.js.map +1 -1
- package/dist/profile-fields/04-looking-for.js +1 -1
- package/dist/profile-fields/04-looking-for.js.map +1 -1
- package/dist/profile-fields/05-personality.d.ts.map +1 -1
- package/dist/profile-fields/05-personality.js +65 -5
- package/dist/profile-fields/05-personality.js.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.d.ts.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.js +42 -12
- package/dist/profile-fields/13-relationship-intimacy.js.map +1 -1
- package/dist/profile-fields/14-family-home.d.ts.map +1 -1
- package/dist/profile-fields/14-family-home.js +88 -14
- package/dist/profile-fields/14-family-home.js.map +1 -1
- package/dist/profile-fields/15-finance-legal.d.ts.map +1 -1
- package/dist/profile-fields/15-finance-legal.js +33 -6
- package/dist/profile-fields/15-finance-legal.js.map +1 -1
- package/dist/profile-fields/17-religion-community.d.ts.map +1 -1
- package/dist/profile-fields/17-religion-community.js +66 -14
- package/dist/profile-fields/17-religion-community.js.map +1 -1
- package/dist/subscription.d.ts +2 -3
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +1 -1
- package/dist/subscription.js.map +1 -1
- package/package.json +1 -1
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":"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"}
|
|
@@ -779,7 +779,16 @@ export const basics = {
|
|
|
779
779
|
],
|
|
780
780
|
},
|
|
781
781
|
// ── Orphan fields ──
|
|
782
|
-
{
|
|
782
|
+
{
|
|
783
|
+
order: 44,
|
|
784
|
+
key: 'nativePlace',
|
|
785
|
+
label: 'Native Place',
|
|
786
|
+
type: 'text',
|
|
787
|
+
tier: 1,
|
|
788
|
+
isFilter: false,
|
|
789
|
+
isOnboarding: false,
|
|
790
|
+
description: 'Your native / ancestral village or town',
|
|
791
|
+
},
|
|
783
792
|
],
|
|
784
793
|
};
|
|
785
794
|
//# sourceMappingURL=03-basics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"03-basics.js","sourceRoot":"","sources":["../../src/profile-fields/03-basics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nconst religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n {\n value: 'muslim_sufi',\n label: 'Muslim (Sufi)',\n description: 'Mystical Islamic tradition emphasizing inner spirituality',\n },\n {\n value: 'muslim_other',\n label: 'Muslim (Other)',\n description: 'Ahmadiyya or other Islamic traditions',\n },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other Christian traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith — Ahura Mazda',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice without organized religion',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n {\n value: 'agnostic',\n label: 'Agnostic',\n description: 'Uncertain about the existence of a higher power',\n },\n {\n value: 'no_religion',\n label: 'No Religion',\n description: 'Simply non-religious — no spiritual or atheist identity',\n },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background or no single affiliation',\n },\n { value: 'other', label: 'Other (specify)', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nconst motherTongueOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर / كٲشُر)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const basics: FieldGroup = {\n key: 'basics',\n label: 'Basics & Deal-Breakers',\n tier: 1,\n fields: [\n // ── 20. Height ──────────────────────────────────────────────\n {\n order: 20,\n key: 'height',\n label: 'Height',\n type: 'number',\n unit: 'cm',\n min: 100,\n max: 220,\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n },\n\n // ── 21. Weight ──────────────────────────────────────────────\n {\n order: 21,\n key: 'weight',\n label: 'Weight',\n type: 'number',\n unit: 'kg',\n min: 30,\n max: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n optional: true,\n },\n\n // ── 22. BMI (computed) ──────────────────────────────────────\n {\n order: 22,\n key: 'bmi',\n label: 'BMI',\n type: 'computed',\n computedFrom: ['height', 'weight'],\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Auto-calculated from height and weight.',\n },\n\n // ── 23. Body Build ──────────────────────────────────────────\n {\n order: 23,\n key: 'bodyBuild',\n label: 'Body Build',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'slim', label: 'Slim', description: 'Lean and slender frame' },\n { value: 'lean', label: 'Lean', description: 'Low body fat, toned but not bulky' },\n { value: 'athletic', label: 'Athletic', description: 'Muscular or sports-fit' },\n { value: 'average', label: 'Average', description: 'Moderate, proportional build' },\n { value: 'curvy', label: 'Curvy', description: 'Fuller or hourglass figure' },\n { value: 'stocky', label: 'Stocky', description: 'Broad and solidly built' },\n { value: 'heavy', label: 'Heavy / Plus-size', description: 'Larger body type' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 23a. Complexion ───────────────────────────────────────\n {\n order: 23.5,\n key: 'complexion',\n label: 'Complexion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'very_fair', label: 'Very Fair', description: 'Very light skin tone' },\n { value: 'fair', label: 'Fair', description: 'Light skin tone' },\n { value: 'wheatish', label: 'Wheatish', description: 'Light brown, wheat-like tone' },\n { value: 'wheatish_medium', label: 'Wheatish Medium', description: 'Medium brown tone' },\n { value: 'olive', label: 'Olive', description: 'Warm yellowish-green undertone' },\n { value: 'medium', label: 'Medium / Brown', description: 'Medium to brown skin tone' },\n { value: 'dark', label: 'Dark', description: 'Dark brown skin tone' },\n { value: 'very_dark', label: 'Very Dark', description: 'Deep dark skin tone' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 24. Family Religion ─────────────────────────────────────\n {\n order: 24,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...religionOptions],\n },\n\n // ── 25. Personal Religion ───────────────────────────────────\n {\n order: 25,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...religionOptions],\n },\n\n // Fields 26-30 (religionPracticeLevel, religionPartnerPreference, caste, culturalImportance,\n // manglikStatus) moved to 17-religion-community.ts — religion-conditional fields.\n\n // ── 31. Mother Tongue ───────────────────────────────────────\n {\n order: 31,\n key: 'motherTongue',\n label: 'Mother Tongue',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...motherTongueOptions],\n },\n\n // ── 32. Languages Spoken ────────────────────────────────────\n {\n order: 32,\n key: 'languagesSpoken',\n label: 'Languages Spoken',\n type: 'multi_select',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n options: [\n ...motherTongueOptions,\n { value: 'spanish', label: 'Spanish' },\n { value: 'french', label: 'French' },\n { value: 'german', label: 'German' },\n { value: 'mandarin', label: 'Mandarin' },\n { value: 'japanese', label: 'Japanese' },\n { value: 'korean', label: 'Korean' },\n { value: 'arabic', label: 'Arabic' },\n { value: 'portuguese', label: 'Portuguese' },\n { value: 'russian', label: 'Russian' },\n { value: 'italian', label: 'Italian' },\n ],\n },\n\n // ── 33. Education Level ─────────────────────────────────────\n {\n order: 33,\n key: 'educationLevel',\n label: 'Education Level',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n {\n value: 'below_10th',\n label: 'Below 10th',\n description: 'Did not complete secondary school',\n },\n {\n value: 'high_school',\n label: 'High School (10th / 12th)',\n description: '10th or 12th pass or equivalent',\n },\n {\n value: 'iti_vocational',\n label: 'ITI / Vocational Training',\n description: 'Industrial Training Institute or vocational course',\n },\n {\n value: 'diploma',\n label: 'Diploma / Polytechnic',\n description: 'Polytechnic diploma or trade school',\n },\n {\n value: 'associate',\n label: 'Associate Degree',\n description: '2-year degree or polytechnic graduate',\n },\n {\n value: 'in_college',\n label: 'Currently in College',\n description: 'Pursuing undergraduate studies',\n },\n {\n value: 'bachelors',\n label: \"Bachelor's Degree\",\n description: 'B.Tech, BA, B.Com, BBA, B.Sc, etc.',\n },\n {\n value: 'in_grad_school',\n label: 'Currently in Grad School',\n description: 'Pursuing postgraduate studies',\n },\n { value: 'masters', label: \"Master's Degree\", description: 'M.Tech, MA, MBA, M.Sc, etc.' },\n { value: 'doctorate', label: 'Doctorate / PhD', description: 'Doctoral research degree' },\n {\n value: 'professional',\n label: 'Professional Degree',\n description: 'CA, MBBS, LLB, CS, ICWA, etc.',\n },\n {\n value: 'self_taught',\n label: 'Self-taught',\n description: 'Self-educated or learned through online courses',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 34. Institution Tier ────────────────────────────────────\n {\n order: 34,\n key: 'institutionTier',\n label: 'Institution Tier',\n type: 'single_select',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n options: [\n {\n value: 'tier1_elite',\n label: 'Tier-1 / Elite',\n description: 'IIT, IIM, top 100 global universities',\n },\n { value: 'tier2_reputed', label: 'Tier-2 / Nationally reputed' },\n { value: 'tier3_regional', label: 'Tier-3 / Regional' },\n { value: 'open_distance', label: 'Open / Distance' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 35. Profession ──────────────────────────────────────────\n {\n order: 35,\n key: 'profession',\n label: 'Profession / Occupation',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n description: 'What is your current profession or occupation?',\n options: [\n // Technology\n {\n value: 'it_software',\n label: 'IT & Software',\n description: 'Developer, data scientist, IT support, DevOps, etc.',\n },\n {\n value: 'engineering',\n label: 'Engineering',\n description: 'Civil, mechanical, electrical, chemical, etc.',\n },\n // Healthcare & Medicine\n {\n value: 'healthcare_doctor',\n label: 'Doctor / Physician',\n description: 'MBBS, MD, surgeon, dentist, etc.',\n },\n {\n value: 'healthcare_nursing',\n label: 'Nursing & Allied Health',\n description: 'Nurse, physiotherapist, lab tech, etc.',\n },\n {\n value: 'healthcare_pharma',\n label: 'Pharma & Biotech',\n description: 'Pharmaceutical, biotech, clinical research',\n },\n {\n value: 'psychology_therapy',\n label: 'Psychology & Therapy',\n description: 'Psychologist, counsellor, therapist',\n },\n // Education & Research\n {\n value: 'education_teaching',\n label: 'Teaching & Training',\n description: 'School teacher, professor, corporate trainer',\n },\n {\n value: 'science_research',\n label: 'Science & Research',\n description: 'Scientist, lab researcher, academic scholar',\n },\n // Finance & Business\n {\n value: 'finance_banking',\n label: 'Finance & Banking',\n description: 'Banking, investment, stock market, insurance',\n },\n {\n value: 'chartered_accountant',\n label: 'Chartered Accountant (CA)',\n description: 'CA, CS, CMA, auditor',\n },\n {\n value: 'business_management',\n label: 'Business & Management',\n description: 'Operations, consulting, HR, MBA roles',\n },\n // Creative & Media\n {\n value: 'arts_entertainment',\n label: 'Arts & Entertainment',\n description: 'Music, film, dance, fine arts, theatre',\n },\n {\n value: 'media_communication',\n label: 'Media & Communication',\n description: 'Journalism, PR, advertising, content',\n },\n {\n value: 'design_creative',\n label: 'Design & Creative',\n description: 'Graphic design, UI/UX, fashion design, architecture',\n },\n // Government & Public Service\n {\n value: 'civil_services',\n label: 'Civil Services (IAS/IPS/IFS)',\n description: 'Government officer cadre — IAS, IPS, IRS, IFS',\n },\n {\n value: 'government_public',\n label: 'Government / Public Sector',\n description: 'PSU, state govt, municipal, railway, postal',\n },\n {\n value: 'defence_military',\n label: 'Defence / Military',\n description: 'Army, Navy, Air Force, paramilitary, coast guard',\n },\n {\n value: 'police_law_enforcement',\n label: 'Police & Law Enforcement',\n description: 'Police, CBI, NIA, customs, excise',\n },\n // Legal\n {\n value: 'legal',\n label: 'Legal & Law',\n description: 'Lawyer, advocate, judge, legal advisor, notary',\n },\n // Trades & Services\n {\n value: 'skilled_trades',\n label: 'Skilled Trades',\n description: 'Electrician, plumber, carpenter, welder, mechanic',\n },\n {\n value: 'transport_logistics',\n label: 'Transport & Logistics',\n description: 'Driver, delivery, warehouse, supply chain',\n },\n {\n value: 'hospitality_travel',\n label: 'Hospitality & Tourism',\n description: 'Hotels, restaurants, airlines, travel agency',\n },\n {\n value: 'beauty_wellness',\n label: 'Beauty & Wellness',\n description: 'Salon, spa, fitness trainer, yoga instructor',\n },\n // Agriculture & Rural\n {\n value: 'agriculture_farming',\n label: 'Agriculture & Farming',\n description: 'Farming, agri-business, dairy, fisheries',\n },\n // Real Estate & Construction\n {\n value: 'real_estate',\n label: 'Real Estate & Construction',\n description: 'Property, builder, interior design, architecture',\n },\n // Retail & Commerce\n {\n value: 'retail_ecommerce',\n label: 'Retail & E-commerce',\n description: 'Shops, online stores, wholesale, distribution',\n },\n {\n value: 'manufacturing',\n label: 'Manufacturing & Production',\n description: 'Factory, production, quality control, industrial',\n },\n // Maritime\n {\n value: 'merchant_navy',\n label: 'Merchant Navy',\n description: 'Commercial shipping, maritime, offshore',\n },\n // Social & NGO\n {\n value: 'ngo_social_work',\n label: 'NGO & Social Work',\n description: 'Non-profit, social worker, community development',\n },\n {\n value: 'religious_spiritual',\n label: 'Religious / Spiritual Work',\n description: 'Priest, pujari, maulvi, pastor, monk, spiritual guide',\n },\n // Independent\n {\n value: 'freelancer_gig',\n label: 'Freelancer / Gig Worker',\n description: 'Independent contractor, gig economy, Uber/Ola driver',\n },\n {\n value: 'content_creator',\n label: 'Content Creator / Influencer',\n description: 'YouTuber, blogger, podcaster, Instagram creator',\n },\n {\n value: 'self_employed',\n label: 'Self-employed / Entrepreneur',\n description: 'Own business, startup founder, shop owner',\n },\n // Non-working\n { value: 'student', label: 'Student', description: 'Currently pursuing education' },\n { value: 'homemaker', label: 'Homemaker', description: 'Managing the household full-time' },\n { value: 'retired', label: 'Retired', description: 'No longer working professionally' },\n {\n value: 'not_working',\n label: 'Not Currently Working',\n description: 'Between jobs, career break, or job seeking',\n },\n {\n value: 'differently_abled_pension',\n label: 'On Disability / Pension',\n description: 'Receiving disability benefits or pension',\n },\n { value: 'other', label: 'Other', description: 'Something not listed above' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 36. Relationship Status ─────────────────────────────────\n {\n order: 36,\n key: 'relationshipStatus',\n label: 'Relationship Status',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n {\n value: 'never_married',\n label: 'Never Married',\n description: 'Have not been married before',\n },\n {\n value: 'dating',\n label: 'Dating / Seeing Someone',\n description: 'Currently in a non-exclusive relationship',\n },\n { value: 'married', label: 'Married', description: 'Currently legally married' },\n {\n value: 'separated',\n label: 'Separated',\n description: 'Living apart from spouse, not yet divorced',\n },\n {\n value: 'awaiting_divorce',\n label: 'Awaiting Divorce',\n description: 'Divorce proceedings in progress',\n },\n { value: 'divorced', label: 'Divorced', description: 'Legally divorced' },\n { value: 'widowed', label: 'Widowed', description: 'Spouse has passed away' },\n {\n value: 'enm',\n label: 'Open Relationship / ENM',\n description: 'In an ethically non-monogamous arrangement',\n },\n {\n value: 'its_complicated',\n label: \"It's Complicated\",\n description: \"Situation doesn't fit neatly into a label\",\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer Not to Say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 37. Diet ────────────────────────────────────────────────\n {\n order: 37,\n key: 'diet',\n label: 'Diet',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'vegetarian', label: 'Vegetarian', description: 'No meat, fish, or eggs' },\n {\n value: 'vegan',\n label: 'Vegan',\n description: 'No animal products at all — including dairy & honey',\n },\n { value: 'eggetarian', label: 'Eggetarian', description: 'Vegetarian but eat eggs' },\n {\n value: 'non_vegetarian',\n label: 'Non-Vegetarian',\n description: 'Eat everything including meat & fish',\n },\n {\n value: 'pescatarian',\n label: 'Pescatarian',\n description: 'No meat, but eat fish & seafood',\n },\n {\n value: 'occasionally_non_veg',\n label: 'Occasionally Non-Veg',\n description: 'Mostly veg, meat on occasion',\n },\n {\n value: 'flexitarian',\n label: 'Flexitarian',\n description: 'Primarily plant-based, flexible about it',\n },\n {\n value: 'jain',\n label: 'Jain',\n description: 'No root vegetables, strict Jain dietary rules',\n },\n {\n value: 'sattvic',\n label: 'Sattvic',\n description: 'Pure vegetarian — no onion, garlic, or stimulants (yogic diet)',\n },\n {\n value: 'no_onion_no_garlic',\n label: 'No Onion / No Garlic',\n description: 'Vegetarian without onion & garlic — common in Jain & some Hindu households',\n },\n { value: 'halal', label: 'Halal', description: 'Only halal-certified meat & food' },\n { value: 'kosher', label: 'Kosher', description: 'Following Jewish dietary laws' },\n { value: 'other', label: 'Other (specify)', description: 'A diet 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 // ── 38. Smoking ─────────────────────────────────────────────\n {\n order: 38,\n key: 'smoking',\n label: 'Smoking',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never', description: \"Don't smoke and never have\" },\n { value: 'socially', label: 'Socially', description: 'Only at parties or with friends' },\n {\n value: 'when_drinking',\n label: 'When drinking',\n description: 'Smoke occasionally when having drinks',\n },\n { value: 'regularly', label: 'Regularly', description: 'Smoke daily or near-daily' },\n { value: 'trying_to_quit', label: 'Trying to quit', description: 'Working on quitting' },\n {\n value: 'vaping',\n label: 'Vaping Only',\n description: 'E-cigarettes or vapes, not traditional tobacco',\n },\n {\n value: 'hookah_socially',\n label: 'Hookah Socially',\n description: 'Shisha / hookah at lounges or gatherings',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 39. Alcohol ─────────────────────────────────────────────\n {\n order: 39,\n key: 'alcohol',\n label: 'Alcohol',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never', description: \"Don't drink and never have\" },\n { value: 'sober', label: 'Sober', description: 'Used to drink, now choosing not to' },\n { value: 'rarely', label: 'Rarely', description: 'A few times a year at most' },\n {\n value: 'socially',\n label: 'Socially',\n description: 'At parties, dinners, or with friends',\n },\n {\n value: 'on_special_occasions',\n label: 'On special occasions',\n description: 'Festivals, celebrations, weddings',\n },\n { value: 'regularly', label: 'Regularly', description: 'A few times a week or more' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 40. Cannabis ────────────────────────────────────────────\n {\n order: 40,\n key: 'cannabis',\n label: 'Cannabis',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never' },\n { value: 'socially', label: 'Occasionally / Socially' },\n { value: 'regularly', label: 'Regularly' },\n { value: 'medical_only', label: 'Medical use only' },\n { value: '420_friendly', label: '420 friendly' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 41. Children Plans ──────────────────────────────────────\n {\n order: 41,\n key: 'childrenPlans',\n label: 'Children Plans',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'want_children', label: 'Want children' },\n { value: 'dont_want', label: \"Don't want children\" },\n { value: 'open_undecided', label: 'Open / Undecided' },\n { value: 'have_and_want_more', label: 'Have children, want more' },\n { value: 'have_and_done', label: \"Have children, don't want more\" },\n { value: 'not_sure', label: 'Not sure yet' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 42. Looking for Entrepreneur ────────────────────────────\n {\n order: 42,\n key: 'lookingForEntrepreneur',\n label: 'Looking for Entrepreneur',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'yes', label: 'Yes, specifically' },\n { value: 'prefer', label: 'Prefer but not required' },\n { value: 'dont_care', label: \"Don't care\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n // ── Orphan fields ──\n { order: 44, key: 'nativePlace', label: 'Native Place', type: 'text', tier: 1, isFilter: false, isOnboarding: false, description: 'Your native / ancestral village or town' },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"03-basics.js","sourceRoot":"","sources":["../../src/profile-fields/03-basics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nconst religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n {\n value: 'muslim_sufi',\n label: 'Muslim (Sufi)',\n description: 'Mystical Islamic tradition emphasizing inner spirituality',\n },\n {\n value: 'muslim_other',\n label: 'Muslim (Other)',\n description: 'Ahmadiyya or other Islamic traditions',\n },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other Christian traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith — Ahura Mazda',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice without organized religion',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n {\n value: 'agnostic',\n label: 'Agnostic',\n description: 'Uncertain about the existence of a higher power',\n },\n {\n value: 'no_religion',\n label: 'No Religion',\n description: 'Simply non-religious — no spiritual or atheist identity',\n },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background or no single affiliation',\n },\n { value: 'other', label: 'Other (specify)', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nconst motherTongueOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर / كٲشُر)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const basics: FieldGroup = {\n key: 'basics',\n label: 'Basics & Deal-Breakers',\n tier: 1,\n fields: [\n // ── 20. Height ──────────────────────────────────────────────\n {\n order: 20,\n key: 'height',\n label: 'Height',\n type: 'number',\n unit: 'cm',\n min: 100,\n max: 220,\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n },\n\n // ── 21. Weight ──────────────────────────────────────────────\n {\n order: 21,\n key: 'weight',\n label: 'Weight',\n type: 'number',\n unit: 'kg',\n min: 30,\n max: 200,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n optional: true,\n },\n\n // ── 22. BMI (computed) ──────────────────────────────────────\n {\n order: 22,\n key: 'bmi',\n label: 'BMI',\n type: 'computed',\n computedFrom: ['height', 'weight'],\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Auto-calculated from height and weight.',\n },\n\n // ── 23. Body Build ──────────────────────────────────────────\n {\n order: 23,\n key: 'bodyBuild',\n label: 'Body Build',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'slim', label: 'Slim', description: 'Lean and slender frame' },\n { value: 'lean', label: 'Lean', description: 'Low body fat, toned but not bulky' },\n { value: 'athletic', label: 'Athletic', description: 'Muscular or sports-fit' },\n { value: 'average', label: 'Average', description: 'Moderate, proportional build' },\n { value: 'curvy', label: 'Curvy', description: 'Fuller or hourglass figure' },\n { value: 'stocky', label: 'Stocky', description: 'Broad and solidly built' },\n { value: 'heavy', label: 'Heavy / Plus-size', description: 'Larger body type' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 23a. Complexion ───────────────────────────────────────\n {\n order: 23.5,\n key: 'complexion',\n label: 'Complexion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'very_fair', label: 'Very Fair', description: 'Very light skin tone' },\n { value: 'fair', label: 'Fair', description: 'Light skin tone' },\n { value: 'wheatish', label: 'Wheatish', description: 'Light brown, wheat-like tone' },\n { value: 'wheatish_medium', label: 'Wheatish Medium', description: 'Medium brown tone' },\n { value: 'olive', label: 'Olive', description: 'Warm yellowish-green undertone' },\n { value: 'medium', label: 'Medium / Brown', description: 'Medium to brown skin tone' },\n { value: 'dark', label: 'Dark', description: 'Dark brown skin tone' },\n { value: 'very_dark', label: 'Very Dark', description: 'Deep dark skin tone' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 24. Family Religion ─────────────────────────────────────\n {\n order: 24,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...religionOptions],\n },\n\n // ── 25. Personal Religion ───────────────────────────────────\n {\n order: 25,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...religionOptions],\n },\n\n // Fields 26-30 (religionPracticeLevel, religionPartnerPreference, caste, culturalImportance,\n // manglikStatus) moved to 17-religion-community.ts — religion-conditional fields.\n\n // ── 31. Mother Tongue ───────────────────────────────────────\n {\n order: 31,\n key: 'motherTongue',\n label: 'Mother Tongue',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [...motherTongueOptions],\n },\n\n // ── 32. Languages Spoken ────────────────────────────────────\n {\n order: 32,\n key: 'languagesSpoken',\n label: 'Languages Spoken',\n type: 'multi_select',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n options: [\n ...motherTongueOptions,\n { value: 'spanish', label: 'Spanish' },\n { value: 'french', label: 'French' },\n { value: 'german', label: 'German' },\n { value: 'mandarin', label: 'Mandarin' },\n { value: 'japanese', label: 'Japanese' },\n { value: 'korean', label: 'Korean' },\n { value: 'arabic', label: 'Arabic' },\n { value: 'portuguese', label: 'Portuguese' },\n { value: 'russian', label: 'Russian' },\n { value: 'italian', label: 'Italian' },\n ],\n },\n\n // ── 33. Education Level ─────────────────────────────────────\n {\n order: 33,\n key: 'educationLevel',\n label: 'Education Level',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n {\n value: 'below_10th',\n label: 'Below 10th',\n description: 'Did not complete secondary school',\n },\n {\n value: 'high_school',\n label: 'High School (10th / 12th)',\n description: '10th or 12th pass or equivalent',\n },\n {\n value: 'iti_vocational',\n label: 'ITI / Vocational Training',\n description: 'Industrial Training Institute or vocational course',\n },\n {\n value: 'diploma',\n label: 'Diploma / Polytechnic',\n description: 'Polytechnic diploma or trade school',\n },\n {\n value: 'associate',\n label: 'Associate Degree',\n description: '2-year degree or polytechnic graduate',\n },\n {\n value: 'in_college',\n label: 'Currently in College',\n description: 'Pursuing undergraduate studies',\n },\n {\n value: 'bachelors',\n label: \"Bachelor's Degree\",\n description: 'B.Tech, BA, B.Com, BBA, B.Sc, etc.',\n },\n {\n value: 'in_grad_school',\n label: 'Currently in Grad School',\n description: 'Pursuing postgraduate studies',\n },\n { value: 'masters', label: \"Master's Degree\", description: 'M.Tech, MA, MBA, M.Sc, etc.' },\n { value: 'doctorate', label: 'Doctorate / PhD', description: 'Doctoral research degree' },\n {\n value: 'professional',\n label: 'Professional Degree',\n description: 'CA, MBBS, LLB, CS, ICWA, etc.',\n },\n {\n value: 'self_taught',\n label: 'Self-taught',\n description: 'Self-educated or learned through online courses',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 34. Institution Tier ────────────────────────────────────\n {\n order: 34,\n key: 'institutionTier',\n label: 'Institution Tier',\n type: 'single_select',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n options: [\n {\n value: 'tier1_elite',\n label: 'Tier-1 / Elite',\n description: 'IIT, IIM, top 100 global universities',\n },\n { value: 'tier2_reputed', label: 'Tier-2 / Nationally reputed' },\n { value: 'tier3_regional', label: 'Tier-3 / Regional' },\n { value: 'open_distance', label: 'Open / Distance' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 35. Profession ──────────────────────────────────────────\n {\n order: 35,\n key: 'profession',\n label: 'Profession / Occupation',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n description: 'What is your current profession or occupation?',\n options: [\n // Technology\n {\n value: 'it_software',\n label: 'IT & Software',\n description: 'Developer, data scientist, IT support, DevOps, etc.',\n },\n {\n value: 'engineering',\n label: 'Engineering',\n description: 'Civil, mechanical, electrical, chemical, etc.',\n },\n // Healthcare & Medicine\n {\n value: 'healthcare_doctor',\n label: 'Doctor / Physician',\n description: 'MBBS, MD, surgeon, dentist, etc.',\n },\n {\n value: 'healthcare_nursing',\n label: 'Nursing & Allied Health',\n description: 'Nurse, physiotherapist, lab tech, etc.',\n },\n {\n value: 'healthcare_pharma',\n label: 'Pharma & Biotech',\n description: 'Pharmaceutical, biotech, clinical research',\n },\n {\n value: 'psychology_therapy',\n label: 'Psychology & Therapy',\n description: 'Psychologist, counsellor, therapist',\n },\n // Education & Research\n {\n value: 'education_teaching',\n label: 'Teaching & Training',\n description: 'School teacher, professor, corporate trainer',\n },\n {\n value: 'science_research',\n label: 'Science & Research',\n description: 'Scientist, lab researcher, academic scholar',\n },\n // Finance & Business\n {\n value: 'finance_banking',\n label: 'Finance & Banking',\n description: 'Banking, investment, stock market, insurance',\n },\n {\n value: 'chartered_accountant',\n label: 'Chartered Accountant (CA)',\n description: 'CA, CS, CMA, auditor',\n },\n {\n value: 'business_management',\n label: 'Business & Management',\n description: 'Operations, consulting, HR, MBA roles',\n },\n // Creative & Media\n {\n value: 'arts_entertainment',\n label: 'Arts & Entertainment',\n description: 'Music, film, dance, fine arts, theatre',\n },\n {\n value: 'media_communication',\n label: 'Media & Communication',\n description: 'Journalism, PR, advertising, content',\n },\n {\n value: 'design_creative',\n label: 'Design & Creative',\n description: 'Graphic design, UI/UX, fashion design, architecture',\n },\n // Government & Public Service\n {\n value: 'civil_services',\n label: 'Civil Services (IAS/IPS/IFS)',\n description: 'Government officer cadre — IAS, IPS, IRS, IFS',\n },\n {\n value: 'government_public',\n label: 'Government / Public Sector',\n description: 'PSU, state govt, municipal, railway, postal',\n },\n {\n value: 'defence_military',\n label: 'Defence / Military',\n description: 'Army, Navy, Air Force, paramilitary, coast guard',\n },\n {\n value: 'police_law_enforcement',\n label: 'Police & Law Enforcement',\n description: 'Police, CBI, NIA, customs, excise',\n },\n // Legal\n {\n value: 'legal',\n label: 'Legal & Law',\n description: 'Lawyer, advocate, judge, legal advisor, notary',\n },\n // Trades & Services\n {\n value: 'skilled_trades',\n label: 'Skilled Trades',\n description: 'Electrician, plumber, carpenter, welder, mechanic',\n },\n {\n value: 'transport_logistics',\n label: 'Transport & Logistics',\n description: 'Driver, delivery, warehouse, supply chain',\n },\n {\n value: 'hospitality_travel',\n label: 'Hospitality & Tourism',\n description: 'Hotels, restaurants, airlines, travel agency',\n },\n {\n value: 'beauty_wellness',\n label: 'Beauty & Wellness',\n description: 'Salon, spa, fitness trainer, yoga instructor',\n },\n // Agriculture & Rural\n {\n value: 'agriculture_farming',\n label: 'Agriculture & Farming',\n description: 'Farming, agri-business, dairy, fisheries',\n },\n // Real Estate & Construction\n {\n value: 'real_estate',\n label: 'Real Estate & Construction',\n description: 'Property, builder, interior design, architecture',\n },\n // Retail & Commerce\n {\n value: 'retail_ecommerce',\n label: 'Retail & E-commerce',\n description: 'Shops, online stores, wholesale, distribution',\n },\n {\n value: 'manufacturing',\n label: 'Manufacturing & Production',\n description: 'Factory, production, quality control, industrial',\n },\n // Maritime\n {\n value: 'merchant_navy',\n label: 'Merchant Navy',\n description: 'Commercial shipping, maritime, offshore',\n },\n // Social & NGO\n {\n value: 'ngo_social_work',\n label: 'NGO & Social Work',\n description: 'Non-profit, social worker, community development',\n },\n {\n value: 'religious_spiritual',\n label: 'Religious / Spiritual Work',\n description: 'Priest, pujari, maulvi, pastor, monk, spiritual guide',\n },\n // Independent\n {\n value: 'freelancer_gig',\n label: 'Freelancer / Gig Worker',\n description: 'Independent contractor, gig economy, Uber/Ola driver',\n },\n {\n value: 'content_creator',\n label: 'Content Creator / Influencer',\n description: 'YouTuber, blogger, podcaster, Instagram creator',\n },\n {\n value: 'self_employed',\n label: 'Self-employed / Entrepreneur',\n description: 'Own business, startup founder, shop owner',\n },\n // Non-working\n { value: 'student', label: 'Student', description: 'Currently pursuing education' },\n { value: 'homemaker', label: 'Homemaker', description: 'Managing the household full-time' },\n { value: 'retired', label: 'Retired', description: 'No longer working professionally' },\n {\n value: 'not_working',\n label: 'Not Currently Working',\n description: 'Between jobs, career break, or job seeking',\n },\n {\n value: 'differently_abled_pension',\n label: 'On Disability / Pension',\n description: 'Receiving disability benefits or pension',\n },\n { value: 'other', label: 'Other', description: 'Something not listed above' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 36. Relationship Status ─────────────────────────────────\n {\n order: 36,\n key: 'relationshipStatus',\n label: 'Relationship Status',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n options: [\n {\n value: 'never_married',\n label: 'Never Married',\n description: 'Have not been married before',\n },\n {\n value: 'dating',\n label: 'Dating / Seeing Someone',\n description: 'Currently in a non-exclusive relationship',\n },\n { value: 'married', label: 'Married', description: 'Currently legally married' },\n {\n value: 'separated',\n label: 'Separated',\n description: 'Living apart from spouse, not yet divorced',\n },\n {\n value: 'awaiting_divorce',\n label: 'Awaiting Divorce',\n description: 'Divorce proceedings in progress',\n },\n { value: 'divorced', label: 'Divorced', description: 'Legally divorced' },\n { value: 'widowed', label: 'Widowed', description: 'Spouse has passed away' },\n {\n value: 'enm',\n label: 'Open Relationship / ENM',\n description: 'In an ethically non-monogamous arrangement',\n },\n {\n value: 'its_complicated',\n label: \"It's Complicated\",\n description: \"Situation doesn't fit neatly into a label\",\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer Not to Say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 37. Diet ────────────────────────────────────────────────\n {\n order: 37,\n key: 'diet',\n label: 'Diet',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'vegetarian', label: 'Vegetarian', description: 'No meat, fish, or eggs' },\n {\n value: 'vegan',\n label: 'Vegan',\n description: 'No animal products at all — including dairy & honey',\n },\n { value: 'eggetarian', label: 'Eggetarian', description: 'Vegetarian but eat eggs' },\n {\n value: 'non_vegetarian',\n label: 'Non-Vegetarian',\n description: 'Eat everything including meat & fish',\n },\n {\n value: 'pescatarian',\n label: 'Pescatarian',\n description: 'No meat, but eat fish & seafood',\n },\n {\n value: 'occasionally_non_veg',\n label: 'Occasionally Non-Veg',\n description: 'Mostly veg, meat on occasion',\n },\n {\n value: 'flexitarian',\n label: 'Flexitarian',\n description: 'Primarily plant-based, flexible about it',\n },\n {\n value: 'jain',\n label: 'Jain',\n description: 'No root vegetables, strict Jain dietary rules',\n },\n {\n value: 'sattvic',\n label: 'Sattvic',\n description: 'Pure vegetarian — no onion, garlic, or stimulants (yogic diet)',\n },\n {\n value: 'no_onion_no_garlic',\n label: 'No Onion / No Garlic',\n description: 'Vegetarian without onion & garlic — common in Jain & some Hindu households',\n },\n { value: 'halal', label: 'Halal', description: 'Only halal-certified meat & food' },\n { value: 'kosher', label: 'Kosher', description: 'Following Jewish dietary laws' },\n { value: 'other', label: 'Other (specify)', description: 'A diet 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 // ── 38. Smoking ─────────────────────────────────────────────\n {\n order: 38,\n key: 'smoking',\n label: 'Smoking',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never', description: \"Don't smoke and never have\" },\n { value: 'socially', label: 'Socially', description: 'Only at parties or with friends' },\n {\n value: 'when_drinking',\n label: 'When drinking',\n description: 'Smoke occasionally when having drinks',\n },\n { value: 'regularly', label: 'Regularly', description: 'Smoke daily or near-daily' },\n { value: 'trying_to_quit', label: 'Trying to quit', description: 'Working on quitting' },\n {\n value: 'vaping',\n label: 'Vaping Only',\n description: 'E-cigarettes or vapes, not traditional tobacco',\n },\n {\n value: 'hookah_socially',\n label: 'Hookah Socially',\n description: 'Shisha / hookah at lounges or gatherings',\n },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 39. Alcohol ─────────────────────────────────────────────\n {\n order: 39,\n key: 'alcohol',\n label: 'Alcohol',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never', description: \"Don't drink and never have\" },\n { value: 'sober', label: 'Sober', description: 'Used to drink, now choosing not to' },\n { value: 'rarely', label: 'Rarely', description: 'A few times a year at most' },\n {\n value: 'socially',\n label: 'Socially',\n description: 'At parties, dinners, or with friends',\n },\n {\n value: 'on_special_occasions',\n label: 'On special occasions',\n description: 'Festivals, celebrations, weddings',\n },\n { value: 'regularly', label: 'Regularly', description: 'A few times a week or more' },\n {\n value: 'prefer_not_to_say',\n label: 'Prefer not to say',\n description: 'Keep this private',\n },\n ],\n },\n\n // ── 40. Cannabis ────────────────────────────────────────────\n {\n order: 40,\n key: 'cannabis',\n label: 'Cannabis',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'never', label: 'Never' },\n { value: 'socially', label: 'Occasionally / Socially' },\n { value: 'regularly', label: 'Regularly' },\n { value: 'medical_only', label: 'Medical use only' },\n { value: '420_friendly', label: '420 friendly' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 41. Children Plans ──────────────────────────────────────\n {\n order: 41,\n key: 'childrenPlans',\n label: 'Children Plans',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'want_children', label: 'Want children' },\n { value: 'dont_want', label: \"Don't want children\" },\n { value: 'open_undecided', label: 'Open / Undecided' },\n { value: 'have_and_want_more', label: 'Have children, want more' },\n { value: 'have_and_done', label: \"Have children, don't want more\" },\n { value: 'not_sure', label: 'Not sure yet' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n\n // ── 42. Looking for Entrepreneur ────────────────────────────\n {\n order: 42,\n key: 'lookingForEntrepreneur',\n label: 'Looking for Entrepreneur',\n type: 'single_select',\n tier: 1,\n isFilter: true,\n isOnboarding: false,\n options: [\n { value: 'yes', label: 'Yes, specifically' },\n { value: 'prefer', label: 'Prefer but not required' },\n { value: 'dont_care', label: \"Don't care\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n // ── Orphan fields ──\n {\n order: 44,\n key: 'nativePlace',\n label: 'Native Place',\n type: 'text',\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Your native / ancestral village or town',\n },\n ],\n};\n"]}
|
|
@@ -95,7 +95,7 @@ export const lookingFor = {
|
|
|
95
95
|
tier: 1,
|
|
96
96
|
isFilter: true,
|
|
97
97
|
isOnboarding: true,
|
|
98
|
-
description:
|
|
98
|
+
description: "Select one or more genders you'd like to see",
|
|
99
99
|
options: [
|
|
100
100
|
{ value: 'man', label: 'Men' },
|
|
101
101
|
{ value: 'woman', label: 'Women' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"04-looking-for.js","sourceRoot":"","sources":["../../src/profile-fields/04-looking-for.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,sBAAsB;IAC7B,IAAI,EAAE,CAAC;IACP,MAAM,EAAE;QACN;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,gDAAgD;SAC9D;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBACnF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBACpF,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBACpF,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBAC1F,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACtF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBACvF,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACvF,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAC3F,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACrF;oBACE,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,yCAAyC;iBACvD;gBACD,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;aAC3D;SACF;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,mBAAmB;YACxB,KAAK,EAAE,qBAAqB;YAC5B,IAAI,EAAE,cAAc;YACpB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,kCAAkC;SAChD;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,cAAc;YACnB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,mCAAmC;YAChD,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;gBACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;gBACpD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;gBACxC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACnD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC5C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;gBAChD,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC5D,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,yBAAyB,EAAE;gBACjE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACpD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACxD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;gBAClD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;gBAChD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;gBACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACxD,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC1D,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC5D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;gBACxC,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,yBAAyB,EAAE;gBACtE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;aAC3D;SACF;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"04-looking-for.js","sourceRoot":"","sources":["../../src/profile-fields/04-looking-for.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const lookingFor: FieldGroup = {\n key: 'looking_for',\n label: \"What I'm Looking For\",\n tier: 1,\n fields: [\n {\n order: 43,\n key: 'whatImLookingFor',\n label: \"What I'm Looking For\",\n type: 'textarea',\n maxLength: 300,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'Describe your ideal partner in your own words.',\n },\n {\n order: 44,\n key: 'relationshipRole',\n label: 'Relationship Role',\n type: 'multi_select',\n maxSelect: 3,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'What roles are you looking for in a partner?',\n options: [\n { value: 'mentor', label: 'Mentor', description: 'Someone who guides and teaches' },\n { value: 'mentee', label: 'Mentee', description: 'Someone eager to learn and grow' },\n { value: 'equal_partner', label: 'Equal Partner', description: '50-50 partnership' },\n { value: 'protector', label: 'Protector', description: 'Someone who makes you feel safe' },\n { value: 'nurturer', label: 'Nurturer', description: 'Someone who takes care of you' },\n { value: 'provider', label: 'Provider', description: 'Someone financially supportive' },\n { value: 'companion', label: 'Companion', description: 'A life buddy and best friend' },\n { value: 'challenger', label: 'Challenger', description: 'Someone who pushes you to grow' },\n { value: 'cheerleader', label: 'Cheerleader', description: 'Your biggest supporter' },\n {\n value: 'wise_partner',\n label: 'Wise Partner',\n description: 'Someone with wisdom and life experience',\n },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n {\n order: 46,\n key: 'preferredAgeRange',\n label: 'Preferred Age Range',\n type: 'range_slider',\n min: 18,\n max: 70,\n unit: 'years',\n tier: 'internal',\n isFilter: true,\n isOnboarding: false,\n description: \"Age range you're open to dating.\",\n },\n {\n order: 47,\n key: 'dealbreakers',\n label: 'Dealbreakers',\n type: 'multi_select',\n maxSelect: 10,\n tier: 1,\n isFilter: false,\n isOnboarding: false,\n description: 'What are absolute no-gos for you?',\n options: [\n { value: 'smoking', label: 'Smoking' },\n { value: 'heavy_drinking', label: 'Heavy drinking' },\n { value: 'drug_use', label: 'Drug use' },\n { value: 'no_ambition', label: 'Lack of ambition' },\n { value: 'dishonesty', label: 'Dishonesty' },\n { value: 'poor_hygiene', label: 'Poor hygiene' },\n { value: 'different_religion', label: 'Different religion' },\n { value: 'different_politics', label: 'Very different politics' },\n { value: 'no_kids_ever', label: 'Never wants kids' },\n { value: 'already_has_kids', label: 'Already has kids' },\n { value: 'long_distance', label: 'Long distance' },\n { value: 'non_monogamy', label: 'Non-monogamy' },\n { value: 'no_job', label: 'Unemployed' },\n { value: 'excessive_gaming', label: 'Excessive gaming' },\n { value: 'no_sense_of_humor', label: 'No sense of humor' },\n { value: 'poor_communication', label: 'Poor communication' },\n { value: 'clingy', label: 'Too clingy' },\n { value: 'emotionally_unavailable', label: 'Emotionally unavailable' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n ],\n },\n {\n order: 45,\n key: 'preferredGenders',\n label: 'Preferred Genders',\n type: 'multi_select',\n tier: 1,\n isFilter: true,\n isOnboarding: true,\n description: \"Select one or more genders you'd like to see\",\n options: [\n { value: 'man', label: 'Men' },\n { value: 'woman', label: 'Women' },\n { value: 'non_binary', label: 'Non-binary' },\n ],\n },\n ],\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"05-personality.d.ts","sourceRoot":"","sources":["../../src/profile-fields/05-personality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"05-personality.d.ts","sourceRoot":"","sources":["../../src/profile-fields/05-personality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,UA0UzB,CAAC"}
|
|
@@ -256,11 +256,71 @@ export const personality = {
|
|
|
256
256
|
],
|
|
257
257
|
},
|
|
258
258
|
// ── Big Five OCEAN individual scores (orphans from Mongoose model) ──
|
|
259
|
-
{
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
259
|
+
{
|
|
260
|
+
order: 58,
|
|
261
|
+
key: 'oceanOpenness',
|
|
262
|
+
label: 'OCEAN — Openness',
|
|
263
|
+
type: 'slider',
|
|
264
|
+
min: 1,
|
|
265
|
+
max: 100,
|
|
266
|
+
tier: 1,
|
|
267
|
+
isFilter: false,
|
|
268
|
+
isOnboarding: true,
|
|
269
|
+
isOnboardingOptional: true,
|
|
270
|
+
labels: { min: 'Traditional', max: 'Curious' },
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
order: 59,
|
|
274
|
+
key: 'oceanConscientiousness',
|
|
275
|
+
label: 'OCEAN — Conscientiousness',
|
|
276
|
+
type: 'slider',
|
|
277
|
+
min: 1,
|
|
278
|
+
max: 100,
|
|
279
|
+
tier: 1,
|
|
280
|
+
isFilter: false,
|
|
281
|
+
isOnboarding: true,
|
|
282
|
+
isOnboardingOptional: true,
|
|
283
|
+
labels: { min: 'Flexible', max: 'Organized' },
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
order: 60,
|
|
287
|
+
key: 'oceanExtraversion',
|
|
288
|
+
label: 'OCEAN — Extraversion',
|
|
289
|
+
type: 'slider',
|
|
290
|
+
min: 1,
|
|
291
|
+
max: 100,
|
|
292
|
+
tier: 1,
|
|
293
|
+
isFilter: false,
|
|
294
|
+
isOnboarding: true,
|
|
295
|
+
isOnboardingOptional: true,
|
|
296
|
+
labels: { min: 'Reserved', max: 'Outgoing' },
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
order: 61,
|
|
300
|
+
key: 'oceanAgreeableness',
|
|
301
|
+
label: 'OCEAN — Agreeableness',
|
|
302
|
+
type: 'slider',
|
|
303
|
+
min: 1,
|
|
304
|
+
max: 100,
|
|
305
|
+
tier: 1,
|
|
306
|
+
isFilter: false,
|
|
307
|
+
isOnboarding: true,
|
|
308
|
+
isOnboardingOptional: true,
|
|
309
|
+
labels: { min: 'Direct', max: 'Warm' },
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
order: 62,
|
|
313
|
+
key: 'oceanNeuroticism',
|
|
314
|
+
label: 'OCEAN — Neuroticism',
|
|
315
|
+
type: 'slider',
|
|
316
|
+
min: 1,
|
|
317
|
+
max: 100,
|
|
318
|
+
tier: 1,
|
|
319
|
+
isFilter: false,
|
|
320
|
+
isOnboarding: true,
|
|
321
|
+
isOnboardingOptional: true,
|
|
322
|
+
labels: { min: 'Calm', max: 'Sensitive' },
|
|
323
|
+
},
|
|
264
324
|
],
|
|
265
325
|
};
|
|
266
326
|
//# sourceMappingURL=05-personality.js.map
|