udp-schema 2.16.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -19,7 +19,7 @@
19
19
  export { type OnboardingFormData, udpOnboardingFormSchema, } from './onboarding-form.js';
20
20
  export { canProceed } from './validation.js';
21
21
  export { calcAge, isFieldVisible, labelFor, labelsFor } from './helpers.js';
22
- export { ageOfRealizationOptions, allFieldGroups, type BaseField, boardOptions, casteDiscriminationPlaceOptions, civicEngagementOptions, cognitiveStrengthOptions, communicationPreferenceOptions, DEGREE_VALUES_BY_LEVEL, degreeNameOptions, desiredPoliticalPositionOptions, dietOptions, digitalAccessOptions, disabilityOptions, education, electionResultOptions, electoralBehaviour, employment, employmentStatusOptions, executiveFunctionChallengeOptions, type FieldGroup, type FieldOption, familyMemberOptions, genderOptions, healthLifestyle, household, householdIncomeOptions, impactOnLifeOptions, incomeRangeOptions, languageOptions, leadershipAmbitions, leadershipSkillsetOptions, learningStyleOptions, lgbtqStatementOptions, type MultiSelectField, maskingBurnoutOptions, mbtiOptions, minorityOptions, type NumberField, mentalHealthConditionOptions, neurodevelopmentalConditionOptions, neurodiverseIdentityOptions, neurodiversity, neurologicalChronicConditionOptions, personalityPatternOptions, officeElectionLevelOptions, type ProfileField, partyAssociationRoleOptions, partyOptions, politicalAssociation, politicalSpectrumOptions, profile, psychologicalAssessment, qualificationOptions, relativesInPoliticsOptions, religionOptions, reservationOptions, residence, type SelectField, sensoryProfileOptions, shiftOptions, streamOptions, subjectOptions, substanceUseOptions, supportAccommodationOptions, type TextField, transgenderStatementOptions, votingIssueOptions, worldView, } from './profile-fields/index.js';
22
+ export { ageOfRealizationOptions, allFieldGroups, type BaseField, boardOptions, casteDiscriminationPlaceOptions, civicEngagementOptions, cognitiveStrengthOptions, communicationPreferenceOptions, DEGREE_VALUES_BY_LEVEL, degreeNameOptions, desiredPoliticalPositionOptions, dietOptions, digitalAccessOptions, disabilityOptions, education, electionResultOptions, electoralBehaviour, employment, employmentStatusOptions, executiveFunctionChallengeOptions, type FieldGroup, type FieldOption, familyMemberOptions, genderOptions, healthLifestyle, household, householdIncomeOptions, impactOnLifeOptions, incomeRangeOptions, languageOptions, leadershipAmbitions, leadershipSkillsetOptions, learningStyleOptions, lgbtqStatementOptions, type MultiSelectField, maskingBurnoutOptions, mbtiOptions, mentalHealthConditionOptions, minorityOptions, type NumberField, neurodevelopmentalConditionOptions, neurodiverseIdentityOptions, neurodiversity, neurologicalChronicConditionOptions, officeElectionLevelOptions, type ProfileField, partyAssociationRoleOptions, partyOptions, personalityPatternOptions, politicalAssociation, politicalSpectrumOptions, profile, psychologicalAssessment, qualificationOptions, relativesInPoliticsOptions, religionOptions, reservationOptions, residence, type SelectField, sensoryProfileOptions, shiftOptions, streamOptions, subjectOptions, substanceUseOptions, supportAccommodationOptions, type TextField, transgenderStatementOptions, votingIssueOptions, worldView, } from './profile-fields/index.js';
23
23
  export { getFieldMeta, getFieldOptions, getImmutableFields, getStepSchema, } from './field-helpers.js';
24
24
  export { getUdpOnboardingFieldConfig, UDP_ONBOARDING_FIELDS, UDP_ONBOARDING_STEP_GROUPS, UDP_TOTAL_MAIN_STEPS, UDP_TOTAL_SUB_STEPS, type UdpOnboardingFieldConfig, type UdpOnboardingStepGroup, } from './onboarding-config.js';
25
25
  export { calculateOverallProgress as calculateUdpOverallProgress, calculateStepProgress as calculateUdpStepProgress, getNestedValue, isFieldFilled, UDP_PROGRESS_FIELDS, UDP_TOTAL_STEPS, } from './progress-fields.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ export { ageOfRealizationOptions,
27
27
  // Field groups
28
28
  allFieldGroups, boardOptions, casteDiscriminationPlaceOptions, civicEngagementOptions, cognitiveStrengthOptions, communicationPreferenceOptions, DEGREE_VALUES_BY_LEVEL, degreeNameOptions, desiredPoliticalPositionOptions, dietOptions, digitalAccessOptions, disabilityOptions, education, electionResultOptions, electoralBehaviour, employment, employmentStatusOptions, executiveFunctionChallengeOptions, familyMemberOptions,
29
29
  // Option arrays (with labels + descriptions)
30
- genderOptions, healthLifestyle, household, householdIncomeOptions, impactOnLifeOptions, incomeRangeOptions, languageOptions, leadershipAmbitions, leadershipSkillsetOptions, learningStyleOptions, lgbtqStatementOptions, maskingBurnoutOptions, mbtiOptions, minorityOptions, mentalHealthConditionOptions, neurodevelopmentalConditionOptions, neurodiverseIdentityOptions, neurodiversity, neurologicalChronicConditionOptions, personalityPatternOptions, officeElectionLevelOptions, partyAssociationRoleOptions, partyOptions, politicalAssociation, politicalSpectrumOptions, profile, psychologicalAssessment, qualificationOptions, relativesInPoliticsOptions, religionOptions, reservationOptions, residence, sensoryProfileOptions, shiftOptions, streamOptions, subjectOptions, substanceUseOptions, supportAccommodationOptions, transgenderStatementOptions, votingIssueOptions, worldView, } from './profile-fields/index.js';
30
+ genderOptions, healthLifestyle, household, householdIncomeOptions, impactOnLifeOptions, incomeRangeOptions, languageOptions, leadershipAmbitions, leadershipSkillsetOptions, learningStyleOptions, lgbtqStatementOptions, maskingBurnoutOptions, mbtiOptions, mentalHealthConditionOptions, minorityOptions, neurodevelopmentalConditionOptions, neurodiverseIdentityOptions, neurodiversity, neurologicalChronicConditionOptions, officeElectionLevelOptions, partyAssociationRoleOptions, partyOptions, personalityPatternOptions, politicalAssociation, politicalSpectrumOptions, profile, psychologicalAssessment, qualificationOptions, relativesInPoliticsOptions, religionOptions, reservationOptions, residence, sensoryProfileOptions, shiftOptions, streamOptions, subjectOptions, substanceUseOptions, supportAccommodationOptions, transgenderStatementOptions, votingIssueOptions, worldView, } from './profile-fields/index.js';
31
31
  // ─── Field Helpers (like dating-schema) ─────────────────────────────────────
32
32
  export { getFieldMeta, getFieldOptions, getImmutableFields, getStepSchema, } from './field-helpers.js';
33
33
  // ─── Onboarding Configuration ───────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * udp-schema — Shared schemas for User Detailed Profile (v2)\n *\n * Single source of truth consumed by both reform frontends and reform-backend.\n * 12-step \"1 question per screen\" architecture.\n *\n * Follows the same pattern as dating-schema:\n * - profile-fields/ with rich FieldGroup definitions\n * - getFieldOptions() / getFieldMeta() for runtime introspection\n * - Unified onboarding form schema (udpOnboardingFormSchema)\n * - Validation (canProceed) exported for frontend + backend\n * - Helpers (calcAge, labelFor, labelsFor) shared across codebases\n * - Onboarding-config for step grouping\n * - Zod step schemas for per-step validation\n * - Progress tracking (per-step + overall)\n *\n * @module udp-schema\n */\n\n// ─── Unified Form Schema (like dating's onboardingFormSchema) ───────────────\n\nexport {\n type OnboardingFormData,\n udpOnboardingFormSchema,\n} from './onboarding-form.js';\n\n// ─── Validation (single source of truth — used by frontend + backend) ───────\n\nexport { canProceed } from './validation.js';\n\n// ─── Shared Helpers ─────────────────────────────────────────────────────────\n\nexport { calcAge, isFieldVisible, labelFor, labelsFor } from './helpers.js';\n\n// ─── Profile Fields (rich metadata — like dating-schema) ────────────────────\n\nexport {\n ageOfRealizationOptions,\n // Field groups\n allFieldGroups,\n // Types\n type BaseField,\n boardOptions,\n casteDiscriminationPlaceOptions,\n civicEngagementOptions,\n cognitiveStrengthOptions,\n communicationPreferenceOptions,\n DEGREE_VALUES_BY_LEVEL,\n degreeNameOptions,\n desiredPoliticalPositionOptions,\n dietOptions,\n digitalAccessOptions,\n disabilityOptions,\n education,\n electionResultOptions,\n electoralBehaviour,\n employment,\n employmentStatusOptions,\n executiveFunctionChallengeOptions,\n type FieldGroup,\n type FieldOption,\n familyMemberOptions,\n // Option arrays (with labels + descriptions)\n genderOptions,\n healthLifestyle,\n household,\n householdIncomeOptions,\n impactOnLifeOptions,\n incomeRangeOptions,\n languageOptions,\n leadershipAmbitions,\n leadershipSkillsetOptions,\n learningStyleOptions,\n lgbtqStatementOptions,\n type MultiSelectField,\n maskingBurnoutOptions,\n mbtiOptions,\n minorityOptions,\n type NumberField,\n mentalHealthConditionOptions,\n neurodevelopmentalConditionOptions,\n neurodiverseIdentityOptions,\n neurodiversity,\n neurologicalChronicConditionOptions,\n personalityPatternOptions,\n officeElectionLevelOptions,\n type ProfileField,\n partyAssociationRoleOptions,\n partyOptions,\n politicalAssociation,\n politicalSpectrumOptions,\n profile,\n psychologicalAssessment,\n qualificationOptions,\n relativesInPoliticsOptions,\n religionOptions,\n reservationOptions,\n residence,\n type SelectField,\n sensoryProfileOptions,\n shiftOptions,\n streamOptions,\n subjectOptions,\n substanceUseOptions,\n supportAccommodationOptions,\n type TextField,\n transgenderStatementOptions,\n votingIssueOptions,\n worldView,\n} from './profile-fields/index.js';\n\n// ─── Field Helpers (like dating-schema) ─────────────────────────────────────\n\nexport {\n getFieldMeta,\n getFieldOptions,\n getImmutableFields,\n getStepSchema,\n} from './field-helpers.js';\n\n// ─── Onboarding Configuration ───────────────────────────────────────────────\n\nexport {\n getUdpOnboardingFieldConfig,\n UDP_ONBOARDING_FIELDS,\n UDP_ONBOARDING_STEP_GROUPS,\n UDP_TOTAL_MAIN_STEPS,\n UDP_TOTAL_SUB_STEPS,\n type UdpOnboardingFieldConfig,\n type UdpOnboardingStepGroup,\n} from './onboarding-config.js';\n\n// ─── Progress Fields ────────────────────────────────────────────────────────\n\nexport {\n calculateOverallProgress as calculateUdpOverallProgress,\n calculateStepProgress as calculateUdpStepProgress,\n getNestedValue,\n isFieldFilled,\n UDP_PROGRESS_FIELDS,\n UDP_TOTAL_STEPS,\n} from './progress-fields.js';\n\n// ─── Step Schemas (Zod validation) ──────────────────────────────────────────\n\nexport { type Step01ProfileInput, step01ProfileSchema } from './step-01.schema.js';\nexport { type Step02PoliticalInput, step02PoliticalSchema } from './step-02.schema.js';\nexport { type Step03ElectoralInput, step03ElectoralSchema } from './step-03.schema.js';\nexport { type Step04LeadershipInput, step04LeadershipSchema } from './step-04.schema.js';\nexport { type Step05PsychologicalInput, step05PsychologicalSchema } from './step-05.schema.js';\nexport {\n type CertificateEntryInput,\n certificateEntrySchema,\n type DegreeEntryInput,\n degreeEntrySchema,\n type Step06EducationInput,\n step06EducationSchema,\n} from './step-06.schema.js';\nexport { type Step07EmploymentInput, step07EmploymentSchema } from './step-07.schema.js';\nexport { type Step08NeurodiversityInput, step08NeurodiversitySchema } from './step-08.schema.js';\nexport { type Step09HealthInput, step09HealthSchema } from './step-09.schema.js';\nexport { type Step10WorldViewInput, step10WorldViewSchema } from './step-10.schema.js';\nexport {\n type SimplifiedAddressInput,\n type Step11ResidenceInput,\n simplifiedAddressSchema,\n step11ResidenceSchema,\n} from './step-11.schema.js';\nexport { type Step12HouseholdInput, step12HouseholdSchema } from './step-12.schema.js';\n\n// ─── Zod Helpers ────────────────────────────────────────────────────────────\n\nexport {\n emptyStringToUndefined,\n optionalPhoneSchema,\n optionalTrimmedString,\n optionalYearSchema,\n} from './zod-helpers.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * udp-schema — Shared schemas for User Detailed Profile (v2)\n *\n * Single source of truth consumed by both reform frontends and reform-backend.\n * 12-step \"1 question per screen\" architecture.\n *\n * Follows the same pattern as dating-schema:\n * - profile-fields/ with rich FieldGroup definitions\n * - getFieldOptions() / getFieldMeta() for runtime introspection\n * - Unified onboarding form schema (udpOnboardingFormSchema)\n * - Validation (canProceed) exported for frontend + backend\n * - Helpers (calcAge, labelFor, labelsFor) shared across codebases\n * - Onboarding-config for step grouping\n * - Zod step schemas for per-step validation\n * - Progress tracking (per-step + overall)\n *\n * @module udp-schema\n */\n\n// ─── Unified Form Schema (like dating's onboardingFormSchema) ───────────────\n\nexport {\n type OnboardingFormData,\n udpOnboardingFormSchema,\n} from './onboarding-form.js';\n\n// ─── Validation (single source of truth — used by frontend + backend) ───────\n\nexport { canProceed } from './validation.js';\n\n// ─── Shared Helpers ─────────────────────────────────────────────────────────\n\nexport { calcAge, isFieldVisible, labelFor, labelsFor } from './helpers.js';\n\n// ─── Profile Fields (rich metadata — like dating-schema) ────────────────────\n\nexport {\n ageOfRealizationOptions,\n // Field groups\n allFieldGroups,\n // Types\n type BaseField,\n boardOptions,\n casteDiscriminationPlaceOptions,\n civicEngagementOptions,\n cognitiveStrengthOptions,\n communicationPreferenceOptions,\n DEGREE_VALUES_BY_LEVEL,\n degreeNameOptions,\n desiredPoliticalPositionOptions,\n dietOptions,\n digitalAccessOptions,\n disabilityOptions,\n education,\n electionResultOptions,\n electoralBehaviour,\n employment,\n employmentStatusOptions,\n executiveFunctionChallengeOptions,\n type FieldGroup,\n type FieldOption,\n familyMemberOptions,\n // Option arrays (with labels + descriptions)\n genderOptions,\n healthLifestyle,\n household,\n householdIncomeOptions,\n impactOnLifeOptions,\n incomeRangeOptions,\n languageOptions,\n leadershipAmbitions,\n leadershipSkillsetOptions,\n learningStyleOptions,\n lgbtqStatementOptions,\n type MultiSelectField,\n maskingBurnoutOptions,\n mbtiOptions,\n mentalHealthConditionOptions,\n minorityOptions,\n type NumberField,\n neurodevelopmentalConditionOptions,\n neurodiverseIdentityOptions,\n neurodiversity,\n neurologicalChronicConditionOptions,\n officeElectionLevelOptions,\n type ProfileField,\n partyAssociationRoleOptions,\n partyOptions,\n personalityPatternOptions,\n politicalAssociation,\n politicalSpectrumOptions,\n profile,\n psychologicalAssessment,\n qualificationOptions,\n relativesInPoliticsOptions,\n religionOptions,\n reservationOptions,\n residence,\n type SelectField,\n sensoryProfileOptions,\n shiftOptions,\n streamOptions,\n subjectOptions,\n substanceUseOptions,\n supportAccommodationOptions,\n type TextField,\n transgenderStatementOptions,\n votingIssueOptions,\n worldView,\n} from './profile-fields/index.js';\n\n// ─── Field Helpers (like dating-schema) ─────────────────────────────────────\n\nexport {\n getFieldMeta,\n getFieldOptions,\n getImmutableFields,\n getStepSchema,\n} from './field-helpers.js';\n\n// ─── Onboarding Configuration ───────────────────────────────────────────────\n\nexport {\n getUdpOnboardingFieldConfig,\n UDP_ONBOARDING_FIELDS,\n UDP_ONBOARDING_STEP_GROUPS,\n UDP_TOTAL_MAIN_STEPS,\n UDP_TOTAL_SUB_STEPS,\n type UdpOnboardingFieldConfig,\n type UdpOnboardingStepGroup,\n} from './onboarding-config.js';\n\n// ─── Progress Fields ────────────────────────────────────────────────────────\n\nexport {\n calculateOverallProgress as calculateUdpOverallProgress,\n calculateStepProgress as calculateUdpStepProgress,\n getNestedValue,\n isFieldFilled,\n UDP_PROGRESS_FIELDS,\n UDP_TOTAL_STEPS,\n} from './progress-fields.js';\n\n// ─── Step Schemas (Zod validation) ──────────────────────────────────────────\n\nexport { type Step01ProfileInput, step01ProfileSchema } from './step-01.schema.js';\nexport { type Step02PoliticalInput, step02PoliticalSchema } from './step-02.schema.js';\nexport { type Step03ElectoralInput, step03ElectoralSchema } from './step-03.schema.js';\nexport { type Step04LeadershipInput, step04LeadershipSchema } from './step-04.schema.js';\nexport { type Step05PsychologicalInput, step05PsychologicalSchema } from './step-05.schema.js';\nexport {\n type CertificateEntryInput,\n certificateEntrySchema,\n type DegreeEntryInput,\n degreeEntrySchema,\n type Step06EducationInput,\n step06EducationSchema,\n} from './step-06.schema.js';\nexport { type Step07EmploymentInput, step07EmploymentSchema } from './step-07.schema.js';\nexport { type Step08NeurodiversityInput, step08NeurodiversitySchema } from './step-08.schema.js';\nexport { type Step09HealthInput, step09HealthSchema } from './step-09.schema.js';\nexport { type Step10WorldViewInput, step10WorldViewSchema } from './step-10.schema.js';\nexport {\n type SimplifiedAddressInput,\n type Step11ResidenceInput,\n simplifiedAddressSchema,\n step11ResidenceSchema,\n} from './step-11.schema.js';\nexport { type Step12HouseholdInput, step12HouseholdSchema } from './step-12.schema.js';\n\n// ─── Zod Helpers ────────────────────────────────────────────────────────────\n\nexport {\n emptyStringToUndefined,\n optionalPhoneSchema,\n optionalTrimmedString,\n optionalYearSchema,\n} from './zod-helpers.js';\n"]}
@@ -23,6 +23,10 @@ export interface UdpOnboardingFieldConfig {
23
23
  successMessage: string;
24
24
  /** Whether the field is required to proceed */
25
25
  required: boolean;
26
+ /** i18n namespace for option labels: t(`options.${optionNs}.${value}`) */
27
+ optionNs?: string;
28
+ /** Whether option descriptions exist (uses `options.${optionNs}Desc.*` keys) */
29
+ hasDesc?: boolean;
26
30
  }
27
31
  /** Step grouping for the UDP onboarding flow */
28
32
  export interface UdpOnboardingStepGroup {
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-config.d.ts","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAskB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EA8J9D,CAAC;AAIF,gDAAgD;AAChD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,wBAAwB,GAAG,SAAS,CAGtC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAG/B,CAAC"}
1
+ {"version":3,"file":"onboarding-config.d.ts","sourceRoot":"","sources":["../src/onboarding-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAupB1E,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,EA8J9D,CAAC;AAIF,gDAAgD;AAChD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,wBAAwB,GAAG,SAAS,CAGtC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAG/B,CAAC"}
@@ -28,6 +28,8 @@ export const UDP_ONBOARDING_FIELDS = {
28
28
  subtitle: 'gender.subtitle',
29
29
  successMessage: 'gender.success',
30
30
  required: false,
31
+ optionNs: 'gender',
32
+ hasDesc: true,
31
33
  },
32
34
  dateOfBirth: {
33
35
  title: 'dateOfBirth.title',
@@ -46,36 +48,46 @@ export const UDP_ONBOARDING_FIELDS = {
46
48
  subtitle: 'primaryLanguage.subtitle',
47
49
  successMessage: 'primaryLanguage.success',
48
50
  required: false,
51
+ optionNs: 'language',
49
52
  },
50
53
  secondaryLanguages: {
51
54
  title: 'secondaryLanguages.title',
52
55
  subtitle: 'secondaryLanguages.subtitle',
53
56
  successMessage: 'secondaryLanguages.success',
54
57
  required: false,
58
+ optionNs: 'language',
55
59
  },
56
60
  familyReligion: {
57
61
  title: 'familyReligion.title',
58
62
  subtitle: 'familyReligion.subtitle',
59
63
  successMessage: 'familyReligion.success',
60
64
  required: false,
65
+ optionNs: 'religion',
66
+ hasDesc: true,
61
67
  },
62
68
  personalReligion: {
63
69
  title: 'personalReligion.title',
64
70
  subtitle: 'personalReligion.subtitle',
65
71
  successMessage: 'personalReligion.success',
66
72
  required: false,
73
+ optionNs: 'religion',
74
+ hasDesc: true,
67
75
  },
68
76
  reservationStatus: {
69
77
  title: 'reservationStatus.title',
70
78
  subtitle: 'reservationStatus.subtitle',
71
79
  successMessage: 'reservationStatus.success',
72
80
  required: false,
81
+ optionNs: 'reservation',
82
+ hasDesc: true,
73
83
  },
74
84
  minorityStatus: {
75
85
  title: 'minorityStatus.title',
76
86
  subtitle: 'minorityStatus.subtitle',
77
87
  successMessage: 'minorityStatus.success',
78
88
  required: false,
89
+ optionNs: 'minority',
90
+ hasDesc: true,
79
91
  },
80
92
  // ── Step 2: Political Association & History ──
81
93
  politicalSpectrum: {
@@ -83,30 +95,37 @@ export const UDP_ONBOARDING_FIELDS = {
83
95
  subtitle: 'politicalSpectrum.subtitle',
84
96
  successMessage: 'politicalSpectrum.success',
85
97
  required: false,
98
+ optionNs: 'politicalSpectrum',
86
99
  },
87
100
  selfPartyAssociation: {
88
101
  title: 'selfPartyAssociation.title',
89
102
  subtitle: 'selfPartyAssociation.subtitle',
90
103
  successMessage: 'selfPartyAssociation.success',
91
104
  required: false,
105
+ optionNs: 'party',
92
106
  },
93
107
  partyAssociationRole: {
94
108
  title: 'partyAssociationRole.title',
95
109
  subtitle: 'partyAssociationRole.subtitle',
96
110
  successMessage: 'partyAssociationRole.success',
97
111
  required: false,
112
+ optionNs: 'partyRole',
113
+ hasDesc: true,
98
114
  },
99
115
  familyPartyAssociation: {
100
116
  title: 'familyPartyAssociation.title',
101
117
  subtitle: 'familyPartyAssociation.subtitle',
102
118
  successMessage: 'familyPartyAssociation.success',
103
119
  required: false,
120
+ optionNs: 'party',
104
121
  },
105
122
  relativesInPolitics: {
106
123
  title: 'relativesInPolitics.title',
107
124
  subtitle: 'relativesInPolitics.subtitle',
108
125
  successMessage: 'relativesInPolitics.success',
109
126
  required: false,
127
+ optionNs: 'relativesInPolitics',
128
+ hasDesc: true,
110
129
  },
111
130
  publicOfficeAndElections: {
112
131
  title: 'publicOfficeAndElections.title',
@@ -119,6 +138,7 @@ export const UDP_ONBOARDING_FIELDS = {
119
138
  subtitle: 'networkAndCivicEngagement.subtitle',
120
139
  successMessage: 'networkAndCivicEngagement.success',
121
140
  required: false,
141
+ optionNs: 'civic',
122
142
  },
123
143
  // ── Step 3: Electoral Behaviour ──
124
144
  epicNumber: {
@@ -132,24 +152,28 @@ export const UDP_ONBOARDING_FIELDS = {
132
152
  subtitle: 'willVoteThisTime.subtitle',
133
153
  successMessage: 'willVoteThisTime.success',
134
154
  required: false,
155
+ optionNs: 'willVote',
135
156
  },
136
157
  didVoteLastTime: {
137
158
  title: 'didVoteLastTime.title',
138
159
  subtitle: 'didVoteLastTime.subtitle',
139
160
  successMessage: 'didVoteLastTime.success',
140
161
  required: false,
162
+ optionNs: 'yesNoPrefer',
141
163
  },
142
164
  votingFrequency: {
143
165
  title: 'votingFrequency.title',
144
166
  subtitle: 'votingFrequency.subtitle',
145
167
  successMessage: 'votingFrequency.success',
146
168
  required: false,
169
+ optionNs: 'votingFreq',
147
170
  },
148
171
  primaryVotingIssues: {
149
172
  title: 'primaryVotingIssues.title',
150
173
  subtitle: 'primaryVotingIssues.subtitle',
151
174
  successMessage: 'primaryVotingIssues.success',
152
175
  required: false,
176
+ optionNs: 'votingIssue',
153
177
  },
154
178
  // ── Step 4: Leadership & Ambitions ──
155
179
  participateInRevolution: {
@@ -157,42 +181,49 @@ export const UDP_ONBOARDING_FIELDS = {
157
181
  subtitle: 'participateInRevolution.subtitle',
158
182
  successMessage: 'participateInRevolution.success',
159
183
  required: false,
184
+ optionNs: 'participate',
160
185
  },
161
186
  desiredPoliticalPosition: {
162
187
  title: 'desiredPoliticalPosition.title',
163
188
  subtitle: 'desiredPoliticalPosition.subtitle',
164
189
  successMessage: 'desiredPoliticalPosition.success',
165
190
  required: false,
191
+ optionNs: 'position',
166
192
  },
167
193
  leadershipSkillset: {
168
194
  title: 'leadershipSkillset.title',
169
195
  subtitle: 'leadershipSkillset.subtitle',
170
196
  successMessage: 'leadershipSkillset.success',
171
197
  required: false,
198
+ optionNs: 'leadershipSkill',
172
199
  },
173
200
  politicalExposure: {
174
201
  title: 'politicalExposure.title',
175
202
  subtitle: 'politicalExposure.subtitle',
176
203
  successMessage: 'politicalExposure.success',
177
204
  required: false,
205
+ optionNs: 'exposure',
178
206
  },
179
207
  comfortWithVisibility: {
180
208
  title: 'comfortWithVisibility.title',
181
209
  subtitle: 'comfortWithVisibility.subtitle',
182
210
  successMessage: 'comfortWithVisibility.success',
183
211
  required: false,
212
+ optionNs: 'visibility',
184
213
  },
185
214
  socialInfluenceLevel: {
186
215
  title: 'socialInfluenceLevel.title',
187
216
  subtitle: 'socialInfluenceLevel.subtitle',
188
217
  successMessage: 'socialInfluenceLevel.success',
189
218
  required: false,
219
+ optionNs: 'influence',
190
220
  },
191
221
  pastExperience: {
192
222
  title: 'pastExperience.title',
193
223
  subtitle: 'pastExperience.subtitle',
194
224
  successMessage: 'pastExperience.success',
195
225
  required: false,
226
+ optionNs: 'experience',
196
227
  },
197
228
  changesYouWantToBring: {
198
229
  title: 'changesYouWantToBring.title',
@@ -280,6 +311,7 @@ export const UDP_ONBOARDING_FIELDS = {
280
311
  subtitle: 'employmentStatus.subtitle',
281
312
  successMessage: 'employmentStatus.success',
282
313
  required: false,
314
+ optionNs: 'employment',
283
315
  },
284
316
  occupation: {
285
317
  title: 'occupation.title',
@@ -292,24 +324,28 @@ export const UDP_ONBOARDING_FIELDS = {
292
324
  subtitle: 'workShift.subtitle',
293
325
  successMessage: 'workShift.success',
294
326
  required: false,
327
+ optionNs: 'shift',
295
328
  },
296
329
  comfortableWithShift: {
297
330
  title: 'comfortableWithShift.title',
298
331
  subtitle: 'comfortableWithShift.subtitle',
299
332
  successMessage: 'comfortableWithShift.success',
300
333
  required: false,
334
+ optionNs: 'comfort',
301
335
  },
302
336
  desiredShift: {
303
337
  title: 'desiredShift.title',
304
338
  subtitle: 'desiredShift.subtitle',
305
339
  successMessage: 'desiredShift.success',
306
340
  required: false,
341
+ optionNs: 'shift',
307
342
  },
308
343
  incomeRange: {
309
344
  title: 'incomeRange.title',
310
345
  subtitle: 'incomeRange.subtitle',
311
346
  successMessage: 'incomeRange.success',
312
347
  required: false,
348
+ optionNs: 'income',
313
349
  },
314
350
  dreamOccupation: {
315
351
  title: 'dreamOccupation.title',
@@ -323,84 +359,105 @@ export const UDP_ONBOARDING_FIELDS = {
323
359
  subtitle: 'neurodiverseIdentity.subtitle',
324
360
  successMessage: 'neurodiverseIdentity.success',
325
361
  required: false,
362
+ optionNs: 'neurodiverseIdentity',
363
+ hasDesc: true,
326
364
  },
327
365
  neurodevelopmentalConditions: {
328
366
  title: 'neurodevelopmentalConditions.title',
329
367
  subtitle: 'neurodevelopmentalConditions.subtitle',
330
368
  successMessage: 'neurodevelopmentalConditions.success',
331
369
  required: false,
370
+ optionNs: 'neurodevelopmental',
371
+ hasDesc: true,
332
372
  },
333
373
  mentalHealthConditions: {
334
374
  title: 'mentalHealthConditions.title',
335
375
  subtitle: 'mentalHealthConditions.subtitle',
336
376
  successMessage: 'mentalHealthConditions.success',
337
377
  required: false,
378
+ optionNs: 'mentalHealth',
379
+ hasDesc: true,
338
380
  },
339
381
  personalityPatterns: {
340
382
  title: 'personalityPatterns.title',
341
383
  subtitle: 'personalityPatterns.subtitle',
342
384
  successMessage: 'personalityPatterns.success',
343
385
  required: false,
386
+ optionNs: 'personalityPattern',
387
+ hasDesc: true,
344
388
  },
345
389
  neurologicalChronicConditions: {
346
390
  title: 'neurologicalChronicConditions.title',
347
391
  subtitle: 'neurologicalChronicConditions.subtitle',
348
392
  successMessage: 'neurologicalChronicConditions.success',
349
393
  required: false,
394
+ optionNs: 'neurologicalChronic',
395
+ hasDesc: true,
350
396
  },
351
397
  ageOfRealization: {
352
398
  title: 'ageOfRealization.title',
353
399
  subtitle: 'ageOfRealization.subtitle',
354
400
  successMessage: 'ageOfRealization.success',
355
401
  required: false,
402
+ optionNs: 'ageOfRealization',
356
403
  },
357
404
  sensoryProfile: {
358
405
  title: 'sensoryProfile.title',
359
406
  subtitle: 'sensoryProfile.subtitle',
360
407
  successMessage: 'sensoryProfile.success',
361
408
  required: false,
409
+ optionNs: 'sensoryProfile',
362
410
  },
363
411
  cognitiveStrengths: {
364
412
  title: 'cognitiveStrengths.title',
365
413
  subtitle: 'cognitiveStrengths.subtitle',
366
414
  successMessage: 'cognitiveStrengths.success',
367
415
  required: false,
416
+ optionNs: 'cognitiveStrength',
368
417
  },
369
418
  executiveFunctionChallenges: {
370
419
  title: 'executiveFunctionChallenges.title',
371
420
  subtitle: 'executiveFunctionChallenges.subtitle',
372
421
  successMessage: 'executiveFunctionChallenges.success',
373
422
  required: false,
423
+ optionNs: 'executiveFunctionChallenge',
374
424
  },
375
425
  learningStyle: {
376
426
  title: 'learningStyle.title',
377
427
  subtitle: 'learningStyle.subtitle',
378
428
  successMessage: 'learningStyle.success',
379
429
  required: false,
430
+ optionNs: 'learningStyle',
380
431
  },
381
432
  communicationPreference: {
382
433
  title: 'communicationPreference.title',
383
434
  subtitle: 'communicationPreference.subtitle',
384
435
  successMessage: 'communicationPreference.success',
385
436
  required: false,
437
+ optionNs: 'communicationPreference',
386
438
  },
387
439
  supportAndAccommodations: {
388
440
  title: 'supportAndAccommodations.title',
389
441
  subtitle: 'supportAndAccommodations.subtitle',
390
442
  successMessage: 'supportAndAccommodations.success',
391
443
  required: false,
444
+ optionNs: 'supportAccommodation',
392
445
  },
393
446
  maskingAndBurnout: {
394
447
  title: 'maskingAndBurnout.title',
395
448
  subtitle: 'maskingAndBurnout.subtitle',
396
449
  successMessage: 'maskingAndBurnout.success',
397
450
  required: false,
451
+ optionNs: 'maskingBurnout',
452
+ hasDesc: true,
398
453
  },
399
454
  impactOnLife: {
400
455
  title: 'impactOnLife.title',
401
456
  subtitle: 'impactOnLife.subtitle',
402
457
  successMessage: 'impactOnLife.success',
403
458
  required: false,
459
+ optionNs: 'impactOnLife',
460
+ hasDesc: true,
404
461
  },
405
462
  // ── Step 9: Health & Lifestyle ──
406
463
  disabilityStatus: {
@@ -408,48 +465,57 @@ export const UDP_ONBOARDING_FIELDS = {
408
465
  subtitle: 'disabilityStatus.subtitle',
409
466
  successMessage: 'disabilityStatus.success',
410
467
  required: false,
468
+ optionNs: 'disability',
411
469
  },
412
470
  generalHealth: {
413
471
  title: 'generalHealth.title',
414
472
  subtitle: 'generalHealth.subtitle',
415
473
  successMessage: 'generalHealth.success',
416
474
  required: false,
475
+ optionNs: 'health',
417
476
  },
418
477
  healthInsurance: {
419
478
  title: 'healthInsurance.title',
420
479
  subtitle: 'healthInsurance.subtitle',
421
480
  successMessage: 'healthInsurance.success',
422
481
  required: false,
482
+ optionNs: 'insurance',
423
483
  },
424
484
  diet: {
425
485
  title: 'diet.title',
426
486
  subtitle: 'diet.subtitle',
427
487
  successMessage: 'diet.success',
428
488
  required: false,
489
+ optionNs: 'diet',
490
+ hasDesc: true,
429
491
  },
430
492
  physicalActivity: {
431
493
  title: 'physicalActivity.title',
432
494
  subtitle: 'physicalActivity.subtitle',
433
495
  successMessage: 'physicalActivity.success',
434
496
  required: false,
497
+ optionNs: 'activity',
435
498
  },
436
499
  sleepQuality: {
437
500
  title: 'sleepQuality.title',
438
501
  subtitle: 'sleepQuality.subtitle',
439
502
  successMessage: 'sleepQuality.success',
440
503
  required: false,
504
+ optionNs: 'sleep',
441
505
  },
442
506
  substanceUse: {
443
507
  title: 'substanceUse.title',
444
508
  subtitle: 'substanceUse.subtitle',
445
509
  successMessage: 'substanceUse.success',
446
510
  required: false,
511
+ optionNs: 'substance',
447
512
  },
448
513
  stressLevel: {
449
514
  title: 'stressLevel.title',
450
515
  subtitle: 'stressLevel.subtitle',
451
516
  successMessage: 'stressLevel.success',
452
517
  required: false,
518
+ optionNs: 'stress',
453
519
  },
454
520
  // ── Step 10: World View & Experience ──
455
521
  viewOnAnimalCruelty: {
@@ -457,12 +523,14 @@ export const UDP_ONBOARDING_FIELDS = {
457
523
  subtitle: 'viewOnAnimalCruelty.subtitle',
458
524
  successMessage: 'viewOnAnimalCruelty.success',
459
525
  required: false,
526
+ optionNs: 'animalCruelty',
460
527
  },
461
528
  viewOnLgbtqStatements: {
462
529
  title: 'viewOnLgbtqStatements.title',
463
530
  subtitle: 'viewOnLgbtqStatements.subtitle',
464
531
  successMessage: 'viewOnLgbtqStatements.success',
465
532
  required: false,
533
+ optionNs: 'lgbtq',
466
534
  },
467
535
  viewOnLgbtqOpinion: {
468
536
  title: 'viewOnLgbtqOpinion.title',
@@ -475,6 +543,7 @@ export const UDP_ONBOARDING_FIELDS = {
475
543
  subtitle: 'viewOnTransgenderInclusion.subtitle',
476
544
  successMessage: 'viewOnTransgenderInclusion.success',
477
545
  required: false,
546
+ optionNs: 'transgender',
478
547
  },
479
548
  viewOnTransgenderOpinion: {
480
549
  title: 'viewOnTransgenderOpinion.title',
@@ -487,18 +556,21 @@ export const UDP_ONBOARDING_FIELDS = {
487
556
  subtitle: 'facingCasteDiscrimination.subtitle',
488
557
  successMessage: 'facingCasteDiscrimination.success',
489
558
  required: false,
559
+ optionNs: 'discrimination',
490
560
  },
491
561
  casteDiscriminationPlaces: {
492
562
  title: 'casteDiscriminationPlaces.title',
493
563
  subtitle: 'casteDiscriminationPlaces.subtitle',
494
564
  successMessage: 'casteDiscriminationPlaces.success',
495
565
  required: false,
566
+ optionNs: 'discriminationPlace',
496
567
  },
497
568
  viewOnGenderEquality: {
498
569
  title: 'viewOnGenderEquality.title',
499
570
  subtitle: 'viewOnGenderEquality.subtitle',
500
571
  successMessage: 'viewOnGenderEquality.success',
501
572
  required: false,
573
+ optionNs: 'genderEquality',
502
574
  },
503
575
  // ── Step 11: Residence & Address ──
504
576
  currentAddress: {
@@ -531,12 +603,14 @@ export const UDP_ONBOARDING_FIELDS = {
531
603
  subtitle: 'maritalStatus.subtitle',
532
604
  successMessage: 'maritalStatus.success',
533
605
  required: false,
606
+ optionNs: 'marital',
534
607
  },
535
608
  familyMembers: {
536
609
  title: 'familyMembers.title',
537
610
  subtitle: 'familyMembers.subtitle',
538
611
  successMessage: 'familyMembers.success',
539
612
  required: false,
613
+ optionNs: 'family',
540
614
  },
541
615
  numberOfDependents: {
542
616
  title: 'numberOfDependents.title',
@@ -549,41 +623,48 @@ export const UDP_ONBOARDING_FIELDS = {
549
623
  subtitle: 'housingType.subtitle',
550
624
  successMessage: 'housingType.success',
551
625
  required: false,
626
+ optionNs: 'housing',
552
627
  },
553
628
  householdIncome: {
554
629
  title: 'householdIncome.title',
555
630
  subtitle: 'householdIncome.subtitle',
556
631
  successMessage: 'householdIncome.success',
557
632
  required: false,
633
+ optionNs: 'hhIncome',
558
634
  },
559
635
  bplCard: {
560
636
  title: 'bplCard.title',
561
637
  subtitle: 'bplCard.subtitle',
562
638
  successMessage: 'bplCard.success',
563
639
  required: false,
640
+ optionNs: 'bpl',
564
641
  },
565
642
  digitalAccess: {
566
643
  title: 'digitalAccess.title',
567
644
  subtitle: 'digitalAccess.subtitle',
568
645
  successMessage: 'digitalAccess.success',
569
646
  required: false,
647
+ optionNs: 'digital',
570
648
  },
571
649
  migrationStatus: {
572
650
  title: 'migrationStatus.title',
573
651
  subtitle: 'migrationStatus.subtitle',
574
652
  successMessage: 'migrationStatus.success',
575
653
  required: false,
654
+ optionNs: 'migration',
576
655
  },
577
656
  landOwnership: {
578
657
  title: 'landOwnership.title',
579
658
  subtitle: 'landOwnership.subtitle',
580
659
  successMessage: 'landOwnership.success',
660
+ optionNs: 'land',
581
661
  required: false,
582
662
  },
583
663
  primaryIncomeSource: {
584
664
  title: 'primaryIncomeSource.title',
585
665
  subtitle: 'primaryIncomeSource.subtitle',
586
666
  successMessage: 'primaryIncomeSource.success',
667
+ optionNs: 'incomeSource',
587
668
  required: false,
588
669
  },
589
670
  };