udp-schema 2.26.0 → 2.28.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.
@@ -1 +1 @@
1
- {"version":3,"file":"07-employment.js","sourceRoot":"","sources":["../../src/profile-fields/07-employment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const employmentStatusOptions = [\n { value: 'employed', label: 'Employed' },\n { value: 'self_employed', label: 'Self-employed' },\n { value: 'unemployed', label: 'Unemployed' },\n { value: 'student', label: 'Student' },\n { value: 'homemaker', label: 'Homemaker' },\n { value: 'retired', label: 'Retired' },\n { value: 'daily_wage', label: 'Daily wage worker' },\n { value: 'other', label: 'Other' },\n] as const;\n\n/**\n * Occupation / Profession — exhaustive Indian profession list.\n * Mirrored from `dating-schema/src/profile-fields/03-basics.ts` (the\n * `profession` field, order 35) so cross-product profile data agrees on\n * the same canonical occupation values. Keep this list in sync with\n * dating-schema if either side adds a category.\n */\nexport const occupationOptions = [\n // Technology\n { value: 'it_software', label: 'IT & Software', description: 'Developer, data scientist, IT support, DevOps, etc.' },\n { value: 'engineering', label: 'Engineering', description: 'Civil, mechanical, electrical, chemical, etc.' },\n // Healthcare & Medicine\n { value: 'healthcare_doctor', label: 'Doctor / Physician', description: 'MBBS, MD, surgeon, dentist, etc.' },\n { value: 'healthcare_nursing', label: 'Nursing & Allied Health', description: 'Nurse, physiotherapist, lab tech, etc.' },\n { value: 'healthcare_pharma', label: 'Pharma & Biotech', description: 'Pharmaceutical, biotech, clinical research' },\n { value: 'psychology_therapy', label: 'Psychology & Therapy', description: 'Psychologist, counsellor, therapist' },\n // Education & Research\n { value: 'education_teaching', label: 'Teaching & Training', description: 'School teacher, professor, corporate trainer' },\n { value: 'science_research', label: 'Science & Research', description: 'Scientist, lab researcher, academic scholar' },\n // Finance & Business\n { value: 'finance_banking', label: 'Finance & Banking', description: 'Banking, investment, stock market, insurance' },\n { value: 'chartered_accountant', label: 'Chartered Accountant (CA)', description: 'CA, CS, CMA, auditor' },\n { value: 'business_management', label: 'Business & Management', description: 'Operations, consulting, HR, MBA roles' },\n // Creative & Media\n { value: 'arts_entertainment', label: 'Arts & Entertainment', description: 'Music, film, dance, fine arts, theatre' },\n { value: 'media_communication', label: 'Media & Communication', description: 'Journalism, PR, advertising, content' },\n { value: 'design_creative', label: 'Design & Creative', description: 'Graphic design, UI/UX, fashion design, architecture' },\n // Government & Public Service\n { value: 'civil_services', label: 'Civil Services (IAS/IPS/IFS)', description: 'Government officer cadre — IAS, IPS, IRS, IFS' },\n { value: 'government_public', label: 'Government / Public Sector', description: 'PSU, state govt, municipal, railway, postal' },\n { value: 'defence_military', label: 'Defence / Military', description: 'Army, Navy, Air Force, paramilitary, coast guard' },\n { value: 'police_law_enforcement', label: 'Police & Law Enforcement', description: 'Police, CBI, NIA, customs, excise' },\n // Legal\n { value: 'legal', label: 'Legal & Law', description: 'Lawyer, advocate, judge, legal advisor, notary' },\n // Trades & Services\n { value: 'skilled_trades', label: 'Skilled Trades', description: 'Electrician, plumber, carpenter, welder, mechanic' },\n { value: 'transport_logistics', label: 'Transport & Logistics', description: 'Driver, delivery, warehouse, supply chain' },\n { value: 'hospitality_travel', label: 'Hospitality & Tourism', description: 'Hotels, restaurants, airlines, travel agency' },\n { value: 'beauty_wellness', label: 'Beauty & Wellness', description: 'Salon, spa, fitness trainer, yoga instructor' },\n // Agriculture & Rural\n { value: 'agriculture_farming', label: 'Agriculture & Farming', description: 'Farming, agri-business, dairy, fisheries' },\n // Real Estate & Construction\n { value: 'real_estate', label: 'Real Estate & Construction', description: 'Property, builder, interior design, architecture' },\n // Retail & Commerce\n { value: 'retail_ecommerce', label: 'Retail & E-commerce', description: 'Shops, online stores, wholesale, distribution' },\n { value: 'manufacturing', label: 'Manufacturing & Production', description: 'Factory, production, quality control, industrial' },\n // Maritime\n { value: 'merchant_navy', label: 'Merchant Navy', description: 'Commercial shipping, maritime, offshore' },\n // Social & NGO\n { value: 'ngo_social_work', label: 'NGO & Social Work', description: 'Non-profit, social worker, community development' },\n { value: 'religious_spiritual', label: 'Religious / Spiritual Work', description: 'Priest, pujari, maulvi, pastor, monk, spiritual guide' },\n // Independent\n { value: 'freelancer_gig', label: 'Freelancer / Gig Worker', description: 'Independent contractor, gig economy, Uber/Ola driver' },\n { value: 'content_creator', label: 'Content Creator / Influencer', description: 'YouTuber, blogger, podcaster, Instagram creator' },\n { value: 'self_employed', label: 'Self-employed / Entrepreneur', description: 'Own business, startup founder, shop owner' },\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 { value: 'not_working', label: 'Not Currently Working', description: 'Between jobs, career break, or job seeking' },\n { value: 'differently_abled_pension', label: 'On Disability / Pension', description: 'Receiving disability benefits or pension' },\n { value: 'other', label: 'Other', description: 'Something not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nexport const shiftOptions = [\n { value: 'day_shift', label: 'Day shift' },\n { value: 'night_shift', label: 'Night shift' },\n { value: 'rotating', label: 'Rotating shifts' },\n { value: 'flexible', label: 'Flexible hours' },\n { value: 'work_from_home', label: 'Work from home' },\n { value: 'not_applicable', label: 'Not applicable' },\n] as const;\n\nexport const incomeRangeOptions = [\n { value: 'below_5k', label: 'Below ₹5,000' },\n { value: '5k_10k', label: '₹5,000 – ₹10,000' },\n { value: '10k_25k', label: '₹10,000 – ₹25,000' },\n { value: '25k_50k', label: '₹25,000 – ₹50,000' },\n { value: '50k_1L', label: '₹50,000 – ₹1 Lakh' },\n { value: '1L_2_5L', label: '₹1 Lakh – ₹2.5 Lakh' },\n { value: '2_5L_5L', label: '₹2.5 Lakh – ₹5 Lakh' },\n { value: 'above_5L', label: 'Above ₹5 Lakh' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const comfortableWithShiftOptions = [\n { value: 'yes', label: 'Yes' },\n { value: 'no', label: 'No' },\n { value: 'somewhat', label: 'Somewhat' },\n] as const;\n\nexport const employment: FieldGroup = {\n key: 'employment',\n label: 'Employment & Occupation',\n step: 7,\n description: 'Current job, shift, income, and dream occupation.',\n fields: [\n {\n order: 1,\n key: 'employmentStatus',\n label: 'Employment Status',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...employmentStatusOptions],\n },\n {\n order: 2,\n key: 'occupation',\n label: 'Occupation',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...occupationOptions],\n },\n {\n order: 3,\n key: 'workShift',\n label: 'Work Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...shiftOptions],\n },\n {\n order: 4,\n key: 'comfortableWithShift',\n label: 'Comfortable with Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...comfortableWithShiftOptions],\n },\n {\n order: 5,\n key: 'desiredShift',\n label: 'Desired Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...shiftOptions],\n },\n {\n order: 6,\n key: 'incomeRange',\n label: 'Income Range',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...incomeRangeOptions],\n sensitive: true,\n },\n {\n order: 7,\n key: 'dreamOccupation',\n label: 'Dream Occupation',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n // Same option set as `occupation` above — answers \"If you could\n // start over, what would you do?\" using the canonical profession\n // enum (mirrored from dating-schema). The two fields share both\n // values and translations via `optionNs: 'occupation'`.\n options: [...occupationOptions],\n },\n ],\n};\n"]}
1
+ {"version":3,"file":"07-employment.js","sourceRoot":"","sources":["../../src/profile-fields/07-employment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const employmentStatusOptions = [\n { value: 'employed', label: 'Employed' },\n { value: 'self_employed', label: 'Self-employed' },\n { value: 'unemployed', label: 'Unemployed' },\n { value: 'student', label: 'Student' },\n { value: 'homemaker', label: 'Homemaker' },\n { value: 'retired', label: 'Retired' },\n { value: 'daily_wage', label: 'Daily wage worker' },\n { value: 'other', label: 'Other' },\n] as const;\n\n/**\n * Occupation / Profession — exhaustive Indian profession list.\n * Mirrored from `dating-schema/src/profile-fields/03-basics.ts` (the\n * `profession` field, order 35) so cross-product profile data agrees on\n * the same canonical occupation values. Keep this list in sync with\n * dating-schema if either side adds a category.\n */\nexport const occupationOptions = [\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 { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nexport const shiftOptions = [\n { value: 'day_shift', label: 'Day shift' },\n { value: 'night_shift', label: 'Night shift' },\n { value: 'rotating', label: 'Rotating shifts' },\n { value: 'flexible', label: 'Flexible hours' },\n { value: 'work_from_home', label: 'Work from home' },\n { value: 'not_applicable', label: 'Not applicable' },\n] as const;\n\nexport const incomeRangeOptions = [\n { value: 'below_5k', label: 'Below ₹5,000' },\n { value: '5k_10k', label: '₹5,000 – ₹10,000' },\n { value: '10k_25k', label: '₹10,000 – ₹25,000' },\n { value: '25k_50k', label: '₹25,000 – ₹50,000' },\n { value: '50k_1L', label: '₹50,000 – ₹1 Lakh' },\n { value: '1L_2_5L', label: '₹1 Lakh – ₹2.5 Lakh' },\n { value: '2_5L_5L', label: '₹2.5 Lakh – ₹5 Lakh' },\n { value: 'above_5L', label: 'Above ₹5 Lakh' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const comfortableWithShiftOptions = [\n { value: 'yes', label: 'Yes' },\n { value: 'no', label: 'No' },\n { value: 'somewhat', label: 'Somewhat' },\n] as const;\n\nexport const employment: FieldGroup = {\n key: 'employment',\n label: 'Employment & Occupation',\n step: 7,\n description: 'Current job, shift, income, and dream occupation.',\n fields: [\n {\n order: 1,\n key: 'employmentStatus',\n label: 'Employment Status',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...employmentStatusOptions],\n },\n {\n order: 2,\n key: 'occupation',\n label: 'Occupation',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...occupationOptions],\n },\n {\n order: 3,\n key: 'workShift',\n label: 'Work Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...shiftOptions],\n },\n {\n order: 4,\n key: 'comfortableWithShift',\n label: 'Comfortable with Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...comfortableWithShiftOptions],\n },\n {\n order: 5,\n key: 'desiredShift',\n label: 'Desired Shift',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...shiftOptions],\n },\n {\n order: 6,\n key: 'incomeRange',\n label: 'Income Range',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n options: [...incomeRangeOptions],\n sensitive: true,\n },\n {\n order: 7,\n key: 'dreamOccupation',\n label: 'Dream Occupation',\n type: 'single_select',\n step: 7,\n isOnboarding: true,\n optional: true,\n // Same option set as `occupation` above — answers \"If you could\n // start over, what would you do?\" using the canonical profession\n // enum (mirrored from dating-schema). The two fields share both\n // values and translations via `optionNs: 'occupation'`.\n options: [...occupationOptions],\n },\n ],\n};\n"]}
@@ -61,6 +61,16 @@ export declare const digitalAccessOptions: readonly [{
61
61
  readonly value: "no_phone";
62
62
  readonly label: "No phone";
63
63
  }];
64
+ /**
65
+ * Household income — uses the SAME bucket set as personal `incomeRange`
66
+ * (step 7) so the two questions feel consistent. The 9-bucket version
67
+ * from step 7 is more granular at the high end (adds `2_5L_5L` between
68
+ * `1L_2_5L` and `above_5L`) than the original 8-bucket household list,
69
+ * which capped at "above ₹2.5 Lakh". Re-exporting (rather than declaring
70
+ * a parallel array) guarantees the two stay in lockstep — if either side
71
+ * ever needs different buckets, that's a deliberate decision the
72
+ * re-exporter must make explicitly.
73
+ */
64
74
  export declare const householdIncomeOptions: readonly [{
65
75
  readonly value: "below_5k";
66
76
  readonly label: "Below ₹5,000";
@@ -80,8 +90,11 @@ export declare const householdIncomeOptions: readonly [{
80
90
  readonly value: "1L_2_5L";
81
91
  readonly label: "₹1 Lakh – ₹2.5 Lakh";
82
92
  }, {
83
- readonly value: "above_2_5L";
84
- readonly label: "Above ₹2.5 Lakh";
93
+ readonly value: "2_5L_5L";
94
+ readonly label: "₹2.5 Lakh – ₹5 Lakh";
95
+ }, {
96
+ readonly value: "above_5L";
97
+ readonly label: "Above ₹5 Lakh";
85
98
  }, {
86
99
  readonly value: "prefer_not_to_say";
87
100
  readonly label: "Prefer not to say";
@@ -1 +1 @@
1
- {"version":3,"file":"12-household.d.ts","sourceRoot":"","sources":["../../src/profile-fields/12-household.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAetB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;EAKjB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAMzB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAEX,eAAO,MAAM,SAAS,EAAE,UA6GvB,CAAC"}
1
+ {"version":3,"file":"12-household.d.ts","sourceRoot":"","sources":["../../src/profile-fields/12-household.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAetB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqB,CAAC;AAEzD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;EAKjB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAMzB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAEX,eAAO,MAAM,SAAS,EAAE,UAgQvB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { incomeRangeOptions } from './07-employment.js';
1
2
  export const familyMemberOptions = [
2
3
  { value: 'father', label: 'Father' },
3
4
  { value: 'mother', label: 'Mother' },
@@ -22,16 +23,17 @@ export const digitalAccessOptions = [
22
23
  { value: 'no_internet', label: 'No internet access' },
23
24
  { value: 'no_phone', label: 'No phone' },
24
25
  ];
25
- export const householdIncomeOptions = [
26
- { value: 'below_5k', label: 'Below ₹5,000' },
27
- { value: '5k_10k', label: '₹5,000 ₹10,000' },
28
- { value: '10k_25k', label: '₹10,000 ₹25,000' },
29
- { value: '25k_50k', label: '₹25,000 ₹50,000' },
30
- { value: '50k_1L', label: '₹50,000 1 Lakh' },
31
- { value: '1L_2_5L', label: '₹1 Lakh ₹2.5 Lakh' },
32
- { value: 'above_2_5L', label: 'Above ₹2.5 Lakh' },
33
- { value: 'prefer_not_to_say', label: 'Prefer not to say' },
34
- ];
26
+ /**
27
+ * Household income uses the SAME bucket set as personal `incomeRange`
28
+ * (step 7) so the two questions feel consistent. The 9-bucket version
29
+ * from step 7 is more granular at the high end (adds `2_5L_5L` between
30
+ * `1L_2_5L` and `above_5L`) than the original 8-bucket household list,
31
+ * which capped at "above2.5 Lakh". Re-exporting (rather than declaring
32
+ * a parallel array) guarantees the two stay in lockstep — if either side
33
+ * ever needs different buckets, that's a deliberate decision the
34
+ * re-exporter must make explicitly.
35
+ */
36
+ export const householdIncomeOptions = incomeRangeOptions;
35
37
  export const maritalStatusOptions = [
36
38
  { value: 'single', label: 'Single' },
37
39
  { value: 'married', label: 'Married' },
@@ -106,8 +108,155 @@ export const household = {
106
108
  optional: true,
107
109
  options: [...familyMemberOptions],
108
110
  },
111
+ // ── Family-link sub-steps (orders 3–16) ─────────────────────────────────
112
+ // Each is conditional on the user having selected the matching value in
113
+ // `familyMembers` (sub-step 2). Female-first ordering: mother → step-mother
114
+ // → father → step-father → spouse → sisters → brothers → daughter → son
115
+ // → other. Single-instance relations (mother / father / step_*) are
116
+ // typed `object`; multi-instance (siblings / children / spouse / other)
117
+ // are typed `object_array`.
109
118
  {
110
119
  order: 3,
120
+ key: 'linkedMother',
121
+ label: 'Link your mother',
122
+ type: 'object',
123
+ step: 12,
124
+ isOnboarding: true,
125
+ optional: true,
126
+ conditionalOn: { field: 'familyMembers', includesAny: ['mother'] },
127
+ },
128
+ {
129
+ order: 4,
130
+ key: 'linkedStepMother',
131
+ label: 'Link your step-mother',
132
+ type: 'object',
133
+ step: 12,
134
+ isOnboarding: true,
135
+ optional: true,
136
+ conditionalOn: { field: 'familyMembers', includesAny: ['step_mother'] },
137
+ },
138
+ {
139
+ order: 5,
140
+ key: 'linkedFather',
141
+ label: 'Link your father',
142
+ type: 'object',
143
+ step: 12,
144
+ isOnboarding: true,
145
+ optional: true,
146
+ conditionalOn: { field: 'familyMembers', includesAny: ['father'] },
147
+ },
148
+ {
149
+ order: 6,
150
+ key: 'linkedStepFather',
151
+ label: 'Link your step-father',
152
+ type: 'object',
153
+ step: 12,
154
+ isOnboarding: true,
155
+ optional: true,
156
+ conditionalOn: { field: 'familyMembers', includesAny: ['step_father'] },
157
+ },
158
+ {
159
+ order: 7,
160
+ key: 'linkedSpouses',
161
+ label: 'Link your spouse',
162
+ type: 'object_array',
163
+ step: 12,
164
+ isOnboarding: true,
165
+ optional: true,
166
+ conditionalOn: { field: 'familyMembers', includesAny: ['wife_husband'] },
167
+ },
168
+ {
169
+ order: 8,
170
+ key: 'linkedBloodSisters',
171
+ label: 'Link your blood sisters',
172
+ type: 'object_array',
173
+ step: 12,
174
+ isOnboarding: true,
175
+ optional: true,
176
+ conditionalOn: { field: 'familyMembers', includesAny: ['blood_sister'] },
177
+ },
178
+ {
179
+ order: 9,
180
+ key: 'linkedHalfSisters',
181
+ label: 'Link your half-sisters',
182
+ type: 'object_array',
183
+ step: 12,
184
+ isOnboarding: true,
185
+ optional: true,
186
+ conditionalOn: { field: 'familyMembers', includesAny: ['half_sister'] },
187
+ },
188
+ {
189
+ order: 10,
190
+ key: 'linkedStepSisters',
191
+ label: 'Link your step-sisters',
192
+ type: 'object_array',
193
+ step: 12,
194
+ isOnboarding: true,
195
+ optional: true,
196
+ conditionalOn: { field: 'familyMembers', includesAny: ['step_sister'] },
197
+ },
198
+ {
199
+ order: 11,
200
+ key: 'linkedBloodBrothers',
201
+ label: 'Link your blood brothers',
202
+ type: 'object_array',
203
+ step: 12,
204
+ isOnboarding: true,
205
+ optional: true,
206
+ conditionalOn: { field: 'familyMembers', includesAny: ['blood_brother'] },
207
+ },
208
+ {
209
+ order: 12,
210
+ key: 'linkedHalfBrothers',
211
+ label: 'Link your half-brothers',
212
+ type: 'object_array',
213
+ step: 12,
214
+ isOnboarding: true,
215
+ optional: true,
216
+ conditionalOn: { field: 'familyMembers', includesAny: ['half_brother'] },
217
+ },
218
+ {
219
+ order: 13,
220
+ key: 'linkedStepBrothers',
221
+ label: 'Link your step-brothers',
222
+ type: 'object_array',
223
+ step: 12,
224
+ isOnboarding: true,
225
+ optional: true,
226
+ conditionalOn: { field: 'familyMembers', includesAny: ['step_brother'] },
227
+ },
228
+ {
229
+ order: 14,
230
+ key: 'linkedDaughters',
231
+ label: 'Link your daughters',
232
+ type: 'object_array',
233
+ step: 12,
234
+ isOnboarding: true,
235
+ optional: true,
236
+ conditionalOn: { field: 'familyMembers', includesAny: ['daughter'] },
237
+ },
238
+ {
239
+ order: 15,
240
+ key: 'linkedSons',
241
+ label: 'Link your sons',
242
+ type: 'object_array',
243
+ step: 12,
244
+ isOnboarding: true,
245
+ optional: true,
246
+ conditionalOn: { field: 'familyMembers', includesAny: ['son'] },
247
+ },
248
+ {
249
+ order: 16,
250
+ key: 'linkedOthers',
251
+ label: 'Link other family',
252
+ type: 'object_array',
253
+ step: 12,
254
+ isOnboarding: true,
255
+ optional: true,
256
+ conditionalOn: { field: 'familyMembers', includesAny: ['other'] },
257
+ },
258
+ {
259
+ order: 17,
111
260
  key: 'numberOfDependents',
112
261
  label: 'Number of Dependents',
113
262
  type: 'number',
@@ -118,7 +267,7 @@ export const household = {
118
267
  max: 50,
119
268
  },
120
269
  {
121
- order: 4,
270
+ order: 18,
122
271
  key: 'housingType',
123
272
  label: 'Housing Type',
124
273
  type: 'single_select',
@@ -128,7 +277,7 @@ export const household = {
128
277
  options: [...housingTypeOptions],
129
278
  },
130
279
  {
131
- order: 5,
280
+ order: 19,
132
281
  key: 'householdIncome',
133
282
  label: 'Household Income',
134
283
  type: 'single_select',
@@ -139,7 +288,7 @@ export const household = {
139
288
  sensitive: true,
140
289
  },
141
290
  {
142
- order: 6,
291
+ order: 20,
143
292
  key: 'bplCard',
144
293
  label: 'BPL Card',
145
294
  type: 'single_select',
@@ -149,7 +298,7 @@ export const household = {
149
298
  options: [...bplCardOptions],
150
299
  },
151
300
  {
152
- order: 7,
301
+ order: 21,
153
302
  key: 'digitalAccess',
154
303
  label: 'Digital Access',
155
304
  type: 'multi_select',
@@ -159,7 +308,7 @@ export const household = {
159
308
  options: [...digitalAccessOptions],
160
309
  },
161
310
  {
162
- order: 8,
311
+ order: 22,
163
312
  key: 'migrationStatus',
164
313
  label: 'Migration Status',
165
314
  type: 'single_select',
@@ -169,7 +318,7 @@ export const household = {
169
318
  options: [...migrationStatusOptions],
170
319
  },
171
320
  {
172
- order: 9,
321
+ order: 23,
173
322
  key: 'landOwnership',
174
323
  label: 'Land Ownership',
175
324
  type: 'single_select',
@@ -179,7 +328,7 @@ export const household = {
179
328
  options: [...landOwnershipOptions],
180
329
  },
181
330
  {
182
- order: 10,
331
+ order: 24,
183
332
  key: 'primaryIncomeSource',
184
333
  label: 'Primary Income Source',
185
334
  type: 'single_select',
@@ -1 +1 @@
1
- {"version":3,"file":"12-household.js","sourceRoot":"","sources":["../../src/profile-fields/12-household.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\n\nexport const familyMemberOptions = [\n { value: 'father', label: 'Father' },\n { value: 'mother', label: 'Mother' },\n { value: 'step_father', label: 'Step-father' },\n { value: 'step_mother', label: 'Step-mother' },\n { value: 'wife_husband', label: 'Wife / Husband' },\n { value: 'blood_brother', label: 'Blood Brother' },\n { value: 'blood_sister', label: 'Blood Sister' },\n { value: 'half_brother', label: 'Half Brother' },\n { value: 'half_sister', label: 'Half Sister' },\n { value: 'step_brother', label: 'Step Brother' },\n { value: 'step_sister', label: 'Step Sister' },\n { value: 'son', label: 'Son' },\n { value: 'daughter', label: 'Daughter' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const digitalAccessOptions = [\n { value: 'smartphone', label: 'Smartphone' },\n { value: 'feature_phone', label: 'Feature phone' },\n { value: 'computer_laptop', label: 'Computer / Laptop' },\n { value: 'internet_at_home', label: 'Internet at home' },\n { value: 'no_internet', label: 'No internet access' },\n { value: 'no_phone', label: 'No phone' },\n] as const;\n\nexport const householdIncomeOptions = [\n { value: 'below_5k', label: 'Below ₹5,000' },\n { value: '5k_10k', label: '₹5,000 – ₹10,000' },\n { value: '10k_25k', label: '₹10,000 – ₹25,000' },\n { value: '25k_50k', label: '₹25,000 – ₹50,000' },\n { value: '50k_1L', label: '₹50,000 – ₹1 Lakh' },\n { value: '1L_2_5L', label: '₹1 Lakh – ₹2.5 Lakh' },\n { value: 'above_2_5L', label: 'Above ₹2.5 Lakh' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const maritalStatusOptions = [\n { value: 'single', label: 'Single' },\n { value: 'married', label: 'Married' },\n { value: 'divorced', label: 'Divorced' },\n { value: 'widowed', label: 'Widowed' },\n { value: 'separated', label: 'Separated' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const housingTypeOptions = [\n { value: 'own_house', label: 'Own house' },\n { value: 'rented', label: 'Rented' },\n { value: 'government_quarters', label: 'Government quarters' },\n { value: 'shared', label: 'Shared housing' },\n { value: 'homeless', label: 'Homeless' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const bplCardOptions = [\n { value: 'yes', label: 'Yes' },\n { value: 'no', label: 'No' },\n { value: 'applied', label: 'Applied / Pending' },\n { value: 'dont_know', label: \"Don't know\" },\n] as const;\n\nexport const migrationStatusOptions = [\n { value: 'native', label: 'Native (always lived here)' },\n { value: 'within_district', label: 'Migrated within district' },\n { value: 'within_state', label: 'Migrated within state' },\n { value: 'inter_state', label: 'Inter-state migrant' },\n { value: 'international', label: 'International migrant' },\n] as const;\n\nexport const landOwnershipOptions = [\n { value: 'own_agricultural', label: 'Own agricultural land' },\n { value: 'own_residential', label: 'Own residential land' },\n { value: 'government_allotted', label: 'Government allotted' },\n { value: 'no_land', label: 'No land' },\n { value: 'leased', label: 'Leased land' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const primaryIncomeSourceOptions = [\n { value: 'agriculture', label: 'Agriculture' },\n { value: 'government_job', label: 'Government job' },\n { value: 'private_job', label: 'Private job' },\n { value: 'business', label: 'Business' },\n { value: 'daily_wage', label: 'Daily wage' },\n { value: 'pension', label: 'Pension' },\n { value: 'remittance', label: 'Remittance' },\n { value: 'no_fixed_income', label: 'No fixed income' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const household: FieldGroup = {\n key: 'household',\n label: 'Household & Economic Profile',\n step: 12,\n description: 'Family, housing, income, and economic profile.',\n fields: [\n {\n order: 1,\n key: 'maritalStatus',\n label: 'Marital Status',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...maritalStatusOptions],\n },\n {\n order: 2,\n key: 'familyMembers',\n label: 'Family Members',\n type: 'multi_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...familyMemberOptions],\n },\n {\n order: 3,\n key: 'numberOfDependents',\n label: 'Number of Dependents',\n type: 'number',\n step: 12,\n isOnboarding: true,\n optional: true,\n min: 0,\n max: 50,\n },\n {\n order: 4,\n key: 'housingType',\n label: 'Housing Type',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...housingTypeOptions],\n },\n {\n order: 5,\n key: 'householdIncome',\n label: 'Household Income',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...householdIncomeOptions],\n sensitive: true,\n },\n {\n order: 6,\n key: 'bplCard',\n label: 'BPL Card',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...bplCardOptions],\n },\n {\n order: 7,\n key: 'digitalAccess',\n label: 'Digital Access',\n type: 'multi_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...digitalAccessOptions],\n },\n {\n order: 8,\n key: 'migrationStatus',\n label: 'Migration Status',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...migrationStatusOptions],\n },\n {\n order: 9,\n key: 'landOwnership',\n label: 'Land Ownership',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...landOwnershipOptions],\n },\n {\n order: 10,\n key: 'primaryIncomeSource',\n label: 'Primary Income Source',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...primaryIncomeSourceOptions],\n },\n ],\n};\n"]}
1
+ {"version":3,"file":"12-household.js","sourceRoot":"","sources":["../../src/profile-fields/12-household.ts"],"names":[],"mappings":"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","sourcesContent":["import { incomeRangeOptions } from './07-employment.js';\nimport type { FieldGroup } from './types.js';\n\nexport const familyMemberOptions = [\n { value: 'father', label: 'Father' },\n { value: 'mother', label: 'Mother' },\n { value: 'step_father', label: 'Step-father' },\n { value: 'step_mother', label: 'Step-mother' },\n { value: 'wife_husband', label: 'Wife / Husband' },\n { value: 'blood_brother', label: 'Blood Brother' },\n { value: 'blood_sister', label: 'Blood Sister' },\n { value: 'half_brother', label: 'Half Brother' },\n { value: 'half_sister', label: 'Half Sister' },\n { value: 'step_brother', label: 'Step Brother' },\n { value: 'step_sister', label: 'Step Sister' },\n { value: 'son', label: 'Son' },\n { value: 'daughter', label: 'Daughter' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const digitalAccessOptions = [\n { value: 'smartphone', label: 'Smartphone' },\n { value: 'feature_phone', label: 'Feature phone' },\n { value: 'computer_laptop', label: 'Computer / Laptop' },\n { value: 'internet_at_home', label: 'Internet at home' },\n { value: 'no_internet', label: 'No internet access' },\n { value: 'no_phone', label: 'No phone' },\n] as const;\n\n/**\n * Household income — uses the SAME bucket set as personal `incomeRange`\n * (step 7) so the two questions feel consistent. The 9-bucket version\n * from step 7 is more granular at the high end (adds `2_5L_5L` between\n * `1L_2_5L` and `above_5L`) than the original 8-bucket household list,\n * which capped at \"above ₹2.5 Lakh\". Re-exporting (rather than declaring\n * a parallel array) guarantees the two stay in lockstep — if either side\n * ever needs different buckets, that's a deliberate decision the\n * re-exporter must make explicitly.\n */\nexport const householdIncomeOptions = incomeRangeOptions;\n\nexport const maritalStatusOptions = [\n { value: 'single', label: 'Single' },\n { value: 'married', label: 'Married' },\n { value: 'divorced', label: 'Divorced' },\n { value: 'widowed', label: 'Widowed' },\n { value: 'separated', label: 'Separated' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const housingTypeOptions = [\n { value: 'own_house', label: 'Own house' },\n { value: 'rented', label: 'Rented' },\n { value: 'government_quarters', label: 'Government quarters' },\n { value: 'shared', label: 'Shared housing' },\n { value: 'homeless', label: 'Homeless' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const bplCardOptions = [\n { value: 'yes', label: 'Yes' },\n { value: 'no', label: 'No' },\n { value: 'applied', label: 'Applied / Pending' },\n { value: 'dont_know', label: \"Don't know\" },\n] as const;\n\nexport const migrationStatusOptions = [\n { value: 'native', label: 'Native (always lived here)' },\n { value: 'within_district', label: 'Migrated within district' },\n { value: 'within_state', label: 'Migrated within state' },\n { value: 'inter_state', label: 'Inter-state migrant' },\n { value: 'international', label: 'International migrant' },\n] as const;\n\nexport const landOwnershipOptions = [\n { value: 'own_agricultural', label: 'Own agricultural land' },\n { value: 'own_residential', label: 'Own residential land' },\n { value: 'government_allotted', label: 'Government allotted' },\n { value: 'no_land', label: 'No land' },\n { value: 'leased', label: 'Leased land' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const primaryIncomeSourceOptions = [\n { value: 'agriculture', label: 'Agriculture' },\n { value: 'government_job', label: 'Government job' },\n { value: 'private_job', label: 'Private job' },\n { value: 'business', label: 'Business' },\n { value: 'daily_wage', label: 'Daily wage' },\n { value: 'pension', label: 'Pension' },\n { value: 'remittance', label: 'Remittance' },\n { value: 'no_fixed_income', label: 'No fixed income' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const household: FieldGroup = {\n key: 'household',\n label: 'Household & Economic Profile',\n step: 12,\n description: 'Family, housing, income, and economic profile.',\n fields: [\n {\n order: 1,\n key: 'maritalStatus',\n label: 'Marital Status',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...maritalStatusOptions],\n },\n {\n order: 2,\n key: 'familyMembers',\n label: 'Family Members',\n type: 'multi_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...familyMemberOptions],\n },\n // ── Family-link sub-steps (orders 3–16) ─────────────────────────────────\n // Each is conditional on the user having selected the matching value in\n // `familyMembers` (sub-step 2). Female-first ordering: mother → step-mother\n // → father → step-father → spouse → sisters → brothers → daughter → son\n // → other. Single-instance relations (mother / father / step_*) are\n // typed `object`; multi-instance (siblings / children / spouse / other)\n // are typed `object_array`.\n {\n order: 3,\n key: 'linkedMother',\n label: 'Link your mother',\n type: 'object',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['mother'] },\n },\n {\n order: 4,\n key: 'linkedStepMother',\n label: 'Link your step-mother',\n type: 'object',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['step_mother'] },\n },\n {\n order: 5,\n key: 'linkedFather',\n label: 'Link your father',\n type: 'object',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['father'] },\n },\n {\n order: 6,\n key: 'linkedStepFather',\n label: 'Link your step-father',\n type: 'object',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['step_father'] },\n },\n {\n order: 7,\n key: 'linkedSpouses',\n label: 'Link your spouse',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['wife_husband'] },\n },\n {\n order: 8,\n key: 'linkedBloodSisters',\n label: 'Link your blood sisters',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['blood_sister'] },\n },\n {\n order: 9,\n key: 'linkedHalfSisters',\n label: 'Link your half-sisters',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['half_sister'] },\n },\n {\n order: 10,\n key: 'linkedStepSisters',\n label: 'Link your step-sisters',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['step_sister'] },\n },\n {\n order: 11,\n key: 'linkedBloodBrothers',\n label: 'Link your blood brothers',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['blood_brother'] },\n },\n {\n order: 12,\n key: 'linkedHalfBrothers',\n label: 'Link your half-brothers',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['half_brother'] },\n },\n {\n order: 13,\n key: 'linkedStepBrothers',\n label: 'Link your step-brothers',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['step_brother'] },\n },\n {\n order: 14,\n key: 'linkedDaughters',\n label: 'Link your daughters',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['daughter'] },\n },\n {\n order: 15,\n key: 'linkedSons',\n label: 'Link your sons',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['son'] },\n },\n {\n order: 16,\n key: 'linkedOthers',\n label: 'Link other family',\n type: 'object_array',\n step: 12,\n isOnboarding: true,\n optional: true,\n conditionalOn: { field: 'familyMembers', includesAny: ['other'] },\n },\n {\n order: 17,\n key: 'numberOfDependents',\n label: 'Number of Dependents',\n type: 'number',\n step: 12,\n isOnboarding: true,\n optional: true,\n min: 0,\n max: 50,\n },\n {\n order: 18,\n key: 'housingType',\n label: 'Housing Type',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...housingTypeOptions],\n },\n {\n order: 19,\n key: 'householdIncome',\n label: 'Household Income',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...householdIncomeOptions],\n sensitive: true,\n },\n {\n order: 20,\n key: 'bplCard',\n label: 'BPL Card',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...bplCardOptions],\n },\n {\n order: 21,\n key: 'digitalAccess',\n label: 'Digital Access',\n type: 'multi_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...digitalAccessOptions],\n },\n {\n order: 22,\n key: 'migrationStatus',\n label: 'Migration Status',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...migrationStatusOptions],\n },\n {\n order: 23,\n key: 'landOwnership',\n label: 'Land Ownership',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...landOwnershipOptions],\n },\n {\n order: 24,\n key: 'primaryIncomeSource',\n label: 'Primary Income Source',\n type: 'single_select',\n step: 12,\n isOnboarding: true,\n optional: true,\n options: [...primaryIncomeSourceOptions],\n },\n ],\n};\n"]}
@@ -34,9 +34,15 @@ export interface BaseField {
34
34
  sensitive?: boolean;
35
35
  /**
36
36
  * If set, field visibility is conditional on another field's value.
37
- * - `values`: positive match — only visible when referenced field's value is in the list.
38
- * - `notIn`: negative match — only visible when referenced field's value is NOT in the list.
39
- * An undefined referenced value counts as "not in the list" (field is shown).
37
+ * - `values`: positive match — only visible when referenced field's (single)
38
+ * value is in the list.
39
+ * - `notIn`: negative match only visible when referenced field's (single)
40
+ * value is NOT in the list. An undefined referenced value counts as
41
+ * "not in the list" (field is shown).
42
+ * - `includesAny`: array-intersection match — for multi_select fields, only
43
+ * visible when the referenced array shares at least one value with the
44
+ * list. Used by step-12's link sub-steps which gate on `familyMembers`
45
+ * (a multi-select) including the relevant relation type.
40
46
  */
41
47
  conditionalOn?: {
42
48
  field: string;
@@ -44,6 +50,9 @@ export interface BaseField {
44
50
  } | {
45
51
  field: string;
46
52
  notIn: string[];
53
+ } | {
54
+ field: string;
55
+ includesAny: string[];
47
56
  };
48
57
  }
49
58
  export interface SelectField extends BaseField {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EACA,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,eAAe,GACf,cAAc,GACd,QAAQ,GACR,cAAc,GACd,SAAS,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1F;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,WAAW,GACX,CAAC,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EACA,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,eAAe,GACf,cAAc,GACd,QAAQ,GACR,cAAc,GACd,SAAS,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EACV;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GACnC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAClC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,WAAW,GACX,CAAC,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Type definitions for UDP profile field configuration.\n *\n * Mirrors the dating-schema profile-fields/types.ts pattern.\n * These types describe field metadata — NOT the user's actual profile data.\n */\n\nexport interface FieldOption {\n value: string;\n label: string;\n /** Short description — shown on chips/cards */\n description?: string;\n}\n\nexport interface BaseField {\n /** Display order within the step */\n order: number;\n /** Unique key — maps to DB field name */\n key: string;\n /** Human-readable label */\n label: string;\n /** Field type for form rendering */\n type:\n | 'text'\n | 'textarea'\n | 'number'\n | 'date'\n | 'single_select'\n | 'multi_select'\n | 'object'\n | 'object_array'\n | 'address';\n /** Step number (1-12) this field belongs to */\n step: number;\n /** Whether this field is collected during onboarding */\n isOnboarding: boolean;\n /**\n * All UDP fields are optional — users can skip any question.\n * This flag is kept for metadata/documentation but does not affect form flow.\n */\n optional?: boolean;\n /** Help text shown below the field */\n description?: string;\n /** Mark as sensitive (shown with privacy notice) */\n sensitive?: boolean;\n /**\n * If set, field visibility is conditional on another field's value.\n * - `values`: positive match — only visible when referenced field's value is in the list.\n * - `notIn`: negative match — only visible when referenced field's value is NOT in the list.\n * An undefined referenced value counts as \"not in the list\" (field is shown).\n */\n conditionalOn?: { field: string; values: string[] } | { field: string; notIn: string[] };\n}\n\nexport interface SelectField extends BaseField {\n type: 'single_select';\n options: FieldOption[];\n}\n\nexport interface MultiSelectField extends BaseField {\n type: 'multi_select';\n options: FieldOption[];\n maxSelect?: number;\n}\n\nexport interface TextField extends BaseField {\n type: 'text' | 'textarea';\n maxLength?: number;\n}\n\nexport interface NumberField extends BaseField {\n type: 'number';\n min?: number;\n max?: number;\n}\n\nexport type ProfileField =\n | SelectField\n | MultiSelectField\n | TextField\n | NumberField\n | (BaseField & { type: 'date' | 'object' | 'object_array' | 'address' });\n\nexport interface FieldGroup {\n key: string;\n label: string;\n description?: string;\n step: number;\n fields: ProfileField[];\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Type definitions for UDP profile field configuration.\n *\n * Mirrors the dating-schema profile-fields/types.ts pattern.\n * These types describe field metadata — NOT the user's actual profile data.\n */\n\nexport interface FieldOption {\n value: string;\n label: string;\n /** Short description — shown on chips/cards */\n description?: string;\n}\n\nexport interface BaseField {\n /** Display order within the step */\n order: number;\n /** Unique key — maps to DB field name */\n key: string;\n /** Human-readable label */\n label: string;\n /** Field type for form rendering */\n type:\n | 'text'\n | 'textarea'\n | 'number'\n | 'date'\n | 'single_select'\n | 'multi_select'\n | 'object'\n | 'object_array'\n | 'address';\n /** Step number (1-12) this field belongs to */\n step: number;\n /** Whether this field is collected during onboarding */\n isOnboarding: boolean;\n /**\n * All UDP fields are optional — users can skip any question.\n * This flag is kept for metadata/documentation but does not affect form flow.\n */\n optional?: boolean;\n /** Help text shown below the field */\n description?: string;\n /** Mark as sensitive (shown with privacy notice) */\n sensitive?: boolean;\n /**\n * If set, field visibility is conditional on another field's value.\n * - `values`: positive match — only visible when referenced field's (single)\n * value is in the list.\n * - `notIn`: negative match — only visible when referenced field's (single)\n * value is NOT in the list. An undefined referenced value counts as\n * \"not in the list\" (field is shown).\n * - `includesAny`: array-intersection match — for multi_select fields, only\n * visible when the referenced array shares at least one value with the\n * list. Used by step-12's link sub-steps which gate on `familyMembers`\n * (a multi-select) including the relevant relation type.\n */\n conditionalOn?:\n | { field: string; values: string[] }\n | { field: string; notIn: string[] }\n | { field: string; includesAny: string[] };\n}\n\nexport interface SelectField extends BaseField {\n type: 'single_select';\n options: FieldOption[];\n}\n\nexport interface MultiSelectField extends BaseField {\n type: 'multi_select';\n options: FieldOption[];\n maxSelect?: number;\n}\n\nexport interface TextField extends BaseField {\n type: 'text' | 'textarea';\n maxLength?: number;\n}\n\nexport interface NumberField extends BaseField {\n type: 'number';\n min?: number;\n max?: number;\n}\n\nexport type ProfileField =\n | SelectField\n | MultiSelectField\n | TextField\n | NumberField\n | (BaseField & { type: 'date' | 'object' | 'object_array' | 'address' });\n\nexport interface FieldGroup {\n key: string;\n label: string;\n description?: string;\n step: number;\n fields: ProfileField[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"progress-fields.d.ts","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAuIxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAE3D,CAAC;AAEX;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYlF;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcrD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GACnD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,GACnE;IACD,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAeA"}
1
+ {"version":3,"file":"progress-fields.d.ts","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAwJxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAE3D,CAAC;AAEX;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYlF;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcrD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GACnD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,GACnE;IACD,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAeA"}
@@ -133,6 +133,23 @@ export const UDP_PROGRESS_FIELDS = {
133
133
  12: [
134
134
  'maritalStatus',
135
135
  'familyMembers',
136
+ // Family-link sub-steps — counted toward step-12 progress like any
137
+ // other field. Conditional rendering means missing ones don't block
138
+ // completion.
139
+ 'linkedMother',
140
+ 'linkedStepMother',
141
+ 'linkedFather',
142
+ 'linkedStepFather',
143
+ 'linkedSpouses',
144
+ 'linkedBloodSisters',
145
+ 'linkedHalfSisters',
146
+ 'linkedStepSisters',
147
+ 'linkedBloodBrothers',
148
+ 'linkedHalfBrothers',
149
+ 'linkedStepBrothers',
150
+ 'linkedDaughters',
151
+ 'linkedSons',
152
+ 'linkedOthers',
136
153
  'numberOfDependents',
137
154
  'housingType',
138
155
  'householdIncome',
@@ -1 +1 @@
1
- {"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n // 'fullName' is a synthetic key — counts as filled if ANY of\n // firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n // Level/year are inline within the parent yes/no screens — only the\n // 2 parent fields contribute to step progress (the user can complete\n // the screen by answering yes/no without filling level/year).\n 'hasContestedElection',\n 'hasHeldPublicOffice',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'desiredPoliticalPosition',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n // Class 10\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education10th.subjects',\n 'education10th.marksObtained',\n // Class 12\n 'education12th.institutionName',\n 'education12th.boardOrUniversity',\n 'education12th.yearOfPassing',\n 'education12th.courseOrStream',\n 'education12th.subjects',\n 'education12th.marksOrGrade',\n // Degree repeaters + certificates + notes\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'neurodevelopmentalConditions',\n 'mentalHealthConditions',\n 'personalityPatterns',\n 'neurologicalChronicConditions',\n 'ageOfRealization',\n 'sensoryProfile',\n 'cognitiveStrengths',\n 'executiveFunctionChallenges',\n 'learningStyle',\n 'communicationPreference',\n 'supportAndAccommodations',\n 'maskingAndBurnout',\n 'impactOnLife',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnTransgenderInclusion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Synthetic progress keys — keys that aren't real fields but represent\n * a group of underlying fields. Counted as \"filled\" if ANY underlying\n * field is filled. Used for UI sub-steps that collect multiple fields\n * at once (e.g. the fullName sub-step that saves firstName, middleName,\n * and lastName).\n */\nexport const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]> = {\n fullName: ['firstName', 'middleName', 'lastName'],\n} as const;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n // Synthetic keys (e.g., \"fullName\") — filled if ANY underlying field is filled.\n const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];\n if (syntheticPaths) {\n if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {\n filled++;\n }\n continue;\n }\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}
1
+ {"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n // 'fullName' is a synthetic key — counts as filled if ANY of\n // firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n // Level/year are inline within the parent yes/no screens — only the\n // 2 parent fields contribute to step progress (the user can complete\n // the screen by answering yes/no without filling level/year).\n 'hasContestedElection',\n 'hasHeldPublicOffice',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'desiredPoliticalPosition',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n // Class 10\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education10th.subjects',\n 'education10th.marksObtained',\n // Class 12\n 'education12th.institutionName',\n 'education12th.boardOrUniversity',\n 'education12th.yearOfPassing',\n 'education12th.courseOrStream',\n 'education12th.subjects',\n 'education12th.marksOrGrade',\n // Degree repeaters + certificates + notes\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'neurodevelopmentalConditions',\n 'mentalHealthConditions',\n 'personalityPatterns',\n 'neurologicalChronicConditions',\n 'ageOfRealization',\n 'sensoryProfile',\n 'cognitiveStrengths',\n 'executiveFunctionChallenges',\n 'learningStyle',\n 'communicationPreference',\n 'supportAndAccommodations',\n 'maskingAndBurnout',\n 'impactOnLife',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnTransgenderInclusion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n // Family-link sub-steps — counted toward step-12 progress like any\n // other field. Conditional rendering means missing ones don't block\n // completion.\n 'linkedMother',\n 'linkedStepMother',\n 'linkedFather',\n 'linkedStepFather',\n 'linkedSpouses',\n 'linkedBloodSisters',\n 'linkedHalfSisters',\n 'linkedStepSisters',\n 'linkedBloodBrothers',\n 'linkedHalfBrothers',\n 'linkedStepBrothers',\n 'linkedDaughters',\n 'linkedSons',\n 'linkedOthers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Synthetic progress keys — keys that aren't real fields but represent\n * a group of underlying fields. Counted as \"filled\" if ANY underlying\n * field is filled. Used for UI sub-steps that collect multiple fields\n * at once (e.g. the fullName sub-step that saves firstName, middleName,\n * and lastName).\n */\nexport const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]> = {\n fullName: ['firstName', 'middleName', 'lastName'],\n} as const;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n // Synthetic keys (e.g., \"fullName\") — filled if ANY underlying field is filled.\n const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];\n if (syntheticPaths) {\n if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {\n filled++;\n }\n continue;\n }\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}