/** * Transforms the given string to a slugified version. (e.g. "My Project" => "my-project") * * Allows only lowercase alphanumeric values, hyphens, and underscores (should match backend validation rules). * Normalizes special characters to a-z where applicable (accents, ligatures, etc). * Converts spaces to hyphens. */ export default function slugify(str: string): string { return str .normalize('NFKD') // Converts accents/ligatures/etc to latin alphabet .toLowerCase() .replace(' ', '-') .replace(/[^a-z0-9-_]/g, ''); // Remove all invalid characters }