/**
 * Replaces {var_name} tokens in a template string with values from `vars`.
 * Missing values are left as the original token (so admins can spot typos),
 * and `null`/`undefined`/empty values fall back to the token text too.
 */
export function interpolate(
  template: string,
  vars: Record<string, string | number | null | undefined>
): string {
  if (!template) return "";
  return template.replace(/\{(\w+)\}/g, (token, key) => {
    const value = vars[key];
    if (value === undefined || value === null || value === "") return token;
    return String(value);
  });
}
