udp-schema 2.3.0 → 2.4.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;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,CAshB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EAsJ9D,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;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,CA0gB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EAoJ9D,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"}
@@ -17,22 +17,10 @@
17
17
  // ─── Per-field onboarding metadata ──────────────────────────────────────────
18
18
  export const UDP_ONBOARDING_FIELDS = {
19
19
  // ── Step 1: Profile ──
20
- firstName: {
21
- title: 'firstName.title',
22
- subtitle: 'firstName.subtitle',
23
- successMessage: 'firstName.success',
24
- required: true,
25
- },
26
- middleName: {
27
- title: 'middleName.title',
28
- subtitle: 'middleName.subtitle',
29
- successMessage: 'middleName.success',
30
- required: false,
31
- },
32
- lastName: {
33
- title: 'lastName.title',
34
- subtitle: 'lastName.subtitle',
35
- successMessage: 'lastName.success',
20
+ fullName: {
21
+ title: 'fullName.title',
22
+ subtitle: 'fullName.subtitle',
23
+ successMessage: 'fullName.success',
36
24
  required: true,
37
25
  },
38
26
  gender: {
@@ -545,9 +533,7 @@ export const UDP_ONBOARDING_STEP_GROUPS = [
545
533
  label: 'steps.profile',
546
534
  icon: '📝',
547
535
  fields: [
548
- 'firstName',
549
- 'middleName',
550
- 'lastName',
536
+ 'fullName',
551
537
  'gender',
552
538
  'dateOfBirth',
553
539
  'whatsappNumber',
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-config.js","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * UDP Onboarding Field Configuration\r\n * ====================================\r\n * Single source of truth for all per-field onboarding metadata.\r\n * Both frontend and backend import this.\r\n *\r\n * IMPORTANT: All string properties (title, subtitle, successMessage,\r\n * step group label) are i18n KEYS, not display text. The frontend resolves\r\n * them via useTranslations(\"udp\") → t(config.title).\r\n *\r\n * Translation files:\r\n * - messages/en/udp.json (English — under \"udp\" root key)\r\n * - messages/hi/udp.json (Hindi — under \"udp\" root key)\r\n *\r\n * @module udp-schema/onboarding-config\r\n */\r\n\r\n// ─── Types ───────────────────────────────────────────────────────────────────\r\n\r\nexport interface UdpOnboardingFieldConfig {\r\n /** i18n key for the question heading (resolved via t(title)) */\r\n title: string;\r\n /** i18n key for help text below the heading */\r\n subtitle?: string;\r\n /** i18n key for toast message on successful save */\r\n successMessage: string;\r\n /** Whether the field is required to proceed */\r\n required: boolean;\r\n}\r\n\r\n/** Step grouping for the UDP onboarding flow */\r\nexport interface UdpOnboardingStepGroup {\r\n /** i18n key for section label */\r\n label: string;\r\n /** Emoji character (e.g., '📝', '🏛️') rendered directly */\r\n icon: string;\r\n /** Ordered list of field keys in this section */\r\n fields: string[];\r\n}\r\n\r\n// ─── Per-field onboarding metadata ──────────────────────────────────────────\r\n\r\nexport const UDP_ONBOARDING_FIELDS: Record<string, UdpOnboardingFieldConfig> = {\r\n // ── Step 1: Profile ──\r\n firstName: {\r\n title: 'firstName.title',\r\n subtitle: 'firstName.subtitle',\r\n successMessage: 'firstName.success',\r\n required: true,\r\n },\r\n middleName: {\r\n title: 'middleName.title',\r\n subtitle: 'middleName.subtitle',\r\n successMessage: 'middleName.success',\r\n required: false,\r\n },\r\n lastName: {\r\n title: 'lastName.title',\r\n subtitle: 'lastName.subtitle',\r\n successMessage: 'lastName.success',\r\n required: true,\r\n },\r\n gender: {\r\n title: 'gender.title',\r\n subtitle: 'gender.subtitle',\r\n successMessage: 'gender.success',\r\n required: true,\r\n },\r\n dateOfBirth: {\r\n title: 'dateOfBirth.title',\r\n subtitle: 'dateOfBirth.subtitle',\r\n successMessage: 'dateOfBirth.success',\r\n required: true,\r\n },\r\n whatsappNumber: {\r\n title: 'whatsappNumber.title',\r\n subtitle: 'whatsappNumber.subtitle',\r\n successMessage: 'whatsappNumber.success',\r\n required: false,\r\n },\r\n primaryLanguage: {\r\n title: 'primaryLanguage.title',\r\n subtitle: 'primaryLanguage.subtitle',\r\n successMessage: 'primaryLanguage.success',\r\n required: true,\r\n },\r\n secondaryLanguages: {\r\n title: 'secondaryLanguages.title',\r\n subtitle: 'secondaryLanguages.subtitle',\r\n successMessage: 'secondaryLanguages.success',\r\n required: false,\r\n },\r\n familyReligion: {\r\n title: 'familyReligion.title',\r\n subtitle: 'familyReligion.subtitle',\r\n successMessage: 'familyReligion.success',\r\n required: true,\r\n },\r\n personalReligion: {\r\n title: 'personalReligion.title',\r\n subtitle: 'personalReligion.subtitle',\r\n successMessage: 'personalReligion.success',\r\n required: false,\r\n },\r\n reservationStatus: {\r\n title: 'reservationStatus.title',\r\n subtitle: 'reservationStatus.subtitle',\r\n successMessage: 'reservationStatus.success',\r\n required: true,\r\n },\r\n minorityStatus: {\r\n title: 'minorityStatus.title',\r\n subtitle: 'minorityStatus.subtitle',\r\n successMessage: 'minorityStatus.success',\r\n required: true,\r\n },\r\n\r\n // ── Step 2: Political Association & History ──\r\n politicalSpectrum: {\r\n title: 'politicalSpectrum.title',\r\n subtitle: 'politicalSpectrum.subtitle',\r\n successMessage: 'politicalSpectrum.success',\r\n required: false,\r\n },\r\n selfPartyAssociation: {\r\n title: 'selfPartyAssociation.title',\r\n subtitle: 'selfPartyAssociation.subtitle',\r\n successMessage: 'selfPartyAssociation.success',\r\n required: false,\r\n },\r\n familyPartyAssociation: {\r\n title: 'familyPartyAssociation.title',\r\n subtitle: 'familyPartyAssociation.subtitle',\r\n successMessage: 'familyPartyAssociation.success',\r\n required: false,\r\n },\r\n publicOfficeAndElections: {\r\n title: 'publicOfficeAndElections.title',\r\n subtitle: 'publicOfficeAndElections.subtitle',\r\n successMessage: 'publicOfficeAndElections.success',\r\n required: false,\r\n },\r\n networkAndCivicEngagement: {\r\n title: 'networkAndCivicEngagement.title',\r\n subtitle: 'networkAndCivicEngagement.subtitle',\r\n successMessage: 'networkAndCivicEngagement.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 3: Electoral Behaviour ──\r\n epicNumber: {\r\n title: 'epicNumber.title',\r\n subtitle: 'epicNumber.subtitle',\r\n successMessage: 'epicNumber.success',\r\n required: false,\r\n },\r\n willVoteThisTime: {\r\n title: 'willVoteThisTime.title',\r\n subtitle: 'willVoteThisTime.subtitle',\r\n successMessage: 'willVoteThisTime.success',\r\n required: false,\r\n },\r\n didVoteLastTime: {\r\n title: 'didVoteLastTime.title',\r\n subtitle: 'didVoteLastTime.subtitle',\r\n successMessage: 'didVoteLastTime.success',\r\n required: false,\r\n },\r\n votingFrequency: {\r\n title: 'votingFrequency.title',\r\n subtitle: 'votingFrequency.subtitle',\r\n successMessage: 'votingFrequency.success',\r\n required: false,\r\n },\r\n primaryVotingIssues: {\r\n title: 'primaryVotingIssues.title',\r\n subtitle: 'primaryVotingIssues.subtitle',\r\n successMessage: 'primaryVotingIssues.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 4: Leadership & Ambitions ──\r\n participateInRevolution: {\r\n title: 'participateInRevolution.title',\r\n subtitle: 'participateInRevolution.subtitle',\r\n successMessage: 'participateInRevolution.success',\r\n required: false,\r\n },\r\n desiredPoliticalPosition: {\r\n title: 'desiredPoliticalPosition.title',\r\n subtitle: 'desiredPoliticalPosition.subtitle',\r\n successMessage: 'desiredPoliticalPosition.success',\r\n required: false,\r\n },\r\n leadershipSkillset: {\r\n title: 'leadershipSkillset.title',\r\n subtitle: 'leadershipSkillset.subtitle',\r\n successMessage: 'leadershipSkillset.success',\r\n required: false,\r\n },\r\n politicalExposure: {\r\n title: 'politicalExposure.title',\r\n subtitle: 'politicalExposure.subtitle',\r\n successMessage: 'politicalExposure.success',\r\n required: false,\r\n },\r\n comfortWithVisibility: {\r\n title: 'comfortWithVisibility.title',\r\n subtitle: 'comfortWithVisibility.subtitle',\r\n successMessage: 'comfortWithVisibility.success',\r\n required: false,\r\n },\r\n socialInfluenceLevel: {\r\n title: 'socialInfluenceLevel.title',\r\n subtitle: 'socialInfluenceLevel.subtitle',\r\n successMessage: 'socialInfluenceLevel.success',\r\n required: false,\r\n },\r\n pastExperience: {\r\n title: 'pastExperience.title',\r\n subtitle: 'pastExperience.subtitle',\r\n successMessage: 'pastExperience.success',\r\n required: false,\r\n },\r\n changesYouWantToBring: {\r\n title: 'changesYouWantToBring.title',\r\n subtitle: 'changesYouWantToBring.subtitle',\r\n successMessage: 'changesYouWantToBring.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 5: Psychological Assessment ──\r\n mbtiType: {\r\n title: 'mbtiType.title',\r\n subtitle: 'mbtiType.subtitle',\r\n successMessage: 'mbtiType.success',\r\n required: false,\r\n },\r\n oceanScores: {\r\n title: 'oceanScores.title',\r\n subtitle: 'oceanScores.subtitle',\r\n successMessage: 'oceanScores.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 6: Education ──\r\n highestQualification: {\r\n title: 'highestQualification.title',\r\n subtitle: 'highestQualification.subtitle',\r\n successMessage: 'highestQualification.success',\r\n required: true,\r\n },\r\n education10th: {\r\n title: 'education10th.title',\r\n subtitle: 'education10th.subtitle',\r\n successMessage: 'education10th.success',\r\n required: false,\r\n },\r\n education12th: {\r\n title: 'education12th.title',\r\n subtitle: 'education12th.subtitle',\r\n successMessage: 'education12th.success',\r\n required: false,\r\n },\r\n diplomas: {\r\n title: 'diplomas.title',\r\n subtitle: 'diplomas.subtitle',\r\n successMessage: 'diplomas.success',\r\n required: false,\r\n },\r\n graduations: {\r\n title: 'graduations.title',\r\n subtitle: 'graduations.subtitle',\r\n successMessage: 'graduations.success',\r\n required: false,\r\n },\r\n postGraduations: {\r\n title: 'postGraduations.title',\r\n subtitle: 'postGraduations.subtitle',\r\n successMessage: 'postGraduations.success',\r\n required: false,\r\n },\r\n doctorates: {\r\n title: 'doctorates.title',\r\n subtitle: 'doctorates.subtitle',\r\n successMessage: 'doctorates.success',\r\n required: false,\r\n },\r\n postDoctorates: {\r\n title: 'postDoctorates.title',\r\n subtitle: 'postDoctorates.subtitle',\r\n successMessage: 'postDoctorates.success',\r\n required: false,\r\n },\r\n otherCertificates: {\r\n title: 'otherCertificates.title',\r\n subtitle: 'otherCertificates.subtitle',\r\n successMessage: 'otherCertificates.success',\r\n required: false,\r\n },\r\n educationNotes: {\r\n title: 'educationNotes.title',\r\n subtitle: 'educationNotes.subtitle',\r\n successMessage: 'educationNotes.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 7: Employment & Occupation ──\r\n employmentStatus: {\r\n title: 'employmentStatus.title',\r\n subtitle: 'employmentStatus.subtitle',\r\n successMessage: 'employmentStatus.success',\r\n required: false,\r\n },\r\n occupation: {\r\n title: 'occupation.title',\r\n subtitle: 'occupation.subtitle',\r\n successMessage: 'occupation.success',\r\n required: false,\r\n },\r\n workShift: {\r\n title: 'workShift.title',\r\n subtitle: 'workShift.subtitle',\r\n successMessage: 'workShift.success',\r\n required: false,\r\n },\r\n comfortableWithShift: {\r\n title: 'comfortableWithShift.title',\r\n subtitle: 'comfortableWithShift.subtitle',\r\n successMessage: 'comfortableWithShift.success',\r\n required: false,\r\n },\r\n desiredShift: {\r\n title: 'desiredShift.title',\r\n subtitle: 'desiredShift.subtitle',\r\n successMessage: 'desiredShift.success',\r\n required: false,\r\n },\r\n incomeRange: {\r\n title: 'incomeRange.title',\r\n subtitle: 'incomeRange.subtitle',\r\n successMessage: 'incomeRange.success',\r\n required: false,\r\n },\r\n dreamOccupation: {\r\n title: 'dreamOccupation.title',\r\n subtitle: 'dreamOccupation.subtitle',\r\n successMessage: 'dreamOccupation.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 8: Neurodiversity ──\r\n neurodiverseIdentity: {\r\n title: 'neurodiverseIdentity.title',\r\n subtitle: 'neurodiverseIdentity.subtitle',\r\n successMessage: 'neurodiverseIdentity.success',\r\n required: false,\r\n },\r\n conditions: {\r\n title: 'conditions.title',\r\n subtitle: 'conditions.subtitle',\r\n successMessage: 'conditions.success',\r\n required: false,\r\n },\r\n sensoryPreferences: {\r\n title: 'sensoryPreferences.title',\r\n subtitle: 'sensoryPreferences.subtitle',\r\n successMessage: 'sensoryPreferences.success',\r\n required: false,\r\n },\r\n learningStyle: {\r\n title: 'learningStyle.title',\r\n subtitle: 'learningStyle.subtitle',\r\n successMessage: 'learningStyle.success',\r\n required: false,\r\n },\r\n communicationPreference: {\r\n title: 'communicationPreference.title',\r\n subtitle: 'communicationPreference.subtitle',\r\n successMessage: 'communicationPreference.success',\r\n required: false,\r\n },\r\n supportNeeds: {\r\n title: 'supportNeeds.title',\r\n subtitle: 'supportNeeds.subtitle',\r\n successMessage: 'supportNeeds.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 9: Health & Lifestyle ──\r\n disabilityStatus: {\r\n title: 'disabilityStatus.title',\r\n subtitle: 'disabilityStatus.subtitle',\r\n successMessage: 'disabilityStatus.success',\r\n required: false,\r\n },\r\n generalHealth: {\r\n title: 'generalHealth.title',\r\n subtitle: 'generalHealth.subtitle',\r\n successMessage: 'generalHealth.success',\r\n required: false,\r\n },\r\n healthInsurance: {\r\n title: 'healthInsurance.title',\r\n subtitle: 'healthInsurance.subtitle',\r\n successMessage: 'healthInsurance.success',\r\n required: false,\r\n },\r\n diet: {\r\n title: 'diet.title',\r\n subtitle: 'diet.subtitle',\r\n successMessage: 'diet.success',\r\n required: false,\r\n },\r\n physicalActivity: {\r\n title: 'physicalActivity.title',\r\n subtitle: 'physicalActivity.subtitle',\r\n successMessage: 'physicalActivity.success',\r\n required: false,\r\n },\r\n sleepQuality: {\r\n title: 'sleepQuality.title',\r\n subtitle: 'sleepQuality.subtitle',\r\n successMessage: 'sleepQuality.success',\r\n required: false,\r\n },\r\n substanceUse: {\r\n title: 'substanceUse.title',\r\n subtitle: 'substanceUse.subtitle',\r\n successMessage: 'substanceUse.success',\r\n required: false,\r\n },\r\n stressLevel: {\r\n title: 'stressLevel.title',\r\n subtitle: 'stressLevel.subtitle',\r\n successMessage: 'stressLevel.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 10: World View & Experience ──\r\n viewOnAnimalCruelty: {\r\n title: 'viewOnAnimalCruelty.title',\r\n subtitle: 'viewOnAnimalCruelty.subtitle',\r\n successMessage: 'viewOnAnimalCruelty.success',\r\n required: false,\r\n },\r\n viewOnLgbtqStatements: {\r\n title: 'viewOnLgbtqStatements.title',\r\n subtitle: 'viewOnLgbtqStatements.subtitle',\r\n successMessage: 'viewOnLgbtqStatements.success',\r\n required: false,\r\n },\r\n viewOnLgbtqOpinion: {\r\n title: 'viewOnLgbtqOpinion.title',\r\n subtitle: 'viewOnLgbtqOpinion.subtitle',\r\n successMessage: 'viewOnLgbtqOpinion.success',\r\n required: false,\r\n },\r\n viewOnTransgenderInclusion: {\r\n title: 'viewOnTransgenderInclusion.title',\r\n subtitle: 'viewOnTransgenderInclusion.subtitle',\r\n successMessage: 'viewOnTransgenderInclusion.success',\r\n required: false,\r\n },\r\n viewOnTransgenderOpinion: {\r\n title: 'viewOnTransgenderOpinion.title',\r\n subtitle: 'viewOnTransgenderOpinion.subtitle',\r\n successMessage: 'viewOnTransgenderOpinion.success',\r\n required: false,\r\n },\r\n facingCasteDiscrimination: {\r\n title: 'facingCasteDiscrimination.title',\r\n subtitle: 'facingCasteDiscrimination.subtitle',\r\n successMessage: 'facingCasteDiscrimination.success',\r\n required: false,\r\n },\r\n casteDiscriminationPlaces: {\r\n title: 'casteDiscriminationPlaces.title',\r\n subtitle: 'casteDiscriminationPlaces.subtitle',\r\n successMessage: 'casteDiscriminationPlaces.success',\r\n required: false,\r\n },\r\n viewOnGenderEquality: {\r\n title: 'viewOnGenderEquality.title',\r\n subtitle: 'viewOnGenderEquality.subtitle',\r\n successMessage: 'viewOnGenderEquality.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 11: Residence & Address ──\r\n currentAddress: {\r\n title: 'currentAddress.title',\r\n subtitle: 'currentAddress.subtitle',\r\n successMessage: 'currentAddress.success',\r\n required: true,\r\n },\r\n permanentAddress: {\r\n title: 'permanentAddress.title',\r\n subtitle: 'permanentAddress.subtitle',\r\n successMessage: 'permanentAddress.success',\r\n required: false,\r\n },\r\n homeNativePlace: {\r\n title: 'homeNativePlace.title',\r\n subtitle: 'homeNativePlace.subtitle',\r\n successMessage: 'homeNativePlace.success',\r\n required: false,\r\n },\r\n ancestralPlace: {\r\n title: 'ancestralPlace.title',\r\n subtitle: 'ancestralPlace.subtitle',\r\n successMessage: 'ancestralPlace.success',\r\n required: false,\r\n },\r\n\r\n // ── Step 12: Household & Economic Profile ──\r\n maritalStatus: {\r\n title: 'maritalStatus.title',\r\n subtitle: 'maritalStatus.subtitle',\r\n successMessage: 'maritalStatus.success',\r\n required: false,\r\n },\r\n familyMembers: {\r\n title: 'familyMembers.title',\r\n subtitle: 'familyMembers.subtitle',\r\n successMessage: 'familyMembers.success',\r\n required: false,\r\n },\r\n numberOfDependents: {\r\n title: 'numberOfDependents.title',\r\n subtitle: 'numberOfDependents.subtitle',\r\n successMessage: 'numberOfDependents.success',\r\n required: false,\r\n },\r\n housingType: {\r\n title: 'housingType.title',\r\n subtitle: 'housingType.subtitle',\r\n successMessage: 'housingType.success',\r\n required: false,\r\n },\r\n householdIncome: {\r\n title: 'householdIncome.title',\r\n subtitle: 'householdIncome.subtitle',\r\n successMessage: 'householdIncome.success',\r\n required: false,\r\n },\r\n bplCard: {\r\n title: 'bplCard.title',\r\n subtitle: 'bplCard.subtitle',\r\n successMessage: 'bplCard.success',\r\n required: false,\r\n },\r\n digitalAccess: {\r\n title: 'digitalAccess.title',\r\n subtitle: 'digitalAccess.subtitle',\r\n successMessage: 'digitalAccess.success',\r\n required: false,\r\n },\r\n migrationStatus: {\r\n title: 'migrationStatus.title',\r\n subtitle: 'migrationStatus.subtitle',\r\n successMessage: 'migrationStatus.success',\r\n required: false,\r\n },\r\n landOwnership: {\r\n title: 'landOwnership.title',\r\n subtitle: 'landOwnership.subtitle',\r\n successMessage: 'landOwnership.success',\r\n required: false,\r\n },\r\n primaryIncomeSource: {\r\n title: 'primaryIncomeSource.title',\r\n subtitle: 'primaryIncomeSource.subtitle',\r\n successMessage: 'primaryIncomeSource.success',\r\n required: false,\r\n },\r\n};\r\n\r\n// ─── Step grouping ──────────────────────────────────────────────────────────\r\n\r\nexport const UDP_ONBOARDING_STEP_GROUPS: UdpOnboardingStepGroup[] = [\r\n {\r\n label: 'steps.profile',\r\n icon: '📝',\r\n fields: [\r\n 'firstName',\r\n 'middleName',\r\n 'lastName',\r\n 'gender',\r\n 'dateOfBirth',\r\n 'whatsappNumber',\r\n 'primaryLanguage',\r\n 'secondaryLanguages',\r\n 'familyReligion',\r\n 'personalReligion',\r\n 'reservationStatus',\r\n 'minorityStatus',\r\n ],\r\n },\r\n {\r\n label: 'steps.politicalAssociation',\r\n icon: '🏛️',\r\n fields: [\r\n 'politicalSpectrum',\r\n 'selfPartyAssociation',\r\n 'familyPartyAssociation',\r\n 'publicOfficeAndElections',\r\n 'networkAndCivicEngagement',\r\n ],\r\n },\r\n {\r\n label: 'steps.electoralBehaviour',\r\n icon: '🗳️',\r\n fields: [\r\n 'epicNumber',\r\n 'willVoteThisTime',\r\n 'didVoteLastTime',\r\n 'votingFrequency',\r\n 'primaryVotingIssues',\r\n ],\r\n },\r\n {\r\n label: 'steps.leadershipAmbitions',\r\n icon: '👑',\r\n fields: [\r\n 'participateInRevolution',\r\n 'desiredPoliticalPosition',\r\n 'leadershipSkillset',\r\n 'politicalExposure',\r\n 'comfortWithVisibility',\r\n 'socialInfluenceLevel',\r\n 'pastExperience',\r\n 'changesYouWantToBring',\r\n ],\r\n },\r\n {\r\n label: 'steps.psychologicalAssessment',\r\n icon: '🧩',\r\n fields: ['mbtiType', 'oceanScores'],\r\n },\r\n {\r\n label: 'steps.education',\r\n icon: '🎓',\r\n fields: [\r\n 'highestQualification',\r\n 'education10th',\r\n 'education12th',\r\n 'diplomas',\r\n 'graduations',\r\n 'postGraduations',\r\n 'doctorates',\r\n 'postDoctorates',\r\n 'otherCertificates',\r\n 'educationNotes',\r\n ],\r\n },\r\n {\r\n label: 'steps.employment',\r\n icon: '💼',\r\n fields: [\r\n 'employmentStatus',\r\n 'occupation',\r\n 'workShift',\r\n 'comfortableWithShift',\r\n 'desiredShift',\r\n 'incomeRange',\r\n 'dreamOccupation',\r\n ],\r\n },\r\n {\r\n label: 'steps.neurodiversity',\r\n icon: '🧠',\r\n fields: [\r\n 'neurodiverseIdentity',\r\n 'conditions',\r\n 'sensoryPreferences',\r\n 'learningStyle',\r\n 'communicationPreference',\r\n 'supportNeeds',\r\n ],\r\n },\r\n {\r\n label: 'steps.healthLifestyle',\r\n icon: '🏥',\r\n fields: [\r\n 'disabilityStatus',\r\n 'generalHealth',\r\n 'healthInsurance',\r\n 'diet',\r\n 'physicalActivity',\r\n 'sleepQuality',\r\n 'substanceUse',\r\n 'stressLevel',\r\n ],\r\n },\r\n {\r\n label: 'steps.worldView',\r\n icon: '🌿',\r\n fields: [\r\n 'viewOnAnimalCruelty',\r\n 'viewOnLgbtqStatements',\r\n 'viewOnLgbtqOpinion',\r\n 'viewOnTransgenderInclusion',\r\n 'viewOnTransgenderOpinion',\r\n 'facingCasteDiscrimination',\r\n 'casteDiscriminationPlaces',\r\n 'viewOnGenderEquality',\r\n ],\r\n },\r\n {\r\n label: 'steps.residence',\r\n icon: '🏠',\r\n fields: ['currentAddress', 'permanentAddress', 'homeNativePlace', 'ancestralPlace'],\r\n },\r\n {\r\n label: 'steps.household',\r\n icon: '🏡',\r\n fields: [\r\n 'maritalStatus',\r\n 'familyMembers',\r\n 'numberOfDependents',\r\n 'housingType',\r\n 'householdIncome',\r\n 'bplCard',\r\n 'digitalAccess',\r\n 'migrationStatus',\r\n 'landOwnership',\r\n 'primaryIncomeSource',\r\n ],\r\n },\r\n];\r\n\r\n// ─── Helpers ─────────────────────────────────────────────────────────────────\r\n\r\n/** Get onboarding config for a single field. */\r\nexport function getUdpOnboardingFieldConfig(\r\n fieldKey: string | undefined,\r\n): UdpOnboardingFieldConfig | undefined {\r\n if (!fieldKey) return undefined;\r\n return UDP_ONBOARDING_FIELDS[fieldKey];\r\n}\r\n\r\n/** Total number of main steps. */\r\nexport const UDP_TOTAL_MAIN_STEPS = UDP_ONBOARDING_STEP_GROUPS.length;\r\n\r\n/** Total number of sub-steps across all main steps. */\r\nexport const UDP_TOTAL_SUB_STEPS = UDP_ONBOARDING_STEP_GROUPS.reduce(\r\n (sum, g) => sum + g.fields.length,\r\n 0,\r\n);\r\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}\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: true,\n },\n gender: {\n title: 'gender.title',\n subtitle: 'gender.subtitle',\n successMessage: 'gender.success',\n required: true,\n },\n dateOfBirth: {\n title: 'dateOfBirth.title',\n subtitle: 'dateOfBirth.subtitle',\n successMessage: 'dateOfBirth.success',\n required: true,\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: true,\n },\n secondaryLanguages: {\n title: 'secondaryLanguages.title',\n subtitle: 'secondaryLanguages.subtitle',\n successMessage: 'secondaryLanguages.success',\n required: false,\n },\n familyReligion: {\n title: 'familyReligion.title',\n subtitle: 'familyReligion.subtitle',\n successMessage: 'familyReligion.success',\n required: true,\n },\n personalReligion: {\n title: 'personalReligion.title',\n subtitle: 'personalReligion.subtitle',\n successMessage: 'personalReligion.success',\n required: false,\n },\n reservationStatus: {\n title: 'reservationStatus.title',\n subtitle: 'reservationStatus.subtitle',\n successMessage: 'reservationStatus.success',\n required: true,\n },\n minorityStatus: {\n title: 'minorityStatus.title',\n subtitle: 'minorityStatus.subtitle',\n successMessage: 'minorityStatus.success',\n required: 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 },\n selfPartyAssociation: {\n title: 'selfPartyAssociation.title',\n subtitle: 'selfPartyAssociation.subtitle',\n successMessage: 'selfPartyAssociation.success',\n required: false,\n },\n familyPartyAssociation: {\n title: 'familyPartyAssociation.title',\n subtitle: 'familyPartyAssociation.subtitle',\n successMessage: 'familyPartyAssociation.success',\n required: false,\n },\n publicOfficeAndElections: {\n title: 'publicOfficeAndElections.title',\n subtitle: 'publicOfficeAndElections.subtitle',\n successMessage: 'publicOfficeAndElections.success',\n required: false,\n },\n networkAndCivicEngagement: {\n title: 'networkAndCivicEngagement.title',\n subtitle: 'networkAndCivicEngagement.subtitle',\n successMessage: 'networkAndCivicEngagement.success',\n required: false,\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 },\n didVoteLastTime: {\n title: 'didVoteLastTime.title',\n subtitle: 'didVoteLastTime.subtitle',\n successMessage: 'didVoteLastTime.success',\n required: false,\n },\n votingFrequency: {\n title: 'votingFrequency.title',\n subtitle: 'votingFrequency.subtitle',\n successMessage: 'votingFrequency.success',\n required: false,\n },\n primaryVotingIssues: {\n title: 'primaryVotingIssues.title',\n subtitle: 'primaryVotingIssues.subtitle',\n successMessage: 'primaryVotingIssues.success',\n required: false,\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 },\n desiredPoliticalPosition: {\n title: 'desiredPoliticalPosition.title',\n subtitle: 'desiredPoliticalPosition.subtitle',\n successMessage: 'desiredPoliticalPosition.success',\n required: false,\n },\n leadershipSkillset: {\n title: 'leadershipSkillset.title',\n subtitle: 'leadershipSkillset.subtitle',\n successMessage: 'leadershipSkillset.success',\n required: false,\n },\n politicalExposure: {\n title: 'politicalExposure.title',\n subtitle: 'politicalExposure.subtitle',\n successMessage: 'politicalExposure.success',\n required: false,\n },\n comfortWithVisibility: {\n title: 'comfortWithVisibility.title',\n subtitle: 'comfortWithVisibility.subtitle',\n successMessage: 'comfortWithVisibility.success',\n required: false,\n },\n socialInfluenceLevel: {\n title: 'socialInfluenceLevel.title',\n subtitle: 'socialInfluenceLevel.subtitle',\n successMessage: 'socialInfluenceLevel.success',\n required: false,\n },\n pastExperience: {\n title: 'pastExperience.title',\n subtitle: 'pastExperience.subtitle',\n successMessage: 'pastExperience.success',\n required: false,\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: true,\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 },\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 },\n comfortableWithShift: {\n title: 'comfortableWithShift.title',\n subtitle: 'comfortableWithShift.subtitle',\n successMessage: 'comfortableWithShift.success',\n required: false,\n },\n desiredShift: {\n title: 'desiredShift.title',\n subtitle: 'desiredShift.subtitle',\n successMessage: 'desiredShift.success',\n required: false,\n },\n incomeRange: {\n title: 'incomeRange.title',\n subtitle: 'incomeRange.subtitle',\n successMessage: 'incomeRange.success',\n required: false,\n },\n dreamOccupation: {\n title: 'dreamOccupation.title',\n subtitle: 'dreamOccupation.subtitle',\n successMessage: 'dreamOccupation.success',\n required: false,\n },\n\n // ── Step 8: Neurodiversity ──\n neurodiverseIdentity: {\n title: 'neurodiverseIdentity.title',\n subtitle: 'neurodiverseIdentity.subtitle',\n successMessage: 'neurodiverseIdentity.success',\n required: false,\n },\n conditions: {\n title: 'conditions.title',\n subtitle: 'conditions.subtitle',\n successMessage: 'conditions.success',\n required: false,\n },\n sensoryPreferences: {\n title: 'sensoryPreferences.title',\n subtitle: 'sensoryPreferences.subtitle',\n successMessage: 'sensoryPreferences.success',\n required: false,\n },\n learningStyle: {\n title: 'learningStyle.title',\n subtitle: 'learningStyle.subtitle',\n successMessage: 'learningStyle.success',\n required: false,\n },\n communicationPreference: {\n title: 'communicationPreference.title',\n subtitle: 'communicationPreference.subtitle',\n successMessage: 'communicationPreference.success',\n required: false,\n },\n supportNeeds: {\n title: 'supportNeeds.title',\n subtitle: 'supportNeeds.subtitle',\n successMessage: 'supportNeeds.success',\n required: false,\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 },\n generalHealth: {\n title: 'generalHealth.title',\n subtitle: 'generalHealth.subtitle',\n successMessage: 'generalHealth.success',\n required: false,\n },\n healthInsurance: {\n title: 'healthInsurance.title',\n subtitle: 'healthInsurance.subtitle',\n successMessage: 'healthInsurance.success',\n required: false,\n },\n diet: {\n title: 'diet.title',\n subtitle: 'diet.subtitle',\n successMessage: 'diet.success',\n required: false,\n },\n physicalActivity: {\n title: 'physicalActivity.title',\n subtitle: 'physicalActivity.subtitle',\n successMessage: 'physicalActivity.success',\n required: false,\n },\n sleepQuality: {\n title: 'sleepQuality.title',\n subtitle: 'sleepQuality.subtitle',\n successMessage: 'sleepQuality.success',\n required: false,\n },\n substanceUse: {\n title: 'substanceUse.title',\n subtitle: 'substanceUse.subtitle',\n successMessage: 'substanceUse.success',\n required: false,\n },\n stressLevel: {\n title: 'stressLevel.title',\n subtitle: 'stressLevel.subtitle',\n successMessage: 'stressLevel.success',\n required: false,\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 },\n viewOnLgbtqStatements: {\n title: 'viewOnLgbtqStatements.title',\n subtitle: 'viewOnLgbtqStatements.subtitle',\n successMessage: 'viewOnLgbtqStatements.success',\n required: false,\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 },\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 },\n casteDiscriminationPlaces: {\n title: 'casteDiscriminationPlaces.title',\n subtitle: 'casteDiscriminationPlaces.subtitle',\n successMessage: 'casteDiscriminationPlaces.success',\n required: false,\n },\n viewOnGenderEquality: {\n title: 'viewOnGenderEquality.title',\n subtitle: 'viewOnGenderEquality.subtitle',\n successMessage: 'viewOnGenderEquality.success',\n required: false,\n },\n\n // ── Step 11: Residence & Address ──\n currentAddress: {\n title: 'currentAddress.title',\n subtitle: 'currentAddress.subtitle',\n successMessage: 'currentAddress.success',\n required: true,\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 },\n familyMembers: {\n title: 'familyMembers.title',\n subtitle: 'familyMembers.subtitle',\n successMessage: 'familyMembers.success',\n required: false,\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 },\n householdIncome: {\n title: 'householdIncome.title',\n subtitle: 'householdIncome.subtitle',\n successMessage: 'householdIncome.success',\n required: false,\n },\n bplCard: {\n title: 'bplCard.title',\n subtitle: 'bplCard.subtitle',\n successMessage: 'bplCard.success',\n required: false,\n },\n digitalAccess: {\n title: 'digitalAccess.title',\n subtitle: 'digitalAccess.subtitle',\n successMessage: 'digitalAccess.success',\n required: false,\n },\n migrationStatus: {\n title: 'migrationStatus.title',\n subtitle: 'migrationStatus.subtitle',\n successMessage: 'migrationStatus.success',\n required: false,\n },\n landOwnership: {\n title: 'landOwnership.title',\n subtitle: 'landOwnership.subtitle',\n successMessage: 'landOwnership.success',\n required: false,\n },\n primaryIncomeSource: {\n title: 'primaryIncomeSource.title',\n subtitle: 'primaryIncomeSource.subtitle',\n successMessage: 'primaryIncomeSource.success',\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 'familyPartyAssociation',\n 'publicOfficeAndElections',\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.neurodiversity',\n icon: '🧠',\n fields: [\n 'neurodiverseIdentity',\n 'conditions',\n 'sensoryPreferences',\n 'learningStyle',\n 'communicationPreference',\n 'supportNeeds',\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":"01-profile.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BhB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDlB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BlB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EASrB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;EAKlB,CAAC;AAIX,eAAO,MAAM,OAAO,EAAE,UAwHrB,CAAC"}
1
+ {"version":3,"file":"01-profile.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BhB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDlB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BlB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EASrB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;EAKlB,CAAC;AAIX,eAAO,MAAM,OAAO,EAAE,UAqGrB,CAAC"}
@@ -142,31 +142,12 @@ export const profile = {
142
142
  fields: [
143
143
  {
144
144
  order: 1,
145
- key: 'firstName',
146
- label: 'First Name',
147
- type: 'text',
148
- step: 1,
149
- isOnboarding: true,
150
- maxLength: 50,
151
- },
152
- {
153
- order: 2,
154
- key: 'middleName',
155
- label: 'Middle Name',
156
- type: 'text',
157
- step: 1,
158
- isOnboarding: true,
159
- optional: true,
160
- maxLength: 50,
161
- },
162
- {
163
- order: 3,
164
- key: 'lastName',
165
- label: 'Last Name',
166
- type: 'text',
145
+ key: 'fullName',
146
+ label: 'Full Name',
147
+ type: 'object',
167
148
  step: 1,
168
149
  isOnboarding: true,
169
- maxLength: 50,
150
+ description: 'First, middle, and last name as per Aadhaar or other govt ID',
170
151
  },
171
152
  {
172
153
  order: 4,
@@ -1 +1 @@
1
- {"version":3,"file":"01-profile.js","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 01 — Profile fields.\n *\n * Rich field definitions with options and descriptions,\n * matching the dating-schema profile-fields pattern.\n */\n\nimport type { FieldGroup } from './types.js';\n\n// ─── Shared option arrays (exported for reuse) ─────────────────────────────\n\nexport const genderOptions = [\n { value: 'man', label: 'Man' },\n { value: 'woman', label: 'Woman' },\n { value: 'non_binary', label: 'Non-binary', description: 'Neither exclusively male nor female' },\n {\n value: 'transgender_man',\n label: 'Transgender Man',\n description: 'Assigned female at birth, identifies as male',\n },\n {\n value: 'transgender_woman',\n label: 'Transgender Woman',\n description: 'Assigned male at birth, identifies as female',\n },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'genderfluid', label: 'Genderfluid', description: 'Gender identity shifts over time' },\n { value: 'agender', label: 'Agender', description: 'No specific gender identity' },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n { value: 'muslim_sufi', label: 'Muslim (Sufi)', description: 'Mystical Islamic tradition' },\n { value: 'muslim_other', label: 'Muslim (Other)', description: 'Ahmadiyya or other traditions' },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n { value: 'agnostic', label: 'Agnostic', description: 'Uncertain about higher power' },\n { value: 'no_religion', label: 'No Religion', description: 'Simply non-religious' },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background',\n },\n { value: 'other', label: 'Other', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const languageOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const reservationOptions = [\n { value: 'SC', label: 'Scheduled Caste (SC)' },\n { value: 'ST', label: 'Scheduled Tribe (ST)' },\n { value: 'OBC_NC', label: 'OBC (Non-Creamy Layer)' },\n { value: 'OBC_C', label: 'OBC (Creamy Layer)' },\n { value: 'EWS', label: 'Economically Weaker Section (EWS)' },\n { value: 'GENERAL', label: 'General' },\n { value: 'DONT_KNOW', label: \"Don't know\" },\n { value: 'PREFER_NOT_SAY', label: 'Prefer not to say' },\n] as const;\n\nexport const minorityOptions = [\n { value: 'NO', label: 'No' },\n { value: 'RELIGIOUS', label: 'Yes — Religious minority' },\n { value: 'LINGUISTIC', label: 'Yes — Linguistic minority' },\n { value: 'NOT_SURE', label: 'Not sure' },\n] as const;\n\n// ─── Field Group ────────────────────────────────────────────────────────────\n\nexport const profile: FieldGroup = {\n key: 'profile',\n label: 'Profile',\n description: 'Basic personal information — name, gender, date of birth, language, and religion.',\n step: 1,\n fields: [\n {\n order: 1,\n key: 'firstName',\n label: 'First Name',\n type: 'text',\n step: 1,\n isOnboarding: true,\n maxLength: 50,\n },\n {\n order: 2,\n key: 'middleName',\n label: 'Middle Name',\n type: 'text',\n step: 1,\n isOnboarding: true,\n optional: true,\n maxLength: 50,\n },\n {\n order: 3,\n key: 'lastName',\n label: 'Last Name',\n type: 'text',\n step: 1,\n isOnboarding: true,\n maxLength: 50,\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...genderOptions],\n },\n {\n order: 5,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n step: 1,\n isOnboarding: true,\n },\n {\n order: 6,\n key: 'whatsappNumber',\n label: 'WhatsApp Number',\n type: 'text',\n step: 1,\n isOnboarding: true,\n optional: true,\n description: 'Include country code',\n },\n {\n order: 7,\n key: 'primaryLanguage',\n label: 'Primary Language',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...languageOptions],\n },\n {\n order: 8,\n key: 'secondaryLanguages',\n label: 'Secondary Languages',\n type: 'multi_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...languageOptions],\n maxSelect: 10,\n },\n {\n order: 9,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...religionOptions],\n },\n {\n order: 10,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...religionOptions],\n },\n {\n order: 11,\n key: 'reservationStatus',\n label: 'Reservation Category',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...reservationOptions],\n sensitive: true,\n },\n {\n order: 12,\n key: 'minorityStatus',\n label: 'Minority Status',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...minorityOptions],\n },\n ],\n};\n"]}
1
+ {"version":3,"file":"01-profile.js","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 01 — Profile fields.\n *\n * Rich field definitions with options and descriptions,\n * matching the dating-schema profile-fields pattern.\n */\n\nimport type { FieldGroup } from './types.js';\n\n// ─── Shared option arrays (exported for reuse) ─────────────────────────────\n\nexport const genderOptions = [\n { value: 'man', label: 'Man' },\n { value: 'woman', label: 'Woman' },\n { value: 'non_binary', label: 'Non-binary', description: 'Neither exclusively male nor female' },\n {\n value: 'transgender_man',\n label: 'Transgender Man',\n description: 'Assigned female at birth, identifies as male',\n },\n {\n value: 'transgender_woman',\n label: 'Transgender Woman',\n description: 'Assigned male at birth, identifies as female',\n },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'genderfluid', label: 'Genderfluid', description: 'Gender identity shifts over time' },\n { value: 'agender', label: 'Agender', description: 'No specific gender identity' },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n { value: 'muslim_sufi', label: 'Muslim (Sufi)', description: 'Mystical Islamic tradition' },\n { value: 'muslim_other', label: 'Muslim (Other)', description: 'Ahmadiyya or other traditions' },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n { value: 'agnostic', label: 'Agnostic', description: 'Uncertain about higher power' },\n { value: 'no_religion', label: 'No Religion', description: 'Simply non-religious' },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background',\n },\n { value: 'other', label: 'Other', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const languageOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const reservationOptions = [\n { value: 'SC', label: 'Scheduled Caste (SC)' },\n { value: 'ST', label: 'Scheduled Tribe (ST)' },\n { value: 'OBC_NC', label: 'OBC (Non-Creamy Layer)' },\n { value: 'OBC_C', label: 'OBC (Creamy Layer)' },\n { value: 'EWS', label: 'Economically Weaker Section (EWS)' },\n { value: 'GENERAL', label: 'General' },\n { value: 'DONT_KNOW', label: \"Don't know\" },\n { value: 'PREFER_NOT_SAY', label: 'Prefer not to say' },\n] as const;\n\nexport const minorityOptions = [\n { value: 'NO', label: 'No' },\n { value: 'RELIGIOUS', label: 'Yes — Religious minority' },\n { value: 'LINGUISTIC', label: 'Yes — Linguistic minority' },\n { value: 'NOT_SURE', label: 'Not sure' },\n] as const;\n\n// ─── Field Group ────────────────────────────────────────────────────────────\n\nexport const profile: FieldGroup = {\n key: 'profile',\n label: 'Profile',\n description: 'Basic personal information — name, gender, date of birth, language, and religion.',\n step: 1,\n fields: [\n {\n order: 1,\n key: 'fullName',\n label: 'Full Name',\n type: 'object',\n step: 1,\n isOnboarding: true,\n description: 'First, middle, and last name as per Aadhaar or other govt ID',\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...genderOptions],\n },\n {\n order: 5,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n step: 1,\n isOnboarding: true,\n },\n {\n order: 6,\n key: 'whatsappNumber',\n label: 'WhatsApp Number',\n type: 'text',\n step: 1,\n isOnboarding: true,\n optional: true,\n description: 'Include country code',\n },\n {\n order: 7,\n key: 'primaryLanguage',\n label: 'Primary Language',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...languageOptions],\n },\n {\n order: 8,\n key: 'secondaryLanguages',\n label: 'Secondary Languages',\n type: 'multi_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...languageOptions],\n maxSelect: 10,\n },\n {\n order: 9,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...religionOptions],\n },\n {\n order: 10,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...religionOptions],\n },\n {\n order: 11,\n key: 'reservationStatus',\n label: 'Reservation Category',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...reservationOptions],\n sensitive: true,\n },\n {\n order: 12,\n key: 'minorityStatus',\n label: 'Minority Status',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...minorityOptions],\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,CAmHxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;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,CAenC;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,CAoHxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;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,CAenC;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"}
@@ -10,6 +10,7 @@
10
10
  export const UDP_PROGRESS_FIELDS = {
11
11
  1: [
12
12
  'firstName',
13
+ 'middleName',
13
14
  'lastName',
14
15
  'gender',
15
16
  'dateOfBirth',
@@ -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 'firstName',\n 'lastName',\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 'familyPartyAssociation',\n 'publicOfficeAndElections',\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 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education12th.institutionName',\n 'education12th.yearOfPassing',\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 'conditions',\n 'sensoryPreferences',\n 'learningStyle',\n 'communicationPreference',\n 'supportNeeds',\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 * 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 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 'firstName',\n 'middleName',\n 'lastName',\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 'familyPartyAssociation',\n 'publicOfficeAndElections',\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 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education12th.institutionName',\n 'education12th.yearOfPassing',\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 'conditions',\n 'sensoryPreferences',\n 'learningStyle',\n 'communicationPreference',\n 'supportNeeds',\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 * 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 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 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAiLT"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CA+LT"}
@@ -20,7 +20,18 @@ export function canProceed(fieldKey, required, form) {
20
20
  return true;
21
21
  const value = form[fieldKey];
22
22
  switch (fieldKey) {
23
- // ── Names: minimum 1 char trimmed ──
23
+ // ── Full name: UI-only object combining firstName/middleName/lastName ──
24
+ // When canProceed is called for fullName field, we check firstName+lastName on form root
25
+ // (the renderer writes them directly to form.firstName, form.middleName, form.lastName).
26
+ case 'fullName': {
27
+ const fn = form.firstName;
28
+ const ln = form.lastName;
29
+ return (typeof fn === 'string' &&
30
+ fn.trim().length >= 1 &&
31
+ typeof ln === 'string' &&
32
+ ln.trim().length >= 1);
33
+ }
34
+ // ── Individual name fields (still validated separately if referenced) ──
24
35
  case 'firstName':
25
36
  case 'lastName':
26
37
  return typeof value === 'string' && value.trim().length >= 1;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Onboarding Validation — single source of truth.\n *\n * Pure functions, no framework dependencies (no React hooks, no DOM).\n * Used by both frontend (canProceed check) and backend (submission validation).\n *\n * @module udp-schema/validation\n */\n\nimport { calcAge } from './helpers.js';\n\n/**\n * Check if the user can proceed from the current sub-step.\n *\n * @param fieldKey - Current field being filled\n * @param required - Whether the field is required\n * @param form - Current form data (flat key-value object)\n * @returns true if the user can proceed\n */\nexport function canProceed(\n fieldKey: string,\n required: boolean,\n form: Record<string, unknown>,\n): boolean {\n if (!required) return true;\n\n const value = form[fieldKey];\n\n switch (fieldKey) {\n // ── Names: minimum 1 char trimmed ──\n case 'firstName':\n case 'lastName':\n return typeof value === 'string' && value.trim().length >= 1;\n\n // ── Date of birth: must exist AND user must be 18+ ──\n case 'dateOfBirth': {\n if (!value) return false;\n const age = calcAge(String(value));\n return age !== null && age >= 18;\n }\n\n // ── Phone: digits only, 7-15 chars ──\n case 'whatsappNumber': {\n if (!value) return false;\n const digits = String(value).replace(/\\D/g, '');\n return digits.length >= 7 && digits.length <= 15;\n }\n\n // ── Single-select enums: must be non-empty string ──\n case 'gender':\n case 'familyReligion':\n case 'personalReligion':\n case 'reservationStatus':\n case 'minorityStatus':\n case 'primaryLanguage':\n case 'highestQualification':\n case 'politicalSpectrum':\n case 'employmentStatus':\n case 'maritalStatus':\n case 'willVoteThisTime':\n case 'didVoteLastTime':\n case 'votingFrequency':\n case 'participateInRevolution':\n case 'desiredPoliticalPosition':\n case 'politicalExposure':\n case 'comfortWithVisibility':\n case 'socialInfluenceLevel':\n case 'pastExperience':\n case 'neurodiverseIdentity':\n case 'generalHealth':\n case 'healthInsurance':\n case 'physicalActivity':\n case 'sleepQuality':\n case 'stressLevel':\n case 'workShift':\n case 'comfortableWithShift':\n case 'desiredShift':\n case 'learningStyle':\n case 'communicationPreference':\n case 'viewOnAnimalCruelty':\n case 'facingCasteDiscrimination':\n case 'viewOnGenderEquality':\n case 'housingType':\n case 'bplCard':\n case 'migrationStatus':\n case 'landOwnership':\n case 'primaryIncomeSource':\n case 'diet':\n return typeof value === 'string' && value.length > 0;\n\n // ── Multi-select arrays: at least 1 selection ──\n case 'secondaryLanguages':\n case 'primaryVotingIssues':\n case 'leadershipSkillset':\n case 'networkAndCivicEngagement':\n case 'conditions':\n case 'sensoryPreferences':\n case 'supportNeeds':\n case 'disabilityStatus':\n case 'substanceUse':\n case 'viewOnLgbtqStatements':\n case 'viewOnTransgenderInclusion':\n case 'casteDiscriminationPlaces':\n case 'familyMembers':\n case 'digitalAccess':\n return Array.isArray(value) && value.length > 0;\n\n // ── Text inputs: non-empty trimmed string ──\n case 'epicNumber':\n case 'selfPartyAssociation':\n case 'familyPartyAssociation':\n case 'occupation':\n case 'incomeRange':\n case 'householdIncome':\n return typeof value === 'string' && value.trim().length > 0;\n\n // ── Free text: at least 5 chars ──\n case 'changesYouWantToBring':\n case 'dreamOccupation':\n return typeof value === 'string' && value.trim().length >= 5;\n\n // ── Number fields ──\n case 'numberOfDependents':\n return typeof value === 'number' && value >= 0;\n\n // ── Address: at least state and district ──\n case 'currentAddress':\n case 'permanentAddress':\n case 'homeNativePlace':\n case 'ancestralPlace': {\n if (!value || typeof value !== 'object') return false;\n const addr = value as Record<string, unknown>;\n return !!addr.state && !!addr.district;\n }\n\n // ── MBTI type ──\n case 'mbtiType':\n return typeof value === 'string' && value.length > 0;\n\n // ── OCEAN: at least one dimension set ──\n case 'oceanScores': {\n if (!value || typeof value !== 'object') return false;\n const scores = value as Record<string, unknown>;\n return Object.values(scores).some((v) => typeof v === 'number' && v >= 1 && v <= 100);\n }\n\n // ── Compound: publicOfficeAndElections ──\n case 'publicOfficeAndElections': {\n if (!value || typeof value !== 'object') return false;\n const office = value as Record<string, unknown>;\n return !!office.hasHeldOffice;\n }\n\n // ── Education multi-field: at least one field filled ──\n case 'education10th':\n case 'education12th': {\n if (!value || typeof value !== 'object') return false;\n return Object.values(value as Record<string, unknown>).some(\n (v) => typeof v === 'string' && v.trim().length > 0,\n );\n }\n\n // ── Degree repeaters ──\n case 'diplomas':\n case 'graduations':\n case 'postGraduations':\n case 'doctorates':\n case 'postDoctorates': {\n if (!Array.isArray(value) || value.length === 0) return false;\n return value.some(\n (entry: Record<string, unknown>) =>\n typeof entry.degreeName === 'string' && entry.degreeName.trim().length > 0,\n );\n }\n\n // ── Certificate repeater ──\n case 'otherCertificates': {\n if (!Array.isArray(value) || value.length === 0) return false;\n return value.some(\n (entry: Record<string, unknown>) =>\n typeof entry.certificateName === 'string' && entry.certificateName.trim().length > 0,\n );\n }\n\n // ── Text opinions ──\n case 'educationNotes':\n case 'viewOnLgbtqOpinion':\n case 'viewOnTransgenderOpinion':\n return typeof value === 'string' && value.trim().length > 0;\n\n // ── Default: strict (not permissive) ──\n default:\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') return Object.keys(value).length > 0;\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Onboarding Validation — single source of truth.\n *\n * Pure functions, no framework dependencies (no React hooks, no DOM).\n * Used by both frontend (canProceed check) and backend (submission validation).\n *\n * @module udp-schema/validation\n */\n\nimport { calcAge } from './helpers.js';\n\n/**\n * Check if the user can proceed from the current sub-step.\n *\n * @param fieldKey - Current field being filled\n * @param required - Whether the field is required\n * @param form - Current form data (flat key-value object)\n * @returns true if the user can proceed\n */\nexport function canProceed(\n fieldKey: string,\n required: boolean,\n form: Record<string, unknown>,\n): boolean {\n if (!required) return true;\n\n const value = form[fieldKey];\n\n switch (fieldKey) {\n // ── Full name: UI-only object combining firstName/middleName/lastName ──\n // When canProceed is called for fullName field, we check firstName+lastName on form root\n // (the renderer writes them directly to form.firstName, form.middleName, form.lastName).\n case 'fullName': {\n const fn = form.firstName;\n const ln = form.lastName;\n return (\n typeof fn === 'string' &&\n fn.trim().length >= 1 &&\n typeof ln === 'string' &&\n ln.trim().length >= 1\n );\n }\n\n // ── Individual name fields (still validated separately if referenced) ──\n case 'firstName':\n case 'lastName':\n return typeof value === 'string' && value.trim().length >= 1;\n\n // ── Date of birth: must exist AND user must be 18+ ──\n case 'dateOfBirth': {\n if (!value) return false;\n const age = calcAge(String(value));\n return age !== null && age >= 18;\n }\n\n // ── Phone: digits only, 7-15 chars ──\n case 'whatsappNumber': {\n if (!value) return false;\n const digits = String(value).replace(/\\D/g, '');\n return digits.length >= 7 && digits.length <= 15;\n }\n\n // ── Single-select enums: must be non-empty string ──\n case 'gender':\n case 'familyReligion':\n case 'personalReligion':\n case 'reservationStatus':\n case 'minorityStatus':\n case 'primaryLanguage':\n case 'highestQualification':\n case 'politicalSpectrum':\n case 'employmentStatus':\n case 'maritalStatus':\n case 'willVoteThisTime':\n case 'didVoteLastTime':\n case 'votingFrequency':\n case 'participateInRevolution':\n case 'desiredPoliticalPosition':\n case 'politicalExposure':\n case 'comfortWithVisibility':\n case 'socialInfluenceLevel':\n case 'pastExperience':\n case 'neurodiverseIdentity':\n case 'generalHealth':\n case 'healthInsurance':\n case 'physicalActivity':\n case 'sleepQuality':\n case 'stressLevel':\n case 'workShift':\n case 'comfortableWithShift':\n case 'desiredShift':\n case 'learningStyle':\n case 'communicationPreference':\n case 'viewOnAnimalCruelty':\n case 'facingCasteDiscrimination':\n case 'viewOnGenderEquality':\n case 'housingType':\n case 'bplCard':\n case 'migrationStatus':\n case 'landOwnership':\n case 'primaryIncomeSource':\n case 'diet':\n return typeof value === 'string' && value.length > 0;\n\n // ── Multi-select arrays: at least 1 selection ──\n case 'secondaryLanguages':\n case 'primaryVotingIssues':\n case 'leadershipSkillset':\n case 'networkAndCivicEngagement':\n case 'conditions':\n case 'sensoryPreferences':\n case 'supportNeeds':\n case 'disabilityStatus':\n case 'substanceUse':\n case 'viewOnLgbtqStatements':\n case 'viewOnTransgenderInclusion':\n case 'casteDiscriminationPlaces':\n case 'familyMembers':\n case 'digitalAccess':\n return Array.isArray(value) && value.length > 0;\n\n // ── Text inputs: non-empty trimmed string ──\n case 'epicNumber':\n case 'selfPartyAssociation':\n case 'familyPartyAssociation':\n case 'occupation':\n case 'incomeRange':\n case 'householdIncome':\n return typeof value === 'string' && value.trim().length > 0;\n\n // ── Free text: at least 5 chars ──\n case 'changesYouWantToBring':\n case 'dreamOccupation':\n return typeof value === 'string' && value.trim().length >= 5;\n\n // ── Number fields ──\n case 'numberOfDependents':\n return typeof value === 'number' && value >= 0;\n\n // ── Address: at least state and district ──\n case 'currentAddress':\n case 'permanentAddress':\n case 'homeNativePlace':\n case 'ancestralPlace': {\n if (!value || typeof value !== 'object') return false;\n const addr = value as Record<string, unknown>;\n return !!addr.state && !!addr.district;\n }\n\n // ── MBTI type ──\n case 'mbtiType':\n return typeof value === 'string' && value.length > 0;\n\n // ── OCEAN: at least one dimension set ──\n case 'oceanScores': {\n if (!value || typeof value !== 'object') return false;\n const scores = value as Record<string, unknown>;\n return Object.values(scores).some((v) => typeof v === 'number' && v >= 1 && v <= 100);\n }\n\n // ── Compound: publicOfficeAndElections ──\n case 'publicOfficeAndElections': {\n if (!value || typeof value !== 'object') return false;\n const office = value as Record<string, unknown>;\n return !!office.hasHeldOffice;\n }\n\n // ── Education multi-field: at least one field filled ──\n case 'education10th':\n case 'education12th': {\n if (!value || typeof value !== 'object') return false;\n return Object.values(value as Record<string, unknown>).some(\n (v) => typeof v === 'string' && v.trim().length > 0,\n );\n }\n\n // ── Degree repeaters ──\n case 'diplomas':\n case 'graduations':\n case 'postGraduations':\n case 'doctorates':\n case 'postDoctorates': {\n if (!Array.isArray(value) || value.length === 0) return false;\n return value.some(\n (entry: Record<string, unknown>) =>\n typeof entry.degreeName === 'string' && entry.degreeName.trim().length > 0,\n );\n }\n\n // ── Certificate repeater ──\n case 'otherCertificates': {\n if (!Array.isArray(value) || value.length === 0) return false;\n return value.some(\n (entry: Record<string, unknown>) =>\n typeof entry.certificateName === 'string' && entry.certificateName.trim().length > 0,\n );\n }\n\n // ── Text opinions ──\n case 'educationNotes':\n case 'viewOnLgbtqOpinion':\n case 'viewOnTransgenderOpinion':\n return typeof value === 'string' && value.trim().length > 0;\n\n // ── Default: strict (not permissive) ──\n default:\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') return Object.keys(value).length > 0;\n return false;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-schema",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "Shared Zod schemas for User Detailed Profile (frontend + backend).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",