udp-schema 1.0.0 → 1.1.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.
Files changed (98) hide show
  1. package/dist/field-helpers.d.ts +23 -8
  2. package/dist/field-helpers.d.ts.map +1 -1
  3. package/dist/field-helpers.js +43 -12
  4. package/dist/field-helpers.js.map +1 -1
  5. package/dist/field-meta.d.ts +14 -52
  6. package/dist/field-meta.d.ts.map +1 -1
  7. package/dist/field-meta.js +13 -307
  8. package/dist/field-meta.js.map +1 -1
  9. package/dist/index.d.ts +16 -15
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +15 -20
  12. package/dist/index.js.map +1 -1
  13. package/dist/profile-fields/01-profile.d.ts +264 -0
  14. package/dist/profile-fields/01-profile.d.ts.map +1 -0
  15. package/dist/profile-fields/01-profile.js +113 -0
  16. package/dist/profile-fields/01-profile.js.map +1 -0
  17. package/dist/profile-fields/02-political.d.ts +133 -0
  18. package/dist/profile-fields/02-political.d.ts.map +1 -0
  19. package/dist/profile-fields/02-political.js +42 -0
  20. package/dist/profile-fields/02-political.js.map +1 -0
  21. package/dist/profile-fields/03-electoral.d.ts +46 -0
  22. package/dist/profile-fields/03-electoral.d.ts.map +1 -0
  23. package/dist/profile-fields/03-electoral.js +21 -0
  24. package/dist/profile-fields/03-electoral.js.map +1 -0
  25. package/dist/profile-fields/04-leadership.d.ts +34 -0
  26. package/dist/profile-fields/04-leadership.d.ts.map +1 -0
  27. package/dist/profile-fields/04-leadership.js +22 -0
  28. package/dist/profile-fields/04-leadership.js.map +1 -0
  29. package/dist/profile-fields/05-psychological.d.ts +58 -0
  30. package/dist/profile-fields/05-psychological.d.ts.map +1 -0
  31. package/dist/profile-fields/05-psychological.js +20 -0
  32. package/dist/profile-fields/05-psychological.js.map +1 -0
  33. package/dist/profile-fields/06-education.d.ts +28 -0
  34. package/dist/profile-fields/06-education.d.ts.map +1 -0
  35. package/dist/profile-fields/06-education.js +23 -0
  36. package/dist/profile-fields/06-education.js.map +1 -0
  37. package/dist/profile-fields/07-employment.d.ts +75 -0
  38. package/dist/profile-fields/07-employment.d.ts.map +1 -0
  39. package/dist/profile-fields/07-employment.js +32 -0
  40. package/dist/profile-fields/07-employment.js.map +1 -0
  41. package/dist/profile-fields/08-neurodiversity.d.ts +100 -0
  42. package/dist/profile-fields/08-neurodiversity.d.ts.map +1 -0
  43. package/dist/profile-fields/08-neurodiversity.js +39 -0
  44. package/dist/profile-fields/08-neurodiversity.js.map +1 -0
  45. package/dist/profile-fields/09-health.d.ts +89 -0
  46. package/dist/profile-fields/09-health.d.ts.map +1 -0
  47. package/dist/profile-fields/09-health.js +38 -0
  48. package/dist/profile-fields/09-health.js.map +1 -0
  49. package/dist/profile-fields/10-worldview.d.ts +75 -0
  50. package/dist/profile-fields/10-worldview.d.ts.map +1 -0
  51. package/dist/profile-fields/10-worldview.js +41 -0
  52. package/dist/profile-fields/10-worldview.js.map +1 -0
  53. package/dist/profile-fields/11-residence.d.ts +3 -0
  54. package/dist/profile-fields/11-residence.d.ts.map +1 -0
  55. package/dist/profile-fields/11-residence.js +11 -0
  56. package/dist/profile-fields/11-residence.js.map +1 -0
  57. package/dist/profile-fields/12-household.d.ts +90 -0
  58. package/dist/profile-fields/12-household.d.ts.map +1 -0
  59. package/dist/profile-fields/12-household.js +37 -0
  60. package/dist/profile-fields/12-household.js.map +1 -0
  61. package/dist/profile-fields/index.d.ts +22 -0
  62. package/dist/profile-fields/index.d.ts.map +1 -0
  63. package/dist/profile-fields/index.js +47 -0
  64. package/dist/profile-fields/index.js.map +1 -0
  65. package/dist/profile-fields/types.d.ts +66 -0
  66. package/dist/profile-fields/types.d.ts.map +1 -0
  67. package/dist/profile-fields/types.js +8 -0
  68. package/dist/profile-fields/types.js.map +1 -0
  69. package/dist/progress-fields.d.ts +18 -0
  70. package/dist/progress-fields.d.ts.map +1 -1
  71. package/dist/progress-fields.js +21 -0
  72. package/dist/progress-fields.js.map +1 -1
  73. package/dist/step-01.schema.d.ts.map +1 -1
  74. package/dist/step-01.schema.js +1 -1
  75. package/dist/step-01.schema.js.map +1 -1
  76. package/dist/step-03.schema.d.ts +1 -1
  77. package/dist/step-03.schema.d.ts.map +1 -1
  78. package/dist/step-03.schema.js +1 -8
  79. package/dist/step-03.schema.js.map +1 -1
  80. package/dist/step-04.schema.d.ts +1 -1
  81. package/dist/step-04.schema.d.ts.map +1 -1
  82. package/dist/step-04.schema.js +2 -6
  83. package/dist/step-04.schema.js.map +1 -1
  84. package/dist/step-07.schema.d.ts.map +1 -1
  85. package/dist/step-07.schema.js +2 -16
  86. package/dist/step-07.schema.js.map +1 -1
  87. package/dist/step-08.schema.d.ts.map +1 -1
  88. package/dist/step-08.schema.js +1 -3
  89. package/dist/step-08.schema.js.map +1 -1
  90. package/dist/step-09.schema.d.ts +1 -1
  91. package/dist/step-09.schema.d.ts.map +1 -1
  92. package/dist/step-09.schema.js +5 -19
  93. package/dist/step-09.schema.js.map +1 -1
  94. package/dist/step-12.schema.d.ts +1 -1
  95. package/dist/step-12.schema.d.ts.map +1 -1
  96. package/dist/step-12.schema.js +3 -23
  97. package/dist/step-12.schema.js.map +1 -1
  98. package/package.json +1 -1
@@ -1,27 +1,42 @@
1
1
  /**
2
2
  * Convenience helpers for accessing UDP field metadata and step schemas.
3
3
  *
4
+ * Mirrors the dating-schema field-helpers.ts pattern:
5
+ * pre-built lookup maps with getFieldOptions() and getFieldMeta().
6
+ *
4
7
  * @module udp-schema/field-helpers
5
8
  */
6
9
  import type { z } from 'zod';
10
+ import type { FieldOption, ProfileField } from './profile-fields/types.js';
7
11
  /**
8
- * Get the Zod schema for a given step number.
9
- * Returns undefined for invalid step numbers.
12
+ * Get the `{ value, label, description }` options array for a field by its key.
10
13
  *
11
- * Use `.partial().parse(data)` for sub-step saves where only one field is sent.
14
+ * @example
15
+ * ```ts
16
+ * import { getFieldOptions } from 'udp-schema';
17
+ * const opts = getFieldOptions('gender');
18
+ * // → [{ value: 'man', label: 'Man' }, { value: 'woman', label: 'Woman' }, ...]
19
+ * ```
20
+ */
21
+ export declare function getFieldOptions(fieldKey: string): readonly FieldOption[];
22
+ /**
23
+ * Get full field metadata (label, description, step, type, options, etc.) by key.
12
24
  *
13
25
  * @example
14
26
  * ```ts
15
- * const schema = getStepSchema(1);
16
- * if (schema) {
17
- * const data = schema.partial().parse(req.body);
18
- * }
27
+ * import { getFieldMeta } from 'udp-schema';
28
+ * const meta = getFieldMeta('familyReligion');
29
+ * // { key: 'familyReligion', label: 'Family Religion', type: 'single_select', step: 1, options: [...], ... }
19
30
  * ```
20
31
  */
32
+ export declare function getFieldMeta(fieldKey: string): ProfileField | undefined;
33
+ /**
34
+ * Get the Zod schema for a given step number.
35
+ * Use `.partial().parse(data)` for sub-step saves.
36
+ */
21
37
  export declare function getStepSchema(stepNumber: number): z.ZodObject<any> | undefined;
22
38
  /**
23
39
  * Get the list of field keys that are immutable after volunteer approval.
24
- * These fields can only be changed by a volunteer in survey-mode once approved.
25
40
  */
26
41
  export declare function getImmutableFields(): readonly string[];
27
42
  //# sourceMappingURL=field-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-helpers.d.ts","sourceRoot":"","sources":["../src/field-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgC7B;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAE9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD"}
1
+ {"version":3,"file":"field-helpers.d.ts","sourceRoot":"","sources":["../src/field-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA8B3E;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEvE;AAoBD;;;GAGG;AAEH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAE9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD"}
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Convenience helpers for accessing UDP field metadata and step schemas.
3
3
  *
4
+ * Mirrors the dating-schema field-helpers.ts pattern:
5
+ * pre-built lookup maps with getFieldOptions() and getFieldMeta().
6
+ *
4
7
  * @module udp-schema/field-helpers
5
8
  */
9
+ import { allFieldGroups } from './profile-fields/index.js';
6
10
  import { step01ProfileSchema } from './step-01.schema.js';
7
11
  import { step02PoliticalSchema } from './step-02.schema.js';
8
12
  import { step03ElectoralSchema } from './step-03.schema.js';
@@ -15,6 +19,44 @@ import { step09HealthSchema } from './step-09.schema.js';
15
19
  import { step10WorldViewSchema } from './step-10.schema.js';
16
20
  import { step11ResidenceSchema } from './step-11.schema.js';
17
21
  import { step12HouseholdSchema } from './step-12.schema.js';
22
+ // ─── Pre-built lookup maps (like dating-schema) ────────────────────────────
23
+ const optionsMap = new Map();
24
+ const fieldMap = new Map();
25
+ for (const group of allFieldGroups) {
26
+ for (const field of group.fields) {
27
+ fieldMap.set(field.key, field);
28
+ if ('options' in field && Array.isArray(field.options)) {
29
+ optionsMap.set(field.key, field.options);
30
+ }
31
+ }
32
+ }
33
+ // ─── Field metadata helpers (like dating-schema) ────────────────────────────
34
+ /**
35
+ * Get the `{ value, label, description }` options array for a field by its key.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { getFieldOptions } from 'udp-schema';
40
+ * const opts = getFieldOptions('gender');
41
+ * // → [{ value: 'man', label: 'Man' }, { value: 'woman', label: 'Woman' }, ...]
42
+ * ```
43
+ */
44
+ export function getFieldOptions(fieldKey) {
45
+ return optionsMap.get(fieldKey) ?? [];
46
+ }
47
+ /**
48
+ * Get full field metadata (label, description, step, type, options, etc.) by key.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { getFieldMeta } from 'udp-schema';
53
+ * const meta = getFieldMeta('familyReligion');
54
+ * // → { key: 'familyReligion', label: 'Family Religion', type: 'single_select', step: 1, options: [...], ... }
55
+ * ```
56
+ */
57
+ export function getFieldMeta(fieldKey) {
58
+ return fieldMap.get(fieldKey);
59
+ }
18
60
  // ─── Step Schema Registry ───────────────────────────────────────────────────
19
61
  // biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step
20
62
  const STEP_SCHEMAS = {
@@ -33,17 +75,7 @@ const STEP_SCHEMAS = {
33
75
  };
34
76
  /**
35
77
  * Get the Zod schema for a given step number.
36
- * Returns undefined for invalid step numbers.
37
- *
38
- * Use `.partial().parse(data)` for sub-step saves where only one field is sent.
39
- *
40
- * @example
41
- * ```ts
42
- * const schema = getStepSchema(1);
43
- * if (schema) {
44
- * const data = schema.partial().parse(req.body);
45
- * }
46
- * ```
78
+ * Use `.partial().parse(data)` for sub-step saves.
47
79
  */
48
80
  // biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step
49
81
  export function getStepSchema(stepNumber) {
@@ -51,7 +83,6 @@ export function getStepSchema(stepNumber) {
51
83
  }
52
84
  /**
53
85
  * Get the list of field keys that are immutable after volunteer approval.
54
- * These fields can only be changed by a volunteer in survey-mode once approved.
55
86
  */
56
87
  export function getImmutableFields() {
57
88
  return ['firstName', 'middleName', 'lastName', 'gender', 'dateOfBirth'];
@@ -1 +1 @@
1
- {"version":3,"file":"field-helpers.js","sourceRoot":"","sources":["../src/field-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,+EAA+E;AAE/E,6EAA6E;AAC7E,MAAM,YAAY,GAAqC;IACrD,CAAC,EAAE,mBAAmB;IACtB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,yBAAyB;IAC5B,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,0BAA0B;IAC7B,CAAC,EAAE,kBAAkB;IACrB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;CAC1B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["/**\n * Convenience helpers for accessing UDP field metadata and step schemas.\n *\n * @module udp-schema/field-helpers\n */\n\nimport type { z } from 'zod';\nimport { step01ProfileSchema } from './step-01.schema.js';\nimport { step02PoliticalSchema } from './step-02.schema.js';\nimport { step03ElectoralSchema } from './step-03.schema.js';\nimport { step04LeadershipSchema } from './step-04.schema.js';\nimport { step05PsychologicalSchema } from './step-05.schema.js';\nimport { step06EducationSchema } from './step-06.schema.js';\nimport { step07EmploymentSchema } from './step-07.schema.js';\nimport { step08NeurodiversitySchema } from './step-08.schema.js';\nimport { step09HealthSchema } from './step-09.schema.js';\nimport { step10WorldViewSchema } from './step-10.schema.js';\nimport { step11ResidenceSchema } from './step-11.schema.js';\nimport { step12HouseholdSchema } from './step-12.schema.js';\n\n// ─── Step Schema Registry ───────────────────────────────────────────────────\n\n// biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step\nconst STEP_SCHEMAS: Record<number, z.ZodObject<any>> = {\n 1: step01ProfileSchema,\n 2: step02PoliticalSchema,\n 3: step03ElectoralSchema,\n 4: step04LeadershipSchema,\n 5: step05PsychologicalSchema,\n 6: step06EducationSchema,\n 7: step07EmploymentSchema,\n 8: step08NeurodiversitySchema,\n 9: step09HealthSchema,\n 10: step10WorldViewSchema,\n 11: step11ResidenceSchema,\n 12: step12HouseholdSchema,\n};\n\n/**\n * Get the Zod schema for a given step number.\n * Returns undefined for invalid step numbers.\n *\n * Use `.partial().parse(data)` for sub-step saves where only one field is sent.\n *\n * @example\n * ```ts\n * const schema = getStepSchema(1);\n * if (schema) {\n * const data = schema.partial().parse(req.body);\n * }\n * ```\n */\n// biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step\nexport function getStepSchema(stepNumber: number): z.ZodObject<any> | undefined {\n return STEP_SCHEMAS[stepNumber];\n}\n\n/**\n * Get the list of field keys that are immutable after volunteer approval.\n * These fields can only be changed by a volunteer in survey-mode once approved.\n */\nexport function getImmutableFields(): readonly string[] {\n return ['firstName', 'middleName', 'lastName', 'gender', 'dateOfBirth'];\n}\n"]}
1
+ {"version":3,"file":"field-helpers.js","sourceRoot":"","sources":["../src/field-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,8EAA8E;AAE9E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;AAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,+EAA+E;AAE/E,6EAA6E;AAC7E,MAAM,YAAY,GAAqC;IACrD,CAAC,EAAE,mBAAmB;IACtB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,yBAAyB;IAC5B,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,0BAA0B;IAC7B,CAAC,EAAE,kBAAkB;IACrB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;CAC1B,CAAC;AAEF;;;GAGG;AACH,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["/**\n * Convenience helpers for accessing UDP field metadata and step schemas.\n *\n * Mirrors the dating-schema field-helpers.ts pattern:\n * pre-built lookup maps with getFieldOptions() and getFieldMeta().\n *\n * @module udp-schema/field-helpers\n */\n\nimport type { z } from 'zod';\nimport { allFieldGroups } from './profile-fields/index.js';\nimport type { FieldOption, ProfileField } from './profile-fields/types.js';\nimport { step01ProfileSchema } from './step-01.schema.js';\nimport { step02PoliticalSchema } from './step-02.schema.js';\nimport { step03ElectoralSchema } from './step-03.schema.js';\nimport { step04LeadershipSchema } from './step-04.schema.js';\nimport { step05PsychologicalSchema } from './step-05.schema.js';\nimport { step06EducationSchema } from './step-06.schema.js';\nimport { step07EmploymentSchema } from './step-07.schema.js';\nimport { step08NeurodiversitySchema } from './step-08.schema.js';\nimport { step09HealthSchema } from './step-09.schema.js';\nimport { step10WorldViewSchema } from './step-10.schema.js';\nimport { step11ResidenceSchema } from './step-11.schema.js';\nimport { step12HouseholdSchema } from './step-12.schema.js';\n\n// ─── Pre-built lookup maps (like dating-schema) ────────────────────────────\n\nconst optionsMap = new Map<string, readonly FieldOption[]>();\nconst fieldMap = new Map<string, ProfileField>();\n\nfor (const group of allFieldGroups) {\n for (const field of group.fields) {\n fieldMap.set(field.key, field);\n if ('options' in field && Array.isArray(field.options)) {\n optionsMap.set(field.key, field.options);\n }\n }\n}\n\n// ─── Field metadata helpers (like dating-schema) ────────────────────────────\n\n/**\n * Get the `{ value, label, description }` options array for a field by its key.\n *\n * @example\n * ```ts\n * import { getFieldOptions } from 'udp-schema';\n * const opts = getFieldOptions('gender');\n * // → [{ value: 'man', label: 'Man' }, { value: 'woman', label: 'Woman' }, ...]\n * ```\n */\nexport function getFieldOptions(fieldKey: string): readonly FieldOption[] {\n return optionsMap.get(fieldKey) ?? [];\n}\n\n/**\n * Get full field metadata (label, description, step, type, options, etc.) by key.\n *\n * @example\n * ```ts\n * import { getFieldMeta } from 'udp-schema';\n * const meta = getFieldMeta('familyReligion');\n * // → { key: 'familyReligion', label: 'Family Religion', type: 'single_select', step: 1, options: [...], ... }\n * ```\n */\nexport function getFieldMeta(fieldKey: string): ProfileField | undefined {\n return fieldMap.get(fieldKey);\n}\n\n// ─── Step Schema Registry ───────────────────────────────────────────────────\n\n// biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step\nconst STEP_SCHEMAS: Record<number, z.ZodObject<any>> = {\n 1: step01ProfileSchema,\n 2: step02PoliticalSchema,\n 3: step03ElectoralSchema,\n 4: step04LeadershipSchema,\n 5: step05PsychologicalSchema,\n 6: step06EducationSchema,\n 7: step07EmploymentSchema,\n 8: step08NeurodiversitySchema,\n 9: step09HealthSchema,\n 10: step10WorldViewSchema,\n 11: step11ResidenceSchema,\n 12: step12HouseholdSchema,\n};\n\n/**\n * Get the Zod schema for a given step number.\n * Use `.partial().parse(data)` for sub-step saves.\n */\n// biome-ignore lint/suspicious/noExplicitAny: Zod schema types vary per step\nexport function getStepSchema(stepNumber: number): z.ZodObject<any> | undefined {\n return STEP_SCHEMAS[stepNumber];\n}\n\n/**\n * Get the list of field keys that are immutable after volunteer approval.\n */\nexport function getImmutableFields(): readonly string[] {\n return ['firstName', 'middleName', 'lastName', 'gender', 'dateOfBirth'];\n}\n"]}
@@ -1,58 +1,20 @@
1
1
  /**
2
- * UDP Field Metadata — Option arrays for all field types.
2
+ * UDP Field Metadata — backward-compatible re-exports from profile-fields.
3
3
  *
4
- * Labels use i18n translation keys (not hardcoded English strings).
5
- * Options that match dating-schema use the SAME values for cross-product consistency.
4
+ * This file re-exports option arrays under SCREAMING_CASE names for
5
+ * backward compatibility with existing frontend imports.
6
+ * New code should import directly from profile-fields.
6
7
  *
7
8
  * @module udp-schema/field-meta
8
9
  */
9
- export interface UdpFieldOption {
10
- value: string;
11
- /** i18n translation key */
12
- label: string;
13
- /** Optional description i18n key */
14
- description?: string;
15
- }
16
- /** Gender options matches dating-schema values */
17
- export declare const GENDER_OPTIONS: readonly UdpFieldOption[];
18
- /** Religion options matches dating-schema values exactly */
19
- export declare const RELIGION_OPTIONS: readonly UdpFieldOption[];
20
- /** Language options — matches dating-schema motherTongue values */
21
- export declare const LANGUAGE_OPTIONS: readonly UdpFieldOption[];
22
- /** Reservation / caste category options */
23
- export declare const RESERVATION_STATUS_OPTIONS: readonly UdpFieldOption[];
24
- /** Minority status options */
25
- export declare const MINORITY_STATUS_OPTIONS: readonly UdpFieldOption[];
26
- /** Political spectrum — matches dating-schema cognitiveBand values */
27
- export declare const POLITICAL_SPECTRUM_OPTIONS: readonly UdpFieldOption[];
28
- /** Major Indian political parties */
29
- export declare const PARTY_OPTIONS: readonly UdpFieldOption[];
30
- /** Civic engagement types */
31
- export declare const CIVIC_ENGAGEMENT_OPTIONS: readonly UdpFieldOption[];
32
- /** Voting issues */
33
- export declare const VOTING_ISSUES_OPTIONS: readonly UdpFieldOption[];
34
- /** Leadership skillset options */
35
- export declare const LEADERSHIP_SKILLSET_OPTIONS: readonly UdpFieldOption[];
36
- /** Highest qualification options */
37
- export declare const QUALIFICATION_OPTIONS: readonly UdpFieldOption[];
38
- /** Neurodiversity conditions */
39
- export declare const NEURODIVERSITY_CONDITIONS_OPTIONS: readonly UdpFieldOption[];
40
- /** Sensory preferences */
41
- export declare const SENSORY_PREFERENCES_OPTIONS: readonly UdpFieldOption[];
42
- /** Support needs */
43
- export declare const SUPPORT_NEEDS_OPTIONS: readonly UdpFieldOption[];
44
- /** Disability status options */
45
- export declare const DISABILITY_STATUS_OPTIONS: readonly UdpFieldOption[];
46
- /** Substance use options */
47
- export declare const SUBSTANCE_USE_OPTIONS: readonly UdpFieldOption[];
48
- /** LGBTQ+ statement options (reused from existing UDP) */
49
- export declare const LGBTQ_STATEMENTS_OPTIONS: readonly UdpFieldOption[];
50
- /** Transgender inclusion statement options (reused from existing UDP) */
51
- export declare const TRANSGENDER_STATEMENTS_OPTIONS: readonly UdpFieldOption[];
52
- /** Caste discrimination places (reused from existing UDP) */
53
- export declare const CASTE_DISCRIMINATION_PLACES_OPTIONS: readonly UdpFieldOption[];
54
- /** Family members options */
55
- export declare const FAMILY_MEMBERS_OPTIONS: readonly UdpFieldOption[];
56
- /** Digital access options */
57
- export declare const DIGITAL_ACCESS_OPTIONS: readonly UdpFieldOption[];
10
+ export type { FieldOption as UdpFieldOption } from './profile-fields/types.js';
11
+ export { genderOptions as GENDER_OPTIONS, religionOptions as RELIGION_OPTIONS, languageOptions as LANGUAGE_OPTIONS, reservationOptions as RESERVATION_STATUS_OPTIONS, minorityOptions as MINORITY_STATUS_OPTIONS, } from './profile-fields/01-profile.js';
12
+ export { politicalSpectrumOptions as POLITICAL_SPECTRUM_OPTIONS, partyOptions as PARTY_OPTIONS, civicEngagementOptions as CIVIC_ENGAGEMENT_OPTIONS, } from './profile-fields/02-political.js';
13
+ export { votingIssueOptions as VOTING_ISSUES_OPTIONS } from './profile-fields/03-electoral.js';
14
+ export { leadershipSkillsetOptions as LEADERSHIP_SKILLSET_OPTIONS } from './profile-fields/04-leadership.js';
15
+ export { qualificationOptions as QUALIFICATION_OPTIONS } from './profile-fields/06-education.js';
16
+ export { neurodiversityConditionOptions as NEURODIVERSITY_CONDITIONS_OPTIONS, sensoryPreferenceOptions as SENSORY_PREFERENCES_OPTIONS, supportNeedOptions as SUPPORT_NEEDS_OPTIONS, } from './profile-fields/08-neurodiversity.js';
17
+ export { disabilityOptions as DISABILITY_STATUS_OPTIONS, substanceUseOptions as SUBSTANCE_USE_OPTIONS, } from './profile-fields/09-health.js';
18
+ export { lgbtqStatementOptions as LGBTQ_STATEMENTS_OPTIONS, transgenderStatementOptions as TRANSGENDER_STATEMENTS_OPTIONS, casteDiscriminationPlaceOptions as CASTE_DISCRIMINATION_PLACES_OPTIONS, } from './profile-fields/10-worldview.js';
19
+ export { familyMemberOptions as FAMILY_MEMBERS_OPTIONS, digitalAccessOptions as DIGITAL_ACCESS_OPTIONS, } from './profile-fields/12-household.js';
58
20
  //# sourceMappingURL=field-meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-meta.d.ts","sourceRoot":"","sources":["../src/field-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,oDAAoD;AACpD,eAAO,MAAM,cAAc,EAAE,SAAS,cAAc,EAY1C,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAuB5C,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EA8B5C,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,0BAA0B,EAAE,SAAS,cAAc,EAStD,CAAC;AAEX,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,SAAS,cAAc,EAKnD,CAAC;AAIX,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,EAAE,SAAS,cAAc,EAStD,CAAC;AAEX,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EAsBzC,CAAC;AAEX,6BAA6B;AAC7B,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAYpD,CAAC;AAIX,oBAAoB;AACpB,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAejD,CAAC;AAIX,kCAAkC;AAClC,eAAO,MAAM,2BAA2B,EAAE,SAAS,cAAc,EAWvD,CAAC;AAIX,oCAAoC;AACpC,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EASjD,CAAC;AAIX,gCAAgC;AAChC,eAAO,MAAM,iCAAiC,EAAE,SAAS,cAAc,EAa7D,CAAC;AAEX,0BAA0B;AAC1B,eAAO,MAAM,2BAA2B,EAAE,SAAS,cAAc,EAQvD,CAAC;AAEX,oBAAoB;AACpB,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAUjD,CAAC;AAIX,gCAAgC;AAChC,eAAO,MAAM,yBAAyB,EAAE,SAAS,cAAc,EASrD,CAAC;AAEX,4BAA4B;AAC5B,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAQjD,CAAC;AAIX,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EASpD,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,8BAA8B,EAAE,SAAS,cAAc,EAS1D,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,mCAAmC,EAAE,SAAS,cAAc,EAQ/D,CAAC;AAIX,6BAA6B;AAC7B,eAAO,MAAM,sBAAsB,EAAE,SAAS,cAAc,EAelD,CAAC;AAEX,6BAA6B;AAC7B,eAAO,MAAM,sBAAsB,EAAE,SAAS,cAAc,EAOlD,CAAC"}
1
+ {"version":3,"file":"field-meta.d.ts","sourceRoot":"","sources":["../src/field-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,aAAa,IAAI,cAAc,EAC/B,eAAe,IAAI,gBAAgB,EACnC,eAAe,IAAI,gBAAgB,EACnC,kBAAkB,IAAI,0BAA0B,EAChD,eAAe,IAAI,uBAAuB,GAC3C,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,wBAAwB,IAAI,0BAA0B,EACtD,YAAY,IAAI,aAAa,EAC7B,sBAAsB,IAAI,wBAAwB,GACnD,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE/F,OAAO,EAAE,yBAAyB,IAAI,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAE7G,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG,OAAO,EACL,8BAA8B,IAAI,iCAAiC,EACnE,wBAAwB,IAAI,2BAA2B,EACvD,kBAAkB,IAAI,qBAAqB,GAC5C,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,IAAI,yBAAyB,EAC9C,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,qBAAqB,IAAI,wBAAwB,EACjD,2BAA2B,IAAI,8BAA8B,EAC7D,+BAA+B,IAAI,mCAAmC,GACvE,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,mBAAmB,IAAI,sBAAsB,EAC7C,oBAAoB,IAAI,sBAAsB,GAC/C,MAAM,kCAAkC,CAAC"}
@@ -1,313 +1,19 @@
1
1
  /**
2
- * UDP Field Metadata — Option arrays for all field types.
2
+ * UDP Field Metadata — backward-compatible re-exports from profile-fields.
3
3
  *
4
- * Labels use i18n translation keys (not hardcoded English strings).
5
- * Options that match dating-schema use the SAME values for cross-product consistency.
4
+ * This file re-exports option arrays under SCREAMING_CASE names for
5
+ * backward compatibility with existing frontend imports.
6
+ * New code should import directly from profile-fields.
6
7
  *
7
8
  * @module udp-schema/field-meta
8
9
  */
9
- // ─── Step 01: Profile ───────────────────────────────────────────────────────
10
- /** Gender options matches dating-schema values */
11
- export const GENDER_OPTIONS = [
12
- { value: 'man', label: 'gender_man' },
13
- { value: 'woman', label: 'gender_woman' },
14
- { value: 'non_binary', label: 'gender_non_binary' },
15
- { value: 'transgender_man', label: 'gender_transgender_man' },
16
- { value: 'transgender_woman', label: 'gender_transgender_woman' },
17
- { value: 'genderqueer', label: 'gender_genderqueer' },
18
- { value: 'genderfluid', label: 'gender_genderfluid' },
19
- { value: 'agender', label: 'gender_agender' },
20
- { value: 'two_spirit', label: 'gender_two_spirit' },
21
- { value: 'other', label: 'gender_other' },
22
- { value: 'prefer_not_to_say', label: 'gender_prefer_not_to_say' },
23
- ];
24
- /** Religion options — matches dating-schema values exactly */
25
- export const RELIGION_OPTIONS = [
26
- { value: 'hindu', label: 'religion_hindu' },
27
- { value: 'muslim_sunni', label: 'religion_muslim_sunni' },
28
- { value: 'muslim_shia', label: 'religion_muslim_shia' },
29
- { value: 'muslim_sufi', label: 'religion_muslim_sufi' },
30
- { value: 'muslim_other', label: 'religion_muslim_other' },
31
- { value: 'christian_catholic', label: 'religion_christian_catholic' },
32
- { value: 'christian_protestant', label: 'religion_christian_protestant' },
33
- { value: 'christian_other', label: 'religion_christian_other' },
34
- { value: 'sikh', label: 'religion_sikh' },
35
- { value: 'jain_digambar', label: 'religion_jain_digambar' },
36
- { value: 'jain_shwetambar', label: 'religion_jain_shwetambar' },
37
- { value: 'buddhist', label: 'religion_buddhist' },
38
- { value: 'parsi_zoroastrian', label: 'religion_parsi_zoroastrian' },
39
- { value: 'jewish', label: 'religion_jewish' },
40
- { value: 'bahai', label: 'religion_bahai' },
41
- { value: 'spiritual', label: 'religion_spiritual' },
42
- { value: 'atheist', label: 'religion_atheist' },
43
- { value: 'agnostic', label: 'religion_agnostic' },
44
- { value: 'no_religion', label: 'religion_no_religion' },
45
- { value: 'inter_religion', label: 'religion_inter_religion' },
46
- { value: 'other', label: 'religion_other' },
47
- { value: 'prefer_not_to_say', label: 'religion_prefer_not_to_say' },
48
- ];
49
- /** Language options — matches dating-schema motherTongue values */
50
- export const LANGUAGE_OPTIONS = [
51
- { value: 'hindi', label: 'language_hindi' },
52
- { value: 'english', label: 'language_english' },
53
- { value: 'bengali', label: 'language_bengali' },
54
- { value: 'telugu', label: 'language_telugu' },
55
- { value: 'marathi', label: 'language_marathi' },
56
- { value: 'tamil', label: 'language_tamil' },
57
- { value: 'urdu', label: 'language_urdu' },
58
- { value: 'gujarati', label: 'language_gujarati' },
59
- { value: 'kannada', label: 'language_kannada' },
60
- { value: 'odia', label: 'language_odia' },
61
- { value: 'malayalam', label: 'language_malayalam' },
62
- { value: 'punjabi', label: 'language_punjabi' },
63
- { value: 'assamese', label: 'language_assamese' },
64
- { value: 'maithili', label: 'language_maithili' },
65
- { value: 'bhojpuri', label: 'language_bhojpuri' },
66
- { value: 'rajasthani', label: 'language_rajasthani' },
67
- { value: 'chhattisgarhi', label: 'language_chhattisgarhi' },
68
- { value: 'haryanvi', label: 'language_haryanvi' },
69
- { value: 'tulu', label: 'language_tulu' },
70
- { value: 'sanskrit', label: 'language_sanskrit' },
71
- { value: 'sindhi', label: 'language_sindhi' },
72
- { value: 'kashmiri', label: 'language_kashmiri' },
73
- { value: 'nepali', label: 'language_nepali' },
74
- { value: 'konkani', label: 'language_konkani' },
75
- { value: 'dogri', label: 'language_dogri' },
76
- { value: 'manipuri', label: 'language_manipuri' },
77
- { value: 'bodo', label: 'language_bodo' },
78
- { value: 'santali', label: 'language_santali' },
79
- { value: 'other', label: 'language_other' },
80
- ];
81
- /** Reservation / caste category options */
82
- export const RESERVATION_STATUS_OPTIONS = [
83
- { value: 'SC', label: 'reservation_SC' },
84
- { value: 'ST', label: 'reservation_ST' },
85
- { value: 'OBC_NC', label: 'reservation_OBC_NC' },
86
- { value: 'OBC_C', label: 'reservation_OBC_C' },
87
- { value: 'EWS', label: 'reservation_EWS' },
88
- { value: 'GENERAL', label: 'reservation_GENERAL' },
89
- { value: 'DONT_KNOW', label: 'reservation_DONT_KNOW' },
90
- { value: 'PREFER_NOT_SAY', label: 'reservation_PREFER_NOT_SAY' },
91
- ];
92
- /** Minority status options */
93
- export const MINORITY_STATUS_OPTIONS = [
94
- { value: 'NO', label: 'minority_NO' },
95
- { value: 'RELIGIOUS', label: 'minority_RELIGIOUS' },
96
- { value: 'LINGUISTIC', label: 'minority_LINGUISTIC' },
97
- { value: 'NOT_SURE', label: 'minority_NOT_SURE' },
98
- ];
99
- // ─── Step 02: Political ─────────────────────────────────────────────────────
100
- /** Political spectrum — matches dating-schema cognitiveBand values */
101
- export const POLITICAL_SPECTRUM_OPTIONS = [
102
- { value: '1_tradition_faith', label: 'politicalSpectrum_1_tradition_faith' },
103
- { value: '2_faith_curious', label: 'politicalSpectrum_2_faith_curious' },
104
- { value: '3_multiplicity_open', label: 'politicalSpectrum_3_multiplicity_open' },
105
- { value: '4_pragmatic_flexible', label: 'politicalSpectrum_4_pragmatic_flexible' },
106
- { value: '5_evidence_reasoning', label: 'politicalSpectrum_5_evidence_reasoning' },
107
- { value: '6_critical_reflective', label: 'politicalSpectrum_6_critical_reflective' },
108
- { value: '7_skeptic_optimize', label: 'politicalSpectrum_7_skeptic_optimize' },
109
- { value: 'prefer_not_to_say', label: 'politicalSpectrum_prefer_not_to_say' },
110
- ];
111
- /** Major Indian political parties */
112
- export const PARTY_OPTIONS = [
113
- { value: 'bjp', label: 'party_bjp' },
114
- { value: 'inc', label: 'party_inc' },
115
- { value: 'aap', label: 'party_aap' },
116
- { value: 'bsp', label: 'party_bsp' },
117
- { value: 'sp', label: 'party_sp' },
118
- { value: 'tmc', label: 'party_tmc' },
119
- { value: 'dmk', label: 'party_dmk' },
120
- { value: 'aiadmk', label: 'party_aiadmk' },
121
- { value: 'ncp', label: 'party_ncp' },
122
- { value: 'shiv_sena', label: 'party_shiv_sena' },
123
- { value: 'jdu', label: 'party_jdu' },
124
- { value: 'rjd', label: 'party_rjd' },
125
- { value: 'cpim', label: 'party_cpim' },
126
- { value: 'cpi', label: 'party_cpi' },
127
- { value: 'ysrcp', label: 'party_ysrcp' },
128
- { value: 'tdp', label: 'party_tdp' },
129
- { value: 'bjd', label: 'party_bjd' },
130
- { value: 'jmm', label: 'party_jmm' },
131
- { value: 'none', label: 'party_none' },
132
- { value: 'other', label: 'party_other' },
133
- { value: 'prefer_not_to_say', label: 'party_prefer_not_to_say' },
134
- ];
135
- /** Civic engagement types */
136
- export const CIVIC_ENGAGEMENT_OPTIONS = [
137
- { value: 'ngo', label: 'civic_ngo' },
138
- { value: 'trade_union', label: 'civic_trade_union' },
139
- { value: 'cooperative', label: 'civic_cooperative' },
140
- { value: 'resident_association', label: 'civic_resident_association' },
141
- { value: 'self_help_group', label: 'civic_self_help_group' },
142
- { value: 'youth_club', label: 'civic_youth_club' },
143
- { value: 'religious_organization', label: 'civic_religious_organization' },
144
- { value: 'caste_association', label: 'civic_caste_association' },
145
- { value: 'professional_body', label: 'civic_professional_body' },
146
- { value: 'none', label: 'civic_none' },
147
- { value: 'other', label: 'civic_other' },
148
- ];
149
- // ─── Step 03: Electoral ─────────────────────────────────────────────────────
150
- /** Voting issues */
151
- export const VOTING_ISSUES_OPTIONS = [
152
- { value: 'economy', label: 'votingIssue_economy' },
153
- { value: 'healthcare', label: 'votingIssue_healthcare' },
154
- { value: 'education', label: 'votingIssue_education' },
155
- { value: 'unemployment', label: 'votingIssue_unemployment' },
156
- { value: 'corruption', label: 'votingIssue_corruption' },
157
- { value: 'womens_safety', label: 'votingIssue_womens_safety' },
158
- { value: 'environment', label: 'votingIssue_environment' },
159
- { value: 'caste_issues', label: 'votingIssue_caste_issues' },
160
- { value: 'religious_issues', label: 'votingIssue_religious_issues' },
161
- { value: 'infrastructure', label: 'votingIssue_infrastructure' },
162
- { value: 'national_security', label: 'votingIssue_national_security' },
163
- { value: 'farmer_issues', label: 'votingIssue_farmer_issues' },
164
- { value: 'water_sanitation', label: 'votingIssue_water_sanitation' },
165
- { value: 'other', label: 'votingIssue_other' },
166
- ];
167
- // ─── Step 04: Leadership ────────────────────────────────────────────────────
168
- /** Leadership skillset options */
169
- export const LEADERSHIP_SKILLSET_OPTIONS = [
170
- { value: 'public_speaking', label: 'leadership_public_speaking' },
171
- { value: 'community_organizing', label: 'leadership_community_organizing' },
172
- { value: 'conflict_resolution', label: 'leadership_conflict_resolution' },
173
- { value: 'fundraising', label: 'leadership_fundraising' },
174
- { value: 'media_handling', label: 'leadership_media_handling' },
175
- { value: 'legal_awareness', label: 'leadership_legal_awareness' },
176
- { value: 'grassroots_mobilization', label: 'leadership_grassroots_mobilization' },
177
- { value: 'digital_campaigning', label: 'leadership_digital_campaigning' },
178
- { value: 'negotiation', label: 'leadership_negotiation' },
179
- { value: 'event_management', label: 'leadership_event_management' },
180
- ];
181
- // ─── Step 06: Education ─────────────────────────────────────────────────────
182
- /** Highest qualification options */
183
- export const QUALIFICATION_OPTIONS = [
184
- { value: 'CLASS_10', label: 'qualification_CLASS_10' },
185
- { value: 'CLASS_12', label: 'qualification_CLASS_12' },
186
- { value: 'DIPLOMA', label: 'qualification_DIPLOMA' },
187
- { value: 'GRADUATION', label: 'qualification_GRADUATION' },
188
- { value: 'POST_GRAD', label: 'qualification_POST_GRAD' },
189
- { value: 'PHD', label: 'qualification_PHD' },
190
- { value: 'POST_DOCTORATE', label: 'qualification_POST_DOCTORATE' },
191
- { value: 'OTHER', label: 'qualification_OTHER' },
192
- ];
193
- // ─── Step 08: Neurodiversity ────────────────────────────────────────────────
194
- /** Neurodiversity conditions */
195
- export const NEURODIVERSITY_CONDITIONS_OPTIONS = [
196
- { value: 'adhd', label: 'condition_adhd' },
197
- { value: 'autism_spectrum', label: 'condition_autism_spectrum' },
198
- { value: 'dyslexia', label: 'condition_dyslexia' },
199
- { value: 'dyspraxia', label: 'condition_dyspraxia' },
200
- { value: 'dyscalculia', label: 'condition_dyscalculia' },
201
- { value: 'tourettes', label: 'condition_tourettes' },
202
- { value: 'ocd', label: 'condition_ocd' },
203
- { value: 'bipolar', label: 'condition_bipolar' },
204
- { value: 'anxiety_disorder', label: 'condition_anxiety_disorder' },
205
- { value: 'sensory_processing', label: 'condition_sensory_processing' },
206
- { value: 'other', label: 'condition_other' },
207
- { value: 'prefer_not_to_say', label: 'condition_prefer_not_to_say' },
208
- ];
209
- /** Sensory preferences */
210
- export const SENSORY_PREFERENCES_OPTIONS = [
211
- { value: 'loud_sounds', label: 'sensory_loud_sounds' },
212
- { value: 'bright_lights', label: 'sensory_bright_lights' },
213
- { value: 'textures', label: 'sensory_textures' },
214
- { value: 'smells', label: 'sensory_smells' },
215
- { value: 'quiet_environment', label: 'sensory_quiet_environment' },
216
- { value: 'seeks_stimulation', label: 'sensory_seeks_stimulation' },
217
- { value: 'no_specific', label: 'sensory_no_specific' },
218
- ];
219
- /** Support needs */
220
- export const SUPPORT_NEEDS_OPTIONS = [
221
- { value: 'flexible_deadlines', label: 'support_flexible_deadlines' },
222
- { value: 'written_instructions', label: 'support_written_instructions' },
223
- { value: 'quiet_workspace', label: 'support_quiet_workspace' },
224
- { value: 'regular_breaks', label: 'support_regular_breaks' },
225
- { value: 'structured_routines', label: 'support_structured_routines' },
226
- { value: 'assistive_technology', label: 'support_assistive_technology' },
227
- { value: 'peer_support', label: 'support_peer_support' },
228
- { value: 'professional_support', label: 'support_professional_support' },
229
- { value: 'no_specific', label: 'support_no_specific' },
230
- ];
231
- // ─── Step 09: Health ────────────────────────────────────────────────────────
232
- /** Disability status options */
233
- export const DISABILITY_STATUS_OPTIONS = [
234
- { value: 'none', label: 'disability_none' },
235
- { value: 'physical', label: 'disability_physical' },
236
- { value: 'visual', label: 'disability_visual' },
237
- { value: 'hearing', label: 'disability_hearing' },
238
- { value: 'speech', label: 'disability_speech' },
239
- { value: 'cognitive', label: 'disability_cognitive' },
240
- { value: 'multiple', label: 'disability_multiple' },
241
- { value: 'prefer_not_to_say', label: 'disability_prefer_not_to_say' },
242
- ];
243
- /** Substance use options */
244
- export const SUBSTANCE_USE_OPTIONS = [
245
- { value: 'none', label: 'substance_none' },
246
- { value: 'tobacco_smoking', label: 'substance_tobacco_smoking' },
247
- { value: 'tobacco_chewing', label: 'substance_tobacco_chewing' },
248
- { value: 'alcohol', label: 'substance_alcohol' },
249
- { value: 'cannabis', label: 'substance_cannabis' },
250
- { value: 'other', label: 'substance_other' },
251
- { value: 'prefer_not_to_say', label: 'substance_prefer_not_to_say' },
252
- ];
253
- // ─── Step 10: World View ────────────────────────────────────────────────────
254
- /** LGBTQ+ statement options (reused from existing UDP) */
255
- export const LGBTQ_STATEMENTS_OPTIONS = [
256
- { value: 'LGBTQ_EQUAL_RIGHTS', label: 'lgbtq_LGBTQ_EQUAL_RIGHTS' },
257
- { value: 'LGBTQ_SOCIAL_ACCEPTANCE', label: 'lgbtq_LGBTQ_SOCIAL_ACCEPTANCE' },
258
- { value: 'LGBTQ_PRIVATE_MATTER', label: 'lgbtq_LGBTQ_PRIVATE_MATTER' },
259
- { value: 'LGBTQ_SHOULD_NOT_BE_DISCRIMINATED', label: 'lgbtq_LGBTQ_SHOULD_NOT_BE_DISCRIMINATED' },
260
- { value: 'LGBTQ_TRADITION_CONFLICT', label: 'lgbtq_LGBTQ_TRADITION_CONFLICT' },
261
- { value: 'LGBTQ_NOT_COMFORTABLE', label: 'lgbtq_LGBTQ_NOT_COMFORTABLE' },
262
- { value: 'LGBTQ_DONT_KNOW', label: 'lgbtq_LGBTQ_DONT_KNOW' },
263
- { value: 'LGBTQ_PREFER_NOT_SAY', label: 'lgbtq_LGBTQ_PREFER_NOT_SAY' },
264
- ];
265
- /** Transgender inclusion statement options (reused from existing UDP) */
266
- export const TRANSGENDER_STATEMENTS_OPTIONS = [
267
- { value: 'TRANS_CHILD_KEEP_IN_FAMILY', label: 'trans_TRANS_CHILD_KEEP_IN_FAMILY' },
268
- { value: 'TRANS_EQUAL_RIGHTS', label: 'trans_TRANS_EQUAL_RIGHTS' },
269
- { value: 'TRANS_PART_OF_NORMAL_SOCIETY', label: 'trans_TRANS_PART_OF_NORMAL_SOCIETY' },
270
- { value: 'TRANS_NO_ABANDONMENT', label: 'trans_TRANS_NO_ABANDONMENT' },
271
- { value: 'TRANS_ONLY_SPECIAL_COMMUNITY', label: 'trans_TRANS_ONLY_SPECIAL_COMMUNITY' },
272
- { value: 'TRANS_UNCOMFORTABLE', label: 'trans_TRANS_UNCOMFORTABLE' },
273
- { value: 'TRANS_DONT_KNOW', label: 'trans_TRANS_DONT_KNOW' },
274
- { value: 'TRANS_PREFER_NOT_SAY', label: 'trans_TRANS_PREFER_NOT_SAY' },
275
- ];
276
- /** Caste discrimination places (reused from existing UDP) */
277
- export const CASTE_DISCRIMINATION_PLACES_OPTIONS = [
278
- { value: 'SCHOOL_EDUCATION', label: 'discrimination_SCHOOL_EDUCATION' },
279
- { value: 'WORKPLACE', label: 'discrimination_WORKPLACE' },
280
- { value: 'LOCALITY', label: 'discrimination_LOCALITY' },
281
- { value: 'GOVT_OFFICES', label: 'discrimination_GOVT_OFFICES' },
282
- { value: 'MARKET', label: 'discrimination_MARKET' },
283
- { value: 'RELIGIOUS_SPACE', label: 'discrimination_RELIGIOUS_SPACE' },
284
- { value: 'OTHER', label: 'discrimination_OTHER' },
285
- ];
286
- // ─── Step 12: Household ─────────────────────────────────────────────────────
287
- /** Family members options */
288
- export const FAMILY_MEMBERS_OPTIONS = [
289
- { value: 'father', label: 'family_father' },
290
- { value: 'mother', label: 'family_mother' },
291
- { value: 'step_father', label: 'family_step_father' },
292
- { value: 'step_mother', label: 'family_step_mother' },
293
- { value: 'wife_husband', label: 'family_wife_husband' },
294
- { value: 'blood_brother', label: 'family_blood_brother' },
295
- { value: 'blood_sister', label: 'family_blood_sister' },
296
- { value: 'half_brother', label: 'family_half_brother' },
297
- { value: 'half_sister', label: 'family_half_sister' },
298
- { value: 'step_brother', label: 'family_step_brother' },
299
- { value: 'step_sister', label: 'family_step_sister' },
300
- { value: 'son', label: 'family_son' },
301
- { value: 'daughter', label: 'family_daughter' },
302
- { value: 'other', label: 'family_other' },
303
- ];
304
- /** Digital access options */
305
- export const DIGITAL_ACCESS_OPTIONS = [
306
- { value: 'smartphone', label: 'digital_smartphone' },
307
- { value: 'feature_phone', label: 'digital_feature_phone' },
308
- { value: 'computer_laptop', label: 'digital_computer_laptop' },
309
- { value: 'internet_at_home', label: 'digital_internet_at_home' },
310
- { value: 'no_internet', label: 'digital_no_internet' },
311
- { value: 'no_phone', label: 'digital_no_phone' },
312
- ];
10
+ export { genderOptions as GENDER_OPTIONS, religionOptions as RELIGION_OPTIONS, languageOptions as LANGUAGE_OPTIONS, reservationOptions as RESERVATION_STATUS_OPTIONS, minorityOptions as MINORITY_STATUS_OPTIONS, } from './profile-fields/01-profile.js';
11
+ export { politicalSpectrumOptions as POLITICAL_SPECTRUM_OPTIONS, partyOptions as PARTY_OPTIONS, civicEngagementOptions as CIVIC_ENGAGEMENT_OPTIONS, } from './profile-fields/02-political.js';
12
+ export { votingIssueOptions as VOTING_ISSUES_OPTIONS } from './profile-fields/03-electoral.js';
13
+ export { leadershipSkillsetOptions as LEADERSHIP_SKILLSET_OPTIONS } from './profile-fields/04-leadership.js';
14
+ export { qualificationOptions as QUALIFICATION_OPTIONS } from './profile-fields/06-education.js';
15
+ export { neurodiversityConditionOptions as NEURODIVERSITY_CONDITIONS_OPTIONS, sensoryPreferenceOptions as SENSORY_PREFERENCES_OPTIONS, supportNeedOptions as SUPPORT_NEEDS_OPTIONS, } from './profile-fields/08-neurodiversity.js';
16
+ export { disabilityOptions as DISABILITY_STATUS_OPTIONS, substanceUseOptions as SUBSTANCE_USE_OPTIONS, } from './profile-fields/09-health.js';
17
+ export { lgbtqStatementOptions as LGBTQ_STATEMENTS_OPTIONS, transgenderStatementOptions as TRANSGENDER_STATEMENTS_OPTIONS, casteDiscriminationPlaceOptions as CASTE_DISCRIMINATION_PLACES_OPTIONS, } from './profile-fields/10-worldview.js';
18
+ export { familyMemberOptions as FAMILY_MEMBERS_OPTIONS, digitalAccessOptions as DIGITAL_ACCESS_OPTIONS, } from './profile-fields/12-household.js';
313
19
  //# sourceMappingURL=field-meta.js.map