@ginia/ui 0.1.17 → 0.1.19

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.
@@ -53,7 +53,7 @@ function formatDisplayDate(dateStr) {
53
53
  if (!/\d{4}/.test(dateStr)) return dateStr;
54
54
  const ts = parseDateToTimestamp(dateStr);
55
55
  if (!ts) return dateStr;
56
- return (0, import_date_fns.format)(new Date(ts), "MMMM yyyy", { locale: import_locale.es });
56
+ return (0, import_date_fns.format)(new Date(ts), "MMM yyyy", { locale: import_locale.es });
57
57
  }
58
58
  function formatDateRange(opts) {
59
59
  const startText = opts.hideStart ? "" : formatDisplayDate(opts.start);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/experience-education.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport type { CVExperienceBaseItem, CVCertificationItem } from \"../../types\";\nimport { GraduationCap, Briefcase, Trophy, Award } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\n\n/** Parsea una fecha a timestamp. Soporta ISO (YYYY-MM-DD), MM/YYYY, YYYY-MM, YYYY. */\nfunction parseDateToTimestamp(dateStr: string | undefined): number {\n if (!dateStr) return 0;\n const isoMatch = dateStr.match(/^(\\d{4})-(\\d{1,2})(?:-(\\d{1,2}))?/);\n if (isoMatch) {\n const [, y, m, d] = isoMatch;\n // Importante: interpretar como fecha \"local\" para evitar corrimientos por zona horaria\n // (p.ej. 2024-08-01 en UTC puede formatearse como julio en zonas negativas).\n const year = Number(y);\n const monthIndex = Number(m) - 1; // JS Date usa meses 0-based\n const day = Number(d || \"1\");\n return new Date(year, monthIndex, day).getTime();\n }\n const mmYyyy = dateStr.match(/^(\\d{1,2})\\/(\\d{4})$/);\n if (mmYyyy) {\n const [, m, y] = mmYyyy;\n const year = Number(y);\n const monthIndex = Number(m) - 1;\n return new Date(year, monthIndex, 1).getTime();\n }\n const year = dateStr.match(/\\d{4}/);\n if (year) {\n return new Date(Number(year[0]), 0, 1).getTime();\n }\n return 0;\n}\n\n/** Formatea una fecha ISO/string a \"mes año\" en español, ej: \"agosto 2020\". */\nfunction formatDisplayDate(dateStr: string | undefined): string {\n if (!dateStr) return \"\";\n // Si es un valor semántico como \"Presente\", lo retorna tal cual\n if (!/\\d{4}/.test(dateStr)) return dateStr;\n const ts = parseDateToTimestamp(dateStr);\n if (!ts) return dateStr;\n return format(new Date(ts), \"MMMM yyyy\", { locale: es });\n}\n\nfunction formatDateRange(opts: {\n start?: string;\n end?: string;\n hideStart?: boolean;\n hideEnd?: boolean;\n}): string {\n const startText = opts.hideStart ? \"\" : formatDisplayDate(opts.start);\n const endText = opts.hideEnd ? \"\" : formatDisplayDate(opts.end);\n\n if (startText && endText) return `${startText} - ${endText}`;\n return startText || endText || \"\";\n}\n\n/** Ordena descendente por fecha (más reciente primero). Usa end_date o start_date si no hay end. */\nfunction sortByDateDesc<T extends CVExperienceBaseItem>(items: T[]): T[] {\n return [...items].sort((a, b) => {\n const dateA = a.end_date || a.start_date;\n const dateB = b.end_date || b.start_date;\n if (!dateA && !dateB) return 0;\n if (!dateA) return 1;\n if (!dateB) return -1;\n return parseDateToTimestamp(dateB) - parseDateToTimestamp(dateA);\n });\n}\n\n/** Ordena certificaciones descendente por date_awarded */\nfunction sortCertificationsByDateDesc(items: CVCertificationItem[]): CVCertificationItem[] {\n return [...items].sort((a, b) => {\n const tsA = parseDateToTimestamp(a.date_awarded);\n const tsB = parseDateToTimestamp(b.date_awarded);\n return tsB - tsA;\n });\n}\n\ninterface ExperienceEducationProps {\n data: CandidateProfile;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport function ExperienceEducation({\n data,\n theme,\n hideFields = [],\n hideSections = [],\n}: ExperienceEducationProps) {\n const experiences = sortByDateDesc(data.work_experience || []);\n const education = sortByDateDesc(data.education || []);\n const activities = sortByDateDesc(data.activities || []);\n const certifications = sortCertificationsByDateDesc(data.certifications || []);\n\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div className=\"space-y-12\">\n {/* Experience */}\n {experiences.length > 0 && !hideSections.includes(\"Experiencia laboral\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Briefcase className=\"h-6 w-6 text-primary\" />\n Experiencia Laboral\n </h3>\n <div className=\"space-y-8\">\n {experiences.map((exp) => (\n <div\n key={exp.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"experience.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{exp.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"experience.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {exp.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"experience.start_date\") ||\n !hideFields.includes(\"experience.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: exp.start_date,\n end: exp.end_date,\n hideStart: hideFields.includes(\"experience.start_date\"),\n hideEnd: hideFields.includes(\"experience.end_date\"),\n })}\n </span>\n )}\n </div>\n {exp.description && !hideFields.includes(\"experience.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {exp.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Education */}\n {education.length > 0 && !hideSections.includes(\"Educación\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <GraduationCap className=\"h-6 w-6 text-primary\" />\n Educación\n </h3>\n <div className=\"space-y-8\">\n {education.map((edu) => (\n <div\n key={edu.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"education.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{edu.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"education.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {edu.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"education.start_date\") ||\n !hideFields.includes(\"education.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: edu.start_date,\n end: edu.end_date,\n hideStart: hideFields.includes(\"education.start_date\"),\n hideEnd: hideFields.includes(\"education.end_date\"),\n })}\n </span>\n )}\n </div>\n {edu.description && !hideFields.includes(\"education.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {edu.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Activities */}\n {activities.length > 0 && !hideSections.includes(\"Actividades y Logros\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Trophy className=\"h-6 w-6 text-primary\" />\n Actividades y Logros\n </h3>\n <div className=\"space-y-8\">\n {activities.map((act) => (\n <div\n key={act.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"activities.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{act.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"activities.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {act.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"activities.start_date\") ||\n !hideFields.includes(\"activities.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: act.start_date,\n end: act.end_date,\n hideStart: hideFields.includes(\"activities.start_date\"),\n hideEnd: hideFields.includes(\"activities.end_date\"),\n })}\n </span>\n )}\n </div>\n {act.description && !hideFields.includes(\"activities.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {act.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Certifications */}\n {certifications.length > 0 && !hideSections.includes(\"Certificaciones\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Award className=\"h-6 w-6 text-primary\" />\n Certificaciones\n </h3>\n <div className=\"grid grid-cols-1 gap-4\">\n {certifications.map((cert) => (\n <div\n key={cert.id}\n className=\"rounded-lg border border-border/60 bg-card p-4 shadow-sm transition-colors hover:border-primary/30 hover:shadow-md\"\n >\n {!hideFields.includes(\"certifications.title\") && (\n <h4 className=\"break-words text-base font-bold text-foreground\">\n {cert.title}\n </h4>\n )}\n {!hideFields.includes(\"certifications.institution_name\") && (\n <p className=\"mt-1 line-clamp-1 text-sm text-muted-foreground\">\n {cert.institution_name}\n </p>\n )}\n <div className=\"mt-4 flex items-center justify-between\">\n {!hideFields.includes(\"certifications.date_awarded\") && (\n <span className=\"rounded-md bg-muted/50 px-2 py-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground pdf-badge\">\n {cert.date_awarded}\n </span>\n )}\n {cert.verified && !hideFields.includes(\"certifications.verified\") && (\n <span\n className=\"pdf-badge rounded-full border px-2.5 py-1 text-xs font-bold transition-colors\"\n style={{\n backgroundColor: theme?.startsWith(\"#\") ? `${theme}15` : undefined,\n color: theme,\n borderColor: theme?.startsWith(\"#\") ? `${theme}30` : theme,\n }}\n >\n Verificado\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["year"]}
1
+ {"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/experience-education.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport type { CVExperienceBaseItem, CVCertificationItem } from \"../../types\";\nimport { GraduationCap, Briefcase, Trophy, Award } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\n\n/** Parsea una fecha a timestamp. Soporta ISO (YYYY-MM-DD), MM/YYYY, YYYY-MM, YYYY. */\nfunction parseDateToTimestamp(dateStr: string | undefined): number {\n if (!dateStr) return 0;\n const isoMatch = dateStr.match(/^(\\d{4})-(\\d{1,2})(?:-(\\d{1,2}))?/);\n if (isoMatch) {\n const [, y, m, d] = isoMatch;\n // Importante: interpretar como fecha \"local\" para evitar corrimientos por zona horaria\n // (p.ej. 2024-08-01 en UTC puede formatearse como julio en zonas negativas).\n const year = Number(y);\n const monthIndex = Number(m) - 1; // JS Date usa meses 0-based\n const day = Number(d || \"1\");\n return new Date(year, monthIndex, day).getTime();\n }\n const mmYyyy = dateStr.match(/^(\\d{1,2})\\/(\\d{4})$/);\n if (mmYyyy) {\n const [, m, y] = mmYyyy;\n const year = Number(y);\n const monthIndex = Number(m) - 1;\n return new Date(year, monthIndex, 1).getTime();\n }\n const year = dateStr.match(/\\d{4}/);\n if (year) {\n return new Date(Number(year[0]), 0, 1).getTime();\n }\n return 0;\n}\n\n/** Formatea una fecha ISO/string a \"mes año\" en español, ej: \"agosto 2020\". */\nfunction formatDisplayDate(dateStr: string | undefined): string {\n if (!dateStr) return \"\";\n // Si es un valor semántico como \"Presente\", lo retorna tal cual\n if (!/\\d{4}/.test(dateStr)) return dateStr;\n const ts = parseDateToTimestamp(dateStr);\n if (!ts) return dateStr;\n return format(new Date(ts), \"MMM yyyy\", { locale: es });\n}\n\nfunction formatDateRange(opts: {\n start?: string;\n end?: string;\n hideStart?: boolean;\n hideEnd?: boolean;\n}): string {\n const startText = opts.hideStart ? \"\" : formatDisplayDate(opts.start);\n const endText = opts.hideEnd ? \"\" : formatDisplayDate(opts.end);\n\n if (startText && endText) return `${startText} - ${endText}`;\n return startText || endText || \"\";\n}\n\n/** Ordena descendente por fecha (más reciente primero). Usa end_date o start_date si no hay end. */\nfunction sortByDateDesc<T extends CVExperienceBaseItem>(items: T[]): T[] {\n return [...items].sort((a, b) => {\n const dateA = a.end_date || a.start_date;\n const dateB = b.end_date || b.start_date;\n if (!dateA && !dateB) return 0;\n if (!dateA) return 1;\n if (!dateB) return -1;\n return parseDateToTimestamp(dateB) - parseDateToTimestamp(dateA);\n });\n}\n\n/** Ordena certificaciones descendente por date_awarded */\nfunction sortCertificationsByDateDesc(items: CVCertificationItem[]): CVCertificationItem[] {\n return [...items].sort((a, b) => {\n const tsA = parseDateToTimestamp(a.date_awarded);\n const tsB = parseDateToTimestamp(b.date_awarded);\n return tsB - tsA;\n });\n}\n\ninterface ExperienceEducationProps {\n data: CandidateProfile;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport function ExperienceEducation({\n data,\n theme,\n hideFields = [],\n hideSections = [],\n}: ExperienceEducationProps) {\n const experiences = sortByDateDesc(data.work_experience || []);\n const education = sortByDateDesc(data.education || []);\n const activities = sortByDateDesc(data.activities || []);\n const certifications = sortCertificationsByDateDesc(data.certifications || []);\n\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div className=\"space-y-12\">\n {/* Experience */}\n {experiences.length > 0 && !hideSections.includes(\"Experiencia laboral\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Briefcase className=\"h-6 w-6 text-primary\" />\n Experiencia Laboral\n </h3>\n <div className=\"space-y-8\">\n {experiences.map((exp) => (\n <div\n key={exp.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"experience.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{exp.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"experience.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {exp.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"experience.start_date\") ||\n !hideFields.includes(\"experience.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: exp.start_date,\n end: exp.end_date,\n hideStart: hideFields.includes(\"experience.start_date\"),\n hideEnd: hideFields.includes(\"experience.end_date\"),\n })}\n </span>\n )}\n </div>\n {exp.description && !hideFields.includes(\"experience.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {exp.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Education */}\n {education.length > 0 && !hideSections.includes(\"Educación\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <GraduationCap className=\"h-6 w-6 text-primary\" />\n Educación\n </h3>\n <div className=\"space-y-8\">\n {education.map((edu) => (\n <div\n key={edu.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"education.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{edu.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"education.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {edu.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"education.start_date\") ||\n !hideFields.includes(\"education.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: edu.start_date,\n end: edu.end_date,\n hideStart: hideFields.includes(\"education.start_date\"),\n hideEnd: hideFields.includes(\"education.end_date\"),\n })}\n </span>\n )}\n </div>\n {edu.description && !hideFields.includes(\"education.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {edu.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Activities */}\n {activities.length > 0 && !hideSections.includes(\"Actividades y Logros\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Trophy className=\"h-6 w-6 text-primary\" />\n Actividades y Logros\n </h3>\n <div className=\"space-y-8\">\n {activities.map((act) => (\n <div\n key={act.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"activities.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{act.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"activities.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {act.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"activities.start_date\") ||\n !hideFields.includes(\"activities.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: act.start_date,\n end: act.end_date,\n hideStart: hideFields.includes(\"activities.start_date\"),\n hideEnd: hideFields.includes(\"activities.end_date\"),\n })}\n </span>\n )}\n </div>\n {act.description && !hideFields.includes(\"activities.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {act.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Certifications */}\n {certifications.length > 0 && !hideSections.includes(\"Certificaciones\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Award className=\"h-6 w-6 text-primary\" />\n Certificaciones\n </h3>\n <div className=\"grid grid-cols-1 gap-4\">\n {certifications.map((cert) => (\n <div\n key={cert.id}\n className=\"rounded-lg border border-border/60 bg-card p-4 shadow-sm transition-colors hover:border-primary/30 hover:shadow-md\"\n >\n {!hideFields.includes(\"certifications.title\") && (\n <h4 className=\"break-words text-base font-bold text-foreground\">\n {cert.title}\n </h4>\n )}\n {!hideFields.includes(\"certifications.institution_name\") && (\n <p className=\"mt-1 line-clamp-1 text-sm text-muted-foreground\">\n {cert.institution_name}\n </p>\n )}\n <div className=\"mt-4 flex items-center justify-between\">\n {!hideFields.includes(\"certifications.date_awarded\") && (\n <span className=\"rounded-md bg-muted/50 px-2 py-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground pdf-badge\">\n {cert.date_awarded}\n </span>\n )}\n {cert.verified && !hideFields.includes(\"certifications.verified\") && (\n <span\n className=\"pdf-badge rounded-full border px-2.5 py-1 text-xs font-bold transition-colors\"\n style={{\n backgroundColor: theme?.startsWith(\"#\") ? `${theme}15` : undefined,\n color: theme,\n borderColor: theme?.startsWith(\"#\") ? `${theme}30` : theme,\n }}\n >\n Verificado\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["year"]}
@@ -30,7 +30,7 @@ function formatDisplayDate(dateStr) {
30
30
  if (!/\d{4}/.test(dateStr)) return dateStr;
31
31
  const ts = parseDateToTimestamp(dateStr);
32
32
  if (!ts) return dateStr;
33
- return format(new Date(ts), "MMMM yyyy", { locale: es });
33
+ return format(new Date(ts), "MMM yyyy", { locale: es });
34
34
  }
35
35
  function formatDateRange(opts) {
36
36
  const startText = opts.hideStart ? "" : formatDisplayDate(opts.start);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/experience-education.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport type { CVExperienceBaseItem, CVCertificationItem } from \"../../types\";\nimport { GraduationCap, Briefcase, Trophy, Award } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\n\n/** Parsea una fecha a timestamp. Soporta ISO (YYYY-MM-DD), MM/YYYY, YYYY-MM, YYYY. */\nfunction parseDateToTimestamp(dateStr: string | undefined): number {\n if (!dateStr) return 0;\n const isoMatch = dateStr.match(/^(\\d{4})-(\\d{1,2})(?:-(\\d{1,2}))?/);\n if (isoMatch) {\n const [, y, m, d] = isoMatch;\n // Importante: interpretar como fecha \"local\" para evitar corrimientos por zona horaria\n // (p.ej. 2024-08-01 en UTC puede formatearse como julio en zonas negativas).\n const year = Number(y);\n const monthIndex = Number(m) - 1; // JS Date usa meses 0-based\n const day = Number(d || \"1\");\n return new Date(year, monthIndex, day).getTime();\n }\n const mmYyyy = dateStr.match(/^(\\d{1,2})\\/(\\d{4})$/);\n if (mmYyyy) {\n const [, m, y] = mmYyyy;\n const year = Number(y);\n const monthIndex = Number(m) - 1;\n return new Date(year, monthIndex, 1).getTime();\n }\n const year = dateStr.match(/\\d{4}/);\n if (year) {\n return new Date(Number(year[0]), 0, 1).getTime();\n }\n return 0;\n}\n\n/** Formatea una fecha ISO/string a \"mes año\" en español, ej: \"agosto 2020\". */\nfunction formatDisplayDate(dateStr: string | undefined): string {\n if (!dateStr) return \"\";\n // Si es un valor semántico como \"Presente\", lo retorna tal cual\n if (!/\\d{4}/.test(dateStr)) return dateStr;\n const ts = parseDateToTimestamp(dateStr);\n if (!ts) return dateStr;\n return format(new Date(ts), \"MMMM yyyy\", { locale: es });\n}\n\nfunction formatDateRange(opts: {\n start?: string;\n end?: string;\n hideStart?: boolean;\n hideEnd?: boolean;\n}): string {\n const startText = opts.hideStart ? \"\" : formatDisplayDate(opts.start);\n const endText = opts.hideEnd ? \"\" : formatDisplayDate(opts.end);\n\n if (startText && endText) return `${startText} - ${endText}`;\n return startText || endText || \"\";\n}\n\n/** Ordena descendente por fecha (más reciente primero). Usa end_date o start_date si no hay end. */\nfunction sortByDateDesc<T extends CVExperienceBaseItem>(items: T[]): T[] {\n return [...items].sort((a, b) => {\n const dateA = a.end_date || a.start_date;\n const dateB = b.end_date || b.start_date;\n if (!dateA && !dateB) return 0;\n if (!dateA) return 1;\n if (!dateB) return -1;\n return parseDateToTimestamp(dateB) - parseDateToTimestamp(dateA);\n });\n}\n\n/** Ordena certificaciones descendente por date_awarded */\nfunction sortCertificationsByDateDesc(items: CVCertificationItem[]): CVCertificationItem[] {\n return [...items].sort((a, b) => {\n const tsA = parseDateToTimestamp(a.date_awarded);\n const tsB = parseDateToTimestamp(b.date_awarded);\n return tsB - tsA;\n });\n}\n\ninterface ExperienceEducationProps {\n data: CandidateProfile;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport function ExperienceEducation({\n data,\n theme,\n hideFields = [],\n hideSections = [],\n}: ExperienceEducationProps) {\n const experiences = sortByDateDesc(data.work_experience || []);\n const education = sortByDateDesc(data.education || []);\n const activities = sortByDateDesc(data.activities || []);\n const certifications = sortCertificationsByDateDesc(data.certifications || []);\n\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div className=\"space-y-12\">\n {/* Experience */}\n {experiences.length > 0 && !hideSections.includes(\"Experiencia laboral\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Briefcase className=\"h-6 w-6 text-primary\" />\n Experiencia Laboral\n </h3>\n <div className=\"space-y-8\">\n {experiences.map((exp) => (\n <div\n key={exp.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"experience.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{exp.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"experience.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {exp.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"experience.start_date\") ||\n !hideFields.includes(\"experience.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: exp.start_date,\n end: exp.end_date,\n hideStart: hideFields.includes(\"experience.start_date\"),\n hideEnd: hideFields.includes(\"experience.end_date\"),\n })}\n </span>\n )}\n </div>\n {exp.description && !hideFields.includes(\"experience.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {exp.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Education */}\n {education.length > 0 && !hideSections.includes(\"Educación\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <GraduationCap className=\"h-6 w-6 text-primary\" />\n Educación\n </h3>\n <div className=\"space-y-8\">\n {education.map((edu) => (\n <div\n key={edu.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"education.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{edu.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"education.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {edu.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"education.start_date\") ||\n !hideFields.includes(\"education.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: edu.start_date,\n end: edu.end_date,\n hideStart: hideFields.includes(\"education.start_date\"),\n hideEnd: hideFields.includes(\"education.end_date\"),\n })}\n </span>\n )}\n </div>\n {edu.description && !hideFields.includes(\"education.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {edu.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Activities */}\n {activities.length > 0 && !hideSections.includes(\"Actividades y Logros\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Trophy className=\"h-6 w-6 text-primary\" />\n Actividades y Logros\n </h3>\n <div className=\"space-y-8\">\n {activities.map((act) => (\n <div\n key={act.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"activities.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{act.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"activities.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {act.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"activities.start_date\") ||\n !hideFields.includes(\"activities.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: act.start_date,\n end: act.end_date,\n hideStart: hideFields.includes(\"activities.start_date\"),\n hideEnd: hideFields.includes(\"activities.end_date\"),\n })}\n </span>\n )}\n </div>\n {act.description && !hideFields.includes(\"activities.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {act.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Certifications */}\n {certifications.length > 0 && !hideSections.includes(\"Certificaciones\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Award className=\"h-6 w-6 text-primary\" />\n Certificaciones\n </h3>\n <div className=\"grid grid-cols-1 gap-4\">\n {certifications.map((cert) => (\n <div\n key={cert.id}\n className=\"rounded-lg border border-border/60 bg-card p-4 shadow-sm transition-colors hover:border-primary/30 hover:shadow-md\"\n >\n {!hideFields.includes(\"certifications.title\") && (\n <h4 className=\"break-words text-base font-bold text-foreground\">\n {cert.title}\n </h4>\n )}\n {!hideFields.includes(\"certifications.institution_name\") && (\n <p className=\"mt-1 line-clamp-1 text-sm text-muted-foreground\">\n {cert.institution_name}\n </p>\n )}\n <div className=\"mt-4 flex items-center justify-between\">\n {!hideFields.includes(\"certifications.date_awarded\") && (\n <span className=\"rounded-md bg-muted/50 px-2 py-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground pdf-badge\">\n {cert.date_awarded}\n </span>\n )}\n {cert.verified && !hideFields.includes(\"certifications.verified\") && (\n <span\n className=\"pdf-badge rounded-full border px-2.5 py-1 text-xs font-bold transition-colors\"\n style={{\n backgroundColor: theme?.startsWith(\"#\") ? `${theme}15` : undefined,\n color: theme,\n borderColor: theme?.startsWith(\"#\") ? `${theme}30` : theme,\n }}\n >\n Verificado\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["year"]}
1
+ {"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/experience-education.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport type { CVExperienceBaseItem, CVCertificationItem } from \"../../types\";\nimport { GraduationCap, Briefcase, Trophy, Award } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\n\n/** Parsea una fecha a timestamp. Soporta ISO (YYYY-MM-DD), MM/YYYY, YYYY-MM, YYYY. */\nfunction parseDateToTimestamp(dateStr: string | undefined): number {\n if (!dateStr) return 0;\n const isoMatch = dateStr.match(/^(\\d{4})-(\\d{1,2})(?:-(\\d{1,2}))?/);\n if (isoMatch) {\n const [, y, m, d] = isoMatch;\n // Importante: interpretar como fecha \"local\" para evitar corrimientos por zona horaria\n // (p.ej. 2024-08-01 en UTC puede formatearse como julio en zonas negativas).\n const year = Number(y);\n const monthIndex = Number(m) - 1; // JS Date usa meses 0-based\n const day = Number(d || \"1\");\n return new Date(year, monthIndex, day).getTime();\n }\n const mmYyyy = dateStr.match(/^(\\d{1,2})\\/(\\d{4})$/);\n if (mmYyyy) {\n const [, m, y] = mmYyyy;\n const year = Number(y);\n const monthIndex = Number(m) - 1;\n return new Date(year, monthIndex, 1).getTime();\n }\n const year = dateStr.match(/\\d{4}/);\n if (year) {\n return new Date(Number(year[0]), 0, 1).getTime();\n }\n return 0;\n}\n\n/** Formatea una fecha ISO/string a \"mes año\" en español, ej: \"agosto 2020\". */\nfunction formatDisplayDate(dateStr: string | undefined): string {\n if (!dateStr) return \"\";\n // Si es un valor semántico como \"Presente\", lo retorna tal cual\n if (!/\\d{4}/.test(dateStr)) return dateStr;\n const ts = parseDateToTimestamp(dateStr);\n if (!ts) return dateStr;\n return format(new Date(ts), \"MMM yyyy\", { locale: es });\n}\n\nfunction formatDateRange(opts: {\n start?: string;\n end?: string;\n hideStart?: boolean;\n hideEnd?: boolean;\n}): string {\n const startText = opts.hideStart ? \"\" : formatDisplayDate(opts.start);\n const endText = opts.hideEnd ? \"\" : formatDisplayDate(opts.end);\n\n if (startText && endText) return `${startText} - ${endText}`;\n return startText || endText || \"\";\n}\n\n/** Ordena descendente por fecha (más reciente primero). Usa end_date o start_date si no hay end. */\nfunction sortByDateDesc<T extends CVExperienceBaseItem>(items: T[]): T[] {\n return [...items].sort((a, b) => {\n const dateA = a.end_date || a.start_date;\n const dateB = b.end_date || b.start_date;\n if (!dateA && !dateB) return 0;\n if (!dateA) return 1;\n if (!dateB) return -1;\n return parseDateToTimestamp(dateB) - parseDateToTimestamp(dateA);\n });\n}\n\n/** Ordena certificaciones descendente por date_awarded */\nfunction sortCertificationsByDateDesc(items: CVCertificationItem[]): CVCertificationItem[] {\n return [...items].sort((a, b) => {\n const tsA = parseDateToTimestamp(a.date_awarded);\n const tsB = parseDateToTimestamp(b.date_awarded);\n return tsB - tsA;\n });\n}\n\ninterface ExperienceEducationProps {\n data: CandidateProfile;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport function ExperienceEducation({\n data,\n theme,\n hideFields = [],\n hideSections = [],\n}: ExperienceEducationProps) {\n const experiences = sortByDateDesc(data.work_experience || []);\n const education = sortByDateDesc(data.education || []);\n const activities = sortByDateDesc(data.activities || []);\n const certifications = sortCertificationsByDateDesc(data.certifications || []);\n\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div className=\"space-y-12\">\n {/* Experience */}\n {experiences.length > 0 && !hideSections.includes(\"Experiencia laboral\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Briefcase className=\"h-6 w-6 text-primary\" />\n Experiencia Laboral\n </h3>\n <div className=\"space-y-8\">\n {experiences.map((exp) => (\n <div\n key={exp.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"experience.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{exp.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"experience.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {exp.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"experience.start_date\") ||\n !hideFields.includes(\"experience.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: exp.start_date,\n end: exp.end_date,\n hideStart: hideFields.includes(\"experience.start_date\"),\n hideEnd: hideFields.includes(\"experience.end_date\"),\n })}\n </span>\n )}\n </div>\n {exp.description && !hideFields.includes(\"experience.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {exp.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Education */}\n {education.length > 0 && !hideSections.includes(\"Educación\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <GraduationCap className=\"h-6 w-6 text-primary\" />\n Educación\n </h3>\n <div className=\"space-y-8\">\n {education.map((edu) => (\n <div\n key={edu.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"education.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{edu.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"education.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {edu.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"education.start_date\") ||\n !hideFields.includes(\"education.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: edu.start_date,\n end: edu.end_date,\n hideStart: hideFields.includes(\"education.start_date\"),\n hideEnd: hideFields.includes(\"education.end_date\"),\n })}\n </span>\n )}\n </div>\n {edu.description && !hideFields.includes(\"education.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {edu.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Activities */}\n {activities.length > 0 && !hideSections.includes(\"Actividades y Logros\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Trophy className=\"h-6 w-6 text-primary\" />\n Actividades y Logros\n </h3>\n <div className=\"space-y-8\">\n {activities.map((act) => (\n <div\n key={act.id}\n className=\"relative pl-6 after:absolute after:bottom-[-24px] after:left-[3px] after:top-4 after:w-[2px] after:bg-border last:after:hidden\"\n >\n <div\n className=\"pdf-line-v absolute left-0 top-2 h-2 w-2 rounded-full bg-primary\"\n style={themeStyle}\n />\n {!hideFields.includes(\"activities.title\") && (\n <h4 className=\"text-lg font-bold text-foreground\">{act.title}</h4>\n )}\n <div className=\"mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n {!hideFields.includes(\"activities.institution_name\") && (\n <span className=\"text-base font-semibold text-primary\">\n {act.institution_name}\n </span>\n )}\n {(!hideFields.includes(\"activities.start_date\") ||\n !hideFields.includes(\"activities.end_date\")) && (\n <span className=\"mt-1 w-fit rounded-md bg-muted/30 px-2 py-0.5 text-sm font-medium text-muted-foreground sm:mt-0 pdf-badge\">\n {formatDateRange({\n start: act.start_date,\n end: act.end_date,\n hideStart: hideFields.includes(\"activities.start_date\"),\n hideEnd: hideFields.includes(\"activities.end_date\"),\n })}\n </span>\n )}\n </div>\n {act.description && !hideFields.includes(\"activities.description\") && (\n <p className=\"mt-3 whitespace-pre-wrap text-base leading-relaxed text-foreground/80\">\n {act.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Certifications */}\n {certifications.length > 0 && !hideSections.includes(\"Certificaciones\") && (\n <div className=\"space-y-6\">\n <h3 className=\"flex items-center gap-2 border-b-2 border-primary/20 pb-2 text-2xl font-bold text-primary\">\n <Award className=\"h-6 w-6 text-primary\" />\n Certificaciones\n </h3>\n <div className=\"grid grid-cols-1 gap-4\">\n {certifications.map((cert) => (\n <div\n key={cert.id}\n className=\"rounded-lg border border-border/60 bg-card p-4 shadow-sm transition-colors hover:border-primary/30 hover:shadow-md\"\n >\n {!hideFields.includes(\"certifications.title\") && (\n <h4 className=\"break-words text-base font-bold text-foreground\">\n {cert.title}\n </h4>\n )}\n {!hideFields.includes(\"certifications.institution_name\") && (\n <p className=\"mt-1 line-clamp-1 text-sm text-muted-foreground\">\n {cert.institution_name}\n </p>\n )}\n <div className=\"mt-4 flex items-center justify-between\">\n {!hideFields.includes(\"certifications.date_awarded\") && (\n <span className=\"rounded-md bg-muted/50 px-2 py-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground pdf-badge\">\n {cert.date_awarded}\n </span>\n )}\n {cert.verified && !hideFields.includes(\"certifications.verified\") && (\n <span\n className=\"pdf-badge rounded-full border px-2.5 py-1 text-xs font-bold transition-colors\"\n style={{\n backgroundColor: theme?.startsWith(\"#\") ? `${theme}15` : undefined,\n color: theme,\n borderColor: theme?.startsWith(\"#\") ? `${theme}30` : theme,\n }}\n >\n Verificado\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["year"]}
@@ -84,14 +84,16 @@ const CITY = {
84
84
  Singuilucan__Hidalgo: "Singuilucan, Hidalgo",
85
85
  Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: "Santiago Tulantepec de Lugo Guerrero, Hidalgo",
86
86
  Capulhuac__Estado_de_M_xico: "Capulhuac, Estado de M\xE9xico",
87
- Mexicalzingo__Estado_de_M_xico: "Mexicalzingo, Estado de M\xE9xico",
87
+ Mexicaltzingo__Estado_de_M_xico: "Mexicaltzingo, Estado de M\xE9xico",
88
88
  Acapulco_de_Ju_rez__Guerrero: "Acapulco de Ju\xE1rez, Guerrero",
89
89
  Ciudad_Ixtepec__Oaxaca: "Ciudad Ixtepec, Oaxaca",
90
90
  Tuxtla_Guti_rrez__Chiapas: "Tuxtla Guti\xE9rrez, Chiapas",
91
91
  Asunci_n_Nochixtl_n__Oaxaca: "Asunci\xF3n Nochixtl\xE1n, Oaxaca",
92
92
  Santiago_de_Quer_taro__Quer_taro: "Santiago de Quer\xE9taro, Quer\xE9taro",
93
93
  Joquicingo__Estado_de_M_xico: "Joquicingo, Estado de M\xE9xico",
94
- Ciudad_de_M_xico: "Ciudad de M\xE9xico"
94
+ Ciudad_de_M_xico: "Ciudad de M\xE9xico",
95
+ San_Francisco_de_Campeche__Campeche: "San Francisco de Campeche, Campeche",
96
+ Le_n__Guanajuato: "Le\xF3n, Guanajuato"
95
97
  };
96
98
  const CANDIDATE_EMPLOYMENT_PREFERENCE = {
97
99
  part_time: "Tiempo parcial",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["// Frontend-specific constants and options extracted from admin-hub\n\n// City options\nexport const CITY = {\n M_rida__Yucat_n: \"Mérida, Yucatán\",\n Valladolid__Yucat_n: \"Valladolid, Yucatán\",\n Tizim_n__Yucat_n: \"Tizimín, Yucatán\",\n Bogot___Colombia: \"Bogotá, Colombia\",\n Cacalchen__Yucat_n: \"Cacalchen, Yucatán\",\n Um_n__Yucat_n: \"Umán, Yucatán\",\n Otra: \"Otra\",\n Caucel__Yucat_n: \"Caucel, Yucatán\",\n Temoz_n__Yucat_n: \"Temozón, Yucatán\",\n Playa_del_Carmen__Quintana_Roo: \"Playa del Carmen, Quintana Roo\",\n Tampico__Tamaulipas: \"Tampico, Tamaulipas\",\n Madero__Tamaulipas: \"Madero, Tamaulipas\",\n Altamira__Tamaulipas: \"Altamira, Tamaulipas\",\n Aguascalientes__Aguascalientes: \"Aguascalientes, Aguascalientes\",\n Naucalpan_de_Ju_rez__Estado_de_M_xico: \"Naucalpan de Juárez, Estado de México\",\n San_Juan_del_R_o__Quer_taro: \"San Juan del Río, Querétaro\",\n Texcoco__Estado_de_M_xico: \"Texcoco, Estado de México\",\n Tec_mac__Estado_de_M_xico: \"Tecámac, Estado de México\",\n Los_Reyes__Michoac_n: \"Los Reyes, Michoacán\",\n Zapopan__Jalisco: \"Zapopan, Jalisco\",\n Nezahualc_yotl__Estado_de_M_xico: \"Nezahualcóyotl, Estado de México\",\n Saltillo__Coahuila: \"Saltillo, Coahuila\",\n Ciudad_Ju_rez__Chihuahua: \"Ciudad Juárez, Chihuahua\",\n Morelia__Michoac_n: \"Morelia, Michoacán\",\n Tlajomulco_de_Z__iga__Jalisco: \"Tlajomulco de Zúñiga, Jalisco\",\n Centro__Tabasco: \"Centro, Tabasco\",\n Canc_n__Quintana_Roo: \"Cancún, Quintana Roo\",\n Los_H_roes_Tec_mac__Estado_de_M_xico: \"Los Héroes Tecámac, Estado de México\",\n Valle_de_Chalco_Solidaridad__Estado_de_M_xico: \"Valle de Chalco Solidaridad, Estado de México\",\n Huajuapan_de_Le_n__Oaxaca: \"Huajuapan de León, Oaxaca\",\n Garc_a__Nuevo_Le_n: \"García, Nuevo León\",\n Toluca__Estado_de_M_xico: \"Toluca, Estado de México\",\n San_Nicol_s_de_los_Garza__Nuevo_Le_n: \"San Nicolás de los Garza, Nuevo León\",\n Xochimilco__Ciudad_de_M_xico: \"Xochimilco, Ciudad de México\",\n Manzanillo__Colima: \"Manzanillo, Colima\",\n Xalapa__Veracruz: \"Xalapa, Veracruz\",\n Nochistl_n_de_Mej_a__Zacatecas: \"Nochistlán de Mejía, Zacatecas\",\n Monterrey__Nuevo_Le_n: \"Monterrey, Nuevo León\",\n Tijuana__Baja_California: \"Tijuana, Baja California\",\n Tala__Jalisco: \"Tala, Jalisco\",\n Mexicali__Baja_California: \"Mexicali, Baja California\",\n Irapuato__Guanajuato: \"Irapuato, Guanajuato\",\n Ju_rez__Nuevo_Le_n: \"Juárez, Nuevo León\",\n Pur_peto__Michoac_n: \"Purépeto, Michoacán\",\n Puerto_Vallarta__Jalisco: \"Puerto Vallarta, Jalisco\",\n Coatzacoalcos__Veracruz: \"Coatzacoalcos, Veracruz\",\n Singuilucan__Hidalgo: \"Singuilucan, Hidalgo\",\n Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: \"Santiago Tulantepec de Lugo Guerrero, Hidalgo\",\n Capulhuac__Estado_de_M_xico: \"Capulhuac, Estado de México\",\n Mexicalzingo__Estado_de_M_xico: \"Mexicalzingo, Estado de México\",\n Acapulco_de_Ju_rez__Guerrero: \"Acapulco de Juárez, Guerrero\",\n Ciudad_Ixtepec__Oaxaca: \"Ciudad Ixtepec, Oaxaca\",\n Tuxtla_Guti_rrez__Chiapas: \"Tuxtla Gutiérrez, Chiapas\",\n Asunci_n_Nochixtl_n__Oaxaca: \"Asunción Nochixtlán, Oaxaca\",\n Santiago_de_Quer_taro__Quer_taro: \"Santiago de Querétaro, Querétaro\",\n Joquicingo__Estado_de_M_xico: \"Joquicingo, Estado de México\",\n Ciudad_de_M_xico: \"Ciudad de México\",\n} as const;\n\n// Candidate employment preference\nexport const CANDIDATE_EMPLOYMENT_PREFERENCE = {\n part_time: \"Tiempo parcial\",\n full_time: \"Tiempo completo\",\n not_now: \"No por ahora\",\n} as const;\n\n// Candidate work study preference\nexport const CANDIDATE_WORK_STUDY_PREFERENCE = {\n study: \"Estudiar\",\n work: \"Trabajar\",\n work_and_study: \"Trabajar y Estudiar\",\n} as const;\n\n// Candidate state\nexport const CANDIDATE_STATE = {\n candidate_created: \"Candidato Creado\",\n candidate_activated: \"Candidato Activado\",\n curriculum_created: \"Currículum Creado\",\n curriculum_completed: \"Currículum Completado\",\n employment_preferences_created: \"Preferencias de Empleo Creadas\",\n documents_created: \"Documentos Creados\",\n ops_process_started: \"Proceso de Operaciones Iniciado\",\n curriculum_existent: \"Currículum Existente\",\n curriculum_started: \"Currículum Iniciado\",\n experiences_created: \"Experiencias Creadas\",\n skills_created: \"Habilidades Creadas\",\n terms_accepted: \"Términos Aceptados\",\n future_candidate: \"Candidato Futuro\",\n in_onboarding: \"En Proceso de Onboarding\",\n onboarded: \"Onboarding Completado\",\n pre_hirable: \"Pre-Contratable\",\n hirable: \"Contratable\",\n in_hiring_process: \"En Proceso de Contratación\",\n hired_internal: \"Contratado Interno (Ginia)\",\n hired_external: \"Contratado Externo\",\n blocked_for_jobs: \"Bloqueado para Trabajos\",\n} as const;\n\n// Experience type\nexport const EXPERIENCE_TYPE = {\n education: \"Educación\",\n employment: \"Experiencia Laboral\",\n activity: \"Actividad\",\n project: \"Proyecto\",\n} as const;\n\n// Skill type\nexport const SKILL_TYPE = {\n hard: \"Técnica\",\n soft: \"Interpersonal\",\n certification: \"Certificación\",\n} as const;\n\n// Institution type\nexport const INSTITUTION_TYPE = {\n education: \"Educación\",\n employment: \"Empresa\",\n activity: \"Organización\",\n project: \"Proyecto\",\n} as const;\n\nexport const MONTHS = {\n \"01\": \"Enero\",\n \"02\": \"Febrero\",\n \"03\": \"Marzo\",\n \"04\": \"Abril\",\n \"05\": \"Mayo\",\n \"06\": \"Junio\",\n \"07\": \"Julio\",\n \"08\": \"Agosto\",\n \"09\": \"Septiembre\",\n \"10\": \"Octubre\",\n \"11\": \"Noviembre\",\n \"12\": \"Diciembre\",\n} as const;\n\nexport type City = keyof typeof CITY;\nexport type CandidateEmploymentPreference = keyof typeof CANDIDATE_EMPLOYMENT_PREFERENCE;\nexport type CandidateWorkStudyPreference = keyof typeof CANDIDATE_WORK_STUDY_PREFERENCE;\nexport type CandidateState = keyof typeof CANDIDATE_STATE;\nexport type ExperienceType = keyof typeof EXPERIENCE_TYPE;\nexport type SkillType = keyof typeof SKILL_TYPE;\n\n// Helper options generators\nexport const getCityOptions = () =>\n Object.entries(CITY)\n .map(([value, label]) => ({ value, label }))\n .sort((a, b) => a.label.localeCompare(b.label));\nexport const getEmploymentPreferenceOptions = () =>\n Object.entries(CANDIDATE_EMPLOYMENT_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getWorkStudyPreferenceOptions = () =>\n Object.entries(CANDIDATE_WORK_STUDY_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getCandidateStateOptions = () =>\n Object.entries(CANDIDATE_STATE).map(([value, label]) => ({ value, label }));\nexport const getExperienceTypeOptions = () =>\n Object.entries(EXPERIENCE_TYPE).map(([value, label]) => ({ value, label }));\nexport const getMonthOptions = () =>\n Object.entries(MONTHS).map(([value, label]) => ({ value, label }));\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["// Frontend-specific constants and options extracted from admin-hub\n\n// City options\nexport const CITY = {\n M_rida__Yucat_n: \"Mérida, Yucatán\",\n Valladolid__Yucat_n: \"Valladolid, Yucatán\",\n Tizim_n__Yucat_n: \"Tizimín, Yucatán\",\n Bogot___Colombia: \"Bogotá, Colombia\",\n Cacalchen__Yucat_n: \"Cacalchen, Yucatán\",\n Um_n__Yucat_n: \"Umán, Yucatán\",\n Otra: \"Otra\",\n Caucel__Yucat_n: \"Caucel, Yucatán\",\n Temoz_n__Yucat_n: \"Temozón, Yucatán\",\n Playa_del_Carmen__Quintana_Roo: \"Playa del Carmen, Quintana Roo\",\n Tampico__Tamaulipas: \"Tampico, Tamaulipas\",\n Madero__Tamaulipas: \"Madero, Tamaulipas\",\n Altamira__Tamaulipas: \"Altamira, Tamaulipas\",\n Aguascalientes__Aguascalientes: \"Aguascalientes, Aguascalientes\",\n Naucalpan_de_Ju_rez__Estado_de_M_xico: \"Naucalpan de Juárez, Estado de México\",\n San_Juan_del_R_o__Quer_taro: \"San Juan del Río, Querétaro\",\n Texcoco__Estado_de_M_xico: \"Texcoco, Estado de México\",\n Tec_mac__Estado_de_M_xico: \"Tecámac, Estado de México\",\n Los_Reyes__Michoac_n: \"Los Reyes, Michoacán\",\n Zapopan__Jalisco: \"Zapopan, Jalisco\",\n Nezahualc_yotl__Estado_de_M_xico: \"Nezahualcóyotl, Estado de México\",\n Saltillo__Coahuila: \"Saltillo, Coahuila\",\n Ciudad_Ju_rez__Chihuahua: \"Ciudad Juárez, Chihuahua\",\n Morelia__Michoac_n: \"Morelia, Michoacán\",\n Tlajomulco_de_Z__iga__Jalisco: \"Tlajomulco de Zúñiga, Jalisco\",\n Centro__Tabasco: \"Centro, Tabasco\",\n Canc_n__Quintana_Roo: \"Cancún, Quintana Roo\",\n Los_H_roes_Tec_mac__Estado_de_M_xico: \"Los Héroes Tecámac, Estado de México\",\n Valle_de_Chalco_Solidaridad__Estado_de_M_xico: \"Valle de Chalco Solidaridad, Estado de México\",\n Huajuapan_de_Le_n__Oaxaca: \"Huajuapan de León, Oaxaca\",\n Garc_a__Nuevo_Le_n: \"García, Nuevo León\",\n Toluca__Estado_de_M_xico: \"Toluca, Estado de México\",\n San_Nicol_s_de_los_Garza__Nuevo_Le_n: \"San Nicolás de los Garza, Nuevo León\",\n Xochimilco__Ciudad_de_M_xico: \"Xochimilco, Ciudad de México\",\n Manzanillo__Colima: \"Manzanillo, Colima\",\n Xalapa__Veracruz: \"Xalapa, Veracruz\",\n Nochistl_n_de_Mej_a__Zacatecas: \"Nochistlán de Mejía, Zacatecas\",\n Monterrey__Nuevo_Le_n: \"Monterrey, Nuevo León\",\n Tijuana__Baja_California: \"Tijuana, Baja California\",\n Tala__Jalisco: \"Tala, Jalisco\",\n Mexicali__Baja_California: \"Mexicali, Baja California\",\n Irapuato__Guanajuato: \"Irapuato, Guanajuato\",\n Ju_rez__Nuevo_Le_n: \"Juárez, Nuevo León\",\n Pur_peto__Michoac_n: \"Purépeto, Michoacán\",\n Puerto_Vallarta__Jalisco: \"Puerto Vallarta, Jalisco\",\n Coatzacoalcos__Veracruz: \"Coatzacoalcos, Veracruz\",\n Singuilucan__Hidalgo: \"Singuilucan, Hidalgo\",\n Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: \"Santiago Tulantepec de Lugo Guerrero, Hidalgo\",\n Capulhuac__Estado_de_M_xico: \"Capulhuac, Estado de México\",\n Mexicaltzingo__Estado_de_M_xico: \"Mexicaltzingo, Estado de México\",\n Acapulco_de_Ju_rez__Guerrero: \"Acapulco de Juárez, Guerrero\",\n Ciudad_Ixtepec__Oaxaca: \"Ciudad Ixtepec, Oaxaca\",\n Tuxtla_Guti_rrez__Chiapas: \"Tuxtla Gutiérrez, Chiapas\",\n Asunci_n_Nochixtl_n__Oaxaca: \"Asunción Nochixtlán, Oaxaca\",\n Santiago_de_Quer_taro__Quer_taro: \"Santiago de Querétaro, Querétaro\",\n Joquicingo__Estado_de_M_xico: \"Joquicingo, Estado de México\",\n Ciudad_de_M_xico: \"Ciudad de México\",\n San_Francisco_de_Campeche__Campeche: \"San Francisco de Campeche, Campeche\",\n Le_n__Guanajuato: \"León, Guanajuato\",\n} as const;\n\n// Candidate employment preference\nexport const CANDIDATE_EMPLOYMENT_PREFERENCE = {\n part_time: \"Tiempo parcial\",\n full_time: \"Tiempo completo\",\n not_now: \"No por ahora\",\n} as const;\n\n// Candidate work study preference\nexport const CANDIDATE_WORK_STUDY_PREFERENCE = {\n study: \"Estudiar\",\n work: \"Trabajar\",\n work_and_study: \"Trabajar y Estudiar\",\n} as const;\n\n// Candidate state\nexport const CANDIDATE_STATE = {\n candidate_created: \"Candidato Creado\",\n candidate_activated: \"Candidato Activado\",\n curriculum_created: \"Currículum Creado\",\n curriculum_completed: \"Currículum Completado\",\n employment_preferences_created: \"Preferencias de Empleo Creadas\",\n documents_created: \"Documentos Creados\",\n ops_process_started: \"Proceso de Operaciones Iniciado\",\n curriculum_existent: \"Currículum Existente\",\n curriculum_started: \"Currículum Iniciado\",\n experiences_created: \"Experiencias Creadas\",\n skills_created: \"Habilidades Creadas\",\n terms_accepted: \"Términos Aceptados\",\n future_candidate: \"Candidato Futuro\",\n in_onboarding: \"En Proceso de Onboarding\",\n onboarded: \"Onboarding Completado\",\n pre_hirable: \"Pre-Contratable\",\n hirable: \"Contratable\",\n in_hiring_process: \"En Proceso de Contratación\",\n hired_internal: \"Contratado Interno (Ginia)\",\n hired_external: \"Contratado Externo\",\n blocked_for_jobs: \"Bloqueado para Trabajos\",\n} as const;\n\n// Experience type\nexport const EXPERIENCE_TYPE = {\n education: \"Educación\",\n employment: \"Experiencia Laboral\",\n activity: \"Actividad\",\n project: \"Proyecto\",\n} as const;\n\n// Skill type\nexport const SKILL_TYPE = {\n hard: \"Técnica\",\n soft: \"Interpersonal\",\n certification: \"Certificación\",\n} as const;\n\n// Institution type\nexport const INSTITUTION_TYPE = {\n education: \"Educación\",\n employment: \"Empresa\",\n activity: \"Organización\",\n project: \"Proyecto\",\n} as const;\n\nexport const MONTHS = {\n \"01\": \"Enero\",\n \"02\": \"Febrero\",\n \"03\": \"Marzo\",\n \"04\": \"Abril\",\n \"05\": \"Mayo\",\n \"06\": \"Junio\",\n \"07\": \"Julio\",\n \"08\": \"Agosto\",\n \"09\": \"Septiembre\",\n \"10\": \"Octubre\",\n \"11\": \"Noviembre\",\n \"12\": \"Diciembre\",\n} as const;\n\nexport type City = keyof typeof CITY;\nexport type CandidateEmploymentPreference = keyof typeof CANDIDATE_EMPLOYMENT_PREFERENCE;\nexport type CandidateWorkStudyPreference = keyof typeof CANDIDATE_WORK_STUDY_PREFERENCE;\nexport type CandidateState = keyof typeof CANDIDATE_STATE;\nexport type ExperienceType = keyof typeof EXPERIENCE_TYPE;\nexport type SkillType = keyof typeof SKILL_TYPE;\n\n// Helper options generators\nexport const getCityOptions = () =>\n Object.entries(CITY)\n .map(([value, label]) => ({ value, label }))\n .sort((a, b) => a.label.localeCompare(b.label));\nexport const getEmploymentPreferenceOptions = () =>\n Object.entries(CANDIDATE_EMPLOYMENT_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getWorkStudyPreferenceOptions = () =>\n Object.entries(CANDIDATE_WORK_STUDY_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getCandidateStateOptions = () =>\n Object.entries(CANDIDATE_STATE).map(([value, label]) => ({ value, label }));\nexport const getExperienceTypeOptions = () =>\n Object.entries(EXPERIENCE_TYPE).map(([value, label]) => ({ value, label }));\nexport const getMonthOptions = () =>\n Object.entries(MONTHS).map(([value, label]) => ({ value, label }));\n"],"mappings":"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","names":[]}
@@ -48,7 +48,7 @@ declare const CITY: {
48
48
  readonly Singuilucan__Hidalgo: "Singuilucan, Hidalgo";
49
49
  readonly Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: "Santiago Tulantepec de Lugo Guerrero, Hidalgo";
50
50
  readonly Capulhuac__Estado_de_M_xico: "Capulhuac, Estado de México";
51
- readonly Mexicalzingo__Estado_de_M_xico: "Mexicalzingo, Estado de México";
51
+ readonly Mexicaltzingo__Estado_de_M_xico: "Mexicaltzingo, Estado de México";
52
52
  readonly Acapulco_de_Ju_rez__Guerrero: "Acapulco de Juárez, Guerrero";
53
53
  readonly Ciudad_Ixtepec__Oaxaca: "Ciudad Ixtepec, Oaxaca";
54
54
  readonly Tuxtla_Guti_rrez__Chiapas: "Tuxtla Gutiérrez, Chiapas";
@@ -56,6 +56,8 @@ declare const CITY: {
56
56
  readonly Santiago_de_Quer_taro__Quer_taro: "Santiago de Querétaro, Querétaro";
57
57
  readonly Joquicingo__Estado_de_M_xico: "Joquicingo, Estado de México";
58
58
  readonly Ciudad_de_M_xico: "Ciudad de México";
59
+ readonly San_Francisco_de_Campeche__Campeche: "San Francisco de Campeche, Campeche";
60
+ readonly Le_n__Guanajuato: "León, Guanajuato";
59
61
  };
60
62
  declare const CANDIDATE_EMPLOYMENT_PREFERENCE: {
61
63
  readonly part_time: "Tiempo parcial";
@@ -129,7 +131,7 @@ type ExperienceType = keyof typeof EXPERIENCE_TYPE;
129
131
  type SkillType = keyof typeof SKILL_TYPE;
130
132
  declare const getCityOptions: () => {
131
133
  value: string;
132
- label: "Mérida, Yucatán" | "Valladolid, Yucatán" | "Tizimín, Yucatán" | "Bogotá, Colombia" | "Cacalchen, Yucatán" | "Umán, Yucatán" | "Otra" | "Caucel, Yucatán" | "Temozón, Yucatán" | "Playa del Carmen, Quintana Roo" | "Tampico, Tamaulipas" | "Madero, Tamaulipas" | "Altamira, Tamaulipas" | "Aguascalientes, Aguascalientes" | "Naucalpan de Juárez, Estado de México" | "San Juan del Río, Querétaro" | "Texcoco, Estado de México" | "Tecámac, Estado de México" | "Los Reyes, Michoacán" | "Zapopan, Jalisco" | "Nezahualcóyotl, Estado de México" | "Saltillo, Coahuila" | "Ciudad Juárez, Chihuahua" | "Morelia, Michoacán" | "Tlajomulco de Zúñiga, Jalisco" | "Centro, Tabasco" | "Cancún, Quintana Roo" | "Los Héroes Tecámac, Estado de México" | "Valle de Chalco Solidaridad, Estado de México" | "Huajuapan de León, Oaxaca" | "García, Nuevo León" | "Toluca, Estado de México" | "San Nicolás de los Garza, Nuevo León" | "Xochimilco, Ciudad de México" | "Manzanillo, Colima" | "Xalapa, Veracruz" | "Nochistlán de Mejía, Zacatecas" | "Monterrey, Nuevo León" | "Tijuana, Baja California" | "Tala, Jalisco" | "Mexicali, Baja California" | "Irapuato, Guanajuato" | "Juárez, Nuevo León" | "Purépeto, Michoacán" | "Puerto Vallarta, Jalisco" | "Coatzacoalcos, Veracruz" | "Singuilucan, Hidalgo" | "Santiago Tulantepec de Lugo Guerrero, Hidalgo" | "Capulhuac, Estado de México" | "Mexicalzingo, Estado de México" | "Acapulco de Juárez, Guerrero" | "Ciudad Ixtepec, Oaxaca" | "Tuxtla Gutiérrez, Chiapas" | "Asunción Nochixtlán, Oaxaca" | "Santiago de Querétaro, Querétaro" | "Joquicingo, Estado de México" | "Ciudad de México";
134
+ label: "Mérida, Yucatán" | "Valladolid, Yucatán" | "Tizimín, Yucatán" | "Bogotá, Colombia" | "Cacalchen, Yucatán" | "Umán, Yucatán" | "Otra" | "Caucel, Yucatán" | "Temozón, Yucatán" | "Playa del Carmen, Quintana Roo" | "Tampico, Tamaulipas" | "Madero, Tamaulipas" | "Altamira, Tamaulipas" | "Aguascalientes, Aguascalientes" | "Naucalpan de Juárez, Estado de México" | "San Juan del Río, Querétaro" | "Texcoco, Estado de México" | "Tecámac, Estado de México" | "Los Reyes, Michoacán" | "Zapopan, Jalisco" | "Nezahualcóyotl, Estado de México" | "Saltillo, Coahuila" | "Ciudad Juárez, Chihuahua" | "Morelia, Michoacán" | "Tlajomulco de Zúñiga, Jalisco" | "Centro, Tabasco" | "Cancún, Quintana Roo" | "Los Héroes Tecámac, Estado de México" | "Valle de Chalco Solidaridad, Estado de México" | "Huajuapan de León, Oaxaca" | "García, Nuevo León" | "Toluca, Estado de México" | "San Nicolás de los Garza, Nuevo León" | "Xochimilco, Ciudad de México" | "Manzanillo, Colima" | "Xalapa, Veracruz" | "Nochistlán de Mejía, Zacatecas" | "Monterrey, Nuevo León" | "Tijuana, Baja California" | "Tala, Jalisco" | "Mexicali, Baja California" | "Irapuato, Guanajuato" | "Juárez, Nuevo León" | "Purépeto, Michoacán" | "Puerto Vallarta, Jalisco" | "Coatzacoalcos, Veracruz" | "Singuilucan, Hidalgo" | "Santiago Tulantepec de Lugo Guerrero, Hidalgo" | "Capulhuac, Estado de México" | "Mexicaltzingo, Estado de México" | "Acapulco de Juárez, Guerrero" | "Ciudad Ixtepec, Oaxaca" | "Tuxtla Gutiérrez, Chiapas" | "Asunción Nochixtlán, Oaxaca" | "Santiago de Querétaro, Querétaro" | "Joquicingo, Estado de México" | "Ciudad de México" | "San Francisco de Campeche, Campeche" | "León, Guanajuato";
133
135
  }[];
134
136
  declare const getEmploymentPreferenceOptions: () => {
135
137
  value: string;
@@ -48,7 +48,7 @@ declare const CITY: {
48
48
  readonly Singuilucan__Hidalgo: "Singuilucan, Hidalgo";
49
49
  readonly Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: "Santiago Tulantepec de Lugo Guerrero, Hidalgo";
50
50
  readonly Capulhuac__Estado_de_M_xico: "Capulhuac, Estado de México";
51
- readonly Mexicalzingo__Estado_de_M_xico: "Mexicalzingo, Estado de México";
51
+ readonly Mexicaltzingo__Estado_de_M_xico: "Mexicaltzingo, Estado de México";
52
52
  readonly Acapulco_de_Ju_rez__Guerrero: "Acapulco de Juárez, Guerrero";
53
53
  readonly Ciudad_Ixtepec__Oaxaca: "Ciudad Ixtepec, Oaxaca";
54
54
  readonly Tuxtla_Guti_rrez__Chiapas: "Tuxtla Gutiérrez, Chiapas";
@@ -56,6 +56,8 @@ declare const CITY: {
56
56
  readonly Santiago_de_Quer_taro__Quer_taro: "Santiago de Querétaro, Querétaro";
57
57
  readonly Joquicingo__Estado_de_M_xico: "Joquicingo, Estado de México";
58
58
  readonly Ciudad_de_M_xico: "Ciudad de México";
59
+ readonly San_Francisco_de_Campeche__Campeche: "San Francisco de Campeche, Campeche";
60
+ readonly Le_n__Guanajuato: "León, Guanajuato";
59
61
  };
60
62
  declare const CANDIDATE_EMPLOYMENT_PREFERENCE: {
61
63
  readonly part_time: "Tiempo parcial";
@@ -129,7 +131,7 @@ type ExperienceType = keyof typeof EXPERIENCE_TYPE;
129
131
  type SkillType = keyof typeof SKILL_TYPE;
130
132
  declare const getCityOptions: () => {
131
133
  value: string;
132
- label: "Mérida, Yucatán" | "Valladolid, Yucatán" | "Tizimín, Yucatán" | "Bogotá, Colombia" | "Cacalchen, Yucatán" | "Umán, Yucatán" | "Otra" | "Caucel, Yucatán" | "Temozón, Yucatán" | "Playa del Carmen, Quintana Roo" | "Tampico, Tamaulipas" | "Madero, Tamaulipas" | "Altamira, Tamaulipas" | "Aguascalientes, Aguascalientes" | "Naucalpan de Juárez, Estado de México" | "San Juan del Río, Querétaro" | "Texcoco, Estado de México" | "Tecámac, Estado de México" | "Los Reyes, Michoacán" | "Zapopan, Jalisco" | "Nezahualcóyotl, Estado de México" | "Saltillo, Coahuila" | "Ciudad Juárez, Chihuahua" | "Morelia, Michoacán" | "Tlajomulco de Zúñiga, Jalisco" | "Centro, Tabasco" | "Cancún, Quintana Roo" | "Los Héroes Tecámac, Estado de México" | "Valle de Chalco Solidaridad, Estado de México" | "Huajuapan de León, Oaxaca" | "García, Nuevo León" | "Toluca, Estado de México" | "San Nicolás de los Garza, Nuevo León" | "Xochimilco, Ciudad de México" | "Manzanillo, Colima" | "Xalapa, Veracruz" | "Nochistlán de Mejía, Zacatecas" | "Monterrey, Nuevo León" | "Tijuana, Baja California" | "Tala, Jalisco" | "Mexicali, Baja California" | "Irapuato, Guanajuato" | "Juárez, Nuevo León" | "Purépeto, Michoacán" | "Puerto Vallarta, Jalisco" | "Coatzacoalcos, Veracruz" | "Singuilucan, Hidalgo" | "Santiago Tulantepec de Lugo Guerrero, Hidalgo" | "Capulhuac, Estado de México" | "Mexicalzingo, Estado de México" | "Acapulco de Juárez, Guerrero" | "Ciudad Ixtepec, Oaxaca" | "Tuxtla Gutiérrez, Chiapas" | "Asunción Nochixtlán, Oaxaca" | "Santiago de Querétaro, Querétaro" | "Joquicingo, Estado de México" | "Ciudad de México";
134
+ label: "Mérida, Yucatán" | "Valladolid, Yucatán" | "Tizimín, Yucatán" | "Bogotá, Colombia" | "Cacalchen, Yucatán" | "Umán, Yucatán" | "Otra" | "Caucel, Yucatán" | "Temozón, Yucatán" | "Playa del Carmen, Quintana Roo" | "Tampico, Tamaulipas" | "Madero, Tamaulipas" | "Altamira, Tamaulipas" | "Aguascalientes, Aguascalientes" | "Naucalpan de Juárez, Estado de México" | "San Juan del Río, Querétaro" | "Texcoco, Estado de México" | "Tecámac, Estado de México" | "Los Reyes, Michoacán" | "Zapopan, Jalisco" | "Nezahualcóyotl, Estado de México" | "Saltillo, Coahuila" | "Ciudad Juárez, Chihuahua" | "Morelia, Michoacán" | "Tlajomulco de Zúñiga, Jalisco" | "Centro, Tabasco" | "Cancún, Quintana Roo" | "Los Héroes Tecámac, Estado de México" | "Valle de Chalco Solidaridad, Estado de México" | "Huajuapan de León, Oaxaca" | "García, Nuevo León" | "Toluca, Estado de México" | "San Nicolás de los Garza, Nuevo León" | "Xochimilco, Ciudad de México" | "Manzanillo, Colima" | "Xalapa, Veracruz" | "Nochistlán de Mejía, Zacatecas" | "Monterrey, Nuevo León" | "Tijuana, Baja California" | "Tala, Jalisco" | "Mexicali, Baja California" | "Irapuato, Guanajuato" | "Juárez, Nuevo León" | "Purépeto, Michoacán" | "Puerto Vallarta, Jalisco" | "Coatzacoalcos, Veracruz" | "Singuilucan, Hidalgo" | "Santiago Tulantepec de Lugo Guerrero, Hidalgo" | "Capulhuac, Estado de México" | "Mexicaltzingo, Estado de México" | "Acapulco de Juárez, Guerrero" | "Ciudad Ixtepec, Oaxaca" | "Tuxtla Gutiérrez, Chiapas" | "Asunción Nochixtlán, Oaxaca" | "Santiago de Querétaro, Querétaro" | "Joquicingo, Estado de México" | "Ciudad de México" | "San Francisco de Campeche, Campeche" | "León, Guanajuato";
133
135
  }[];
134
136
  declare const getEmploymentPreferenceOptions: () => {
135
137
  value: string;
@@ -48,14 +48,16 @@ const CITY = {
48
48
  Singuilucan__Hidalgo: "Singuilucan, Hidalgo",
49
49
  Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: "Santiago Tulantepec de Lugo Guerrero, Hidalgo",
50
50
  Capulhuac__Estado_de_M_xico: "Capulhuac, Estado de M\xE9xico",
51
- Mexicalzingo__Estado_de_M_xico: "Mexicalzingo, Estado de M\xE9xico",
51
+ Mexicaltzingo__Estado_de_M_xico: "Mexicaltzingo, Estado de M\xE9xico",
52
52
  Acapulco_de_Ju_rez__Guerrero: "Acapulco de Ju\xE1rez, Guerrero",
53
53
  Ciudad_Ixtepec__Oaxaca: "Ciudad Ixtepec, Oaxaca",
54
54
  Tuxtla_Guti_rrez__Chiapas: "Tuxtla Guti\xE9rrez, Chiapas",
55
55
  Asunci_n_Nochixtl_n__Oaxaca: "Asunci\xF3n Nochixtl\xE1n, Oaxaca",
56
56
  Santiago_de_Quer_taro__Quer_taro: "Santiago de Quer\xE9taro, Quer\xE9taro",
57
57
  Joquicingo__Estado_de_M_xico: "Joquicingo, Estado de M\xE9xico",
58
- Ciudad_de_M_xico: "Ciudad de M\xE9xico"
58
+ Ciudad_de_M_xico: "Ciudad de M\xE9xico",
59
+ San_Francisco_de_Campeche__Campeche: "San Francisco de Campeche, Campeche",
60
+ Le_n__Guanajuato: "Le\xF3n, Guanajuato"
59
61
  };
60
62
  const CANDIDATE_EMPLOYMENT_PREFERENCE = {
61
63
  part_time: "Tiempo parcial",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["// Frontend-specific constants and options extracted from admin-hub\n\n// City options\nexport const CITY = {\n M_rida__Yucat_n: \"Mérida, Yucatán\",\n Valladolid__Yucat_n: \"Valladolid, Yucatán\",\n Tizim_n__Yucat_n: \"Tizimín, Yucatán\",\n Bogot___Colombia: \"Bogotá, Colombia\",\n Cacalchen__Yucat_n: \"Cacalchen, Yucatán\",\n Um_n__Yucat_n: \"Umán, Yucatán\",\n Otra: \"Otra\",\n Caucel__Yucat_n: \"Caucel, Yucatán\",\n Temoz_n__Yucat_n: \"Temozón, Yucatán\",\n Playa_del_Carmen__Quintana_Roo: \"Playa del Carmen, Quintana Roo\",\n Tampico__Tamaulipas: \"Tampico, Tamaulipas\",\n Madero__Tamaulipas: \"Madero, Tamaulipas\",\n Altamira__Tamaulipas: \"Altamira, Tamaulipas\",\n Aguascalientes__Aguascalientes: \"Aguascalientes, Aguascalientes\",\n Naucalpan_de_Ju_rez__Estado_de_M_xico: \"Naucalpan de Juárez, Estado de México\",\n San_Juan_del_R_o__Quer_taro: \"San Juan del Río, Querétaro\",\n Texcoco__Estado_de_M_xico: \"Texcoco, Estado de México\",\n Tec_mac__Estado_de_M_xico: \"Tecámac, Estado de México\",\n Los_Reyes__Michoac_n: \"Los Reyes, Michoacán\",\n Zapopan__Jalisco: \"Zapopan, Jalisco\",\n Nezahualc_yotl__Estado_de_M_xico: \"Nezahualcóyotl, Estado de México\",\n Saltillo__Coahuila: \"Saltillo, Coahuila\",\n Ciudad_Ju_rez__Chihuahua: \"Ciudad Juárez, Chihuahua\",\n Morelia__Michoac_n: \"Morelia, Michoacán\",\n Tlajomulco_de_Z__iga__Jalisco: \"Tlajomulco de Zúñiga, Jalisco\",\n Centro__Tabasco: \"Centro, Tabasco\",\n Canc_n__Quintana_Roo: \"Cancún, Quintana Roo\",\n Los_H_roes_Tec_mac__Estado_de_M_xico: \"Los Héroes Tecámac, Estado de México\",\n Valle_de_Chalco_Solidaridad__Estado_de_M_xico: \"Valle de Chalco Solidaridad, Estado de México\",\n Huajuapan_de_Le_n__Oaxaca: \"Huajuapan de León, Oaxaca\",\n Garc_a__Nuevo_Le_n: \"García, Nuevo León\",\n Toluca__Estado_de_M_xico: \"Toluca, Estado de México\",\n San_Nicol_s_de_los_Garza__Nuevo_Le_n: \"San Nicolás de los Garza, Nuevo León\",\n Xochimilco__Ciudad_de_M_xico: \"Xochimilco, Ciudad de México\",\n Manzanillo__Colima: \"Manzanillo, Colima\",\n Xalapa__Veracruz: \"Xalapa, Veracruz\",\n Nochistl_n_de_Mej_a__Zacatecas: \"Nochistlán de Mejía, Zacatecas\",\n Monterrey__Nuevo_Le_n: \"Monterrey, Nuevo León\",\n Tijuana__Baja_California: \"Tijuana, Baja California\",\n Tala__Jalisco: \"Tala, Jalisco\",\n Mexicali__Baja_California: \"Mexicali, Baja California\",\n Irapuato__Guanajuato: \"Irapuato, Guanajuato\",\n Ju_rez__Nuevo_Le_n: \"Juárez, Nuevo León\",\n Pur_peto__Michoac_n: \"Purépeto, Michoacán\",\n Puerto_Vallarta__Jalisco: \"Puerto Vallarta, Jalisco\",\n Coatzacoalcos__Veracruz: \"Coatzacoalcos, Veracruz\",\n Singuilucan__Hidalgo: \"Singuilucan, Hidalgo\",\n Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: \"Santiago Tulantepec de Lugo Guerrero, Hidalgo\",\n Capulhuac__Estado_de_M_xico: \"Capulhuac, Estado de México\",\n Mexicalzingo__Estado_de_M_xico: \"Mexicalzingo, Estado de México\",\n Acapulco_de_Ju_rez__Guerrero: \"Acapulco de Juárez, Guerrero\",\n Ciudad_Ixtepec__Oaxaca: \"Ciudad Ixtepec, Oaxaca\",\n Tuxtla_Guti_rrez__Chiapas: \"Tuxtla Gutiérrez, Chiapas\",\n Asunci_n_Nochixtl_n__Oaxaca: \"Asunción Nochixtlán, Oaxaca\",\n Santiago_de_Quer_taro__Quer_taro: \"Santiago de Querétaro, Querétaro\",\n Joquicingo__Estado_de_M_xico: \"Joquicingo, Estado de México\",\n Ciudad_de_M_xico: \"Ciudad de México\",\n} as const;\n\n// Candidate employment preference\nexport const CANDIDATE_EMPLOYMENT_PREFERENCE = {\n part_time: \"Tiempo parcial\",\n full_time: \"Tiempo completo\",\n not_now: \"No por ahora\",\n} as const;\n\n// Candidate work study preference\nexport const CANDIDATE_WORK_STUDY_PREFERENCE = {\n study: \"Estudiar\",\n work: \"Trabajar\",\n work_and_study: \"Trabajar y Estudiar\",\n} as const;\n\n// Candidate state\nexport const CANDIDATE_STATE = {\n candidate_created: \"Candidato Creado\",\n candidate_activated: \"Candidato Activado\",\n curriculum_created: \"Currículum Creado\",\n curriculum_completed: \"Currículum Completado\",\n employment_preferences_created: \"Preferencias de Empleo Creadas\",\n documents_created: \"Documentos Creados\",\n ops_process_started: \"Proceso de Operaciones Iniciado\",\n curriculum_existent: \"Currículum Existente\",\n curriculum_started: \"Currículum Iniciado\",\n experiences_created: \"Experiencias Creadas\",\n skills_created: \"Habilidades Creadas\",\n terms_accepted: \"Términos Aceptados\",\n future_candidate: \"Candidato Futuro\",\n in_onboarding: \"En Proceso de Onboarding\",\n onboarded: \"Onboarding Completado\",\n pre_hirable: \"Pre-Contratable\",\n hirable: \"Contratable\",\n in_hiring_process: \"En Proceso de Contratación\",\n hired_internal: \"Contratado Interno (Ginia)\",\n hired_external: \"Contratado Externo\",\n blocked_for_jobs: \"Bloqueado para Trabajos\",\n} as const;\n\n// Experience type\nexport const EXPERIENCE_TYPE = {\n education: \"Educación\",\n employment: \"Experiencia Laboral\",\n activity: \"Actividad\",\n project: \"Proyecto\",\n} as const;\n\n// Skill type\nexport const SKILL_TYPE = {\n hard: \"Técnica\",\n soft: \"Interpersonal\",\n certification: \"Certificación\",\n} as const;\n\n// Institution type\nexport const INSTITUTION_TYPE = {\n education: \"Educación\",\n employment: \"Empresa\",\n activity: \"Organización\",\n project: \"Proyecto\",\n} as const;\n\nexport const MONTHS = {\n \"01\": \"Enero\",\n \"02\": \"Febrero\",\n \"03\": \"Marzo\",\n \"04\": \"Abril\",\n \"05\": \"Mayo\",\n \"06\": \"Junio\",\n \"07\": \"Julio\",\n \"08\": \"Agosto\",\n \"09\": \"Septiembre\",\n \"10\": \"Octubre\",\n \"11\": \"Noviembre\",\n \"12\": \"Diciembre\",\n} as const;\n\nexport type City = keyof typeof CITY;\nexport type CandidateEmploymentPreference = keyof typeof CANDIDATE_EMPLOYMENT_PREFERENCE;\nexport type CandidateWorkStudyPreference = keyof typeof CANDIDATE_WORK_STUDY_PREFERENCE;\nexport type CandidateState = keyof typeof CANDIDATE_STATE;\nexport type ExperienceType = keyof typeof EXPERIENCE_TYPE;\nexport type SkillType = keyof typeof SKILL_TYPE;\n\n// Helper options generators\nexport const getCityOptions = () =>\n Object.entries(CITY)\n .map(([value, label]) => ({ value, label }))\n .sort((a, b) => a.label.localeCompare(b.label));\nexport const getEmploymentPreferenceOptions = () =>\n Object.entries(CANDIDATE_EMPLOYMENT_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getWorkStudyPreferenceOptions = () =>\n Object.entries(CANDIDATE_WORK_STUDY_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getCandidateStateOptions = () =>\n Object.entries(CANDIDATE_STATE).map(([value, label]) => ({ value, label }));\nexport const getExperienceTypeOptions = () =>\n Object.entries(EXPERIENCE_TYPE).map(([value, label]) => ({ value, label }));\nexport const getMonthOptions = () =>\n Object.entries(MONTHS).map(([value, label]) => ({ value, label }));\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["// Frontend-specific constants and options extracted from admin-hub\n\n// City options\nexport const CITY = {\n M_rida__Yucat_n: \"Mérida, Yucatán\",\n Valladolid__Yucat_n: \"Valladolid, Yucatán\",\n Tizim_n__Yucat_n: \"Tizimín, Yucatán\",\n Bogot___Colombia: \"Bogotá, Colombia\",\n Cacalchen__Yucat_n: \"Cacalchen, Yucatán\",\n Um_n__Yucat_n: \"Umán, Yucatán\",\n Otra: \"Otra\",\n Caucel__Yucat_n: \"Caucel, Yucatán\",\n Temoz_n__Yucat_n: \"Temozón, Yucatán\",\n Playa_del_Carmen__Quintana_Roo: \"Playa del Carmen, Quintana Roo\",\n Tampico__Tamaulipas: \"Tampico, Tamaulipas\",\n Madero__Tamaulipas: \"Madero, Tamaulipas\",\n Altamira__Tamaulipas: \"Altamira, Tamaulipas\",\n Aguascalientes__Aguascalientes: \"Aguascalientes, Aguascalientes\",\n Naucalpan_de_Ju_rez__Estado_de_M_xico: \"Naucalpan de Juárez, Estado de México\",\n San_Juan_del_R_o__Quer_taro: \"San Juan del Río, Querétaro\",\n Texcoco__Estado_de_M_xico: \"Texcoco, Estado de México\",\n Tec_mac__Estado_de_M_xico: \"Tecámac, Estado de México\",\n Los_Reyes__Michoac_n: \"Los Reyes, Michoacán\",\n Zapopan__Jalisco: \"Zapopan, Jalisco\",\n Nezahualc_yotl__Estado_de_M_xico: \"Nezahualcóyotl, Estado de México\",\n Saltillo__Coahuila: \"Saltillo, Coahuila\",\n Ciudad_Ju_rez__Chihuahua: \"Ciudad Juárez, Chihuahua\",\n Morelia__Michoac_n: \"Morelia, Michoacán\",\n Tlajomulco_de_Z__iga__Jalisco: \"Tlajomulco de Zúñiga, Jalisco\",\n Centro__Tabasco: \"Centro, Tabasco\",\n Canc_n__Quintana_Roo: \"Cancún, Quintana Roo\",\n Los_H_roes_Tec_mac__Estado_de_M_xico: \"Los Héroes Tecámac, Estado de México\",\n Valle_de_Chalco_Solidaridad__Estado_de_M_xico: \"Valle de Chalco Solidaridad, Estado de México\",\n Huajuapan_de_Le_n__Oaxaca: \"Huajuapan de León, Oaxaca\",\n Garc_a__Nuevo_Le_n: \"García, Nuevo León\",\n Toluca__Estado_de_M_xico: \"Toluca, Estado de México\",\n San_Nicol_s_de_los_Garza__Nuevo_Le_n: \"San Nicolás de los Garza, Nuevo León\",\n Xochimilco__Ciudad_de_M_xico: \"Xochimilco, Ciudad de México\",\n Manzanillo__Colima: \"Manzanillo, Colima\",\n Xalapa__Veracruz: \"Xalapa, Veracruz\",\n Nochistl_n_de_Mej_a__Zacatecas: \"Nochistlán de Mejía, Zacatecas\",\n Monterrey__Nuevo_Le_n: \"Monterrey, Nuevo León\",\n Tijuana__Baja_California: \"Tijuana, Baja California\",\n Tala__Jalisco: \"Tala, Jalisco\",\n Mexicali__Baja_California: \"Mexicali, Baja California\",\n Irapuato__Guanajuato: \"Irapuato, Guanajuato\",\n Ju_rez__Nuevo_Le_n: \"Juárez, Nuevo León\",\n Pur_peto__Michoac_n: \"Purépeto, Michoacán\",\n Puerto_Vallarta__Jalisco: \"Puerto Vallarta, Jalisco\",\n Coatzacoalcos__Veracruz: \"Coatzacoalcos, Veracruz\",\n Singuilucan__Hidalgo: \"Singuilucan, Hidalgo\",\n Santiago_Tulantepec_de_Lugo_Guerrero__Hidalgo: \"Santiago Tulantepec de Lugo Guerrero, Hidalgo\",\n Capulhuac__Estado_de_M_xico: \"Capulhuac, Estado de México\",\n Mexicaltzingo__Estado_de_M_xico: \"Mexicaltzingo, Estado de México\",\n Acapulco_de_Ju_rez__Guerrero: \"Acapulco de Juárez, Guerrero\",\n Ciudad_Ixtepec__Oaxaca: \"Ciudad Ixtepec, Oaxaca\",\n Tuxtla_Guti_rrez__Chiapas: \"Tuxtla Gutiérrez, Chiapas\",\n Asunci_n_Nochixtl_n__Oaxaca: \"Asunción Nochixtlán, Oaxaca\",\n Santiago_de_Quer_taro__Quer_taro: \"Santiago de Querétaro, Querétaro\",\n Joquicingo__Estado_de_M_xico: \"Joquicingo, Estado de México\",\n Ciudad_de_M_xico: \"Ciudad de México\",\n San_Francisco_de_Campeche__Campeche: \"San Francisco de Campeche, Campeche\",\n Le_n__Guanajuato: \"León, Guanajuato\",\n} as const;\n\n// Candidate employment preference\nexport const CANDIDATE_EMPLOYMENT_PREFERENCE = {\n part_time: \"Tiempo parcial\",\n full_time: \"Tiempo completo\",\n not_now: \"No por ahora\",\n} as const;\n\n// Candidate work study preference\nexport const CANDIDATE_WORK_STUDY_PREFERENCE = {\n study: \"Estudiar\",\n work: \"Trabajar\",\n work_and_study: \"Trabajar y Estudiar\",\n} as const;\n\n// Candidate state\nexport const CANDIDATE_STATE = {\n candidate_created: \"Candidato Creado\",\n candidate_activated: \"Candidato Activado\",\n curriculum_created: \"Currículum Creado\",\n curriculum_completed: \"Currículum Completado\",\n employment_preferences_created: \"Preferencias de Empleo Creadas\",\n documents_created: \"Documentos Creados\",\n ops_process_started: \"Proceso de Operaciones Iniciado\",\n curriculum_existent: \"Currículum Existente\",\n curriculum_started: \"Currículum Iniciado\",\n experiences_created: \"Experiencias Creadas\",\n skills_created: \"Habilidades Creadas\",\n terms_accepted: \"Términos Aceptados\",\n future_candidate: \"Candidato Futuro\",\n in_onboarding: \"En Proceso de Onboarding\",\n onboarded: \"Onboarding Completado\",\n pre_hirable: \"Pre-Contratable\",\n hirable: \"Contratable\",\n in_hiring_process: \"En Proceso de Contratación\",\n hired_internal: \"Contratado Interno (Ginia)\",\n hired_external: \"Contratado Externo\",\n blocked_for_jobs: \"Bloqueado para Trabajos\",\n} as const;\n\n// Experience type\nexport const EXPERIENCE_TYPE = {\n education: \"Educación\",\n employment: \"Experiencia Laboral\",\n activity: \"Actividad\",\n project: \"Proyecto\",\n} as const;\n\n// Skill type\nexport const SKILL_TYPE = {\n hard: \"Técnica\",\n soft: \"Interpersonal\",\n certification: \"Certificación\",\n} as const;\n\n// Institution type\nexport const INSTITUTION_TYPE = {\n education: \"Educación\",\n employment: \"Empresa\",\n activity: \"Organización\",\n project: \"Proyecto\",\n} as const;\n\nexport const MONTHS = {\n \"01\": \"Enero\",\n \"02\": \"Febrero\",\n \"03\": \"Marzo\",\n \"04\": \"Abril\",\n \"05\": \"Mayo\",\n \"06\": \"Junio\",\n \"07\": \"Julio\",\n \"08\": \"Agosto\",\n \"09\": \"Septiembre\",\n \"10\": \"Octubre\",\n \"11\": \"Noviembre\",\n \"12\": \"Diciembre\",\n} as const;\n\nexport type City = keyof typeof CITY;\nexport type CandidateEmploymentPreference = keyof typeof CANDIDATE_EMPLOYMENT_PREFERENCE;\nexport type CandidateWorkStudyPreference = keyof typeof CANDIDATE_WORK_STUDY_PREFERENCE;\nexport type CandidateState = keyof typeof CANDIDATE_STATE;\nexport type ExperienceType = keyof typeof EXPERIENCE_TYPE;\nexport type SkillType = keyof typeof SKILL_TYPE;\n\n// Helper options generators\nexport const getCityOptions = () =>\n Object.entries(CITY)\n .map(([value, label]) => ({ value, label }))\n .sort((a, b) => a.label.localeCompare(b.label));\nexport const getEmploymentPreferenceOptions = () =>\n Object.entries(CANDIDATE_EMPLOYMENT_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getWorkStudyPreferenceOptions = () =>\n Object.entries(CANDIDATE_WORK_STUDY_PREFERENCE).map(([value, label]) => ({\n value,\n label,\n }));\nexport const getCandidateStateOptions = () =>\n Object.entries(CANDIDATE_STATE).map(([value, label]) => ({ value, label }));\nexport const getExperienceTypeOptions = () =>\n Object.entries(EXPERIENCE_TYPE).map(([value, label]) => ({ value, label }));\nexport const getMonthOptions = () =>\n Object.entries(MONTHS).map(([value, label]) => ({ value, label }));\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ginia/ui",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "Ginia Design System — Unified UI component library for all Ginia hubs",
5
5
  "license": "MIT",
6
6
  "private": false,