udp-schema 2.4.0 → 2.5.1

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.
@@ -21,19 +21,19 @@ export const UDP_ONBOARDING_FIELDS = {
21
21
  title: 'fullName.title',
22
22
  subtitle: 'fullName.subtitle',
23
23
  successMessage: 'fullName.success',
24
- required: true,
24
+ required: false,
25
25
  },
26
26
  gender: {
27
27
  title: 'gender.title',
28
28
  subtitle: 'gender.subtitle',
29
29
  successMessage: 'gender.success',
30
- required: true,
30
+ required: false,
31
31
  },
32
32
  dateOfBirth: {
33
33
  title: 'dateOfBirth.title',
34
34
  subtitle: 'dateOfBirth.subtitle',
35
35
  successMessage: 'dateOfBirth.success',
36
- required: true,
36
+ required: false,
37
37
  },
38
38
  whatsappNumber: {
39
39
  title: 'whatsappNumber.title',
@@ -45,7 +45,7 @@ export const UDP_ONBOARDING_FIELDS = {
45
45
  title: 'primaryLanguage.title',
46
46
  subtitle: 'primaryLanguage.subtitle',
47
47
  successMessage: 'primaryLanguage.success',
48
- required: true,
48
+ required: false,
49
49
  },
50
50
  secondaryLanguages: {
51
51
  title: 'secondaryLanguages.title',
@@ -57,7 +57,7 @@ export const UDP_ONBOARDING_FIELDS = {
57
57
  title: 'familyReligion.title',
58
58
  subtitle: 'familyReligion.subtitle',
59
59
  successMessage: 'familyReligion.success',
60
- required: true,
60
+ required: false,
61
61
  },
62
62
  personalReligion: {
63
63
  title: 'personalReligion.title',
@@ -69,13 +69,13 @@ export const UDP_ONBOARDING_FIELDS = {
69
69
  title: 'reservationStatus.title',
70
70
  subtitle: 'reservationStatus.subtitle',
71
71
  successMessage: 'reservationStatus.success',
72
- required: true,
72
+ required: false,
73
73
  },
74
74
  minorityStatus: {
75
75
  title: 'minorityStatus.title',
76
76
  subtitle: 'minorityStatus.subtitle',
77
77
  successMessage: 'minorityStatus.success',
78
- required: true,
78
+ required: false,
79
79
  },
80
80
  // ── Step 2: Political Association & History ──
81
81
  politicalSpectrum: {
@@ -206,7 +206,7 @@ export const UDP_ONBOARDING_FIELDS = {
206
206
  title: 'highestQualification.title',
207
207
  subtitle: 'highestQualification.subtitle',
208
208
  successMessage: 'highestQualification.success',
209
- required: true,
209
+ required: false,
210
210
  },
211
211
  education10th: {
212
212
  title: 'education10th.title',
@@ -445,7 +445,7 @@ export const UDP_ONBOARDING_FIELDS = {
445
445
  title: 'currentAddress.title',
446
446
  subtitle: 'currentAddress.subtitle',
447
447
  successMessage: 'currentAddress.success',
448
- required: true,
448
+ required: false,
449
449
  },
450
450
  permanentAddress: {
451
451
  title: 'permanentAddress.title',
@@ -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}\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
+ {"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: false,\n },\n gender: {\n title: 'gender.title',\n subtitle: 'gender.subtitle',\n successMessage: 'gender.success',\n required: false,\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 },\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: false,\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: false,\n },\n minorityStatus: {\n title: 'minorityStatus.title',\n subtitle: 'minorityStatus.subtitle',\n successMessage: 'minorityStatus.success',\n required: false,\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: 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 },\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: 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 },\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"]}
@@ -218,7 +218,7 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
218
218
  }>>>;
219
219
  incomeRange: z.ZodOptional<z.ZodOptional<z.ZodString>>;
220
220
  dreamOccupation: z.ZodOptional<z.ZodOptional<z.ZodString>>;
221
- highestQualification: z.ZodOptional<z.ZodEnum<{
221
+ highestQualification: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
222
222
  CLASS_10: "CLASS_10";
223
223
  CLASS_12: "CLASS_12";
224
224
  DIPLOMA: "DIPLOMA";
@@ -227,7 +227,7 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
227
227
  PHD: "PHD";
228
228
  POST_DOCTORATE: "POST_DOCTORATE";
229
229
  OTHER: "OTHER";
230
- }>>;
230
+ }>>>;
231
231
  education10th: z.ZodOptional<z.ZodOptional<z.ZodObject<{
232
232
  board: z.ZodOptional<z.ZodString>;
233
233
  schoolName: z.ZodOptional<z.ZodString>;
@@ -371,13 +371,15 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
371
371
  primaryVotingIssues: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
372
372
  politicalSpectrum: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
373
373
  prefer_not_to_say: "prefer_not_to_say";
374
- "1_tradition_faith": "1_tradition_faith";
375
- "2_faith_curious": "2_faith_curious";
376
- "3_multiplicity_open": "3_multiplicity_open";
377
- "4_pragmatic_flexible": "4_pragmatic_flexible";
378
- "5_evidence_reasoning": "5_evidence_reasoning";
379
- "6_critical_reflective": "6_critical_reflective";
380
- "7_skeptic_optimize": "7_skeptic_optimize";
374
+ far_left: "far_left";
375
+ left: "left";
376
+ centre_left: "centre_left";
377
+ centrist: "centrist";
378
+ centre_right: "centre_right";
379
+ right: "right";
380
+ far_right: "far_right";
381
+ libertarian: "libertarian";
382
+ apolitical: "apolitical";
381
383
  }>>>;
382
384
  selfPartyAssociation: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>>;
383
385
  familyPartyAssociation: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>>;
@@ -395,9 +397,9 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
395
397
  electionDetails: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
396
398
  }, z.core.$strip>>>;
397
399
  networkAndCivicEngagement: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
398
- firstName: z.ZodOptional<z.ZodString>;
400
+ firstName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
399
401
  middleName: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>>;
400
- lastName: z.ZodOptional<z.ZodString>;
402
+ lastName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
401
403
  gender: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
402
404
  man: "man";
403
405
  woman: "woman";
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-form.d.ts","sourceRoot":"","sources":["../src/onboarding-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoCxB,CAAC;AAEb,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"onboarding-form.d.ts","sourceRoot":"","sources":["../src/onboarding-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoCxB,CAAC;AAEb,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -1,32 +1,40 @@
1
1
  import type { FieldGroup } from './types.js';
2
2
  export declare const politicalSpectrumOptions: readonly [{
3
- readonly value: "1_tradition_faith";
4
- readonly label: "Guided by Tradition & Wisdom";
5
- readonly description: "Truth through inherited traditions and spiritual beliefs";
3
+ readonly value: "far_left";
4
+ readonly label: "Far Left";
5
+ readonly description: "Radical progressive systemic change, social justice, anti-capitalist";
6
6
  }, {
7
- readonly value: "2_faith_curious";
8
- readonly label: "Balancing Faith with Questions";
9
- readonly description: "Respect traditions but open to asking questions";
7
+ readonly value: "left";
8
+ readonly label: "Left";
9
+ readonly description: "Progressive strong social safety net, equality, regulation";
10
10
  }, {
11
- readonly value: "3_multiplicity_open";
12
- readonly label: "Open to Multiple Perspectives";
13
- readonly description: "Value in diverse worldviews";
11
+ readonly value: "centre_left";
12
+ readonly label: "Centre-Left";
13
+ readonly description: "Liberal social freedoms, moderate reform, inclusive policies";
14
14
  }, {
15
- readonly value: "4_pragmatic_flexible";
16
- readonly label: "Pragmatic & Contextual";
17
- readonly description: "What works is what matters";
15
+ readonly value: "centrist";
16
+ readonly label: "Centrist";
17
+ readonly description: "Pragmatic middle picks issues over ideology, open to both sides";
18
18
  }, {
19
- readonly value: "5_evidence_reasoning";
20
- readonly label: "Evidence-Informed";
21
- readonly description: "Decisions based on data and logic";
19
+ readonly value: "centre_right";
20
+ readonly label: "Centre-Right";
21
+ readonly description: "Moderate conservative fiscal discipline, traditional institutions, gradual change";
22
22
  }, {
23
- readonly value: "6_critical_reflective";
24
- readonly label: "Critical Analyst";
25
- readonly description: "Systematically examine own thinking";
23
+ readonly value: "right";
24
+ readonly label: "Right";
25
+ readonly description: "Conservative limited government, free markets, cultural tradition";
26
26
  }, {
27
- readonly value: "7_skeptic_optimize";
28
- readonly label: "Perpetual Skeptic";
29
- readonly description: "Question everything including yourself";
27
+ readonly value: "far_right";
28
+ readonly label: "Far Right";
29
+ readonly description: "Nationalist strong borders, traditional values, national identity first";
30
+ }, {
31
+ readonly value: "libertarian";
32
+ readonly label: "Libertarian";
33
+ readonly description: "Maximum personal freedom — minimal government in both social and economic life";
34
+ }, {
35
+ readonly value: "apolitical";
36
+ readonly label: "Apolitical";
37
+ readonly description: "Not interested in politics — focus on personal life";
30
38
  }, {
31
39
  readonly value: "prefer_not_to_say";
32
40
  readonly label: "Prefer not to say";
@@ -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;AAE7C,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqC3B,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBf,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYzB,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,UAyDlC,CAAC"}
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;AAE7C,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C3B,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBf,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYzB,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,UAyDlC,CAAC"}
@@ -1,38 +1,48 @@
1
1
  export const politicalSpectrumOptions = [
2
2
  {
3
- value: '1_tradition_faith',
4
- label: 'Guided by Tradition & Wisdom',
5
- description: 'Truth through inherited traditions and spiritual beliefs',
3
+ value: 'far_left',
4
+ label: 'Far Left',
5
+ description: 'Radical progressive systemic change, social justice, anti-capitalist',
6
6
  },
7
7
  {
8
- value: '2_faith_curious',
9
- label: 'Balancing Faith with Questions',
10
- description: 'Respect traditions but open to asking questions',
8
+ value: 'left',
9
+ label: 'Left',
10
+ description: 'Progressive strong social safety net, equality, regulation',
11
11
  },
12
12
  {
13
- value: '3_multiplicity_open',
14
- label: 'Open to Multiple Perspectives',
15
- description: 'Value in diverse worldviews',
13
+ value: 'centre_left',
14
+ label: 'Centre-Left',
15
+ description: 'Liberal social freedoms, moderate reform, inclusive policies',
16
16
  },
17
17
  {
18
- value: '4_pragmatic_flexible',
19
- label: 'Pragmatic & Contextual',
20
- description: 'What works is what matters',
18
+ value: 'centrist',
19
+ label: 'Centrist',
20
+ description: 'Pragmatic middle picks issues over ideology, open to both sides',
21
21
  },
22
22
  {
23
- value: '5_evidence_reasoning',
24
- label: 'Evidence-Informed',
25
- description: 'Decisions based on data and logic',
23
+ value: 'centre_right',
24
+ label: 'Centre-Right',
25
+ description: 'Moderate conservative fiscal discipline, traditional institutions, gradual change',
26
26
  },
27
27
  {
28
- value: '6_critical_reflective',
29
- label: 'Critical Analyst',
30
- description: 'Systematically examine own thinking',
28
+ value: 'right',
29
+ label: 'Right',
30
+ description: 'Conservative limited government, free markets, cultural tradition',
31
31
  },
32
32
  {
33
- value: '7_skeptic_optimize',
34
- label: 'Perpetual Skeptic',
35
- description: 'Question everything including yourself',
33
+ value: 'far_right',
34
+ label: 'Far Right',
35
+ description: 'Nationalist strong borders, traditional values, national identity first',
36
+ },
37
+ {
38
+ value: 'libertarian',
39
+ label: 'Libertarian',
40
+ description: 'Maximum personal freedom — minimal government in both social and economic life',
41
+ },
42
+ {
43
+ value: 'apolitical',
44
+ label: 'Apolitical',
45
+ description: 'Not interested in politics — focus on personal life',
36
46
  },
37
47
  { value: 'prefer_not_to_say', label: 'Prefer not to say' },
38
48
  ];
@@ -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';\n\nexport const politicalSpectrumOptions = [\n {\n value: '1_tradition_faith',\n label: 'Guided by Tradition & Wisdom',\n description: 'Truth through inherited traditions and spiritual beliefs',\n },\n {\n value: '2_faith_curious',\n label: 'Balancing Faith with Questions',\n description: 'Respect traditions but open to asking questions',\n },\n {\n value: '3_multiplicity_open',\n label: 'Open to Multiple Perspectives',\n description: 'Value in diverse worldviews',\n },\n {\n value: '4_pragmatic_flexible',\n label: 'Pragmatic & Contextual',\n description: 'What works is what matters',\n },\n {\n value: '5_evidence_reasoning',\n label: 'Evidence-Informed',\n description: 'Decisions based on data and logic',\n },\n {\n value: '6_critical_reflective',\n label: 'Critical Analyst',\n description: 'Systematically examine own thinking',\n },\n {\n value: '7_skeptic_optimize',\n label: 'Perpetual Skeptic',\n description: 'Question everything including yourself',\n },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const partyOptions = [\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' },\n { value: 'shiv_sena', label: 'Shiv Sena' },\n { value: 'jdu', label: 'JD(U)' },\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: 'bjd', label: 'BJD' },\n { value: 'jmm', label: 'JMM' },\n { value: 'none', label: 'No party affiliation' },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const civicEngagementOptions = [\n { value: 'ngo', label: 'NGO / Non-profit' },\n { value: 'trade_union', label: 'Trade Union' },\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: 'youth_club', label: 'Youth Club' },\n { value: 'religious_organization', label: 'Religious Organization' },\n { value: 'caste_association', label: 'Caste Association' },\n { value: 'professional_body', label: 'Professional Body' },\n { value: 'none', label: 'None' },\n { value: 'other', label: 'Other' },\n] as const;\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 order: 3,\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: 4,\n key: 'publicOfficeAndElections',\n label: 'Public Office & Elections',\n type: 'object',\n step: 2,\n isOnboarding: true,\n optional: true,\n description: 'Have you held public office or contested elections?',\n },\n {\n order: 5,\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":"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","sourcesContent":["import 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: '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\nexport const partyOptions = [\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' },\n { value: 'shiv_sena', label: 'Shiv Sena' },\n { value: 'jdu', label: 'JD(U)' },\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: 'bjd', label: 'BJD' },\n { value: 'jmm', label: 'JMM' },\n { value: 'none', label: 'No party affiliation' },\n { value: 'other', label: 'Other' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const civicEngagementOptions = [\n { value: 'ngo', label: 'NGO / Non-profit' },\n { value: 'trade_union', label: 'Trade Union' },\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: 'youth_club', label: 'Youth Club' },\n { value: 'religious_organization', label: 'Religious Organization' },\n { value: 'caste_association', label: 'Caste Association' },\n { value: 'professional_body', label: 'Professional Body' },\n { value: 'none', label: 'None' },\n { value: 'other', label: 'Other' },\n] as const;\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 order: 3,\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: 4,\n key: 'publicOfficeAndElections',\n label: 'Public Office & Elections',\n type: 'object',\n step: 2,\n isOnboarding: true,\n optional: true,\n description: 'Have you held public office or contested elections?',\n },\n {\n order: 5,\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"]}
@@ -23,7 +23,10 @@ export interface BaseField {
23
23
  step: number;
24
24
  /** Whether this field is collected during onboarding */
25
25
  isOnboarding: boolean;
26
- /** If true, can be skipped during onboarding */
26
+ /**
27
+ * All UDP fields are optional — users can skip any question.
28
+ * This flag is kept for metadata/documentation but does not affect form flow.
29
+ */
27
30
  optional?: boolean;
28
31
  /** Help text shown below the field */
29
32
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EACA,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,eAAe,GACf,cAAc,GACd,QAAQ,GACR,cAAc,GACd,SAAS,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,WAAW,GACX,CAAC,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EACA,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,eAAe,GACf,cAAc,GACd,QAAQ,GACR,cAAc,GACd,SAAS,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,WAAW,GACX,CAAC,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Type definitions for UDP profile field configuration.\n *\n * Mirrors the dating-schema profile-fields/types.ts pattern.\n * These types describe field metadata — NOT the user's actual profile data.\n */\n\nexport interface FieldOption {\n value: string;\n label: string;\n /** Short description — shown on chips/cards */\n description?: string;\n}\n\nexport interface BaseField {\n /** Display order within the step */\n order: number;\n /** Unique key — maps to DB field name */\n key: string;\n /** Human-readable label */\n label: string;\n /** Field type for form rendering */\n type:\n | 'text'\n | 'textarea'\n | 'number'\n | 'date'\n | 'single_select'\n | 'multi_select'\n | 'object'\n | 'object_array'\n | 'address';\n /** Step number (1-12) this field belongs to */\n step: number;\n /** Whether this field is collected during onboarding */\n isOnboarding: boolean;\n /** If true, can be skipped during onboarding */\n optional?: boolean;\n /** Help text shown below the field */\n description?: string;\n /** Mark as sensitive (shown with privacy notice) */\n sensitive?: boolean;\n /** If set, field only applicable when referenced field has one of the listed values */\n conditionalOn?: { field: string; values: string[] };\n}\n\nexport interface SelectField extends BaseField {\n type: 'single_select';\n options: FieldOption[];\n}\n\nexport interface MultiSelectField extends BaseField {\n type: 'multi_select';\n options: FieldOption[];\n maxSelect?: number;\n}\n\nexport interface TextField extends BaseField {\n type: 'text' | 'textarea';\n maxLength?: number;\n}\n\nexport interface NumberField extends BaseField {\n type: 'number';\n min?: number;\n max?: number;\n}\n\nexport type ProfileField =\n | SelectField\n | MultiSelectField\n | TextField\n | NumberField\n | (BaseField & { type: 'date' | 'object' | 'object_array' | 'address' });\n\nexport interface FieldGroup {\n key: string;\n label: string;\n description?: string;\n step: number;\n fields: ProfileField[];\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile-fields/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Type definitions for UDP profile field configuration.\n *\n * Mirrors the dating-schema profile-fields/types.ts pattern.\n * These types describe field metadata — NOT the user's actual profile data.\n */\n\nexport interface FieldOption {\n value: string;\n label: string;\n /** Short description — shown on chips/cards */\n description?: string;\n}\n\nexport interface BaseField {\n /** Display order within the step */\n order: number;\n /** Unique key — maps to DB field name */\n key: string;\n /** Human-readable label */\n label: string;\n /** Field type for form rendering */\n type:\n | 'text'\n | 'textarea'\n | 'number'\n | 'date'\n | 'single_select'\n | 'multi_select'\n | 'object'\n | 'object_array'\n | 'address';\n /** Step number (1-12) this field belongs to */\n step: number;\n /** Whether this field is collected during onboarding */\n isOnboarding: boolean;\n /**\n * All UDP fields are optional — users can skip any question.\n * This flag is kept for metadata/documentation but does not affect form flow.\n */\n optional?: boolean;\n /** Help text shown below the field */\n description?: string;\n /** Mark as sensitive (shown with privacy notice) */\n sensitive?: boolean;\n /** If set, field only applicable when referenced field has one of the listed values */\n conditionalOn?: { field: string; values: string[] };\n}\n\nexport interface SelectField extends BaseField {\n type: 'single_select';\n options: FieldOption[];\n}\n\nexport interface MultiSelectField extends BaseField {\n type: 'multi_select';\n options: FieldOption[];\n maxSelect?: number;\n}\n\nexport interface TextField extends BaseField {\n type: 'text' | 'textarea';\n maxLength?: number;\n}\n\nexport interface NumberField extends BaseField {\n type: 'number';\n min?: number;\n max?: number;\n}\n\nexport type ProfileField =\n | SelectField\n | MultiSelectField\n | TextField\n | NumberField\n | (BaseField & { type: 'date' | 'object' | 'object_array' | 'address' });\n\nexport interface FieldGroup {\n key: string;\n label: string;\n description?: string;\n step: number;\n fields: ProfileField[];\n}\n"]}
@@ -9,9 +9,9 @@
9
9
  */
10
10
  import { z } from 'zod';
11
11
  export declare const step01ProfileSchema: z.ZodObject<{
12
- firstName: z.ZodString;
12
+ firstName: z.ZodOptional<z.ZodString>;
13
13
  middleName: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
14
- lastName: z.ZodString;
14
+ lastName: z.ZodOptional<z.ZodString>;
15
15
  gender: z.ZodOptional<z.ZodEnum<{
16
16
  man: "man";
17
17
  woman: "woman";
@@ -1 +1 @@
1
- {"version":3,"file":"step-01.schema.d.ts","sourceRoot":"","sources":["../src/step-01.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2G9B,CAAC;AAIH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"step-01.schema.d.ts","sourceRoot":"","sources":["../src/step-01.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiG9B,CAAC;AAIH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -11,17 +11,9 @@ import { z } from 'zod';
11
11
  import { emptyStringToUndefined, optionalPhoneSchema, optionalTrimmedString, } from './zod-helpers.js';
12
12
  // ─── Main Step 01 Schema ────────────────────────────────────────────────────
13
13
  export const step01ProfileSchema = z.object({
14
- firstName: z
15
- .string()
16
- .trim()
17
- .min(1, 'First name is required')
18
- .max(50, 'First name must be at most 50 characters'),
14
+ firstName: z.string().trim().max(50).optional(),
19
15
  middleName: optionalTrimmedString,
20
- lastName: z
21
- .string()
22
- .trim()
23
- .min(1, 'Last name is required')
24
- .max(50, 'Last name must be at most 50 characters'),
16
+ lastName: z.string().trim().max(50).optional(),
25
17
  gender: z
26
18
  .enum([
27
19
  'man',
@@ -1 +1 @@
1
- {"version":3,"file":"step-01.schema.js","sourceRoot":"","sources":["../src/step-01.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;SAChC,GAAG,CAAC,EAAE,EAAE,0CAA0C,CAAC;IAEtD,UAAU,EAAE,qBAAqB;IAEjC,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;SAC/B,GAAG,CAAC,EAAE,EAAE,yCAAyC,CAAC;IAErD,MAAM,EAAE,CAAC;SACN,IAAI,CAAC;QACJ,KAAK;QACL,OAAO;QACP,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,SAAS;QACT,YAAY;QACZ,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE7E,cAAc,EAAE,mBAAmB;IAEnC,mGAAmG;IACnG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAE7C,qCAAqC;IACrC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEjE;;;OAGG;IACH,cAAc,EAAE,CAAC;SACd,IAAI,CAAC;QACJ,OAAO;QACP,cAAc;QACd,aAAa;QACb,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,mBAAmB;QACnB,QAAQ;QACR,OAAO;QACP,WAAW;QACX,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,yDAAyD;IACzD,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC;QACJ,OAAO;QACP,cAAc;QACd,aAAa;QACb,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,mBAAmB;QACnB,QAAQ;QACR,OAAO;QACP,WAAW;QACX,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,mCAAmC;IACnC,iBAAiB,EAAE,CAAC;SACjB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;SACtF,QAAQ,EAAE;IAEb,gCAAgC;IAChC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjF,CAAC,CAAC","sourcesContent":["/**\n * Step 01 — Profile\n *\n * Fields: firstName, middleName, lastName, gender, dateOfBirth,\n * whatsappNumber, primaryLanguage, secondaryLanguages,\n * familyReligion, personalReligion, reservationStatus, minorityStatus\n *\n * @module udp-schema/step-01\n */\n\nimport { z } from 'zod';\nimport {\n emptyStringToUndefined,\n optionalPhoneSchema,\n optionalTrimmedString,\n} from './zod-helpers.js';\n\n// ─── Main Step 01 Schema ────────────────────────────────────────────────────\n\nexport const step01ProfileSchema = z.object({\n firstName: z\n .string()\n .trim()\n .min(1, 'First name is required')\n .max(50, 'First name must be at most 50 characters'),\n\n middleName: optionalTrimmedString,\n\n lastName: z\n .string()\n .trim()\n .min(1, 'Last name is required')\n .max(50, 'Last name must be at most 50 characters'),\n\n gender: z\n .enum([\n 'man',\n 'woman',\n 'non_binary',\n 'transgender_man',\n 'transgender_woman',\n 'genderqueer',\n 'genderfluid',\n 'agender',\n 'two_spirit',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n dateOfBirth: z.preprocess(emptyStringToUndefined, z.coerce.date().optional()),\n\n whatsappNumber: optionalPhoneSchema,\n\n /** Single language code string (e.g., \"hindi\", \"english\") — matches dating motherTongue options */\n primaryLanguage: z.string().trim().optional(),\n\n /** Array of language code strings */\n secondaryLanguages: z.array(z.string().trim()).max(10).optional(),\n\n /**\n * Family religion — uses dating-schema religion option values.\n * e.g., \"hindu\", \"muslim_sunni\", \"christian_catholic\", etc.\n */\n familyReligion: z\n .enum([\n 'hindu',\n 'muslim_sunni',\n 'muslim_shia',\n 'muslim_sufi',\n 'muslim_other',\n 'christian_catholic',\n 'christian_protestant',\n 'christian_other',\n 'sikh',\n 'jain_digambar',\n 'jain_shwetambar',\n 'buddhist',\n 'parsi_zoroastrian',\n 'jewish',\n 'bahai',\n 'spiritual',\n 'atheist',\n 'agnostic',\n 'no_religion',\n 'inter_religion',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Personal religion — same options as familyReligion */\n personalReligion: z\n .enum([\n 'hindu',\n 'muslim_sunni',\n 'muslim_shia',\n 'muslim_sufi',\n 'muslim_other',\n 'christian_catholic',\n 'christian_protestant',\n 'christian_other',\n 'sikh',\n 'jain_digambar',\n 'jain_shwetambar',\n 'buddhist',\n 'parsi_zoroastrian',\n 'jewish',\n 'bahai',\n 'spiritual',\n 'atheist',\n 'agnostic',\n 'no_religion',\n 'inter_religion',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Reservation / caste category */\n reservationStatus: z\n .enum(['SC', 'ST', 'OBC_NC', 'OBC_C', 'EWS', 'GENERAL', 'DONT_KNOW', 'PREFER_NOT_SAY'])\n .optional(),\n\n /** Minority community status */\n minorityStatus: z.enum(['NO', 'RELIGIOUS', 'LINGUISTIC', 'NOT_SURE']).optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step01ProfileInput = z.infer<typeof step01ProfileSchema>;\n"]}
1
+ {"version":3,"file":"step-01.schema.js","sourceRoot":"","sources":["../src/step-01.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE9C,MAAM,EAAE,CAAC;SACN,IAAI,CAAC;QACJ,KAAK;QACL,OAAO;QACP,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,SAAS;QACT,YAAY;QACZ,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE7E,cAAc,EAAE,mBAAmB;IAEnC,mGAAmG;IACnG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAE7C,qCAAqC;IACrC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEjE;;;OAGG;IACH,cAAc,EAAE,CAAC;SACd,IAAI,CAAC;QACJ,OAAO;QACP,cAAc;QACd,aAAa;QACb,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,mBAAmB;QACnB,QAAQ;QACR,OAAO;QACP,WAAW;QACX,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,yDAAyD;IACzD,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC;QACJ,OAAO;QACP,cAAc;QACd,aAAa;QACb,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,mBAAmB;QACnB,QAAQ;QACR,OAAO;QACP,WAAW;QACX,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,mCAAmC;IACnC,iBAAiB,EAAE,CAAC;SACjB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;SACtF,QAAQ,EAAE;IAEb,gCAAgC;IAChC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjF,CAAC,CAAC","sourcesContent":["/**\n * Step 01 — Profile\n *\n * Fields: firstName, middleName, lastName, gender, dateOfBirth,\n * whatsappNumber, primaryLanguage, secondaryLanguages,\n * familyReligion, personalReligion, reservationStatus, minorityStatus\n *\n * @module udp-schema/step-01\n */\n\nimport { z } from 'zod';\nimport {\n emptyStringToUndefined,\n optionalPhoneSchema,\n optionalTrimmedString,\n} from './zod-helpers.js';\n\n// ─── Main Step 01 Schema ────────────────────────────────────────────────────\n\nexport const step01ProfileSchema = z.object({\n firstName: z.string().trim().max(50).optional(),\n middleName: optionalTrimmedString,\n lastName: z.string().trim().max(50).optional(),\n\n gender: z\n .enum([\n 'man',\n 'woman',\n 'non_binary',\n 'transgender_man',\n 'transgender_woman',\n 'genderqueer',\n 'genderfluid',\n 'agender',\n 'two_spirit',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n dateOfBirth: z.preprocess(emptyStringToUndefined, z.coerce.date().optional()),\n\n whatsappNumber: optionalPhoneSchema,\n\n /** Single language code string (e.g., \"hindi\", \"english\") — matches dating motherTongue options */\n primaryLanguage: z.string().trim().optional(),\n\n /** Array of language code strings */\n secondaryLanguages: z.array(z.string().trim()).max(10).optional(),\n\n /**\n * Family religion — uses dating-schema religion option values.\n * e.g., \"hindu\", \"muslim_sunni\", \"christian_catholic\", etc.\n */\n familyReligion: z\n .enum([\n 'hindu',\n 'muslim_sunni',\n 'muslim_shia',\n 'muslim_sufi',\n 'muslim_other',\n 'christian_catholic',\n 'christian_protestant',\n 'christian_other',\n 'sikh',\n 'jain_digambar',\n 'jain_shwetambar',\n 'buddhist',\n 'parsi_zoroastrian',\n 'jewish',\n 'bahai',\n 'spiritual',\n 'atheist',\n 'agnostic',\n 'no_religion',\n 'inter_religion',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Personal religion — same options as familyReligion */\n personalReligion: z\n .enum([\n 'hindu',\n 'muslim_sunni',\n 'muslim_shia',\n 'muslim_sufi',\n 'muslim_other',\n 'christian_catholic',\n 'christian_protestant',\n 'christian_other',\n 'sikh',\n 'jain_digambar',\n 'jain_shwetambar',\n 'buddhist',\n 'parsi_zoroastrian',\n 'jewish',\n 'bahai',\n 'spiritual',\n 'atheist',\n 'agnostic',\n 'no_religion',\n 'inter_religion',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Reservation / caste category */\n reservationStatus: z\n .enum(['SC', 'ST', 'OBC_NC', 'OBC_C', 'EWS', 'GENERAL', 'DONT_KNOW', 'PREFER_NOT_SAY'])\n .optional(),\n\n /** Minority community status */\n minorityStatus: z.enum(['NO', 'RELIGIOUS', 'LINGUISTIC', 'NOT_SURE']).optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step01ProfileInput = z.infer<typeof step01ProfileSchema>;\n"]}
@@ -10,13 +10,15 @@ import { z } from 'zod';
10
10
  export declare const step02PoliticalSchema: z.ZodObject<{
11
11
  politicalSpectrum: z.ZodOptional<z.ZodEnum<{
12
12
  prefer_not_to_say: "prefer_not_to_say";
13
- "1_tradition_faith": "1_tradition_faith";
14
- "2_faith_curious": "2_faith_curious";
15
- "3_multiplicity_open": "3_multiplicity_open";
16
- "4_pragmatic_flexible": "4_pragmatic_flexible";
17
- "5_evidence_reasoning": "5_evidence_reasoning";
18
- "6_critical_reflective": "6_critical_reflective";
19
- "7_skeptic_optimize": "7_skeptic_optimize";
13
+ far_left: "far_left";
14
+ left: "left";
15
+ centre_left: "centre_left";
16
+ centrist: "centrist";
17
+ centre_right: "centre_right";
18
+ right: "right";
19
+ far_right: "far_right";
20
+ libertarian: "libertarian";
21
+ apolitical: "apolitical";
20
22
  }>>;
21
23
  selfPartyAssociation: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
22
24
  familyPartyAssociation: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"step-02.schema.d.ts","sourceRoot":"","sources":["../src/step-02.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiChC,CAAC;AAIH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"step-02.schema.d.ts","sourceRoot":"","sources":["../src/step-02.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmChC,CAAC;AAIH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -10,16 +10,18 @@ import { z } from 'zod';
10
10
  import { optionalTrimmedString } from './zod-helpers.js';
11
11
  // ─── Main Step 02 Schema ────────────────────────────────────────────────────
12
12
  export const step02PoliticalSchema = z.object({
13
- /** Political spectrum — uses dating-schema cognitiveBand values */
13
+ /** Political spectrum — left/right axis (matches dating-schema politicalOrientation values) */
14
14
  politicalSpectrum: z
15
15
  .enum([
16
- '1_tradition_faith',
17
- '2_faith_curious',
18
- '3_multiplicity_open',
19
- '4_pragmatic_flexible',
20
- '5_evidence_reasoning',
21
- '6_critical_reflective',
22
- '7_skeptic_optimize',
16
+ 'far_left',
17
+ 'left',
18
+ 'centre_left',
19
+ 'centrist',
20
+ 'centre_right',
21
+ 'right',
22
+ 'far_right',
23
+ 'libertarian',
24
+ 'apolitical',
23
25
  'prefer_not_to_say',
24
26
  ])
25
27
  .optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"step-02.schema.js","sourceRoot":"","sources":["../src/step-02.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,mEAAmE;IACnE,iBAAiB,EAAE,CAAC;SACjB,IAAI,CAAC;QACJ,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,6BAA6B;IAC7B,oBAAoB,EAAE,qBAAqB;IAE3C,+BAA+B;IAC/B,sBAAsB,EAAE,qBAAqB;IAE7C,0CAA0C;IAC1C,wBAAwB,EAAE,CAAC;SACxB,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpE,aAAa,EAAE,qBAAqB;QACpC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;QACnD,eAAe,EAAE,qBAAqB;KACvC,CAAC;SACD,QAAQ,EAAE;IAEb,kDAAkD;IAClD,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC,CAAC","sourcesContent":["/**\n * Step 02 — Political Association & History\n *\n * Fields: politicalSpectrum, selfPartyAssociation, familyPartyAssociation,\n * publicOfficeAndElections, networkAndCivicEngagement\n *\n * @module udp-schema/step-02\n */\n\nimport { z } from 'zod';\nimport { optionalTrimmedString } from './zod-helpers.js';\n\n// ─── Main Step 02 Schema ────────────────────────────────────────────────────\n\nexport const step02PoliticalSchema = z.object({\n /** Political spectrum — uses dating-schema cognitiveBand values */\n politicalSpectrum: z\n .enum([\n '1_tradition_faith',\n '2_faith_curious',\n '3_multiplicity_open',\n '4_pragmatic_flexible',\n '5_evidence_reasoning',\n '6_critical_reflective',\n '7_skeptic_optimize',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Self party association */\n selfPartyAssociation: optionalTrimmedString,\n\n /** Family party association */\n familyPartyAssociation: optionalTrimmedString,\n\n /** Public office and elections history */\n publicOfficeAndElections: z\n .object({\n hasHeldOffice: z.enum(['yes', 'no', 'prefer_not_to_say']).optional(),\n officeDetails: optionalTrimmedString,\n electionContested: z.enum(['yes', 'no']).optional(),\n electionDetails: optionalTrimmedString,\n })\n .optional(),\n\n /** Network and civic engagement (multi-select) */\n networkAndCivicEngagement: z.array(z.string().trim()).optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step02PoliticalInput = z.infer<typeof step02PoliticalSchema>;\n"]}
1
+ {"version":3,"file":"step-02.schema.js","sourceRoot":"","sources":["../src/step-02.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,+FAA+F;IAC/F,iBAAiB,EAAE,CAAC;SACjB,IAAI,CAAC;QACJ,UAAU;QACV,MAAM;QACN,aAAa;QACb,UAAU;QACV,cAAc;QACd,OAAO;QACP,WAAW;QACX,aAAa;QACb,YAAY;QACZ,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,6BAA6B;IAC7B,oBAAoB,EAAE,qBAAqB;IAE3C,+BAA+B;IAC/B,sBAAsB,EAAE,qBAAqB;IAE7C,0CAA0C;IAC1C,wBAAwB,EAAE,CAAC;SACxB,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpE,aAAa,EAAE,qBAAqB;QACpC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;QACnD,eAAe,EAAE,qBAAqB;KACvC,CAAC;SACD,QAAQ,EAAE;IAEb,kDAAkD;IAClD,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC,CAAC","sourcesContent":["/**\n * Step 02 — Political Association & History\n *\n * Fields: politicalSpectrum, selfPartyAssociation, familyPartyAssociation,\n * publicOfficeAndElections, networkAndCivicEngagement\n *\n * @module udp-schema/step-02\n */\n\nimport { z } from 'zod';\nimport { optionalTrimmedString } from './zod-helpers.js';\n\n// ─── Main Step 02 Schema ────────────────────────────────────────────────────\n\nexport const step02PoliticalSchema = z.object({\n /** Political spectrum — left/right axis (matches dating-schema politicalOrientation values) */\n politicalSpectrum: z\n .enum([\n 'far_left',\n 'left',\n 'centre_left',\n 'centrist',\n 'centre_right',\n 'right',\n 'far_right',\n 'libertarian',\n 'apolitical',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Self party association */\n selfPartyAssociation: optionalTrimmedString,\n\n /** Family party association */\n familyPartyAssociation: optionalTrimmedString,\n\n /** Public office and elections history */\n publicOfficeAndElections: z\n .object({\n hasHeldOffice: z.enum(['yes', 'no', 'prefer_not_to_say']).optional(),\n officeDetails: optionalTrimmedString,\n electionContested: z.enum(['yes', 'no']).optional(),\n electionDetails: optionalTrimmedString,\n })\n .optional(),\n\n /** Network and civic engagement (multi-select) */\n networkAndCivicEngagement: z.array(z.string().trim()).optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step02PoliticalInput = z.infer<typeof step02PoliticalSchema>;\n"]}
@@ -23,7 +23,7 @@ export declare const certificateEntrySchema: z.ZodObject<{
23
23
  fieldOrSubject: z.ZodOptional<z.ZodString>;
24
24
  }, z.core.$strip>;
25
25
  export declare const step06EducationSchema: z.ZodObject<{
26
- highestQualification: z.ZodEnum<{
26
+ highestQualification: z.ZodOptional<z.ZodEnum<{
27
27
  CLASS_10: "CLASS_10";
28
28
  CLASS_12: "CLASS_12";
29
29
  DIPLOMA: "DIPLOMA";
@@ -32,7 +32,7 @@ export declare const step06EducationSchema: z.ZodObject<{
32
32
  PHD: "PHD";
33
33
  POST_DOCTORATE: "POST_DOCTORATE";
34
34
  OTHER: "OTHER";
35
- }>;
35
+ }>>;
36
36
  education10th: z.ZodOptional<z.ZodObject<{
37
37
  board: z.ZodOptional<z.ZodString>;
38
38
  schoolName: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"step-06.schema.d.ts","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0DhC,CAAC;AAIH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"step-06.schema.d.ts","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyDhC,CAAC;AAIH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -27,7 +27,8 @@ export const certificateEntrySchema = z.object({
27
27
  // ─── Main Step 06 Schema ────────────────────────────────────────────────────
28
28
  export const step06EducationSchema = z.object({
29
29
  /** Highest level of formal education completed or in progress */
30
- highestQualification: z.enum([
30
+ highestQualification: z
31
+ .enum([
31
32
  'CLASS_10',
32
33
  'CLASS_12',
33
34
  'DIPLOMA',
@@ -36,7 +37,8 @@ export const step06EducationSchema = z.object({
36
37
  'PHD',
37
38
  'POST_DOCTORATE',
38
39
  'OTHER',
39
- ], { message: 'Please select your highest qualification.' }),
40
+ ])
41
+ .optional(),
40
42
  /** Class 10 / Secondary school details */
41
43
  education10th: z
42
44
  .object({
@@ -1 +1 @@
1
- {"version":3,"file":"step-06.schema.js","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 06 — Education History\n *\n * KEPT from old step-07 schema. Same structure: highest qualification,\n * Class 10 & 12 details, degree repeaters, certificates, notes.\n *\n * @module udp-schema/step-06\n */\n\nimport { z } from 'zod';\nimport { optionalYearSchema } from './zod-helpers.js';\n\n// ─── Reusable sub-schemas ────────────────────────────────────────────────────\n\nexport const degreeEntrySchema = z.object({\n degreeName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n university: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n marksOrGrade: z.string().trim().optional(),\n isCurrentlyStudying: z.boolean().optional(),\n});\n\nexport const certificateEntrySchema = z.object({\n certificateName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n yearOfCompletion: optionalYearSchema,\n fieldOrSubject: z.string().trim().optional(),\n});\n\n// ─── Main Step 06 Schema ────────────────────────────────────────────────────\n\nexport const step06EducationSchema = z.object({\n /** Highest level of formal education completed or in progress */\n highestQualification: z.enum(\n [\n 'CLASS_10',\n 'CLASS_12',\n 'DIPLOMA',\n 'GRADUATION',\n 'POST_GRAD',\n 'PHD',\n 'POST_DOCTORATE',\n 'OTHER',\n ],\n { message: 'Please select your highest qualification.' },\n ),\n\n /** Class 10 / Secondary school details */\n education10th: z\n .object({\n board: z.string().trim().optional(),\n schoolName: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n subjects: z.string().trim().optional(),\n marksObtained: z.string().trim().optional(),\n })\n .optional(),\n\n /** Class 12 / Higher Secondary details */\n education12th: z\n .object({\n institutionName: z.string().trim().optional(),\n boardOrUniversity: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n marksOrGrade: z.string().trim().optional(),\n })\n .optional(),\n\n /** List of Diploma qualifications (one or more) */\n diplomas: z.array(degreeEntrySchema).optional(),\n\n /** List of Graduation / Bachelor's degree qualifications */\n graduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Graduation / Master's degree qualifications */\n postGraduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Doctorate / PhD qualifications */\n doctorates: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Doctoral research or fellowships */\n postDoctorates: z.array(degreeEntrySchema).optional(),\n\n /** Other certificates, short courses, or professional qualifications */\n otherCertificates: z.array(certificateEntrySchema).optional(),\n\n /** Any additional notes about education background */\n educationNotes: z.string().trim().optional(),\n});\n\n// ─── Inferred types ──────────────────────────────────────────────────────────\n\nexport type DegreeEntryInput = z.infer<typeof degreeEntrySchema>;\nexport type CertificateEntryInput = z.infer<typeof certificateEntrySchema>;\nexport type Step06EducationInput = z.infer<typeof step06EducationSchema>;\n"]}
1
+ {"version":3,"file":"step-06.schema.js","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 06 — Education History\n *\n * KEPT from old step-07 schema. Same structure: highest qualification,\n * Class 10 & 12 details, degree repeaters, certificates, notes.\n *\n * @module udp-schema/step-06\n */\n\nimport { z } from 'zod';\nimport { optionalYearSchema } from './zod-helpers.js';\n\n// ─── Reusable sub-schemas ────────────────────────────────────────────────────\n\nexport const degreeEntrySchema = z.object({\n degreeName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n university: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n marksOrGrade: z.string().trim().optional(),\n isCurrentlyStudying: z.boolean().optional(),\n});\n\nexport const certificateEntrySchema = z.object({\n certificateName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n yearOfCompletion: optionalYearSchema,\n fieldOrSubject: z.string().trim().optional(),\n});\n\n// ─── Main Step 06 Schema ────────────────────────────────────────────────────\n\nexport const step06EducationSchema = z.object({\n /** Highest level of formal education completed or in progress */\n highestQualification: z\n .enum([\n 'CLASS_10',\n 'CLASS_12',\n 'DIPLOMA',\n 'GRADUATION',\n 'POST_GRAD',\n 'PHD',\n 'POST_DOCTORATE',\n 'OTHER',\n ])\n .optional(),\n\n /** Class 10 / Secondary school details */\n education10th: z\n .object({\n board: z.string().trim().optional(),\n schoolName: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n subjects: z.string().trim().optional(),\n marksObtained: z.string().trim().optional(),\n })\n .optional(),\n\n /** Class 12 / Higher Secondary details */\n education12th: z\n .object({\n institutionName: z.string().trim().optional(),\n boardOrUniversity: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n marksOrGrade: z.string().trim().optional(),\n })\n .optional(),\n\n /** List of Diploma qualifications (one or more) */\n diplomas: z.array(degreeEntrySchema).optional(),\n\n /** List of Graduation / Bachelor's degree qualifications */\n graduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Graduation / Master's degree qualifications */\n postGraduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Doctorate / PhD qualifications */\n doctorates: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Doctoral research or fellowships */\n postDoctorates: z.array(degreeEntrySchema).optional(),\n\n /** Other certificates, short courses, or professional qualifications */\n otherCertificates: z.array(certificateEntrySchema).optional(),\n\n /** Any additional notes about education background */\n educationNotes: z.string().trim().optional(),\n});\n\n// ─── Inferred types ──────────────────────────────────────────────────────────\n\nexport type DegreeEntryInput = z.infer<typeof degreeEntrySchema>;\nexport type CertificateEntryInput = z.infer<typeof certificateEntrySchema>;\nexport type Step06EducationInput = z.infer<typeof step06EducationSchema>;\n"]}
@@ -1,18 +1,20 @@
1
1
  /**
2
2
  * UDP Onboarding Validation — single source of truth.
3
3
  *
4
- * Pure functions, no framework dependencies (no React hooks, no DOM).
5
- * Used by both frontend (canProceed check) and backend (submission validation).
4
+ * UDP is a fully optional profile users can skip any question.
5
+ * canProceed() always returns true so the Continue button is never blocked.
6
+ *
7
+ * Backend Zod schemas still validate individual field FORMAT when submitted
8
+ * (e.g., dateOfBirth must be a valid Date, whatsappNumber must be 7-15 digits
9
+ * if provided). Those checks happen at submission time, not in the UI flow.
6
10
  *
7
11
  * @module udp-schema/validation
8
12
  */
9
13
  /**
10
14
  * Check if the user can proceed from the current sub-step.
11
15
  *
12
- * @param fieldKey - Current field being filled
13
- * @param required - Whether the field is required
14
- * @param form - Current form data (flat key-value object)
15
- * @returns true if the user can proceed
16
+ * In UDP every field is optional, so this always returns true.
17
+ * The signature matches dating-schema's canProceed() for API consistency.
16
18
  */
17
- export declare function canProceed(fieldKey: string, required: boolean, form: Record<string, unknown>): boolean;
19
+ export declare function canProceed(_fieldKey: string, _required: boolean, _form: Record<string, unknown>): boolean;
18
20
  //# sourceMappingURL=validation.d.ts.map
@@ -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,CA+LT"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAET"}
@@ -1,196 +1,22 @@
1
1
  /**
2
2
  * UDP Onboarding Validation — single source of truth.
3
3
  *
4
- * Pure functions, no framework dependencies (no React hooks, no DOM).
5
- * Used by both frontend (canProceed check) and backend (submission validation).
4
+ * UDP is a fully optional profile users can skip any question.
5
+ * canProceed() always returns true so the Continue button is never blocked.
6
+ *
7
+ * Backend Zod schemas still validate individual field FORMAT when submitted
8
+ * (e.g., dateOfBirth must be a valid Date, whatsappNumber must be 7-15 digits
9
+ * if provided). Those checks happen at submission time, not in the UI flow.
6
10
  *
7
11
  * @module udp-schema/validation
8
12
  */
9
- import { calcAge } from './helpers.js';
10
13
  /**
11
14
  * Check if the user can proceed from the current sub-step.
12
15
  *
13
- * @param fieldKey - Current field being filled
14
- * @param required - Whether the field is required
15
- * @param form - Current form data (flat key-value object)
16
- * @returns true if the user can proceed
16
+ * In UDP every field is optional, so this always returns true.
17
+ * The signature matches dating-schema's canProceed() for API consistency.
17
18
  */
18
- export function canProceed(fieldKey, required, form) {
19
- if (!required)
20
- return true;
21
- const value = form[fieldKey];
22
- switch (fieldKey) {
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) ──
35
- case 'firstName':
36
- case 'lastName':
37
- return typeof value === 'string' && value.trim().length >= 1;
38
- // ── Date of birth: must exist AND user must be 18+ ──
39
- case 'dateOfBirth': {
40
- if (!value)
41
- return false;
42
- const age = calcAge(String(value));
43
- return age !== null && age >= 18;
44
- }
45
- // ── Phone: digits only, 7-15 chars ──
46
- case 'whatsappNumber': {
47
- if (!value)
48
- return false;
49
- const digits = String(value).replace(/\D/g, '');
50
- return digits.length >= 7 && digits.length <= 15;
51
- }
52
- // ── Single-select enums: must be non-empty string ──
53
- case 'gender':
54
- case 'familyReligion':
55
- case 'personalReligion':
56
- case 'reservationStatus':
57
- case 'minorityStatus':
58
- case 'primaryLanguage':
59
- case 'highestQualification':
60
- case 'politicalSpectrum':
61
- case 'employmentStatus':
62
- case 'maritalStatus':
63
- case 'willVoteThisTime':
64
- case 'didVoteLastTime':
65
- case 'votingFrequency':
66
- case 'participateInRevolution':
67
- case 'desiredPoliticalPosition':
68
- case 'politicalExposure':
69
- case 'comfortWithVisibility':
70
- case 'socialInfluenceLevel':
71
- case 'pastExperience':
72
- case 'neurodiverseIdentity':
73
- case 'generalHealth':
74
- case 'healthInsurance':
75
- case 'physicalActivity':
76
- case 'sleepQuality':
77
- case 'stressLevel':
78
- case 'workShift':
79
- case 'comfortableWithShift':
80
- case 'desiredShift':
81
- case 'learningStyle':
82
- case 'communicationPreference':
83
- case 'viewOnAnimalCruelty':
84
- case 'facingCasteDiscrimination':
85
- case 'viewOnGenderEquality':
86
- case 'housingType':
87
- case 'bplCard':
88
- case 'migrationStatus':
89
- case 'landOwnership':
90
- case 'primaryIncomeSource':
91
- case 'diet':
92
- return typeof value === 'string' && value.length > 0;
93
- // ── Multi-select arrays: at least 1 selection ──
94
- case 'secondaryLanguages':
95
- case 'primaryVotingIssues':
96
- case 'leadershipSkillset':
97
- case 'networkAndCivicEngagement':
98
- case 'conditions':
99
- case 'sensoryPreferences':
100
- case 'supportNeeds':
101
- case 'disabilityStatus':
102
- case 'substanceUse':
103
- case 'viewOnLgbtqStatements':
104
- case 'viewOnTransgenderInclusion':
105
- case 'casteDiscriminationPlaces':
106
- case 'familyMembers':
107
- case 'digitalAccess':
108
- return Array.isArray(value) && value.length > 0;
109
- // ── Text inputs: non-empty trimmed string ──
110
- case 'epicNumber':
111
- case 'selfPartyAssociation':
112
- case 'familyPartyAssociation':
113
- case 'occupation':
114
- case 'incomeRange':
115
- case 'householdIncome':
116
- return typeof value === 'string' && value.trim().length > 0;
117
- // ── Free text: at least 5 chars ──
118
- case 'changesYouWantToBring':
119
- case 'dreamOccupation':
120
- return typeof value === 'string' && value.trim().length >= 5;
121
- // ── Number fields ──
122
- case 'numberOfDependents':
123
- return typeof value === 'number' && value >= 0;
124
- // ── Address: at least state and district ──
125
- case 'currentAddress':
126
- case 'permanentAddress':
127
- case 'homeNativePlace':
128
- case 'ancestralPlace': {
129
- if (!value || typeof value !== 'object')
130
- return false;
131
- const addr = value;
132
- return !!addr.state && !!addr.district;
133
- }
134
- // ── MBTI type ──
135
- case 'mbtiType':
136
- return typeof value === 'string' && value.length > 0;
137
- // ── OCEAN: at least one dimension set ──
138
- case 'oceanScores': {
139
- if (!value || typeof value !== 'object')
140
- return false;
141
- const scores = value;
142
- return Object.values(scores).some((v) => typeof v === 'number' && v >= 1 && v <= 100);
143
- }
144
- // ── Compound: publicOfficeAndElections ──
145
- case 'publicOfficeAndElections': {
146
- if (!value || typeof value !== 'object')
147
- return false;
148
- const office = value;
149
- return !!office.hasHeldOffice;
150
- }
151
- // ── Education multi-field: at least one field filled ──
152
- case 'education10th':
153
- case 'education12th': {
154
- if (!value || typeof value !== 'object')
155
- return false;
156
- return Object.values(value).some((v) => typeof v === 'string' && v.trim().length > 0);
157
- }
158
- // ── Degree repeaters ──
159
- case 'diplomas':
160
- case 'graduations':
161
- case 'postGraduations':
162
- case 'doctorates':
163
- case 'postDoctorates': {
164
- if (!Array.isArray(value) || value.length === 0)
165
- return false;
166
- return value.some((entry) => typeof entry.degreeName === 'string' && entry.degreeName.trim().length > 0);
167
- }
168
- // ── Certificate repeater ──
169
- case 'otherCertificates': {
170
- if (!Array.isArray(value) || value.length === 0)
171
- return false;
172
- return value.some((entry) => typeof entry.certificateName === 'string' && entry.certificateName.trim().length > 0);
173
- }
174
- // ── Text opinions ──
175
- case 'educationNotes':
176
- case 'viewOnLgbtqOpinion':
177
- case 'viewOnTransgenderOpinion':
178
- return typeof value === 'string' && value.trim().length > 0;
179
- // ── Default: strict (not permissive) ──
180
- default:
181
- if (value === null || value === undefined)
182
- return false;
183
- if (typeof value === 'string')
184
- return value.trim().length > 0;
185
- if (typeof value === 'number')
186
- return true;
187
- if (typeof value === 'boolean')
188
- return true;
189
- if (Array.isArray(value))
190
- return value.length > 0;
191
- if (typeof value === 'object')
192
- return Object.keys(value).length > 0;
193
- return false;
194
- }
19
+ export function canProceed(_fieldKey, _required, _form) {
20
+ return true;
195
21
  }
196
22
  //# sourceMappingURL=validation.js.map
@@ -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 // ── 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"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,SAAkB,EAClB,KAA8B;IAE9B,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/**\n * UDP Onboarding Validation — single source of truth.\n *\n * UDP is a fully optional profile — users can skip any question.\n * canProceed() always returns true so the Continue button is never blocked.\n *\n * Backend Zod schemas still validate individual field FORMAT when submitted\n * (e.g., dateOfBirth must be a valid Date, whatsappNumber must be 7-15 digits\n * if provided). Those checks happen at submission time, not in the UI flow.\n *\n * @module udp-schema/validation\n */\n\n/**\n * Check if the user can proceed from the current sub-step.\n *\n * In UDP every field is optional, so this always returns true.\n * The signature matches dating-schema's canProceed() for API consistency.\n */\nexport function canProceed(\n _fieldKey: string,\n _required: boolean,\n _form: Record<string, unknown>,\n): boolean {\n return true;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-schema",
3
- "version": "2.4.0",
3
+ "version": "2.5.1",
4
4
  "description": "Shared Zod schemas for User Detailed Profile (frontend + backend).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",