diff --git a/src/lib/slug.ts b/src/lib/slug.ts new file mode 100644 index 0000000..445f446 --- /dev/null +++ b/src/lib/slug.ts @@ -0,0 +1,17 @@ +export function slugify(value: string): string { + const ascii = value + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[\u2013\u2014]/g, "-") + const sanitized = ascii.replace(/[^a-zA-Z0-9\s-]/g, "") + const hyphenized = sanitized.replace(/[_\s]+/g, "-").replace(/-+/g, "-") + return hyphenized.replace(/^-+|-+$/g, "").toLowerCase() +} + +export function normalizeSlug(input?: string | null): string | undefined { + if (!input) return undefined + const trimmed = input.trim() + if (!trimmed) return undefined + const slug = slugify(trimmed) + return slug || undefined +}