import commandJson from "../../config.json" assert { type: "json" };

interface Social {
  email: string;
  git: string;
  linkedin: string;
  youtube: string;
  "pgp-key": string;
}

interface Command {
  aboutGreeting: string;
  social: Social;
}

const command: Command = commandJson;

interface AboutItem {
  label: string;
  icon: string;
  url: string;
  display: string;
}

const createAbout = (): string[] => {
  const about: string[] = [];

  about.push("<br>");
  about.push(command.aboutGreeting);
  about.push("<br>");

  const items: AboutItem[] = [
    {
      label: "Email",
      icon: `<i class='fa-solid fa-envelope'></i>`,
      url: `mailto:${command.social.email}`,
      display: command.social.email,
    },
    {
      label: "Git",
      icon: `<i class='fa-brands fa-git-alt'></i>`,
      url: `https://src.panahifar.ir/${command.social.git}`,
      display: `nagini/${command.social.git}`,
    },
    {
      label: "Linkedin",
      icon: `<i class='fa-brands fa-linkedin'></i>`,
      url: `https://www.linkedin.com/in/${command.social.linkedin}`,
      display: `linkedin/${command.social.linkedin}`,
    },
    {
      label: "YouTube",
      icon: `<i class='fa-brands fa-youtube'></i>`,
      url: `https://www.youtube.com/@${command.social.youtube}`,
      display: `youtube/${command.social.youtube}`,
    },
    {
      label: "PGP Key",
      icon: `<i class='fa-solid fa-key'></i>`,
      url: `https://src.panahifar.ir/pgp/C86437BFC43196C6.asc`,
      display: `key/0xC86437BFC43196C6`,
    },
  ];

  const formatLine = ({ label, icon, url, display }: AboutItem) => {
    return `
      <div style="display: flex; align-items: center; margin-bottom: 6px; font-family: monospace;">
        <span style="min-width: 130px;">${icon} ${label}</span>
        <a target="_blank" href="${url}" style="margin-left: 12px;">${display}</a>
      </div>
    `;
  };

  items.forEach((item) => about.push(formatLine(item)));
  about.push("<br>");

  return about;
};

export const ABOUT = createAbout();
