Ctrl K
ComunidadGuías…

src/lib/role-groups.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/**
 * What kind of role this is, read from its free-text employment type.
 *
 * The Roles tab groups by it, because three advisory seats listed between two
 * full-time jobs read as job-hopping, and under their own heading they read as
 * what they are. Anything unrecognised is a job — the default a person would
 * expect, and the one that keeps a typo from quietly moving a job out of its
 * group.
 *
 * Pure. No data behind it beyond the string already on the role.
 */

export type RoleGroup = "employment" | "contract" | "advisory" | "internship";

export const GROUP_LABEL: Record<RoleGroup, string> = {
  employment: "Jobs",
  contract: "Contract and freelance",
  advisory: "Advisory and board",
  internship: "Internships",
};

export const GROUP_ORDER: RoleGroup[] = ["employment", "contract", "advisory", "internship"];

export function roleGroup(employmentType: string): RoleGroup {
  const type = employmentType.toLowerCase();
  if (/advis|board|mentor|volunteer|trustee/.test(type)) return "advisory";
  if (/intern|apprentice/.test(type)) return "internship";
  if (/contract|freelance|consult|fractional|self-employed/.test(type)) return "contract";
  return "employment";
}