udp-schema 2.21.0 → 2.22.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":"onboarding-config.d.ts","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAyrB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EAmK9D,CAAC;AAIF,gDAAgD;AAChD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,wBAAwB,GAAG,SAAS,CAGtC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAG/B,CAAC"}
1
+ {"version":3,"file":"onboarding-config.d.ts","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAqqB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EAiK9D,CAAC;AAIF,gDAAgD;AAChD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,wBAAwB,GAAG,SAAS,CAGtC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAG/B,CAAC"}
@@ -127,6 +127,12 @@ export const UDP_ONBOARDING_FIELDS = {
127
127
  optionNs: 'relativesInPolitics',
128
128
  hasDesc: true,
129
129
  },
130
+ // Composite sub-steps. The yes/no question is the screen title; if the
131
+ // user answers "yes", the level + year inputs appear inline below on the
132
+ // same screen (not as separate sub-steps). Level / year fields still
133
+ // exist in the data model + Zod schema (and retain their `conditionalOn`
134
+ // metadata so save logic can validate them) — they just aren't navigated
135
+ // to as standalone screens.
130
136
  hasContestedElection: {
131
137
  title: 'hasContestedElection.title',
132
138
  subtitle: 'hasContestedElection.subtitle',
@@ -134,19 +140,6 @@ export const UDP_ONBOARDING_FIELDS = {
134
140
  required: false,
135
141
  optionNs: 'yesNoPrefer',
136
142
  },
137
- electionLevel: {
138
- title: 'electionLevel.title',
139
- subtitle: 'electionLevel.subtitle',
140
- successMessage: 'electionLevel.success',
141
- required: false,
142
- optionNs: 'officeLevel',
143
- },
144
- electionYear: {
145
- title: 'electionYear.title',
146
- subtitle: 'electionYear.subtitle',
147
- successMessage: 'electionYear.success',
148
- required: false,
149
- },
150
143
  hasHeldPublicOffice: {
151
144
  title: 'hasHeldPublicOffice.title',
152
145
  subtitle: 'hasHeldPublicOffice.subtitle',
@@ -154,19 +147,6 @@ export const UDP_ONBOARDING_FIELDS = {
154
147
  required: false,
155
148
  optionNs: 'yesNoPrefer',
156
149
  },
157
- officeLevel: {
158
- title: 'officeLevel.title',
159
- subtitle: 'officeLevel.subtitle',
160
- successMessage: 'officeLevel.success',
161
- required: false,
162
- optionNs: 'officeLevel',
163
- },
164
- officeYear: {
165
- title: 'officeYear.title',
166
- subtitle: 'officeYear.subtitle',
167
- successMessage: 'officeYear.success',
168
- required: false,
169
- },
170
150
  networkAndCivicEngagement: {
171
151
  title: 'networkAndCivicEngagement.title',
172
152
  subtitle: 'networkAndCivicEngagement.subtitle',
@@ -729,12 +709,10 @@ export const UDP_ONBOARDING_STEP_GROUPS = [
729
709
  'partyAssociationRole',
730
710
  'familyPartyAssociation',
731
711
  'relativesInPolitics',
712
+ // Composite sub-steps — see configFields above. Level/year are
713
+ // rendered inline within these screens, not as separate sub-steps.
732
714
  'hasContestedElection',
733
- 'electionLevel',
734
- 'electionYear',
735
715
  'hasHeldPublicOffice',
736
- 'officeLevel',
737
- 'officeYear',
738
716
  'networkAndCivicEngagement',
739
717
  ],
740
718
  },
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-config.js","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Onboarding Field Configuration\n * ====================================\n * Single source of truth for all per-field onboarding metadata.\n * Both frontend and backend import this.\n *\n * IMPORTANT: All string properties (title, subtitle, successMessage,\n * step group label) are i18n KEYS, not display text. The frontend resolves\n * them via useTranslations(\"udp\") → t(config.title).\n *\n * Translation files:\n * - messages/en/udp.json (English — under \"udp\" root key)\n * - messages/hi/udp.json (Hindi — under \"udp\" root key)\n *\n * @module udp-schema/onboarding-config\n */\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface UdpOnboardingFieldConfig {\n /** i18n key for the question heading (resolved via t(title)) */\n title: string;\n /** i18n key for help text below the heading */\n subtitle?: string;\n /** i18n key for toast message on successful save */\n successMessage: string;\n /** Whether the field is required to proceed */\n required: boolean;\n /** i18n namespace for option labels: t(`options.${optionNs}.${value}`) */\n optionNs?: string;\n /** Whether option descriptions exist (uses `options.${optionNs}Desc.*` keys) */\n hasDesc?: boolean;\n}\n\n/** Step grouping for the UDP onboarding flow */\nexport interface UdpOnboardingStepGroup {\n /** i18n key for section label */\n label: string;\n /** Emoji character (e.g., '📝', '🏛️') rendered directly */\n icon: string;\n /** Ordered list of field keys in this section */\n fields: string[];\n}\n\n// ─── Per-field onboarding metadata ──────────────────────────────────────────\n\nexport const UDP_ONBOARDING_FIELDS: Record<string, UdpOnboardingFieldConfig> = {\n // ── Step 1: Profile ──\n fullName: {\n title: 'fullName.title',\n subtitle: 'fullName.subtitle',\n successMessage: 'fullName.success',\n required: false,\n },\n gender: {\n title: 'gender.title',\n subtitle: 'gender.subtitle',\n successMessage: 'gender.success',\n required: false,\n optionNs: 'gender',\n hasDesc: true,\n },\n dateOfBirth: {\n title: 'dateOfBirth.title',\n subtitle: 'dateOfBirth.subtitle',\n successMessage: 'dateOfBirth.success',\n required: false,\n },\n whatsappNumber: {\n title: 'whatsappNumber.title',\n subtitle: 'whatsappNumber.subtitle',\n successMessage: 'whatsappNumber.success',\n required: false,\n },\n primaryLanguage: {\n title: 'primaryLanguage.title',\n subtitle: 'primaryLanguage.subtitle',\n successMessage: 'primaryLanguage.success',\n required: false,\n optionNs: 'language',\n },\n secondaryLanguages: {\n title: 'secondaryLanguages.title',\n subtitle: 'secondaryLanguages.subtitle',\n successMessage: 'secondaryLanguages.success',\n required: false,\n optionNs: 'language',\n },\n familyReligion: {\n title: 'familyReligion.title',\n subtitle: 'familyReligion.subtitle',\n successMessage: 'familyReligion.success',\n required: false,\n optionNs: 'religion',\n hasDesc: true,\n },\n personalReligion: {\n title: 'personalReligion.title',\n subtitle: 'personalReligion.subtitle',\n successMessage: 'personalReligion.success',\n required: false,\n optionNs: 'religion',\n hasDesc: true,\n },\n reservationStatus: {\n title: 'reservationStatus.title',\n subtitle: 'reservationStatus.subtitle',\n successMessage: 'reservationStatus.success',\n required: false,\n optionNs: 'reservation',\n hasDesc: true,\n },\n minorityStatus: {\n title: 'minorityStatus.title',\n subtitle: 'minorityStatus.subtitle',\n successMessage: 'minorityStatus.success',\n required: false,\n optionNs: 'minority',\n hasDesc: true,\n },\n\n // ── Step 2: Political Association & History ──\n politicalSpectrum: {\n title: 'politicalSpectrum.title',\n subtitle: 'politicalSpectrum.subtitle',\n successMessage: 'politicalSpectrum.success',\n required: false,\n optionNs: 'politicalSpectrum',\n },\n selfPartyAssociation: {\n title: 'selfPartyAssociation.title',\n subtitle: 'selfPartyAssociation.subtitle',\n successMessage: 'selfPartyAssociation.success',\n required: false,\n optionNs: 'party',\n },\n partyAssociationRole: {\n title: 'partyAssociationRole.title',\n subtitle: 'partyAssociationRole.subtitle',\n successMessage: 'partyAssociationRole.success',\n required: false,\n optionNs: 'partyRole',\n hasDesc: true,\n },\n familyPartyAssociation: {\n title: 'familyPartyAssociation.title',\n subtitle: 'familyPartyAssociation.subtitle',\n successMessage: 'familyPartyAssociation.success',\n required: false,\n optionNs: 'party',\n },\n relativesInPolitics: {\n title: 'relativesInPolitics.title',\n subtitle: 'relativesInPolitics.subtitle',\n successMessage: 'relativesInPolitics.success',\n required: false,\n optionNs: 'relativesInPolitics',\n hasDesc: true,\n },\n hasContestedElection: {\n title: 'hasContestedElection.title',\n subtitle: 'hasContestedElection.subtitle',\n successMessage: 'hasContestedElection.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n electionLevel: {\n title: 'electionLevel.title',\n subtitle: 'electionLevel.subtitle',\n successMessage: 'electionLevel.success',\n required: false,\n optionNs: 'officeLevel',\n },\n electionYear: {\n title: 'electionYear.title',\n subtitle: 'electionYear.subtitle',\n successMessage: 'electionYear.success',\n required: false,\n },\n hasHeldPublicOffice: {\n title: 'hasHeldPublicOffice.title',\n subtitle: 'hasHeldPublicOffice.subtitle',\n successMessage: 'hasHeldPublicOffice.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n officeLevel: {\n title: 'officeLevel.title',\n subtitle: 'officeLevel.subtitle',\n successMessage: 'officeLevel.success',\n required: false,\n optionNs: 'officeLevel',\n },\n officeYear: {\n title: 'officeYear.title',\n subtitle: 'officeYear.subtitle',\n successMessage: 'officeYear.success',\n required: false,\n },\n networkAndCivicEngagement: {\n title: 'networkAndCivicEngagement.title',\n subtitle: 'networkAndCivicEngagement.subtitle',\n successMessage: 'networkAndCivicEngagement.success',\n required: false,\n optionNs: 'civic',\n },\n\n // ── Step 3: Electoral Behaviour ──\n epicNumber: {\n title: 'epicNumber.title',\n subtitle: 'epicNumber.subtitle',\n successMessage: 'epicNumber.success',\n required: false,\n },\n willVoteThisTime: {\n title: 'willVoteThisTime.title',\n subtitle: 'willVoteThisTime.subtitle',\n successMessage: 'willVoteThisTime.success',\n required: false,\n optionNs: 'willVote',\n },\n didVoteLastTime: {\n title: 'didVoteLastTime.title',\n subtitle: 'didVoteLastTime.subtitle',\n successMessage: 'didVoteLastTime.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n votingFrequency: {\n title: 'votingFrequency.title',\n subtitle: 'votingFrequency.subtitle',\n successMessage: 'votingFrequency.success',\n required: false,\n optionNs: 'votingFreq',\n },\n primaryVotingIssues: {\n title: 'primaryVotingIssues.title',\n subtitle: 'primaryVotingIssues.subtitle',\n successMessage: 'primaryVotingIssues.success',\n required: false,\n optionNs: 'votingIssue',\n },\n\n // ── Step 4: Leadership & Ambitions ──\n participateInRevolution: {\n title: 'participateInRevolution.title',\n subtitle: 'participateInRevolution.subtitle',\n successMessage: 'participateInRevolution.success',\n required: false,\n optionNs: 'participate',\n },\n desiredPoliticalPosition: {\n title: 'desiredPoliticalPosition.title',\n subtitle: 'desiredPoliticalPosition.subtitle',\n successMessage: 'desiredPoliticalPosition.success',\n required: false,\n optionNs: 'position',\n },\n leadershipSkillset: {\n title: 'leadershipSkillset.title',\n subtitle: 'leadershipSkillset.subtitle',\n successMessage: 'leadershipSkillset.success',\n required: false,\n optionNs: 'leadershipSkill',\n },\n politicalExposure: {\n title: 'politicalExposure.title',\n subtitle: 'politicalExposure.subtitle',\n successMessage: 'politicalExposure.success',\n required: false,\n optionNs: 'exposure',\n },\n comfortWithVisibility: {\n title: 'comfortWithVisibility.title',\n subtitle: 'comfortWithVisibility.subtitle',\n successMessage: 'comfortWithVisibility.success',\n required: false,\n optionNs: 'visibility',\n },\n socialInfluenceLevel: {\n title: 'socialInfluenceLevel.title',\n subtitle: 'socialInfluenceLevel.subtitle',\n successMessage: 'socialInfluenceLevel.success',\n required: false,\n optionNs: 'influence',\n },\n pastExperience: {\n title: 'pastExperience.title',\n subtitle: 'pastExperience.subtitle',\n successMessage: 'pastExperience.success',\n required: false,\n optionNs: 'experience',\n },\n changesYouWantToBring: {\n title: 'changesYouWantToBring.title',\n subtitle: 'changesYouWantToBring.subtitle',\n successMessage: 'changesYouWantToBring.success',\n required: false,\n },\n\n // ── Step 5: Psychological Assessment ──\n mbtiType: {\n title: 'mbtiType.title',\n subtitle: 'mbtiType.subtitle',\n successMessage: 'mbtiType.success',\n required: false,\n },\n oceanScores: {\n title: 'oceanScores.title',\n subtitle: 'oceanScores.subtitle',\n successMessage: 'oceanScores.success',\n required: false,\n },\n\n // ── Step 6: Education ──\n highestQualification: {\n title: 'highestQualification.title',\n subtitle: 'highestQualification.subtitle',\n successMessage: 'highestQualification.success',\n required: false,\n },\n education10th: {\n title: 'education10th.title',\n subtitle: 'education10th.subtitle',\n successMessage: 'education10th.success',\n required: false,\n },\n education12th: {\n title: 'education12th.title',\n subtitle: 'education12th.subtitle',\n successMessage: 'education12th.success',\n required: false,\n },\n diplomas: {\n title: 'diplomas.title',\n subtitle: 'diplomas.subtitle',\n successMessage: 'diplomas.success',\n required: false,\n },\n graduations: {\n title: 'graduations.title',\n subtitle: 'graduations.subtitle',\n successMessage: 'graduations.success',\n required: false,\n },\n postGraduations: {\n title: 'postGraduations.title',\n subtitle: 'postGraduations.subtitle',\n successMessage: 'postGraduations.success',\n required: false,\n },\n doctorates: {\n title: 'doctorates.title',\n subtitle: 'doctorates.subtitle',\n successMessage: 'doctorates.success',\n required: false,\n },\n postDoctorates: {\n title: 'postDoctorates.title',\n subtitle: 'postDoctorates.subtitle',\n successMessage: 'postDoctorates.success',\n required: false,\n },\n otherCertificates: {\n title: 'otherCertificates.title',\n subtitle: 'otherCertificates.subtitle',\n successMessage: 'otherCertificates.success',\n required: false,\n },\n educationNotes: {\n title: 'educationNotes.title',\n subtitle: 'educationNotes.subtitle',\n successMessage: 'educationNotes.success',\n required: false,\n },\n\n // ── Step 7: Employment & Occupation ──\n employmentStatus: {\n title: 'employmentStatus.title',\n subtitle: 'employmentStatus.subtitle',\n successMessage: 'employmentStatus.success',\n required: false,\n optionNs: 'employment',\n },\n occupation: {\n title: 'occupation.title',\n subtitle: 'occupation.subtitle',\n successMessage: 'occupation.success',\n required: false,\n },\n workShift: {\n title: 'workShift.title',\n subtitle: 'workShift.subtitle',\n successMessage: 'workShift.success',\n required: false,\n optionNs: 'shift',\n },\n comfortableWithShift: {\n title: 'comfortableWithShift.title',\n subtitle: 'comfortableWithShift.subtitle',\n successMessage: 'comfortableWithShift.success',\n required: false,\n optionNs: 'comfort',\n },\n desiredShift: {\n title: 'desiredShift.title',\n subtitle: 'desiredShift.subtitle',\n successMessage: 'desiredShift.success',\n required: false,\n optionNs: 'shift',\n },\n incomeRange: {\n title: 'incomeRange.title',\n subtitle: 'incomeRange.subtitle',\n successMessage: 'incomeRange.success',\n required: false,\n optionNs: 'income',\n },\n dreamOccupation: {\n title: 'dreamOccupation.title',\n subtitle: 'dreamOccupation.subtitle',\n successMessage: 'dreamOccupation.success',\n required: false,\n },\n\n // ── Step 8: Mental Health & Neurodiversity ──\n neurodiverseIdentity: {\n title: 'neurodiverseIdentity.title',\n subtitle: 'neurodiverseIdentity.subtitle',\n successMessage: 'neurodiverseIdentity.success',\n required: false,\n optionNs: 'neurodiverseIdentity',\n hasDesc: true,\n },\n neurodevelopmentalConditions: {\n title: 'neurodevelopmentalConditions.title',\n subtitle: 'neurodevelopmentalConditions.subtitle',\n successMessage: 'neurodevelopmentalConditions.success',\n required: false,\n optionNs: 'neurodevelopmental',\n hasDesc: true,\n },\n mentalHealthConditions: {\n title: 'mentalHealthConditions.title',\n subtitle: 'mentalHealthConditions.subtitle',\n successMessage: 'mentalHealthConditions.success',\n required: false,\n optionNs: 'mentalHealth',\n hasDesc: true,\n },\n personalityPatterns: {\n title: 'personalityPatterns.title',\n subtitle: 'personalityPatterns.subtitle',\n successMessage: 'personalityPatterns.success',\n required: false,\n optionNs: 'personalityPattern',\n hasDesc: true,\n },\n neurologicalChronicConditions: {\n title: 'neurologicalChronicConditions.title',\n subtitle: 'neurologicalChronicConditions.subtitle',\n successMessage: 'neurologicalChronicConditions.success',\n required: false,\n optionNs: 'neurologicalChronic',\n hasDesc: true,\n },\n ageOfRealization: {\n title: 'ageOfRealization.title',\n subtitle: 'ageOfRealization.subtitle',\n successMessage: 'ageOfRealization.success',\n required: false,\n optionNs: 'ageOfRealization',\n },\n sensoryProfile: {\n title: 'sensoryProfile.title',\n subtitle: 'sensoryProfile.subtitle',\n successMessage: 'sensoryProfile.success',\n required: false,\n optionNs: 'sensoryProfile',\n },\n cognitiveStrengths: {\n title: 'cognitiveStrengths.title',\n subtitle: 'cognitiveStrengths.subtitle',\n successMessage: 'cognitiveStrengths.success',\n required: false,\n optionNs: 'cognitiveStrength',\n },\n executiveFunctionChallenges: {\n title: 'executiveFunctionChallenges.title',\n subtitle: 'executiveFunctionChallenges.subtitle',\n successMessage: 'executiveFunctionChallenges.success',\n required: false,\n optionNs: 'executiveFunctionChallenge',\n },\n learningStyle: {\n title: 'learningStyle.title',\n subtitle: 'learningStyle.subtitle',\n successMessage: 'learningStyle.success',\n required: false,\n optionNs: 'learningStyle',\n },\n communicationPreference: {\n title: 'communicationPreference.title',\n subtitle: 'communicationPreference.subtitle',\n successMessage: 'communicationPreference.success',\n required: false,\n optionNs: 'communicationPreference',\n },\n supportAndAccommodations: {\n title: 'supportAndAccommodations.title',\n subtitle: 'supportAndAccommodations.subtitle',\n successMessage: 'supportAndAccommodations.success',\n required: false,\n optionNs: 'supportAccommodation',\n },\n maskingAndBurnout: {\n title: 'maskingAndBurnout.title',\n subtitle: 'maskingAndBurnout.subtitle',\n successMessage: 'maskingAndBurnout.success',\n required: false,\n optionNs: 'maskingBurnout',\n hasDesc: true,\n },\n impactOnLife: {\n title: 'impactOnLife.title',\n subtitle: 'impactOnLife.subtitle',\n successMessage: 'impactOnLife.success',\n required: false,\n optionNs: 'impactOnLife',\n hasDesc: true,\n },\n\n // ── Step 9: Health & Lifestyle ──\n disabilityStatus: {\n title: 'disabilityStatus.title',\n subtitle: 'disabilityStatus.subtitle',\n successMessage: 'disabilityStatus.success',\n required: false,\n optionNs: 'disability',\n },\n generalHealth: {\n title: 'generalHealth.title',\n subtitle: 'generalHealth.subtitle',\n successMessage: 'generalHealth.success',\n required: false,\n optionNs: 'health',\n },\n healthInsurance: {\n title: 'healthInsurance.title',\n subtitle: 'healthInsurance.subtitle',\n successMessage: 'healthInsurance.success',\n required: false,\n optionNs: 'insurance',\n },\n diet: {\n title: 'diet.title',\n subtitle: 'diet.subtitle',\n successMessage: 'diet.success',\n required: false,\n optionNs: 'diet',\n hasDesc: true,\n },\n physicalActivity: {\n title: 'physicalActivity.title',\n subtitle: 'physicalActivity.subtitle',\n successMessage: 'physicalActivity.success',\n required: false,\n optionNs: 'activity',\n },\n sleepQuality: {\n title: 'sleepQuality.title',\n subtitle: 'sleepQuality.subtitle',\n successMessage: 'sleepQuality.success',\n required: false,\n optionNs: 'sleep',\n },\n substanceUse: {\n title: 'substanceUse.title',\n subtitle: 'substanceUse.subtitle',\n successMessage: 'substanceUse.success',\n required: false,\n optionNs: 'substance',\n },\n stressLevel: {\n title: 'stressLevel.title',\n subtitle: 'stressLevel.subtitle',\n successMessage: 'stressLevel.success',\n required: false,\n optionNs: 'stress',\n },\n\n // ── Step 10: World View & Experience ──\n viewOnAnimalCruelty: {\n title: 'viewOnAnimalCruelty.title',\n subtitle: 'viewOnAnimalCruelty.subtitle',\n successMessage: 'viewOnAnimalCruelty.success',\n required: false,\n optionNs: 'animalCruelty',\n },\n viewOnLgbtqStatements: {\n title: 'viewOnLgbtqStatements.title',\n subtitle: 'viewOnLgbtqStatements.subtitle',\n successMessage: 'viewOnLgbtqStatements.success',\n required: false,\n optionNs: 'lgbtq',\n },\n viewOnLgbtqOpinion: {\n title: 'viewOnLgbtqOpinion.title',\n subtitle: 'viewOnLgbtqOpinion.subtitle',\n successMessage: 'viewOnLgbtqOpinion.success',\n required: false,\n },\n viewOnTransgenderInclusion: {\n title: 'viewOnTransgenderInclusion.title',\n subtitle: 'viewOnTransgenderInclusion.subtitle',\n successMessage: 'viewOnTransgenderInclusion.success',\n required: false,\n optionNs: 'transgender',\n },\n viewOnTransgenderOpinion: {\n title: 'viewOnTransgenderOpinion.title',\n subtitle: 'viewOnTransgenderOpinion.subtitle',\n successMessage: 'viewOnTransgenderOpinion.success',\n required: false,\n },\n facingCasteDiscrimination: {\n title: 'facingCasteDiscrimination.title',\n subtitle: 'facingCasteDiscrimination.subtitle',\n successMessage: 'facingCasteDiscrimination.success',\n required: false,\n optionNs: 'discrimination',\n },\n casteDiscriminationPlaces: {\n title: 'casteDiscriminationPlaces.title',\n subtitle: 'casteDiscriminationPlaces.subtitle',\n successMessage: 'casteDiscriminationPlaces.success',\n required: false,\n optionNs: 'discriminationPlace',\n },\n viewOnGenderEquality: {\n title: 'viewOnGenderEquality.title',\n subtitle: 'viewOnGenderEquality.subtitle',\n successMessage: 'viewOnGenderEquality.success',\n required: false,\n optionNs: 'genderEquality',\n },\n\n // ── Step 11: Residence & Address ──\n currentAddress: {\n title: 'currentAddress.title',\n subtitle: 'currentAddress.subtitle',\n successMessage: 'currentAddress.success',\n required: false,\n },\n permanentAddress: {\n title: 'permanentAddress.title',\n subtitle: 'permanentAddress.subtitle',\n successMessage: 'permanentAddress.success',\n required: false,\n },\n homeNativePlace: {\n title: 'homeNativePlace.title',\n subtitle: 'homeNativePlace.subtitle',\n successMessage: 'homeNativePlace.success',\n required: false,\n },\n ancestralPlace: {\n title: 'ancestralPlace.title',\n subtitle: 'ancestralPlace.subtitle',\n successMessage: 'ancestralPlace.success',\n required: false,\n },\n\n // ── Step 12: Household & Economic Profile ──\n maritalStatus: {\n title: 'maritalStatus.title',\n subtitle: 'maritalStatus.subtitle',\n successMessage: 'maritalStatus.success',\n required: false,\n optionNs: 'marital',\n },\n familyMembers: {\n title: 'familyMembers.title',\n subtitle: 'familyMembers.subtitle',\n successMessage: 'familyMembers.success',\n required: false,\n optionNs: 'family',\n },\n numberOfDependents: {\n title: 'numberOfDependents.title',\n subtitle: 'numberOfDependents.subtitle',\n successMessage: 'numberOfDependents.success',\n required: false,\n },\n housingType: {\n title: 'housingType.title',\n subtitle: 'housingType.subtitle',\n successMessage: 'housingType.success',\n required: false,\n optionNs: 'housing',\n },\n householdIncome: {\n title: 'householdIncome.title',\n subtitle: 'householdIncome.subtitle',\n successMessage: 'householdIncome.success',\n required: false,\n optionNs: 'hhIncome',\n },\n bplCard: {\n title: 'bplCard.title',\n subtitle: 'bplCard.subtitle',\n successMessage: 'bplCard.success',\n required: false,\n optionNs: 'bpl',\n },\n digitalAccess: {\n title: 'digitalAccess.title',\n subtitle: 'digitalAccess.subtitle',\n successMessage: 'digitalAccess.success',\n required: false,\n optionNs: 'digital',\n },\n migrationStatus: {\n title: 'migrationStatus.title',\n subtitle: 'migrationStatus.subtitle',\n successMessage: 'migrationStatus.success',\n required: false,\n optionNs: 'migration',\n },\n landOwnership: {\n title: 'landOwnership.title',\n subtitle: 'landOwnership.subtitle',\n successMessage: 'landOwnership.success',\n optionNs: 'land',\n required: false,\n },\n primaryIncomeSource: {\n title: 'primaryIncomeSource.title',\n subtitle: 'primaryIncomeSource.subtitle',\n successMessage: 'primaryIncomeSource.success',\n optionNs: 'incomeSource',\n required: false,\n },\n};\n\n// ─── Step grouping ──────────────────────────────────────────────────────────\n\nexport const UDP_ONBOARDING_STEP_GROUPS: UdpOnboardingStepGroup[] = [\n {\n label: 'steps.profile',\n icon: '📝',\n fields: [\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n },\n {\n label: 'steps.politicalAssociation',\n icon: '🏛️',\n fields: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n 'hasContestedElection',\n 'electionLevel',\n 'electionYear',\n 'hasHeldPublicOffice',\n 'officeLevel',\n 'officeYear',\n 'networkAndCivicEngagement',\n ],\n },\n {\n label: 'steps.electoralBehaviour',\n icon: '🗳️',\n fields: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n },\n {\n label: 'steps.leadershipAmbitions',\n icon: '👑',\n fields: [\n 'participateInRevolution',\n 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\n ],\n },\n {\n label: 'steps.psychologicalAssessment',\n icon: '🧩',\n fields: ['mbtiType', 'oceanScores'],\n },\n {\n label: 'steps.education',\n icon: '🎓',\n fields: [\n 'highestQualification',\n 'education10th',\n 'education12th',\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n 'educationNotes',\n ],\n },\n {\n label: 'steps.employment',\n icon: '💼',\n fields: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n },\n {\n label: 'steps.mentalHealthNeurodiversity',\n icon: '🧠',\n fields: [\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 },\n {\n label: 'steps.healthLifestyle',\n icon: '🏥',\n fields: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n },\n {\n label: 'steps.worldView',\n icon: '🌿',\n fields: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n },\n {\n label: 'steps.residence',\n icon: '🏠',\n fields: ['currentAddress', 'permanentAddress', 'homeNativePlace', 'ancestralPlace'],\n },\n {\n label: 'steps.household',\n icon: '🏡',\n fields: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n },\n];\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\n/** Get onboarding config for a single field. */\nexport function getUdpOnboardingFieldConfig(\n fieldKey: string | undefined,\n): UdpOnboardingFieldConfig | undefined {\n if (!fieldKey) return undefined;\n return UDP_ONBOARDING_FIELDS[fieldKey];\n}\n\n/** Total number of main steps. */\nexport const UDP_TOTAL_MAIN_STEPS = UDP_ONBOARDING_STEP_GROUPS.length;\n\n/** Total number of sub-steps across all main steps. */\nexport const UDP_TOTAL_SUB_STEPS = UDP_ONBOARDING_STEP_GROUPS.reduce(\n (sum, g) => sum + g.fields.length,\n 0,\n);\n"]}
1
+ {"version":3,"file":"onboarding-config.js","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Onboarding Field Configuration\n * ====================================\n * Single source of truth for all per-field onboarding metadata.\n * Both frontend and backend import this.\n *\n * IMPORTANT: All string properties (title, subtitle, successMessage,\n * step group label) are i18n KEYS, not display text. The frontend resolves\n * them via useTranslations(\"udp\") → t(config.title).\n *\n * Translation files:\n * - messages/en/udp.json (English — under \"udp\" root key)\n * - messages/hi/udp.json (Hindi — under \"udp\" root key)\n *\n * @module udp-schema/onboarding-config\n */\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface UdpOnboardingFieldConfig {\n /** i18n key for the question heading (resolved via t(title)) */\n title: string;\n /** i18n key for help text below the heading */\n subtitle?: string;\n /** i18n key for toast message on successful save */\n successMessage: string;\n /** Whether the field is required to proceed */\n required: boolean;\n /** i18n namespace for option labels: t(`options.${optionNs}.${value}`) */\n optionNs?: string;\n /** Whether option descriptions exist (uses `options.${optionNs}Desc.*` keys) */\n hasDesc?: boolean;\n}\n\n/** Step grouping for the UDP onboarding flow */\nexport interface UdpOnboardingStepGroup {\n /** i18n key for section label */\n label: string;\n /** Emoji character (e.g., '📝', '🏛️') rendered directly */\n icon: string;\n /** Ordered list of field keys in this section */\n fields: string[];\n}\n\n// ─── Per-field onboarding metadata ──────────────────────────────────────────\n\nexport const UDP_ONBOARDING_FIELDS: Record<string, UdpOnboardingFieldConfig> = {\n // ── Step 1: Profile ──\n fullName: {\n title: 'fullName.title',\n subtitle: 'fullName.subtitle',\n successMessage: 'fullName.success',\n required: false,\n },\n gender: {\n title: 'gender.title',\n subtitle: 'gender.subtitle',\n successMessage: 'gender.success',\n required: false,\n optionNs: 'gender',\n hasDesc: true,\n },\n dateOfBirth: {\n title: 'dateOfBirth.title',\n subtitle: 'dateOfBirth.subtitle',\n successMessage: 'dateOfBirth.success',\n required: false,\n },\n whatsappNumber: {\n title: 'whatsappNumber.title',\n subtitle: 'whatsappNumber.subtitle',\n successMessage: 'whatsappNumber.success',\n required: false,\n },\n primaryLanguage: {\n title: 'primaryLanguage.title',\n subtitle: 'primaryLanguage.subtitle',\n successMessage: 'primaryLanguage.success',\n required: false,\n optionNs: 'language',\n },\n secondaryLanguages: {\n title: 'secondaryLanguages.title',\n subtitle: 'secondaryLanguages.subtitle',\n successMessage: 'secondaryLanguages.success',\n required: false,\n optionNs: 'language',\n },\n familyReligion: {\n title: 'familyReligion.title',\n subtitle: 'familyReligion.subtitle',\n successMessage: 'familyReligion.success',\n required: false,\n optionNs: 'religion',\n hasDesc: true,\n },\n personalReligion: {\n title: 'personalReligion.title',\n subtitle: 'personalReligion.subtitle',\n successMessage: 'personalReligion.success',\n required: false,\n optionNs: 'religion',\n hasDesc: true,\n },\n reservationStatus: {\n title: 'reservationStatus.title',\n subtitle: 'reservationStatus.subtitle',\n successMessage: 'reservationStatus.success',\n required: false,\n optionNs: 'reservation',\n hasDesc: true,\n },\n minorityStatus: {\n title: 'minorityStatus.title',\n subtitle: 'minorityStatus.subtitle',\n successMessage: 'minorityStatus.success',\n required: false,\n optionNs: 'minority',\n hasDesc: true,\n },\n\n // ── Step 2: Political Association & History ──\n politicalSpectrum: {\n title: 'politicalSpectrum.title',\n subtitle: 'politicalSpectrum.subtitle',\n successMessage: 'politicalSpectrum.success',\n required: false,\n optionNs: 'politicalSpectrum',\n },\n selfPartyAssociation: {\n title: 'selfPartyAssociation.title',\n subtitle: 'selfPartyAssociation.subtitle',\n successMessage: 'selfPartyAssociation.success',\n required: false,\n optionNs: 'party',\n },\n partyAssociationRole: {\n title: 'partyAssociationRole.title',\n subtitle: 'partyAssociationRole.subtitle',\n successMessage: 'partyAssociationRole.success',\n required: false,\n optionNs: 'partyRole',\n hasDesc: true,\n },\n familyPartyAssociation: {\n title: 'familyPartyAssociation.title',\n subtitle: 'familyPartyAssociation.subtitle',\n successMessage: 'familyPartyAssociation.success',\n required: false,\n optionNs: 'party',\n },\n relativesInPolitics: {\n title: 'relativesInPolitics.title',\n subtitle: 'relativesInPolitics.subtitle',\n successMessage: 'relativesInPolitics.success',\n required: false,\n optionNs: 'relativesInPolitics',\n hasDesc: true,\n },\n // Composite sub-steps. The yes/no question is the screen title; if the\n // user answers \"yes\", the level + year inputs appear inline below on the\n // same screen (not as separate sub-steps). Level / year fields still\n // exist in the data model + Zod schema (and retain their `conditionalOn`\n // metadata so save logic can validate them) — they just aren't navigated\n // to as standalone screens.\n hasContestedElection: {\n title: 'hasContestedElection.title',\n subtitle: 'hasContestedElection.subtitle',\n successMessage: 'hasContestedElection.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n hasHeldPublicOffice: {\n title: 'hasHeldPublicOffice.title',\n subtitle: 'hasHeldPublicOffice.subtitle',\n successMessage: 'hasHeldPublicOffice.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n networkAndCivicEngagement: {\n title: 'networkAndCivicEngagement.title',\n subtitle: 'networkAndCivicEngagement.subtitle',\n successMessage: 'networkAndCivicEngagement.success',\n required: false,\n optionNs: 'civic',\n },\n\n // ── Step 3: Electoral Behaviour ──\n epicNumber: {\n title: 'epicNumber.title',\n subtitle: 'epicNumber.subtitle',\n successMessage: 'epicNumber.success',\n required: false,\n },\n willVoteThisTime: {\n title: 'willVoteThisTime.title',\n subtitle: 'willVoteThisTime.subtitle',\n successMessage: 'willVoteThisTime.success',\n required: false,\n optionNs: 'willVote',\n },\n didVoteLastTime: {\n title: 'didVoteLastTime.title',\n subtitle: 'didVoteLastTime.subtitle',\n successMessage: 'didVoteLastTime.success',\n required: false,\n optionNs: 'yesNoPrefer',\n },\n votingFrequency: {\n title: 'votingFrequency.title',\n subtitle: 'votingFrequency.subtitle',\n successMessage: 'votingFrequency.success',\n required: false,\n optionNs: 'votingFreq',\n },\n primaryVotingIssues: {\n title: 'primaryVotingIssues.title',\n subtitle: 'primaryVotingIssues.subtitle',\n successMessage: 'primaryVotingIssues.success',\n required: false,\n optionNs: 'votingIssue',\n },\n\n // ── Step 4: Leadership & Ambitions ──\n participateInRevolution: {\n title: 'participateInRevolution.title',\n subtitle: 'participateInRevolution.subtitle',\n successMessage: 'participateInRevolution.success',\n required: false,\n optionNs: 'participate',\n },\n desiredPoliticalPosition: {\n title: 'desiredPoliticalPosition.title',\n subtitle: 'desiredPoliticalPosition.subtitle',\n successMessage: 'desiredPoliticalPosition.success',\n required: false,\n optionNs: 'position',\n },\n leadershipSkillset: {\n title: 'leadershipSkillset.title',\n subtitle: 'leadershipSkillset.subtitle',\n successMessage: 'leadershipSkillset.success',\n required: false,\n optionNs: 'leadershipSkill',\n },\n politicalExposure: {\n title: 'politicalExposure.title',\n subtitle: 'politicalExposure.subtitle',\n successMessage: 'politicalExposure.success',\n required: false,\n optionNs: 'exposure',\n },\n comfortWithVisibility: {\n title: 'comfortWithVisibility.title',\n subtitle: 'comfortWithVisibility.subtitle',\n successMessage: 'comfortWithVisibility.success',\n required: false,\n optionNs: 'visibility',\n },\n socialInfluenceLevel: {\n title: 'socialInfluenceLevel.title',\n subtitle: 'socialInfluenceLevel.subtitle',\n successMessage: 'socialInfluenceLevel.success',\n required: false,\n optionNs: 'influence',\n },\n pastExperience: {\n title: 'pastExperience.title',\n subtitle: 'pastExperience.subtitle',\n successMessage: 'pastExperience.success',\n required: false,\n optionNs: 'experience',\n },\n changesYouWantToBring: {\n title: 'changesYouWantToBring.title',\n subtitle: 'changesYouWantToBring.subtitle',\n successMessage: 'changesYouWantToBring.success',\n required: false,\n },\n\n // ── Step 5: Psychological Assessment ──\n mbtiType: {\n title: 'mbtiType.title',\n subtitle: 'mbtiType.subtitle',\n successMessage: 'mbtiType.success',\n required: false,\n },\n oceanScores: {\n title: 'oceanScores.title',\n subtitle: 'oceanScores.subtitle',\n successMessage: 'oceanScores.success',\n required: false,\n },\n\n // ── Step 6: Education ──\n highestQualification: {\n title: 'highestQualification.title',\n subtitle: 'highestQualification.subtitle',\n successMessage: 'highestQualification.success',\n required: false,\n },\n education10th: {\n title: 'education10th.title',\n subtitle: 'education10th.subtitle',\n successMessage: 'education10th.success',\n required: false,\n },\n education12th: {\n title: 'education12th.title',\n subtitle: 'education12th.subtitle',\n successMessage: 'education12th.success',\n required: false,\n },\n diplomas: {\n title: 'diplomas.title',\n subtitle: 'diplomas.subtitle',\n successMessage: 'diplomas.success',\n required: false,\n },\n graduations: {\n title: 'graduations.title',\n subtitle: 'graduations.subtitle',\n successMessage: 'graduations.success',\n required: false,\n },\n postGraduations: {\n title: 'postGraduations.title',\n subtitle: 'postGraduations.subtitle',\n successMessage: 'postGraduations.success',\n required: false,\n },\n doctorates: {\n title: 'doctorates.title',\n subtitle: 'doctorates.subtitle',\n successMessage: 'doctorates.success',\n required: false,\n },\n postDoctorates: {\n title: 'postDoctorates.title',\n subtitle: 'postDoctorates.subtitle',\n successMessage: 'postDoctorates.success',\n required: false,\n },\n otherCertificates: {\n title: 'otherCertificates.title',\n subtitle: 'otherCertificates.subtitle',\n successMessage: 'otherCertificates.success',\n required: false,\n },\n educationNotes: {\n title: 'educationNotes.title',\n subtitle: 'educationNotes.subtitle',\n successMessage: 'educationNotes.success',\n required: false,\n },\n\n // ── Step 7: Employment & Occupation ──\n employmentStatus: {\n title: 'employmentStatus.title',\n subtitle: 'employmentStatus.subtitle',\n successMessage: 'employmentStatus.success',\n required: false,\n optionNs: 'employment',\n },\n occupation: {\n title: 'occupation.title',\n subtitle: 'occupation.subtitle',\n successMessage: 'occupation.success',\n required: false,\n },\n workShift: {\n title: 'workShift.title',\n subtitle: 'workShift.subtitle',\n successMessage: 'workShift.success',\n required: false,\n optionNs: 'shift',\n },\n comfortableWithShift: {\n title: 'comfortableWithShift.title',\n subtitle: 'comfortableWithShift.subtitle',\n successMessage: 'comfortableWithShift.success',\n required: false,\n optionNs: 'comfort',\n },\n desiredShift: {\n title: 'desiredShift.title',\n subtitle: 'desiredShift.subtitle',\n successMessage: 'desiredShift.success',\n required: false,\n optionNs: 'shift',\n },\n incomeRange: {\n title: 'incomeRange.title',\n subtitle: 'incomeRange.subtitle',\n successMessage: 'incomeRange.success',\n required: false,\n optionNs: 'income',\n },\n dreamOccupation: {\n title: 'dreamOccupation.title',\n subtitle: 'dreamOccupation.subtitle',\n successMessage: 'dreamOccupation.success',\n required: false,\n },\n\n // ── Step 8: Mental Health & Neurodiversity ──\n neurodiverseIdentity: {\n title: 'neurodiverseIdentity.title',\n subtitle: 'neurodiverseIdentity.subtitle',\n successMessage: 'neurodiverseIdentity.success',\n required: false,\n optionNs: 'neurodiverseIdentity',\n hasDesc: true,\n },\n neurodevelopmentalConditions: {\n title: 'neurodevelopmentalConditions.title',\n subtitle: 'neurodevelopmentalConditions.subtitle',\n successMessage: 'neurodevelopmentalConditions.success',\n required: false,\n optionNs: 'neurodevelopmental',\n hasDesc: true,\n },\n mentalHealthConditions: {\n title: 'mentalHealthConditions.title',\n subtitle: 'mentalHealthConditions.subtitle',\n successMessage: 'mentalHealthConditions.success',\n required: false,\n optionNs: 'mentalHealth',\n hasDesc: true,\n },\n personalityPatterns: {\n title: 'personalityPatterns.title',\n subtitle: 'personalityPatterns.subtitle',\n successMessage: 'personalityPatterns.success',\n required: false,\n optionNs: 'personalityPattern',\n hasDesc: true,\n },\n neurologicalChronicConditions: {\n title: 'neurologicalChronicConditions.title',\n subtitle: 'neurologicalChronicConditions.subtitle',\n successMessage: 'neurologicalChronicConditions.success',\n required: false,\n optionNs: 'neurologicalChronic',\n hasDesc: true,\n },\n ageOfRealization: {\n title: 'ageOfRealization.title',\n subtitle: 'ageOfRealization.subtitle',\n successMessage: 'ageOfRealization.success',\n required: false,\n optionNs: 'ageOfRealization',\n },\n sensoryProfile: {\n title: 'sensoryProfile.title',\n subtitle: 'sensoryProfile.subtitle',\n successMessage: 'sensoryProfile.success',\n required: false,\n optionNs: 'sensoryProfile',\n },\n cognitiveStrengths: {\n title: 'cognitiveStrengths.title',\n subtitle: 'cognitiveStrengths.subtitle',\n successMessage: 'cognitiveStrengths.success',\n required: false,\n optionNs: 'cognitiveStrength',\n },\n executiveFunctionChallenges: {\n title: 'executiveFunctionChallenges.title',\n subtitle: 'executiveFunctionChallenges.subtitle',\n successMessage: 'executiveFunctionChallenges.success',\n required: false,\n optionNs: 'executiveFunctionChallenge',\n },\n learningStyle: {\n title: 'learningStyle.title',\n subtitle: 'learningStyle.subtitle',\n successMessage: 'learningStyle.success',\n required: false,\n optionNs: 'learningStyle',\n },\n communicationPreference: {\n title: 'communicationPreference.title',\n subtitle: 'communicationPreference.subtitle',\n successMessage: 'communicationPreference.success',\n required: false,\n optionNs: 'communicationPreference',\n },\n supportAndAccommodations: {\n title: 'supportAndAccommodations.title',\n subtitle: 'supportAndAccommodations.subtitle',\n successMessage: 'supportAndAccommodations.success',\n required: false,\n optionNs: 'supportAccommodation',\n },\n maskingAndBurnout: {\n title: 'maskingAndBurnout.title',\n subtitle: 'maskingAndBurnout.subtitle',\n successMessage: 'maskingAndBurnout.success',\n required: false,\n optionNs: 'maskingBurnout',\n hasDesc: true,\n },\n impactOnLife: {\n title: 'impactOnLife.title',\n subtitle: 'impactOnLife.subtitle',\n successMessage: 'impactOnLife.success',\n required: false,\n optionNs: 'impactOnLife',\n hasDesc: true,\n },\n\n // ── Step 9: Health & Lifestyle ──\n disabilityStatus: {\n title: 'disabilityStatus.title',\n subtitle: 'disabilityStatus.subtitle',\n successMessage: 'disabilityStatus.success',\n required: false,\n optionNs: 'disability',\n },\n generalHealth: {\n title: 'generalHealth.title',\n subtitle: 'generalHealth.subtitle',\n successMessage: 'generalHealth.success',\n required: false,\n optionNs: 'health',\n },\n healthInsurance: {\n title: 'healthInsurance.title',\n subtitle: 'healthInsurance.subtitle',\n successMessage: 'healthInsurance.success',\n required: false,\n optionNs: 'insurance',\n },\n diet: {\n title: 'diet.title',\n subtitle: 'diet.subtitle',\n successMessage: 'diet.success',\n required: false,\n optionNs: 'diet',\n hasDesc: true,\n },\n physicalActivity: {\n title: 'physicalActivity.title',\n subtitle: 'physicalActivity.subtitle',\n successMessage: 'physicalActivity.success',\n required: false,\n optionNs: 'activity',\n },\n sleepQuality: {\n title: 'sleepQuality.title',\n subtitle: 'sleepQuality.subtitle',\n successMessage: 'sleepQuality.success',\n required: false,\n optionNs: 'sleep',\n },\n substanceUse: {\n title: 'substanceUse.title',\n subtitle: 'substanceUse.subtitle',\n successMessage: 'substanceUse.success',\n required: false,\n optionNs: 'substance',\n },\n stressLevel: {\n title: 'stressLevel.title',\n subtitle: 'stressLevel.subtitle',\n successMessage: 'stressLevel.success',\n required: false,\n optionNs: 'stress',\n },\n\n // ── Step 10: World View & Experience ──\n viewOnAnimalCruelty: {\n title: 'viewOnAnimalCruelty.title',\n subtitle: 'viewOnAnimalCruelty.subtitle',\n successMessage: 'viewOnAnimalCruelty.success',\n required: false,\n optionNs: 'animalCruelty',\n },\n viewOnLgbtqStatements: {\n title: 'viewOnLgbtqStatements.title',\n subtitle: 'viewOnLgbtqStatements.subtitle',\n successMessage: 'viewOnLgbtqStatements.success',\n required: false,\n optionNs: 'lgbtq',\n },\n viewOnLgbtqOpinion: {\n title: 'viewOnLgbtqOpinion.title',\n subtitle: 'viewOnLgbtqOpinion.subtitle',\n successMessage: 'viewOnLgbtqOpinion.success',\n required: false,\n },\n viewOnTransgenderInclusion: {\n title: 'viewOnTransgenderInclusion.title',\n subtitle: 'viewOnTransgenderInclusion.subtitle',\n successMessage: 'viewOnTransgenderInclusion.success',\n required: false,\n optionNs: 'transgender',\n },\n viewOnTransgenderOpinion: {\n title: 'viewOnTransgenderOpinion.title',\n subtitle: 'viewOnTransgenderOpinion.subtitle',\n successMessage: 'viewOnTransgenderOpinion.success',\n required: false,\n },\n facingCasteDiscrimination: {\n title: 'facingCasteDiscrimination.title',\n subtitle: 'facingCasteDiscrimination.subtitle',\n successMessage: 'facingCasteDiscrimination.success',\n required: false,\n optionNs: 'discrimination',\n },\n casteDiscriminationPlaces: {\n title: 'casteDiscriminationPlaces.title',\n subtitle: 'casteDiscriminationPlaces.subtitle',\n successMessage: 'casteDiscriminationPlaces.success',\n required: false,\n optionNs: 'discriminationPlace',\n },\n viewOnGenderEquality: {\n title: 'viewOnGenderEquality.title',\n subtitle: 'viewOnGenderEquality.subtitle',\n successMessage: 'viewOnGenderEquality.success',\n required: false,\n optionNs: 'genderEquality',\n },\n\n // ── Step 11: Residence & Address ──\n currentAddress: {\n title: 'currentAddress.title',\n subtitle: 'currentAddress.subtitle',\n successMessage: 'currentAddress.success',\n required: false,\n },\n permanentAddress: {\n title: 'permanentAddress.title',\n subtitle: 'permanentAddress.subtitle',\n successMessage: 'permanentAddress.success',\n required: false,\n },\n homeNativePlace: {\n title: 'homeNativePlace.title',\n subtitle: 'homeNativePlace.subtitle',\n successMessage: 'homeNativePlace.success',\n required: false,\n },\n ancestralPlace: {\n title: 'ancestralPlace.title',\n subtitle: 'ancestralPlace.subtitle',\n successMessage: 'ancestralPlace.success',\n required: false,\n },\n\n // ── Step 12: Household & Economic Profile ──\n maritalStatus: {\n title: 'maritalStatus.title',\n subtitle: 'maritalStatus.subtitle',\n successMessage: 'maritalStatus.success',\n required: false,\n optionNs: 'marital',\n },\n familyMembers: {\n title: 'familyMembers.title',\n subtitle: 'familyMembers.subtitle',\n successMessage: 'familyMembers.success',\n required: false,\n optionNs: 'family',\n },\n numberOfDependents: {\n title: 'numberOfDependents.title',\n subtitle: 'numberOfDependents.subtitle',\n successMessage: 'numberOfDependents.success',\n required: false,\n },\n housingType: {\n title: 'housingType.title',\n subtitle: 'housingType.subtitle',\n successMessage: 'housingType.success',\n required: false,\n optionNs: 'housing',\n },\n householdIncome: {\n title: 'householdIncome.title',\n subtitle: 'householdIncome.subtitle',\n successMessage: 'householdIncome.success',\n required: false,\n optionNs: 'hhIncome',\n },\n bplCard: {\n title: 'bplCard.title',\n subtitle: 'bplCard.subtitle',\n successMessage: 'bplCard.success',\n required: false,\n optionNs: 'bpl',\n },\n digitalAccess: {\n title: 'digitalAccess.title',\n subtitle: 'digitalAccess.subtitle',\n successMessage: 'digitalAccess.success',\n required: false,\n optionNs: 'digital',\n },\n migrationStatus: {\n title: 'migrationStatus.title',\n subtitle: 'migrationStatus.subtitle',\n successMessage: 'migrationStatus.success',\n required: false,\n optionNs: 'migration',\n },\n landOwnership: {\n title: 'landOwnership.title',\n subtitle: 'landOwnership.subtitle',\n successMessage: 'landOwnership.success',\n optionNs: 'land',\n required: false,\n },\n primaryIncomeSource: {\n title: 'primaryIncomeSource.title',\n subtitle: 'primaryIncomeSource.subtitle',\n successMessage: 'primaryIncomeSource.success',\n optionNs: 'incomeSource',\n required: false,\n },\n};\n\n// ─── Step grouping ──────────────────────────────────────────────────────────\n\nexport const UDP_ONBOARDING_STEP_GROUPS: UdpOnboardingStepGroup[] = [\n {\n label: 'steps.profile',\n icon: '📝',\n fields: [\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n },\n {\n label: 'steps.politicalAssociation',\n icon: '🏛️',\n fields: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n // Composite sub-steps — see configFields above. Level/year are\n // rendered inline within these screens, not as separate sub-steps.\n 'hasContestedElection',\n 'hasHeldPublicOffice',\n 'networkAndCivicEngagement',\n ],\n },\n {\n label: 'steps.electoralBehaviour',\n icon: '🗳️',\n fields: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n },\n {\n label: 'steps.leadershipAmbitions',\n icon: '👑',\n fields: [\n 'participateInRevolution',\n 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\n ],\n },\n {\n label: 'steps.psychologicalAssessment',\n icon: '🧩',\n fields: ['mbtiType', 'oceanScores'],\n },\n {\n label: 'steps.education',\n icon: '🎓',\n fields: [\n 'highestQualification',\n 'education10th',\n 'education12th',\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n 'educationNotes',\n ],\n },\n {\n label: 'steps.employment',\n icon: '💼',\n fields: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n },\n {\n label: 'steps.mentalHealthNeurodiversity',\n icon: '🧠',\n fields: [\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 },\n {\n label: 'steps.healthLifestyle',\n icon: '🏥',\n fields: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n },\n {\n label: 'steps.worldView',\n icon: '🌿',\n fields: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n },\n {\n label: 'steps.residence',\n icon: '🏠',\n fields: ['currentAddress', 'permanentAddress', 'homeNativePlace', 'ancestralPlace'],\n },\n {\n label: 'steps.household',\n icon: '🏡',\n fields: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n },\n];\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\n/** Get onboarding config for a single field. */\nexport function getUdpOnboardingFieldConfig(\n fieldKey: string | undefined,\n): UdpOnboardingFieldConfig | undefined {\n if (!fieldKey) return undefined;\n return UDP_ONBOARDING_FIELDS[fieldKey];\n}\n\n/** Total number of main steps. */\nexport const UDP_TOTAL_MAIN_STEPS = UDP_ONBOARDING_STEP_GROUPS.length;\n\n/** Total number of sub-steps across all main steps. */\nexport const UDP_TOTAL_SUB_STEPS = UDP_ONBOARDING_STEP_GROUPS.reduce(\n (sum, g) => sum + g.fields.length,\n 0,\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"02-political.d.ts","sourceRoot":"","sources":["../../src/profile-fields/02-political.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD3B,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCf,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAMX,eAAO,MAAM,oBAAoB,EAAE,UA0JlC,CAAC"}
1
+ {"version":3,"file":"02-political.d.ts","sourceRoot":"","sources":["../../src/profile-fields/02-political.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD3B,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCf,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAMX,eAAO,MAAM,oBAAoB,EAAE,UA0JlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"02-political.js","sourceRoot":"","sources":["../../src/profile-fields/02-political.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldGroup } from './types.js';\nimport { yesNoPreferOptions } from './03-electoral.js';\n\nexport const politicalSpectrumOptions = [\n {\n value: 'far_left',\n label: 'Far Left',\n description: 'Radical progressive — systemic change, social justice, anti-capitalist',\n },\n {\n value: 'left',\n label: 'Left',\n description: 'Progressive — strong social safety net, equality, regulation',\n },\n {\n value: 'centre_left',\n label: 'Centre-Left',\n description: 'Liberal — social freedoms, moderate reform, inclusive policies',\n },\n {\n value: 'centrist',\n label: 'Centrist',\n description: 'Pragmatic middle — picks issues over ideology, open to both sides',\n },\n {\n value: 'centre_right',\n label: 'Centre-Right',\n description:\n 'Moderate conservative — fiscal discipline, traditional institutions, gradual change',\n },\n {\n value: 'right',\n label: 'Right',\n description: 'Conservative — limited government, free markets, cultural tradition',\n },\n {\n value: 'far_right',\n label: 'Far Right',\n description: 'Nationalist — strong borders, traditional values, national identity first',\n },\n {\n value: 'libertarian',\n label: 'Libertarian',\n description: 'Maximum personal freedom — minimal government in both social and economic life',\n },\n {\n value: 'apolitical',\n label: 'Apolitical',\n description: 'Not interested in politics — focus on personal life',\n },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Indian political parties — exhaustive list of nationally- or state-recognized\n * parties active as of 2026. Ordering rationale:\n * 1. `none` + `independent` are pinned to the top — they're the most-\n * common selections for users who don't identify with any party,\n * and surfacing them first reduces scroll for the majority case.\n * 2. National parties next (BJP, INC, AAP, BSP, SP, TMC), then state /\n * regional parties.\n * 3. `other` and `prefer_not_to_say` stay at the bottom (standard\n * \"escape hatch\" position).\n *\n * Includes post-2023 splits (NCP-SP, Shiv Sena UBT).\n */\nexport const partyOptions = [\n { value: 'none', label: 'No party affiliation' },\n { value: 'independent', label: 'Independent candidate' },\n { value: 'bjp', label: 'BJP' },\n { value: 'inc', label: 'Indian National Congress (INC)' },\n { value: 'aap', label: 'Aam Aadmi Party (AAP)' },\n { value: 'bsp', label: 'Bahujan Samaj Party (BSP)' },\n { value: 'sp', label: 'Samajwadi Party (SP)' },\n { value: 'tmc', label: 'Trinamool Congress (TMC)' },\n { value: 'dmk', label: 'DMK' },\n { value: 'aiadmk', label: 'AIADMK' },\n { value: 'ncp', label: 'NCP (Ajit Pawar)' },\n { value: 'ncp_sp', label: 'NCP (Sharad Pawar)' },\n { value: 'shiv_sena', label: 'Shiv Sena (Shinde)' },\n { value: 'shiv_sena_ubt', label: 'Shiv Sena (UBT)' },\n { value: 'aimim', label: 'AIMIM' },\n { value: 'jdu', label: 'JD(U)' },\n { value: 'jds', label: 'JD(S)' },\n { value: 'rjd', label: 'RJD' },\n { value: 'cpim', label: 'CPI(M)' },\n { value: 'cpi', label: 'CPI' },\n { value: 'ysrcp', label: 'YSRCP' },\n { value: 'tdp', label: 'TDP' },\n { value: 'brs', label: 'BRS (Bharat Rashtra Samithi)' },\n { value: 'bjd', label: 'BJD' },\n { value: 'jmm', label: 'JMM' },\n { value: 'sad', label: 'Shiromani Akali Dal (SAD)' },\n { value: 'rld', label: 'Rashtriya Lok Dal (RLD)' },\n { value: 'aiudf', label: 'AIUDF' },\n { value: 'jkn', label: 'J&K National Conference' },\n { value: 'inld', label: 'Indian National Lok Dal (INLD)' },\n { value: 'iuml', label: 'Indian Union Muslim League (IUML)' },\n { value: 'mns', label: 'Maharashtra Navnirman Sena (MNS)' },\n { value: 'agp', label: 'Asom Gana Parishad (AGP)' },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Civic-engagement categories — expanded to cover organizational forms\n * common in Indian political/social life, including ideological networks\n * (RSS / Sangh), farmers' bodies, women's collectives, student unions,\n * and party youth wings.\n */\nexport const civicEngagementOptions = [\n { value: 'ngo', label: 'NGO / Non-profit' },\n { value: 'trade_union', label: 'Trade Union' },\n { value: 'farmers_organization', label: \"Farmers' Organization / Kisan Sangathan\" },\n { value: 'cooperative', label: 'Cooperative Society' },\n { value: 'resident_association', label: 'Resident Welfare Association' },\n { value: 'self_help_group', label: 'Self Help Group (SHG)' },\n { value: 'womens_collective', label: \"Women's Collective / Mahila Mandal\" },\n { value: 'youth_club', label: 'Youth Club' },\n { value: 'student_union', label: 'Student Union' },\n { value: 'political_party_youth_wing', label: 'Political Party Youth Wing (BJYM / IYC / etc.)' },\n { value: 'rss_swayamsevak', label: 'RSS / Swayamsevak (Sangh network)' },\n { value: 'religious_organization', label: 'Religious Organization' },\n { value: 'caste_association', label: 'Caste Association' },\n { value: 'professional_body', label: 'Professional Body' },\n { value: 'environmental_group', label: 'Environmental Group' },\n { value: 'cultural_association', label: 'Cultural Association' },\n { value: 'alumni_association', label: 'Alumni Association' },\n { value: 'none', label: 'None' },\n { value: 'other', label: 'Other' },\n] as const;\n\n/**\n * Nature of the respondent's association with their political party.\n * Differentiates card-carrying members from sympathizers and office-bearers.\n */\nexport const partyAssociationRoleOptions = [\n {\n value: 'member',\n label: 'Member',\n description: 'Primary / card-carrying member of the party',\n },\n {\n value: 'active_worker',\n label: 'Active Worker',\n description: 'Campaigning, organizing, and on-ground work',\n },\n {\n value: 'office_bearer',\n label: 'Office Bearer',\n description: 'Hold an official post in the party',\n },\n {\n value: 'candidate',\n label: 'Candidate',\n description: 'Contested or planning to contest on this party ticket',\n },\n {\n value: 'spokesperson',\n label: 'Spokesperson',\n description: 'Represent the party publicly or in media',\n },\n {\n value: 'volunteer',\n label: 'Volunteer',\n description: 'Occasional volunteer work without formal membership',\n },\n {\n value: 'sympathizer',\n label: 'Sympathizer',\n description: 'Support the party but no formal role',\n },\n { value: 'none', label: 'None', description: 'No formal association' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Family / relatives in politics — captures intergenerational political\n * involvement that shapes political consciousness in India.\n */\nexport const relativesInPoliticsOptions = [\n { value: 'none', label: 'No one', description: 'No relatives are in politics' },\n {\n value: 'immediate_family',\n label: 'Immediate family',\n description: 'Parents, siblings, spouse, or children',\n },\n {\n value: 'extended_family',\n label: 'Extended family',\n description: 'Uncles, aunts, cousins, or in-laws',\n },\n { value: 'both', label: 'Both immediate and extended' },\n { value: 'dont_know', label: \"Don't know\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Levels of elected / appointed office — used for both office held and\n * election contested, so the two use the same enum.\n */\nexport const officeElectionLevelOptions = [\n { value: 'panchayat', label: 'Panchayat / Gram' },\n { value: 'ward', label: 'Ward / Nagar Palika' },\n { value: 'municipality', label: 'Municipality' },\n { value: 'block', label: 'Block / Tehsil' },\n { value: 'district', label: 'District / Zila Parishad' },\n { value: 'assembly', label: 'State Assembly (MLA)' },\n { value: 'parliament', label: 'Parliament (MP)' },\n { value: 'other', label: 'Other' },\n] as const;\n\n// `yesNoPreferOptions` (used by hasContestedElection +\n// hasHeldPublicOffice) lives in 03-electoral.ts where it was first\n// introduced for `didVoteLastTime`. Imported above; not re-defined.\n\nexport const politicalAssociation: FieldGroup = {\n key: 'political_association',\n label: 'Political Association & History',\n step: 2,\n description: 'Your political spectrum, party associations, and civic engagement.',\n fields: [\n {\n order: 1,\n key: 'politicalSpectrum',\n label: 'Political Spectrum',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...politicalSpectrumOptions],\n },\n {\n order: 2,\n key: 'selfPartyAssociation',\n label: 'Your Party Association',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyOptions],\n },\n {\n // Only ask about role if the respondent has a party association.\n order: 3,\n key: 'partyAssociationRole',\n label: 'Your Role in the Party',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyAssociationRoleOptions],\n conditionalOn: {\n field: 'selfPartyAssociation',\n notIn: ['none', 'prefer_not_to_say'],\n },\n },\n {\n order: 4,\n key: 'familyPartyAssociation',\n label: 'Family Party Association',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyOptions],\n },\n {\n order: 5,\n key: 'relativesInPolitics',\n label: 'Relatives in Politics',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...relativesInPoliticsOptions],\n },\n // Replaces the legacy single composite `publicOfficeAndElections`\n // sub-step (a 9-field nested object) with six simpler sub-steps.\n // Each yes/no question gets its own screen; the level + year\n // follow-ups are gated on `yes` so users who answer `no` /\n // `prefer_not_to_say` skip straight past them. Position-name /\n // notes / result fields from the legacy shape are dropped — they\n // were free-text fields with low completion in the dense composite\n // UI, and the simpler shape matches the rest of UDP onboarding.\n {\n order: 6,\n key: 'hasContestedElection',\n label: 'Have you ever contested an election?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...yesNoPreferOptions],\n },\n {\n order: 7,\n key: 'electionLevel',\n label: 'At which level did you contest?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...officeElectionLevelOptions],\n conditionalOn: {\n field: 'hasContestedElection',\n values: ['yes'],\n },\n },\n {\n order: 8,\n key: 'electionYear',\n label: 'In which year did you contest?',\n type: 'number',\n step: 2,\n isOnboarding: true,\n optional: true,\n conditionalOn: {\n field: 'hasContestedElection',\n values: ['yes'],\n },\n },\n {\n order: 9,\n key: 'hasHeldPublicOffice',\n label: 'Have you ever held a public office?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...yesNoPreferOptions],\n },\n {\n order: 10,\n key: 'officeLevel',\n label: 'At which level did you hold office?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...officeElectionLevelOptions],\n conditionalOn: {\n field: 'hasHeldPublicOffice',\n values: ['yes'],\n },\n },\n {\n order: 11,\n key: 'officeYear',\n label: 'In which year did you hold office?',\n type: 'number',\n step: 2,\n isOnboarding: true,\n optional: true,\n conditionalOn: {\n field: 'hasHeldPublicOffice',\n values: ['yes'],\n },\n },\n {\n order: 12,\n key: 'networkAndCivicEngagement',\n label: 'Civic Engagement',\n type: 'multi_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...civicEngagementOptions],\n },\n ],\n};\n"]}
1
+ {"version":3,"file":"02-political.js","sourceRoot":"","sources":["../../src/profile-fields/02-political.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC;QACE,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,wEAAwE;KACtF;IACD;QACE,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,8DAA8D;KAC5E;IACD;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,mEAAmE;KACjF;IACD;QACE,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,qEAAqE;KACnF;IACD;QACE,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,2EAA2E;KACzF;IACD;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,qDAAqD;KACnE;IACD,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;CAClD,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAChD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACxD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE;IACzD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAChD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE;IACpD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC9C,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACnD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC3C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAChD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACnD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACpD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAChC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAChC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;IAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACvD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE;IACpD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE;IAClD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE;IAClD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gCAAgC,EAAE;IAC1D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mCAAmC,EAAE;IAC7D,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE;IAC3D,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACnD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;CAClD,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC3C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACnF,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE;IACtD,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACxE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC5D,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,oCAAoC,EAAE;IAC3E,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,gDAAgD,EAAE;IAChG,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,mCAAmC,EAAE;IACxE,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACpE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC1D,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC1D,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC9D,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAChE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAC5D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CAC1B,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,oCAAoC;KAClD;IACD;QACE,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,sCAAsC;KACpD;IACD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACtE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;CAClD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC/E;QACE,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,wCAAwC;KACtD;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,oCAAoC;KAClD;IACD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;IACvD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;CAClD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACjD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC/C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;IAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACxD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACpD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACjD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CAC1B,CAAC;AAEX,uDAAuD;AACvD,mEAAmE;AACnE,oEAAoE;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,GAAG,EAAE,uBAAuB;IAC5B,KAAK,EAAE,iCAAiC;IACxC,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,oEAAoE;IACjF,MAAM,EAAE;QACN;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,mBAAmB;YACxB,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,wBAAwB,CAAC;SACvC;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;SAC3B;QACD;YACE,iEAAiE;YACjE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,2BAA2B,CAAC;YACzC,aAAa,EAAE;gBACb,KAAK,EAAE,sBAAsB;gBAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC;aACrC;SACF;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,wBAAwB;YAC7B,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;SAC3B;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,qBAAqB;YAC1B,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,0BAA0B,CAAC;SACzC;QACD,kEAAkE;QAClE,iEAAiE;QACjE,6DAA6D;QAC7D,2DAA2D;QAC3D,+DAA+D;QAC/D,iEAAiE;QACjE,mEAAmE;QACnE,gEAAgE;QAChE;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE,sCAAsC;YAC7C,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;SACjC;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,iCAAiC;YACxC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,0BAA0B,CAAC;YACxC,aAAa,EAAE;gBACb,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC;aAChB;SACF;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,cAAc;YACnB,KAAK,EAAE,gCAAgC;YACvC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE;gBACb,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC;aAChB;SACF;QACD;YACE,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,qBAAqB;YAC1B,KAAK,EAAE,qCAAqC;YAC5C,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;SACjC;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,qCAAqC;YAC5C,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,0BAA0B,CAAC;YACxC,aAAa,EAAE;gBACb,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EAAE,CAAC,KAAK,CAAC;aAChB;SACF;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,oCAAoC;YAC3C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE;gBACb,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EAAE,CAAC,KAAK,CAAC;aAChB;SACF;QACD;YACE,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,2BAA2B;YAChC,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC;YACP,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,GAAG,sBAAsB,CAAC;SACrC;KACF;CACF,CAAC","sourcesContent":["import { yesNoPreferOptions } from './03-electoral.js';\nimport type { FieldGroup } from './types.js';\n\nexport const politicalSpectrumOptions = [\n {\n value: 'far_left',\n label: 'Far Left',\n description: 'Radical progressive — systemic change, social justice, anti-capitalist',\n },\n {\n value: 'left',\n label: 'Left',\n description: 'Progressive — strong social safety net, equality, regulation',\n },\n {\n value: 'centre_left',\n label: 'Centre-Left',\n description: 'Liberal — social freedoms, moderate reform, inclusive policies',\n },\n {\n value: 'centrist',\n label: 'Centrist',\n description: 'Pragmatic middle — picks issues over ideology, open to both sides',\n },\n {\n value: 'centre_right',\n label: 'Centre-Right',\n description:\n 'Moderate conservative — fiscal discipline, traditional institutions, gradual change',\n },\n {\n value: 'right',\n label: 'Right',\n description: 'Conservative — limited government, free markets, cultural tradition',\n },\n {\n value: 'far_right',\n label: 'Far Right',\n description: 'Nationalist — strong borders, traditional values, national identity first',\n },\n {\n value: 'libertarian',\n label: 'Libertarian',\n description: 'Maximum personal freedom — minimal government in both social and economic life',\n },\n {\n value: 'apolitical',\n label: 'Apolitical',\n description: 'Not interested in politics — focus on personal life',\n },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Indian political parties — exhaustive list of nationally- or state-recognized\n * parties active as of 2026. Ordering rationale:\n * 1. `none` + `independent` are pinned to the top — they're the most-\n * common selections for users who don't identify with any party,\n * and surfacing them first reduces scroll for the majority case.\n * 2. National parties next (BJP, INC, AAP, BSP, SP, TMC), then state /\n * regional parties.\n * 3. `other` and `prefer_not_to_say` stay at the bottom (standard\n * \"escape hatch\" position).\n *\n * Includes post-2023 splits (NCP-SP, Shiv Sena UBT).\n */\nexport const partyOptions = [\n { value: 'none', label: 'No party affiliation' },\n { value: 'independent', label: 'Independent candidate' },\n { value: 'bjp', label: 'BJP' },\n { value: 'inc', label: 'Indian National Congress (INC)' },\n { value: 'aap', label: 'Aam Aadmi Party (AAP)' },\n { value: 'bsp', label: 'Bahujan Samaj Party (BSP)' },\n { value: 'sp', label: 'Samajwadi Party (SP)' },\n { value: 'tmc', label: 'Trinamool Congress (TMC)' },\n { value: 'dmk', label: 'DMK' },\n { value: 'aiadmk', label: 'AIADMK' },\n { value: 'ncp', label: 'NCP (Ajit Pawar)' },\n { value: 'ncp_sp', label: 'NCP (Sharad Pawar)' },\n { value: 'shiv_sena', label: 'Shiv Sena (Shinde)' },\n { value: 'shiv_sena_ubt', label: 'Shiv Sena (UBT)' },\n { value: 'aimim', label: 'AIMIM' },\n { value: 'jdu', label: 'JD(U)' },\n { value: 'jds', label: 'JD(S)' },\n { value: 'rjd', label: 'RJD' },\n { value: 'cpim', label: 'CPI(M)' },\n { value: 'cpi', label: 'CPI' },\n { value: 'ysrcp', label: 'YSRCP' },\n { value: 'tdp', label: 'TDP' },\n { value: 'brs', label: 'BRS (Bharat Rashtra Samithi)' },\n { value: 'bjd', label: 'BJD' },\n { value: 'jmm', label: 'JMM' },\n { value: 'sad', label: 'Shiromani Akali Dal (SAD)' },\n { value: 'rld', label: 'Rashtriya Lok Dal (RLD)' },\n { value: 'aiudf', label: 'AIUDF' },\n { value: 'jkn', label: 'J&K National Conference' },\n { value: 'inld', label: 'Indian National Lok Dal (INLD)' },\n { value: 'iuml', label: 'Indian Union Muslim League (IUML)' },\n { value: 'mns', label: 'Maharashtra Navnirman Sena (MNS)' },\n { value: 'agp', label: 'Asom Gana Parishad (AGP)' },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Civic-engagement categories — expanded to cover organizational forms\n * common in Indian political/social life, including ideological networks\n * (RSS / Sangh), farmers' bodies, women's collectives, student unions,\n * and party youth wings.\n */\nexport const civicEngagementOptions = [\n { value: 'ngo', label: 'NGO / Non-profit' },\n { value: 'trade_union', label: 'Trade Union' },\n { value: 'farmers_organization', label: \"Farmers' Organization / Kisan Sangathan\" },\n { value: 'cooperative', label: 'Cooperative Society' },\n { value: 'resident_association', label: 'Resident Welfare Association' },\n { value: 'self_help_group', label: 'Self Help Group (SHG)' },\n { value: 'womens_collective', label: \"Women's Collective / Mahila Mandal\" },\n { value: 'youth_club', label: 'Youth Club' },\n { value: 'student_union', label: 'Student Union' },\n { value: 'political_party_youth_wing', label: 'Political Party Youth Wing (BJYM / IYC / etc.)' },\n { value: 'rss_swayamsevak', label: 'RSS / Swayamsevak (Sangh network)' },\n { value: 'religious_organization', label: 'Religious Organization' },\n { value: 'caste_association', label: 'Caste Association' },\n { value: 'professional_body', label: 'Professional Body' },\n { value: 'environmental_group', label: 'Environmental Group' },\n { value: 'cultural_association', label: 'Cultural Association' },\n { value: 'alumni_association', label: 'Alumni Association' },\n { value: 'none', label: 'None' },\n { value: 'other', label: 'Other' },\n] as const;\n\n/**\n * Nature of the respondent's association with their political party.\n * Differentiates card-carrying members from sympathizers and office-bearers.\n */\nexport const partyAssociationRoleOptions = [\n {\n value: 'member',\n label: 'Member',\n description: 'Primary / card-carrying member of the party',\n },\n {\n value: 'active_worker',\n label: 'Active Worker',\n description: 'Campaigning, organizing, and on-ground work',\n },\n {\n value: 'office_bearer',\n label: 'Office Bearer',\n description: 'Hold an official post in the party',\n },\n {\n value: 'candidate',\n label: 'Candidate',\n description: 'Contested or planning to contest on this party ticket',\n },\n {\n value: 'spokesperson',\n label: 'Spokesperson',\n description: 'Represent the party publicly or in media',\n },\n {\n value: 'volunteer',\n label: 'Volunteer',\n description: 'Occasional volunteer work without formal membership',\n },\n {\n value: 'sympathizer',\n label: 'Sympathizer',\n description: 'Support the party but no formal role',\n },\n { value: 'none', label: 'None', description: 'No formal association' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Family / relatives in politics — captures intergenerational political\n * involvement that shapes political consciousness in India.\n */\nexport const relativesInPoliticsOptions = [\n { value: 'none', label: 'No one', description: 'No relatives are in politics' },\n {\n value: 'immediate_family',\n label: 'Immediate family',\n description: 'Parents, siblings, spouse, or children',\n },\n {\n value: 'extended_family',\n label: 'Extended family',\n description: 'Uncles, aunts, cousins, or in-laws',\n },\n { value: 'both', label: 'Both immediate and extended' },\n { value: 'dont_know', label: \"Don't know\" },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\n/**\n * Levels of elected / appointed office — used for both office held and\n * election contested, so the two use the same enum.\n */\nexport const officeElectionLevelOptions = [\n { value: 'panchayat', label: 'Panchayat / Gram' },\n { value: 'ward', label: 'Ward / Nagar Palika' },\n { value: 'municipality', label: 'Municipality' },\n { value: 'block', label: 'Block / Tehsil' },\n { value: 'district', label: 'District / Zila Parishad' },\n { value: 'assembly', label: 'State Assembly (MLA)' },\n { value: 'parliament', label: 'Parliament (MP)' },\n { value: 'other', label: 'Other' },\n] as const;\n\n// `yesNoPreferOptions` (used by hasContestedElection +\n// hasHeldPublicOffice) lives in 03-electoral.ts where it was first\n// introduced for `didVoteLastTime`. Imported above; not re-defined.\n\nexport const politicalAssociation: FieldGroup = {\n key: 'political_association',\n label: 'Political Association & History',\n step: 2,\n description: 'Your political spectrum, party associations, and civic engagement.',\n fields: [\n {\n order: 1,\n key: 'politicalSpectrum',\n label: 'Political Spectrum',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...politicalSpectrumOptions],\n },\n {\n order: 2,\n key: 'selfPartyAssociation',\n label: 'Your Party Association',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyOptions],\n },\n {\n // Only ask about role if the respondent has a party association.\n order: 3,\n key: 'partyAssociationRole',\n label: 'Your Role in the Party',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyAssociationRoleOptions],\n conditionalOn: {\n field: 'selfPartyAssociation',\n notIn: ['none', 'prefer_not_to_say'],\n },\n },\n {\n order: 4,\n key: 'familyPartyAssociation',\n label: 'Family Party Association',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...partyOptions],\n },\n {\n order: 5,\n key: 'relativesInPolitics',\n label: 'Relatives in Politics',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...relativesInPoliticsOptions],\n },\n // Replaces the legacy single composite `publicOfficeAndElections`\n // sub-step (a 9-field nested object) with six simpler sub-steps.\n // Each yes/no question gets its own screen; the level + year\n // follow-ups are gated on `yes` so users who answer `no` /\n // `prefer_not_to_say` skip straight past them. Position-name /\n // notes / result fields from the legacy shape are dropped — they\n // were free-text fields with low completion in the dense composite\n // UI, and the simpler shape matches the rest of UDP onboarding.\n {\n order: 6,\n key: 'hasContestedElection',\n label: 'Have you ever contested an election?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...yesNoPreferOptions],\n },\n {\n order: 7,\n key: 'electionLevel',\n label: 'At which level did you contest?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...officeElectionLevelOptions],\n conditionalOn: {\n field: 'hasContestedElection',\n values: ['yes'],\n },\n },\n {\n order: 8,\n key: 'electionYear',\n label: 'In which year did you contest?',\n type: 'number',\n step: 2,\n isOnboarding: true,\n optional: true,\n conditionalOn: {\n field: 'hasContestedElection',\n values: ['yes'],\n },\n },\n {\n order: 9,\n key: 'hasHeldPublicOffice',\n label: 'Have you ever held a public office?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...yesNoPreferOptions],\n },\n {\n order: 10,\n key: 'officeLevel',\n label: 'At which level did you hold office?',\n type: 'single_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...officeElectionLevelOptions],\n conditionalOn: {\n field: 'hasHeldPublicOffice',\n values: ['yes'],\n },\n },\n {\n order: 11,\n key: 'officeYear',\n label: 'In which year did you hold office?',\n type: 'number',\n step: 2,\n isOnboarding: true,\n optional: true,\n conditionalOn: {\n field: 'hasHeldPublicOffice',\n values: ['yes'],\n },\n },\n {\n order: 12,\n key: 'networkAndCivicEngagement',\n label: 'Civic Engagement',\n type: 'multi_select',\n step: 2,\n isOnboarding: true,\n optional: true,\n options: [...civicEngagementOptions],\n },\n ],\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,CA4IxD,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,CA2IxD,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"}
@@ -28,12 +28,11 @@ export const UDP_PROGRESS_FIELDS = {
28
28
  'partyAssociationRole',
29
29
  'familyPartyAssociation',
30
30
  'relativesInPolitics',
31
+ // Level/year are inline within the parent yes/no screens — only the
32
+ // 2 parent fields contribute to step progress (the user can complete
33
+ // the screen by answering yes/no without filling level/year).
31
34
  'hasContestedElection',
32
- 'electionLevel',
33
- 'electionYear',
34
35
  'hasHeldPublicOffice',
35
- 'officeLevel',
36
- 'officeYear',
37
36
  'networkAndCivicEngagement',
38
37
  ],
39
38
  3: [
@@ -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 'hasContestedElection',\n 'electionLevel',\n 'electionYear',\n 'hasHeldPublicOffice',\n 'officeLevel',\n 'officeYear',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\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 'educationNotes',\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 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\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 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\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 'educationNotes',\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 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-schema",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "description": "Shared Zod schemas for User Detailed Profile (frontend + backend).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",