udp-schema 2.6.0 → 2.8.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/onboarding-form.d.ts +16 -5
- package/dist/onboarding-form.d.ts.map +1 -1
- package/dist/profile-fields/01-profile.d.ts +81 -9
- package/dist/profile-fields/01-profile.d.ts.map +1 -1
- package/dist/profile-fields/01-profile.js +99 -12
- package/dist/profile-fields/01-profile.js.map +1 -1
- package/dist/progress-fields.d.ts +8 -0
- package/dist/progress-fields.d.ts.map +1 -1
- package/dist/progress-fields.js +21 -3
- package/dist/progress-fields.js.map +1 -1
- package/dist/step-01.schema.d.ts +15 -4
- package/dist/step-01.schema.d.ts.map +1 -1
- package/dist/step-01.schema.js +31 -4
- package/dist/step-01.schema.js.map +1 -1
- package/dist/step-10.schema.d.ts +1 -1
- package/package.json +1 -1
|
@@ -109,10 +109,10 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
|
|
|
109
109
|
viewOnTransgenderInclusion: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
110
110
|
viewOnTransgenderOpinion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
111
111
|
facingCasteDiscrimination: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
112
|
-
PREFER_NOT_SAY: "PREFER_NOT_SAY";
|
|
113
112
|
NO: "NO";
|
|
114
113
|
YES_OFTEN: "YES_OFTEN";
|
|
115
114
|
YES_SOMETIMES: "YES_SOMETIMES";
|
|
115
|
+
PREFER_NOT_SAY: "PREFER_NOT_SAY";
|
|
116
116
|
}>>>;
|
|
117
117
|
casteDiscriminationPlaces: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
118
118
|
viewOnGenderEquality: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
@@ -474,17 +474,28 @@ export declare const udpOnboardingFormSchema: z.ZodObject<{
|
|
|
474
474
|
reservationStatus: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
475
475
|
SC: "SC";
|
|
476
476
|
ST: "ST";
|
|
477
|
-
|
|
478
|
-
|
|
477
|
+
OBC_NCL: "OBC_NCL";
|
|
478
|
+
OBC_CL: "OBC_CL";
|
|
479
|
+
MBC: "MBC";
|
|
480
|
+
SEBC: "SEBC";
|
|
481
|
+
SBC: "SBC";
|
|
482
|
+
DNT_NT: "DNT_NT";
|
|
479
483
|
EWS: "EWS";
|
|
480
484
|
GENERAL: "GENERAL";
|
|
481
485
|
DONT_KNOW: "DONT_KNOW";
|
|
482
|
-
|
|
486
|
+
PREFER_NOT_TO_SAY: "PREFER_NOT_TO_SAY";
|
|
483
487
|
}>>>;
|
|
484
488
|
minorityStatus: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
489
|
+
PREFER_NOT_TO_SAY: "PREFER_NOT_TO_SAY";
|
|
485
490
|
NO: "NO";
|
|
486
|
-
|
|
491
|
+
MUSLIM: "MUSLIM";
|
|
492
|
+
CHRISTIAN: "CHRISTIAN";
|
|
493
|
+
SIKH: "SIKH";
|
|
494
|
+
BUDDHIST: "BUDDHIST";
|
|
495
|
+
JAIN: "JAIN";
|
|
496
|
+
PARSI: "PARSI";
|
|
487
497
|
LINGUISTIC: "LINGUISTIC";
|
|
498
|
+
BOTH: "BOTH";
|
|
488
499
|
NOT_SURE: "NOT_SURE";
|
|
489
500
|
}>>>;
|
|
490
501
|
}, z.core.$strip>;
|
|
@@ -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
|
|
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"}
|
|
@@ -254,43 +254,115 @@ export declare const languageOptions: readonly [{
|
|
|
254
254
|
readonly value: "other";
|
|
255
255
|
readonly label: "Other";
|
|
256
256
|
}];
|
|
257
|
+
/**
|
|
258
|
+
* Reservation / caste category — exhaustive list per Government of India
|
|
259
|
+
* and state-level backward-class classifications.
|
|
260
|
+
*
|
|
261
|
+
* References:
|
|
262
|
+
* - Articles 341 / 342 (SC / ST)
|
|
263
|
+
* - Mandal Commission + 77th Amendment (OBC)
|
|
264
|
+
* - 103rd Amendment, 2019 (EWS)
|
|
265
|
+
* - State lists: MBC (Tamil Nadu, Bihar), SEBC (Maharashtra, Gujarat, etc.),
|
|
266
|
+
* SBC (Karnataka), DNT / NT / VJNT (Maharashtra, MP, and others)
|
|
267
|
+
*/
|
|
257
268
|
export declare const reservationOptions: readonly [{
|
|
258
269
|
readonly value: "SC";
|
|
259
270
|
readonly label: "Scheduled Caste (SC)";
|
|
271
|
+
readonly description: "Listed in the Presidential Order under Article 341";
|
|
260
272
|
}, {
|
|
261
273
|
readonly value: "ST";
|
|
262
274
|
readonly label: "Scheduled Tribe (ST)";
|
|
275
|
+
readonly description: "Listed in the Presidential Order under Article 342";
|
|
276
|
+
}, {
|
|
277
|
+
readonly value: "OBC_NCL";
|
|
278
|
+
readonly label: "OBC — Non-Creamy Layer";
|
|
279
|
+
readonly description: "Other Backward Class, eligible for reservation";
|
|
280
|
+
}, {
|
|
281
|
+
readonly value: "OBC_CL";
|
|
282
|
+
readonly label: "OBC — Creamy Layer";
|
|
283
|
+
readonly description: "Other Backward Class, income above the creamy-layer threshold";
|
|
263
284
|
}, {
|
|
264
|
-
readonly value: "
|
|
265
|
-
readonly label: "
|
|
285
|
+
readonly value: "MBC";
|
|
286
|
+
readonly label: "Most Backward Class (MBC)";
|
|
287
|
+
readonly description: "State sub-category of OBC (e.g., Tamil Nadu, Bihar)";
|
|
266
288
|
}, {
|
|
267
|
-
readonly value: "
|
|
268
|
-
readonly label: "
|
|
289
|
+
readonly value: "SEBC";
|
|
290
|
+
readonly label: "Socially & Educationally Backward Class (SEBC)";
|
|
291
|
+
readonly description: "State-notified SEBC (e.g., Maharashtra, Gujarat)";
|
|
292
|
+
}, {
|
|
293
|
+
readonly value: "SBC";
|
|
294
|
+
readonly label: "Special Backward Class (SBC)";
|
|
295
|
+
readonly description: "State-notified special backward category";
|
|
296
|
+
}, {
|
|
297
|
+
readonly value: "DNT_NT";
|
|
298
|
+
readonly label: "Denotified / Nomadic Tribes (DNT / NT / VJNT)";
|
|
299
|
+
readonly description: "Denotified, Nomadic, and Semi-Nomadic communities";
|
|
269
300
|
}, {
|
|
270
301
|
readonly value: "EWS";
|
|
271
302
|
readonly label: "Economically Weaker Section (EWS)";
|
|
303
|
+
readonly description: "10% reservation for unreserved categories (103rd Amendment)";
|
|
272
304
|
}, {
|
|
273
305
|
readonly value: "GENERAL";
|
|
274
|
-
readonly label: "General";
|
|
306
|
+
readonly label: "General / Unreserved";
|
|
307
|
+
readonly description: "No reservation category";
|
|
275
308
|
}, {
|
|
276
309
|
readonly value: "DONT_KNOW";
|
|
277
310
|
readonly label: "Don't know";
|
|
311
|
+
readonly description: "Not sure of the category";
|
|
278
312
|
}, {
|
|
279
|
-
readonly value: "
|
|
313
|
+
readonly value: "PREFER_NOT_TO_SAY";
|
|
280
314
|
readonly label: "Prefer not to say";
|
|
315
|
+
readonly description: "Keep this private";
|
|
281
316
|
}];
|
|
317
|
+
/**
|
|
318
|
+
* Minority status — per Ministry of Minority Affairs, Government of India.
|
|
319
|
+
* 6 religious minorities are centrally notified. Linguistic minorities are
|
|
320
|
+
* defined at the state level (mother tongue ≠ majority language of the state).
|
|
321
|
+
*/
|
|
282
322
|
export declare const minorityOptions: readonly [{
|
|
283
323
|
readonly value: "NO";
|
|
284
324
|
readonly label: "No";
|
|
325
|
+
readonly description: "Not a minority community";
|
|
285
326
|
}, {
|
|
286
|
-
readonly value: "
|
|
287
|
-
readonly label: "
|
|
327
|
+
readonly value: "MUSLIM";
|
|
328
|
+
readonly label: "Religious Minority — Muslim";
|
|
329
|
+
readonly description: "Centrally notified religious minority";
|
|
330
|
+
}, {
|
|
331
|
+
readonly value: "CHRISTIAN";
|
|
332
|
+
readonly label: "Religious Minority — Christian";
|
|
333
|
+
readonly description: "Centrally notified religious minority";
|
|
334
|
+
}, {
|
|
335
|
+
readonly value: "SIKH";
|
|
336
|
+
readonly label: "Religious Minority — Sikh";
|
|
337
|
+
readonly description: "Centrally notified religious minority";
|
|
338
|
+
}, {
|
|
339
|
+
readonly value: "BUDDHIST";
|
|
340
|
+
readonly label: "Religious Minority — Buddhist";
|
|
341
|
+
readonly description: "Centrally notified religious minority";
|
|
342
|
+
}, {
|
|
343
|
+
readonly value: "JAIN";
|
|
344
|
+
readonly label: "Religious Minority — Jain";
|
|
345
|
+
readonly description: "Centrally notified religious minority (2014)";
|
|
346
|
+
}, {
|
|
347
|
+
readonly value: "PARSI";
|
|
348
|
+
readonly label: "Religious Minority — Parsi / Zoroastrian";
|
|
349
|
+
readonly description: "Centrally notified religious minority";
|
|
288
350
|
}, {
|
|
289
351
|
readonly value: "LINGUISTIC";
|
|
290
|
-
readonly label: "
|
|
352
|
+
readonly label: "Linguistic Minority";
|
|
353
|
+
readonly description: "Mother tongue is not the majority language of your state";
|
|
354
|
+
}, {
|
|
355
|
+
readonly value: "BOTH";
|
|
356
|
+
readonly label: "Both religious and linguistic minority";
|
|
357
|
+
readonly description: "Belongs to a religious minority AND a linguistic minority";
|
|
291
358
|
}, {
|
|
292
359
|
readonly value: "NOT_SURE";
|
|
293
360
|
readonly label: "Not sure";
|
|
361
|
+
readonly description: "Don't know if you're a minority";
|
|
362
|
+
}, {
|
|
363
|
+
readonly value: "PREFER_NOT_TO_SAY";
|
|
364
|
+
readonly label: "Prefer not to say";
|
|
365
|
+
readonly description: "Keep this private";
|
|
294
366
|
}];
|
|
295
367
|
export declare const profile: FieldGroup;
|
|
296
368
|
//# sourceMappingURL=01-profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"01-profile.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DhB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDlB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BlB,CAAC;AAEX,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"01-profile.d.ts","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DhB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDlB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BlB,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCrB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ClB,CAAC;AAIX,eAAO,MAAM,OAAO,EAAE,UAqGrB,CAAC"}
|
|
@@ -155,21 +155,108 @@ export const languageOptions = [
|
|
|
155
155
|
{ value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },
|
|
156
156
|
{ value: 'other', label: 'Other' },
|
|
157
157
|
];
|
|
158
|
+
/**
|
|
159
|
+
* Reservation / caste category — exhaustive list per Government of India
|
|
160
|
+
* and state-level backward-class classifications.
|
|
161
|
+
*
|
|
162
|
+
* References:
|
|
163
|
+
* - Articles 341 / 342 (SC / ST)
|
|
164
|
+
* - Mandal Commission + 77th Amendment (OBC)
|
|
165
|
+
* - 103rd Amendment, 2019 (EWS)
|
|
166
|
+
* - State lists: MBC (Tamil Nadu, Bihar), SEBC (Maharashtra, Gujarat, etc.),
|
|
167
|
+
* SBC (Karnataka), DNT / NT / VJNT (Maharashtra, MP, and others)
|
|
168
|
+
*/
|
|
158
169
|
export const reservationOptions = [
|
|
159
|
-
{ value: 'SC', label: 'Scheduled Caste (SC)' },
|
|
160
|
-
{ value: 'ST', label: 'Scheduled Tribe (ST)' },
|
|
161
|
-
{
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
{
|
|
170
|
+
{ value: 'SC', label: 'Scheduled Caste (SC)', description: 'Listed in the Presidential Order under Article 341' },
|
|
171
|
+
{ value: 'ST', label: 'Scheduled Tribe (ST)', description: 'Listed in the Presidential Order under Article 342' },
|
|
172
|
+
{
|
|
173
|
+
value: 'OBC_NCL',
|
|
174
|
+
label: 'OBC — Non-Creamy Layer',
|
|
175
|
+
description: 'Other Backward Class, eligible for reservation',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
value: 'OBC_CL',
|
|
179
|
+
label: 'OBC — Creamy Layer',
|
|
180
|
+
description: 'Other Backward Class, income above the creamy-layer threshold',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
value: 'MBC',
|
|
184
|
+
label: 'Most Backward Class (MBC)',
|
|
185
|
+
description: 'State sub-category of OBC (e.g., Tamil Nadu, Bihar)',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
value: 'SEBC',
|
|
189
|
+
label: 'Socially & Educationally Backward Class (SEBC)',
|
|
190
|
+
description: 'State-notified SEBC (e.g., Maharashtra, Gujarat)',
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
value: 'SBC',
|
|
194
|
+
label: 'Special Backward Class (SBC)',
|
|
195
|
+
description: 'State-notified special backward category',
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
value: 'DNT_NT',
|
|
199
|
+
label: 'Denotified / Nomadic Tribes (DNT / NT / VJNT)',
|
|
200
|
+
description: 'Denotified, Nomadic, and Semi-Nomadic communities',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
value: 'EWS',
|
|
204
|
+
label: 'Economically Weaker Section (EWS)',
|
|
205
|
+
description: '10% reservation for unreserved categories (103rd Amendment)',
|
|
206
|
+
},
|
|
207
|
+
{ value: 'GENERAL', label: 'General / Unreserved', description: 'No reservation category' },
|
|
208
|
+
{ value: 'DONT_KNOW', label: "Don't know", description: 'Not sure of the category' },
|
|
209
|
+
{ value: 'PREFER_NOT_TO_SAY', label: 'Prefer not to say', description: 'Keep this private' },
|
|
167
210
|
];
|
|
211
|
+
/**
|
|
212
|
+
* Minority status — per Ministry of Minority Affairs, Government of India.
|
|
213
|
+
* 6 religious minorities are centrally notified. Linguistic minorities are
|
|
214
|
+
* defined at the state level (mother tongue ≠ majority language of the state).
|
|
215
|
+
*/
|
|
168
216
|
export const minorityOptions = [
|
|
169
|
-
{ value: 'NO', label: 'No' },
|
|
170
|
-
{
|
|
171
|
-
|
|
172
|
-
|
|
217
|
+
{ value: 'NO', label: 'No', description: 'Not a minority community' },
|
|
218
|
+
{
|
|
219
|
+
value: 'MUSLIM',
|
|
220
|
+
label: 'Religious Minority — Muslim',
|
|
221
|
+
description: 'Centrally notified religious minority',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
value: 'CHRISTIAN',
|
|
225
|
+
label: 'Religious Minority — Christian',
|
|
226
|
+
description: 'Centrally notified religious minority',
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
value: 'SIKH',
|
|
230
|
+
label: 'Religious Minority — Sikh',
|
|
231
|
+
description: 'Centrally notified religious minority',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
value: 'BUDDHIST',
|
|
235
|
+
label: 'Religious Minority — Buddhist',
|
|
236
|
+
description: 'Centrally notified religious minority',
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
value: 'JAIN',
|
|
240
|
+
label: 'Religious Minority — Jain',
|
|
241
|
+
description: 'Centrally notified religious minority (2014)',
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
value: 'PARSI',
|
|
245
|
+
label: 'Religious Minority — Parsi / Zoroastrian',
|
|
246
|
+
description: 'Centrally notified religious minority',
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
value: 'LINGUISTIC',
|
|
250
|
+
label: 'Linguistic Minority',
|
|
251
|
+
description: 'Mother tongue is not the majority language of your state',
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
value: 'BOTH',
|
|
255
|
+
label: 'Both religious and linguistic minority',
|
|
256
|
+
description: 'Belongs to a religious minority AND a linguistic minority',
|
|
257
|
+
},
|
|
258
|
+
{ value: 'NOT_SURE', label: 'Not sure', description: "Don't know if you're a minority" },
|
|
259
|
+
{ value: 'PREFER_NOT_TO_SAY', label: 'Prefer not to say', description: 'Keep this private' },
|
|
173
260
|
];
|
|
174
261
|
// ─── Field Group ────────────────────────────────────────────────────────────
|
|
175
262
|
export const profile = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"01-profile.js","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 01 — Profile fields.\n *\n * Rich field definitions with options and descriptions,\n * matching the dating-schema profile-fields pattern.\n */\n\nimport type { FieldGroup } from './types.js';\n\n// ─── Shared option arrays (exported for reuse) ─────────────────────────────\n\n/**\n * Gender options — matches dating-schema (01-hero-identity.ts) EXACTLY.\n * Keep in sync with dating so both products share the same enum + copy.\n */\nexport const genderOptions = [\n { value: 'man', label: 'Man', description: 'Identify as male' },\n { value: 'woman', label: 'Woman', description: 'Identify as female' },\n {\n value: 'non_binary',\n label: 'Non-binary',\n description: 'Neither exclusively male nor female',\n },\n {\n value: 'trans_man',\n label: 'Trans Man',\n description: 'Assigned female at birth, identify as male',\n },\n {\n value: 'trans_woman',\n label: 'Trans Woman',\n description: 'Assigned male at birth, identify as female',\n },\n { value: 'genderfluid', label: 'Genderfluid', description: 'Gender identity shifts over time' },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'agender', label: 'Agender', description: 'No gender identity or gender-neutral' },\n {\n value: 'bigender',\n label: 'Bigender',\n description: 'Identify as two genders simultaneously or alternating',\n },\n {\n value: 'pangender',\n label: 'Pangender',\n description: 'Identify with all genders or many gender identities',\n },\n {\n value: 'androgynous',\n label: 'Androgynous',\n description: 'Blend of masculine and feminine expression',\n },\n {\n value: 'intersex',\n label: 'Intersex',\n description: \"Born with sex characteristics that don't fit typical male/female\",\n },\n {\n value: 'gender_nonconforming',\n label: 'Gender Non-conforming',\n description: \"Expression doesn't align with conventional expectations\",\n },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n {\n value: 'hijra',\n label: 'Hijra',\n description: 'South Asian third-gender identity — legally recognized in India',\n },\n { value: 'other', label: 'Other', description: 'Another identity not listed here' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nexport const religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n { value: 'muslim_sufi', label: 'Muslim (Sufi)', description: 'Mystical Islamic tradition' },\n { value: 'muslim_other', label: 'Muslim (Other)', description: 'Ahmadiyya or other traditions' },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n { value: 'agnostic', label: 'Agnostic', description: 'Uncertain about higher power' },\n { value: 'no_religion', label: 'No Religion', description: 'Simply non-religious' },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background',\n },\n { value: 'other', label: 'Other', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const languageOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\nexport const reservationOptions = [\n { value: 'SC', label: 'Scheduled Caste (SC)' },\n { value: 'ST', label: 'Scheduled Tribe (ST)' },\n { value: 'OBC_NC', label: 'OBC (Non-Creamy Layer)' },\n { value: 'OBC_C', label: 'OBC (Creamy Layer)' },\n { value: 'EWS', label: 'Economically Weaker Section (EWS)' },\n { value: 'GENERAL', label: 'General' },\n { value: 'DONT_KNOW', label: \"Don't know\" },\n { value: 'PREFER_NOT_SAY', label: 'Prefer not to say' },\n] as const;\n\nexport const minorityOptions = [\n { value: 'NO', label: 'No' },\n { value: 'RELIGIOUS', label: 'Yes — Religious minority' },\n { value: 'LINGUISTIC', label: 'Yes — Linguistic minority' },\n { value: 'NOT_SURE', label: 'Not sure' },\n] as const;\n\n// ─── Field Group ────────────────────────────────────────────────────────────\n\nexport const profile: FieldGroup = {\n key: 'profile',\n label: 'Profile',\n description: 'Basic personal information — name, gender, date of birth, language, and religion.',\n step: 1,\n fields: [\n {\n order: 1,\n key: 'fullName',\n label: 'Full Name',\n type: 'object',\n step: 1,\n isOnboarding: true,\n description: 'First, middle, and last name as per Aadhaar or other govt ID',\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...genderOptions],\n },\n {\n order: 5,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n step: 1,\n isOnboarding: true,\n },\n {\n order: 6,\n key: 'whatsappNumber',\n label: 'WhatsApp Number',\n type: 'text',\n step: 1,\n isOnboarding: true,\n optional: true,\n description: 'Include country code',\n },\n {\n order: 7,\n key: 'primaryLanguage',\n label: 'Primary Language',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...languageOptions],\n },\n {\n order: 8,\n key: 'secondaryLanguages',\n label: 'Secondary Languages',\n type: 'multi_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...languageOptions],\n maxSelect: 10,\n },\n {\n order: 9,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...religionOptions],\n },\n {\n order: 10,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...religionOptions],\n },\n {\n order: 11,\n key: 'reservationStatus',\n label: 'Reservation Category',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...reservationOptions],\n sensitive: true,\n },\n {\n order: 12,\n key: 'minorityStatus',\n label: 'Minority Status',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...minorityOptions],\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"01-profile.js","sourceRoot":"","sources":["../../src/profile-fields/01-profile.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 01 — Profile fields.\n *\n * Rich field definitions with options and descriptions,\n * matching the dating-schema profile-fields pattern.\n */\n\nimport type { FieldGroup } from './types.js';\n\n// ─── Shared option arrays (exported for reuse) ─────────────────────────────\n\n/**\n * Gender options — matches dating-schema (01-hero-identity.ts) EXACTLY.\n * Keep in sync with dating so both products share the same enum + copy.\n */\nexport const genderOptions = [\n { value: 'man', label: 'Man', description: 'Identify as male' },\n { value: 'woman', label: 'Woman', description: 'Identify as female' },\n {\n value: 'non_binary',\n label: 'Non-binary',\n description: 'Neither exclusively male nor female',\n },\n {\n value: 'trans_man',\n label: 'Trans Man',\n description: 'Assigned female at birth, identify as male',\n },\n {\n value: 'trans_woman',\n label: 'Trans Woman',\n description: 'Assigned male at birth, identify as female',\n },\n { value: 'genderfluid', label: 'Genderfluid', description: 'Gender identity shifts over time' },\n {\n value: 'genderqueer',\n label: 'Genderqueer',\n description: 'Outside the traditional gender binary',\n },\n { value: 'agender', label: 'Agender', description: 'No gender identity or gender-neutral' },\n {\n value: 'bigender',\n label: 'Bigender',\n description: 'Identify as two genders simultaneously or alternating',\n },\n {\n value: 'pangender',\n label: 'Pangender',\n description: 'Identify with all genders or many gender identities',\n },\n {\n value: 'androgynous',\n label: 'Androgynous',\n description: 'Blend of masculine and feminine expression',\n },\n {\n value: 'intersex',\n label: 'Intersex',\n description: \"Born with sex characteristics that don't fit typical male/female\",\n },\n {\n value: 'gender_nonconforming',\n label: 'Gender Non-conforming',\n description: \"Expression doesn't align with conventional expectations\",\n },\n {\n value: 'two_spirit',\n label: 'Two-Spirit',\n description: 'Indigenous identity encompassing multiple genders',\n },\n {\n value: 'hijra',\n label: 'Hijra',\n description: 'South Asian third-gender identity — legally recognized in India',\n },\n { value: 'other', label: 'Other', description: 'Another identity not listed here' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\nexport const religionOptions = [\n { value: 'hindu', label: 'Hindu', description: 'Sanatana Dharma traditions' },\n { value: 'muslim_sunni', label: 'Muslim (Sunni)', description: 'Largest branch of Islam' },\n { value: 'muslim_shia', label: 'Muslim (Shia)', description: 'Second-largest branch of Islam' },\n { value: 'muslim_sufi', label: 'Muslim (Sufi)', description: 'Mystical Islamic tradition' },\n { value: 'muslim_other', label: 'Muslim (Other)', description: 'Ahmadiyya or other traditions' },\n {\n value: 'christian_catholic',\n label: 'Christian (Catholic)',\n description: 'Roman Catholic tradition',\n },\n {\n value: 'christian_protestant',\n label: 'Christian (Protestant)',\n description: 'Baptist, Methodist, Pentecostal, etc.',\n },\n {\n value: 'christian_other',\n label: 'Christian (Other)',\n description: 'Orthodox, Syrian, or other traditions',\n },\n { value: 'sikh', label: 'Sikh', description: 'Founded by Guru Nanak' },\n { value: 'jain_digambar', label: 'Jain (Digambar)', description: 'Sky-clad Jain tradition' },\n {\n value: 'jain_shwetambar',\n label: 'Jain (Shwetambar)',\n description: 'White-clad Jain tradition',\n },\n { value: 'buddhist', label: 'Buddhist', description: \"Followers of the Buddha's teachings\" },\n {\n value: 'parsi_zoroastrian',\n label: 'Parsi / Zoroastrian',\n description: 'Ancient Persian faith',\n },\n { value: 'jewish', label: 'Jewish', description: 'Judaism — Abrahamic faith' },\n { value: 'bahai', label: \"Baha'i\", description: 'Unity of all religions and humanity' },\n {\n value: 'spiritual',\n label: 'Spiritual but not religious',\n description: 'Personal spiritual practice',\n },\n { value: 'atheist', label: 'Atheist', description: 'No belief in deities' },\n { value: 'agnostic', label: 'Agnostic', description: 'Uncertain about higher power' },\n { value: 'no_religion', label: 'No Religion', description: 'Simply non-religious' },\n {\n value: 'inter_religion',\n label: 'Inter-Religion / Multi-faith',\n description: 'Multi-faith background',\n },\n { value: 'other', label: 'Other', description: 'A faith not listed above' },\n { value: 'prefer_not_to_say', label: 'Prefer not to say' },\n] as const;\n\nexport const languageOptions = [\n { value: 'hindi', label: 'Hindi (हिन्दी)' },\n { value: 'english', label: 'English' },\n { value: 'bengali', label: 'Bengali (বাংলা)' },\n { value: 'telugu', label: 'Telugu (తెలుగు)' },\n { value: 'marathi', label: 'Marathi (मराठी)' },\n { value: 'tamil', label: 'Tamil (தமிழ்)' },\n { value: 'urdu', label: 'Urdu (اردو)' },\n { value: 'gujarati', label: 'Gujarati (ગુજરાતી)' },\n { value: 'kannada', label: 'Kannada (ಕನ್ನಡ)' },\n { value: 'odia', label: 'Odia (ଓଡ଼ିଆ)' },\n { value: 'malayalam', label: 'Malayalam (മലയാളം)' },\n { value: 'punjabi', label: 'Punjabi (ਪੰਜਾਬੀ)' },\n { value: 'assamese', label: 'Assamese (অসমীয়া)' },\n { value: 'maithili', label: 'Maithili (मैथिली)' },\n { value: 'bhojpuri', label: 'Bhojpuri (भोजपुरी)' },\n { value: 'rajasthani', label: 'Rajasthani (राजस्थानी)' },\n { value: 'chhattisgarhi', label: 'Chhattisgarhi (छत्तीसगढ़ी)' },\n { value: 'haryanvi', label: 'Haryanvi (हरियाणवी)' },\n { value: 'tulu', label: 'Tulu (ತುಳು)' },\n { value: 'sanskrit', label: 'Sanskrit (संस्कृतम्)' },\n { value: 'sindhi', label: 'Sindhi (سنڌي)' },\n { value: 'kashmiri', label: 'Kashmiri (कॉशुर)' },\n { value: 'nepali', label: 'Nepali (नेपाली)' },\n { value: 'konkani', label: 'Konkani (कोंकणी)' },\n { value: 'dogri', label: 'Dogri (डोगरी)' },\n { value: 'manipuri', label: 'Manipuri (মৈতৈলোন্)' },\n { value: 'bodo', label: 'Bodo (बड़ो)' },\n { value: 'santali', label: 'Santali (ᱥᱟᱱᱛᱟᱲᱤ)' },\n { value: 'other', label: 'Other' },\n] as const;\n\n/**\n * Reservation / caste category — exhaustive list per Government of India\n * and state-level backward-class classifications.\n *\n * References:\n * - Articles 341 / 342 (SC / ST)\n * - Mandal Commission + 77th Amendment (OBC)\n * - 103rd Amendment, 2019 (EWS)\n * - State lists: MBC (Tamil Nadu, Bihar), SEBC (Maharashtra, Gujarat, etc.),\n * SBC (Karnataka), DNT / NT / VJNT (Maharashtra, MP, and others)\n */\nexport const reservationOptions = [\n { value: 'SC', label: 'Scheduled Caste (SC)', description: 'Listed in the Presidential Order under Article 341' },\n { value: 'ST', label: 'Scheduled Tribe (ST)', description: 'Listed in the Presidential Order under Article 342' },\n {\n value: 'OBC_NCL',\n label: 'OBC — Non-Creamy Layer',\n description: 'Other Backward Class, eligible for reservation',\n },\n {\n value: 'OBC_CL',\n label: 'OBC — Creamy Layer',\n description: 'Other Backward Class, income above the creamy-layer threshold',\n },\n {\n value: 'MBC',\n label: 'Most Backward Class (MBC)',\n description: 'State sub-category of OBC (e.g., Tamil Nadu, Bihar)',\n },\n {\n value: 'SEBC',\n label: 'Socially & Educationally Backward Class (SEBC)',\n description: 'State-notified SEBC (e.g., Maharashtra, Gujarat)',\n },\n {\n value: 'SBC',\n label: 'Special Backward Class (SBC)',\n description: 'State-notified special backward category',\n },\n {\n value: 'DNT_NT',\n label: 'Denotified / Nomadic Tribes (DNT / NT / VJNT)',\n description: 'Denotified, Nomadic, and Semi-Nomadic communities',\n },\n {\n value: 'EWS',\n label: 'Economically Weaker Section (EWS)',\n description: '10% reservation for unreserved categories (103rd Amendment)',\n },\n { value: 'GENERAL', label: 'General / Unreserved', description: 'No reservation category' },\n { value: 'DONT_KNOW', label: \"Don't know\", description: 'Not sure of the category' },\n { value: 'PREFER_NOT_TO_SAY', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\n/**\n * Minority status — per Ministry of Minority Affairs, Government of India.\n * 6 religious minorities are centrally notified. Linguistic minorities are\n * defined at the state level (mother tongue ≠ majority language of the state).\n */\nexport const minorityOptions = [\n { value: 'NO', label: 'No', description: 'Not a minority community' },\n {\n value: 'MUSLIM',\n label: 'Religious Minority — Muslim',\n description: 'Centrally notified religious minority',\n },\n {\n value: 'CHRISTIAN',\n label: 'Religious Minority — Christian',\n description: 'Centrally notified religious minority',\n },\n {\n value: 'SIKH',\n label: 'Religious Minority — Sikh',\n description: 'Centrally notified religious minority',\n },\n {\n value: 'BUDDHIST',\n label: 'Religious Minority — Buddhist',\n description: 'Centrally notified religious minority',\n },\n {\n value: 'JAIN',\n label: 'Religious Minority — Jain',\n description: 'Centrally notified religious minority (2014)',\n },\n {\n value: 'PARSI',\n label: 'Religious Minority — Parsi / Zoroastrian',\n description: 'Centrally notified religious minority',\n },\n {\n value: 'LINGUISTIC',\n label: 'Linguistic Minority',\n description: 'Mother tongue is not the majority language of your state',\n },\n {\n value: 'BOTH',\n label: 'Both religious and linguistic minority',\n description: 'Belongs to a religious minority AND a linguistic minority',\n },\n { value: 'NOT_SURE', label: 'Not sure', description: \"Don't know if you're a minority\" },\n { value: 'PREFER_NOT_TO_SAY', label: 'Prefer not to say', description: 'Keep this private' },\n] as const;\n\n// ─── Field Group ────────────────────────────────────────────────────────────\n\nexport const profile: FieldGroup = {\n key: 'profile',\n label: 'Profile',\n description: 'Basic personal information — name, gender, date of birth, language, and religion.',\n step: 1,\n fields: [\n {\n order: 1,\n key: 'fullName',\n label: 'Full Name',\n type: 'object',\n step: 1,\n isOnboarding: true,\n description: 'First, middle, and last name as per Aadhaar or other govt ID',\n },\n {\n order: 4,\n key: 'gender',\n label: 'Gender',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...genderOptions],\n },\n {\n order: 5,\n key: 'dateOfBirth',\n label: 'Date of Birth',\n type: 'date',\n step: 1,\n isOnboarding: true,\n },\n {\n order: 6,\n key: 'whatsappNumber',\n label: 'WhatsApp Number',\n type: 'text',\n step: 1,\n isOnboarding: true,\n optional: true,\n description: 'Include country code',\n },\n {\n order: 7,\n key: 'primaryLanguage',\n label: 'Primary Language',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...languageOptions],\n },\n {\n order: 8,\n key: 'secondaryLanguages',\n label: 'Secondary Languages',\n type: 'multi_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...languageOptions],\n maxSelect: 10,\n },\n {\n order: 9,\n key: 'familyReligion',\n label: 'Family Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...religionOptions],\n },\n {\n order: 10,\n key: 'personalReligion',\n label: 'Personal Religion',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n optional: true,\n options: [...religionOptions],\n },\n {\n order: 11,\n key: 'reservationStatus',\n label: 'Reservation Category',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...reservationOptions],\n sensitive: true,\n },\n {\n order: 12,\n key: 'minorityStatus',\n label: 'Minority Status',\n type: 'single_select',\n step: 1,\n isOnboarding: true,\n options: [...minorityOptions],\n },\n ],\n};\n"]}
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
export declare const UDP_PROGRESS_FIELDS: Record<number, readonly string[]>;
|
|
11
11
|
/** Total number of UDP steps */
|
|
12
12
|
export declare const UDP_TOTAL_STEPS = 12;
|
|
13
|
+
/**
|
|
14
|
+
* Synthetic progress keys — keys that aren't real fields but represent
|
|
15
|
+
* a group of underlying fields. Counted as "filled" if ANY underlying
|
|
16
|
+
* field is filled. Used for UI sub-steps that collect multiple fields
|
|
17
|
+
* at once (e.g. the fullName sub-step that saves firstName, middleName,
|
|
18
|
+
* and lastName).
|
|
19
|
+
*/
|
|
20
|
+
export declare const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]>;
|
|
13
21
|
/**
|
|
14
22
|
* Resolve a dot-path (e.g., "currentAddress.state") against a data object.
|
|
15
23
|
* Works with both plain objects and Mongoose subdocuments.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-fields.d.ts","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAoHxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYlF;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcrD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GACnD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"progress-fields.d.ts","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAoHxD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAE3D,CAAC;AAEX;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYlF;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcrD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GACnD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,GACnE;IACD,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAeA"}
|
package/dist/progress-fields.js
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export const UDP_PROGRESS_FIELDS = {
|
|
11
11
|
1: [
|
|
12
|
-
'
|
|
13
|
-
|
|
14
|
-
'
|
|
12
|
+
// 'fullName' is a synthetic key — counts as filled if ANY of
|
|
13
|
+
// firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.
|
|
14
|
+
'fullName',
|
|
15
15
|
'gender',
|
|
16
16
|
'dateOfBirth',
|
|
17
17
|
'whatsappNumber',
|
|
@@ -126,6 +126,16 @@ export const UDP_PROGRESS_FIELDS = {
|
|
|
126
126
|
};
|
|
127
127
|
/** Total number of UDP steps */
|
|
128
128
|
export const UDP_TOTAL_STEPS = 12;
|
|
129
|
+
/**
|
|
130
|
+
* Synthetic progress keys — keys that aren't real fields but represent
|
|
131
|
+
* a group of underlying fields. Counted as "filled" if ANY underlying
|
|
132
|
+
* field is filled. Used for UI sub-steps that collect multiple fields
|
|
133
|
+
* at once (e.g. the fullName sub-step that saves firstName, middleName,
|
|
134
|
+
* and lastName).
|
|
135
|
+
*/
|
|
136
|
+
export const UDP_PROGRESS_SYNTHETIC = {
|
|
137
|
+
fullName: ['firstName', 'middleName', 'lastName'],
|
|
138
|
+
};
|
|
129
139
|
/**
|
|
130
140
|
* Resolve a dot-path (e.g., "currentAddress.state") against a data object.
|
|
131
141
|
* Works with both plain objects and Mongoose subdocuments.
|
|
@@ -175,6 +185,14 @@ export function calculateStepProgress(stepNumber, formData) {
|
|
|
175
185
|
return { filled: 0, total };
|
|
176
186
|
let filled = 0;
|
|
177
187
|
for (const fieldPath of fields) {
|
|
188
|
+
// Synthetic keys (e.g., "fullName") — filled if ANY underlying field is filled.
|
|
189
|
+
const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];
|
|
190
|
+
if (syntheticPaths) {
|
|
191
|
+
if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {
|
|
192
|
+
filled++;
|
|
193
|
+
}
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
178
196
|
if (isFieldFilled(getNestedValue(formData, fieldPath))) {
|
|
179
197
|
filled++;
|
|
180
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n 'firstName',\n 'middleName',\n 'lastName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'familyPartyAssociation',\n 'publicOfficeAndElections',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education12th.institutionName',\n 'education12th.yearOfPassing',\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n 'educationNotes',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'conditions',\n 'sensoryPreferences',\n 'learningStyle',\n 'communicationPreference',\n 'supportNeeds',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n // 'fullName' is a synthetic key — counts as filled if ANY of\n // firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'familyPartyAssociation',\n 'publicOfficeAndElections',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'desiredPoliticalPosition',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'changesYouWantToBring',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education12th.institutionName',\n 'education12th.yearOfPassing',\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n 'educationNotes',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'conditions',\n 'sensoryPreferences',\n 'learningStyle',\n 'communicationPreference',\n 'supportNeeds',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Synthetic progress keys — keys that aren't real fields but represent\n * a group of underlying fields. Counted as \"filled\" if ANY underlying\n * field is filled. Used for UI sub-steps that collect multiple fields\n * at once (e.g. the fullName sub-step that saves firstName, middleName,\n * and lastName).\n */\nexport const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]> = {\n fullName: ['firstName', 'middleName', 'lastName'],\n} as const;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n // Synthetic keys (e.g., \"fullName\") — filled if ANY underlying field is filled.\n const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];\n if (syntheticPaths) {\n if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {\n filled++;\n }\n continue;\n }\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}
|
package/dist/step-01.schema.d.ts
CHANGED
|
@@ -86,17 +86,28 @@ export declare const step01ProfileSchema: z.ZodObject<{
|
|
|
86
86
|
reservationStatus: z.ZodOptional<z.ZodEnum<{
|
|
87
87
|
SC: "SC";
|
|
88
88
|
ST: "ST";
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
OBC_NCL: "OBC_NCL";
|
|
90
|
+
OBC_CL: "OBC_CL";
|
|
91
|
+
MBC: "MBC";
|
|
92
|
+
SEBC: "SEBC";
|
|
93
|
+
SBC: "SBC";
|
|
94
|
+
DNT_NT: "DNT_NT";
|
|
91
95
|
EWS: "EWS";
|
|
92
96
|
GENERAL: "GENERAL";
|
|
93
97
|
DONT_KNOW: "DONT_KNOW";
|
|
94
|
-
|
|
98
|
+
PREFER_NOT_TO_SAY: "PREFER_NOT_TO_SAY";
|
|
95
99
|
}>>;
|
|
96
100
|
minorityStatus: z.ZodOptional<z.ZodEnum<{
|
|
101
|
+
PREFER_NOT_TO_SAY: "PREFER_NOT_TO_SAY";
|
|
97
102
|
NO: "NO";
|
|
98
|
-
|
|
103
|
+
MUSLIM: "MUSLIM";
|
|
104
|
+
CHRISTIAN: "CHRISTIAN";
|
|
105
|
+
SIKH: "SIKH";
|
|
106
|
+
BUDDHIST: "BUDDHIST";
|
|
107
|
+
JAIN: "JAIN";
|
|
108
|
+
PARSI: "PARSI";
|
|
99
109
|
LINGUISTIC: "LINGUISTIC";
|
|
110
|
+
BOTH: "BOTH";
|
|
100
111
|
NOT_SURE: "NOT_SURE";
|
|
101
112
|
}>>;
|
|
102
113
|
}, z.core.$strip>;
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmI9B,CAAC;AAIH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
package/dist/step-01.schema.js
CHANGED
|
@@ -99,11 +99,38 @@ export const step01ProfileSchema = z.object({
|
|
|
99
99
|
'prefer_not_to_say',
|
|
100
100
|
])
|
|
101
101
|
.optional(),
|
|
102
|
-
/** Reservation / caste category */
|
|
102
|
+
/** Reservation / caste category — exhaustive per central + state notifications. */
|
|
103
103
|
reservationStatus: z
|
|
104
|
-
.enum([
|
|
104
|
+
.enum([
|
|
105
|
+
'SC',
|
|
106
|
+
'ST',
|
|
107
|
+
'OBC_NCL',
|
|
108
|
+
'OBC_CL',
|
|
109
|
+
'MBC',
|
|
110
|
+
'SEBC',
|
|
111
|
+
'SBC',
|
|
112
|
+
'DNT_NT',
|
|
113
|
+
'EWS',
|
|
114
|
+
'GENERAL',
|
|
115
|
+
'DONT_KNOW',
|
|
116
|
+
'PREFER_NOT_TO_SAY',
|
|
117
|
+
])
|
|
118
|
+
.optional(),
|
|
119
|
+
/** Minority community status — per Ministry of Minority Affairs (6 religious + linguistic). */
|
|
120
|
+
minorityStatus: z
|
|
121
|
+
.enum([
|
|
122
|
+
'NO',
|
|
123
|
+
'MUSLIM',
|
|
124
|
+
'CHRISTIAN',
|
|
125
|
+
'SIKH',
|
|
126
|
+
'BUDDHIST',
|
|
127
|
+
'JAIN',
|
|
128
|
+
'PARSI',
|
|
129
|
+
'LINGUISTIC',
|
|
130
|
+
'BOTH',
|
|
131
|
+
'NOT_SURE',
|
|
132
|
+
'PREFER_NOT_TO_SAY',
|
|
133
|
+
])
|
|
105
134
|
.optional(),
|
|
106
|
-
/** Minority community status */
|
|
107
|
-
minorityStatus: z.enum(['NO', 'RELIGIOUS', 'LINGUISTIC', 'NOT_SURE']).optional(),
|
|
108
135
|
});
|
|
109
136
|
//# sourceMappingURL=step-01.schema.js.map
|
|
@@ -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,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,gFAAgF;IAChF,MAAM,EAAE,CAAC;SACN,IAAI,CAAC;QACJ,KAAK;QACL,OAAO;QACP,YAAY;QACZ,WAAW;QACX,aAAa;QACb,aAAa;QACb,aAAa;QACb,SAAS;QACT,UAAU;QACV,WAAW;QACX,aAAa;QACb,UAAU;QACV,sBAAsB;QACtB,YAAY;QACZ,OAAO;QACP,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,
|
|
1
|
+
{"version":3,"file":"step-01.schema.js","sourceRoot":"","sources":["../src/step-01.schema.ts"],"names":[],"mappings":"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","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 — matches dating-schema enum EXACTLY (same values, same spelling). */\n gender: z\n .enum([\n 'man',\n 'woman',\n 'non_binary',\n 'trans_man',\n 'trans_woman',\n 'genderfluid',\n 'genderqueer',\n 'agender',\n 'bigender',\n 'pangender',\n 'androgynous',\n 'intersex',\n 'gender_nonconforming',\n 'two_spirit',\n 'hijra',\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 — exhaustive per central + state notifications. */\n reservationStatus: z\n .enum([\n 'SC',\n 'ST',\n 'OBC_NCL',\n 'OBC_CL',\n 'MBC',\n 'SEBC',\n 'SBC',\n 'DNT_NT',\n 'EWS',\n 'GENERAL',\n 'DONT_KNOW',\n 'PREFER_NOT_TO_SAY',\n ])\n .optional(),\n\n /** Minority community status — per Ministry of Minority Affairs (6 religious + linguistic). */\n minorityStatus: z\n .enum([\n 'NO',\n 'MUSLIM',\n 'CHRISTIAN',\n 'SIKH',\n 'BUDDHIST',\n 'JAIN',\n 'PARSI',\n 'LINGUISTIC',\n 'BOTH',\n 'NOT_SURE',\n 'PREFER_NOT_TO_SAY',\n ])\n .optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step01ProfileInput = z.infer<typeof step01ProfileSchema>;\n"]}
|
package/dist/step-10.schema.d.ts
CHANGED
|
@@ -21,10 +21,10 @@ export declare const step10WorldViewSchema: z.ZodObject<{
|
|
|
21
21
|
viewOnTransgenderInclusion: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
22
|
viewOnTransgenderOpinion: z.ZodOptional<z.ZodString>;
|
|
23
23
|
facingCasteDiscrimination: z.ZodOptional<z.ZodEnum<{
|
|
24
|
-
PREFER_NOT_SAY: "PREFER_NOT_SAY";
|
|
25
24
|
NO: "NO";
|
|
26
25
|
YES_OFTEN: "YES_OFTEN";
|
|
27
26
|
YES_SOMETIMES: "YES_SOMETIMES";
|
|
27
|
+
PREFER_NOT_SAY: "PREFER_NOT_SAY";
|
|
28
28
|
}>>;
|
|
29
29
|
casteDiscriminationPlaces: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
30
|
viewOnGenderEquality: z.ZodOptional<z.ZodEnum<{
|