import type {
  Talk,
  Project,
  SocialLink,
  TechLink,
  NavigationItem,
  PersonalInfo,
  HomepageSections,
  SiteConfig,
  ResumeConfig,
} from "../types";

// Import Lucide Icons
import {
  Home,
  Newspaper,
  FileUser,
  CodeXml,
  Terminal as TerminalIcon,
  Megaphone,
} from "lucide-preact";

import logo from "../assets/logo_real.webp";

// Astro Icon references
const EMAIL_ICON = "mdi:email";
const RSS_ICON = "mdi:rss";
const GITEA_ICON = "simple-icons:gitea";
const BLUESKY_ICON = "simple-icons:bluesky";
const REACT_ICON = "simple-icons:react";
const TYPESCRIPT_ICON = "simple-icons:typescript";
const ASTRO_ICON = "simple-icons:astro";
const GO_ICON = "simple-icons:go";
const POSTGRESQL_ICON = "simple-icons:postgresql";
const REDIS_ICON = "simple-icons:redis";
const DOCKER_ICON = "simple-icons:docker";

// Personal Information Configuration
export const personalInfo: PersonalInfo = {
  name: "Atridad Lahiji",
  profileImage: {
    src: logo,
    alt: "A drawing of Atridad Lahiji by Shelze!",
  },
  tagline: "Researcher, Full-Stack Developer, and IT Professional.",
  description: "Researcher, Full-Stack Developer, and IT Professional.",
};

// Homepage Section Configuration
export const homepageSections: HomepageSections = {
  socialLinks: {
    title: "Places I Exist:",
    description: "Find me across the web",
  },
  techStack: {
    title: "Stuff I Use:",
    description: "Technologies and tools I work with",
  },
};

// Resume Configuration
export const resumeConfig: ResumeConfig = {
  tomlFile: "/files/resume.toml",
  pdfFile: {
    path: "/files/Atridad_Lahiji_Resume.pdf",
    filename: "Atridad_Lahiji_Resume.pdf",
    displayText: "Download Resume (PDF)",
  },
  layout: {
    leftColumn: ["experience", "awards"],
    rightColumn: ["skills", "education", "volunteer"],
  },
  sections: {
    enabled: [
      "summary",
      "experience",
      "education",
      "skills",
      "volunteer",
      "awards",
    ],
    summary: {
      title: "Summary",
      enabled: true,
    },
    experience: {
      title: "Professional Experience",
      enabled: true,
    },
    education: {
      title: "Education",
      enabled: true,
    },
    skills: {
      title: "Technical Skills",
      enabled: true,
    },
    volunteer: {
      title: "Volunteer Work",
      enabled: true,
    },

    awards: {
      title: "Awards & Recognition",
      enabled: true,
    },
  },
};

// Site Metadata Configuration
export const siteConfig: SiteConfig = {
  personal: personalInfo,
  homepage: homepageSections,
  resume: resumeConfig,
  meta: {
    title: "Atridad Lahiji",
    description:
      "Personal website of Atridad Lahiji - Researcher, Full-Stack Developer, and IT Professional",
    url: "https://atri.dad",
    author: "Atridad Lahiji",
  },
};

export const talks: Talk[] = [
  {
    id: "devedmonton-hateoas",
    name: "Hypermedia as the engine of application state - An Introduction",
    description:
      "A basic introduction to the concepts behind HATEOAS or Hypermedia as the engine of application state.",
    link: "/files/DevEdmonton_Talk_HATEOAS.pdf",
  },
];

export const projects: Project[] = [
  {
    id: "bluesky-pds-manager",
    name: "BlueSky PDS Manager",
    description:
      "A web-based BlueSky PDS Manager. Manage your invite codes and users with a simple web UI.",
    link: "https://pdsman.atri.dad",
  },
  {
    id: "pollo",
    name: "Pollo",
    description: "A dead-simple real-time voting tool.",
    link: "https://git.atri.dad/atridad/pollo",
  },
  {
    id: "goth-stack",
    name: "GOTH Stack",
    description:
      "🚀 A Web Application Template Powered by HTMX + Go + Tailwind 🚀",
    link: "https://git.atri.dad/atridad/goth.stack",
  },
  {
    id: "himbot",
    name: "Himbot",
    description:
      "A discord bot written in Go. Loosly named after my username online (HimbothySwaggins).",
    link: "https://git.atri.dad/atridad/himbot",
  },
  {
    id: "loadr",
    name: "loadr",
    description:
      "A lightweight REST load testing tool with robust support for different verbs, token auth, and performance reports.",
    link: "https://git.atri.dad/atridad/loadr",
  },
];

export const sections = {
  resume: {
    name: "Resume",
    path: "/resume",
    description: "Professional experience, skills, and background",
  },
  posts: {
    name: "Blog Posts",
    path: "/posts",
    description: "Technical articles and thoughts",
  },
  talks: {
    name: "Talks",
    path: "/talks",
    description: "Conference talks and presentations",
  },
  projects: {
    name: "Projects",
    path: "/projects",
    description: "Personal and professional projects",
  },
} as const;

export const socialLinks: SocialLink[] = [
  {
    id: "email",
    name: "Email",
    url: "mailto:me@atri.dad",
    icon: EMAIL_ICON,
    ariaLabel: "Email me",
  },
  {
    id: "rss",
    name: "RSS Feed",
    url: "/feed",
    icon: RSS_ICON,
    ariaLabel: "RSS Feed",
  },
  {
    id: "gitea",
    name: "Forgejo (Git)",
    url: "https://git.atri.dad/atridad",
    icon: GITEA_ICON,
    ariaLabel: "Forgejo (Git)",
  },
  {
    id: "bluesky",
    name: "Bluesky",
    url: "https://bsky.app/profile/atri.dad",
    icon: BLUESKY_ICON,
    ariaLabel: "Bluesky Profile",
  },
];

export const techLinks: TechLink[] = [
  {
    id: "react",
    name: "React",
    url: "https://react.dev/",
    icon: REACT_ICON,
    ariaLabel: "React",
  },
  {
    id: "typescript",
    name: "TypeScript",
    url: "https://www.typescriptlang.org/",
    icon: TYPESCRIPT_ICON,
    ariaLabel: "TypeScript",
  },
  {
    id: "astro",
    name: "Astro",
    url: "https://astro.build/",
    icon: ASTRO_ICON,
    ariaLabel: "Astro",
  },
  {
    id: "go",
    name: "Go",
    url: "https://go.dev/",
    icon: GO_ICON,
    ariaLabel: "Go",
  },
  {
    id: "postgresql",
    name: "PostgreSQL",
    url: "https://www.postgresql.org/",
    icon: POSTGRESQL_ICON,
    ariaLabel: "PostgreSQL",
  },
  {
    id: "redis",
    name: "Redis",
    url: "https://redis.io/",
    icon: REDIS_ICON,
    ariaLabel: "Redis",
  },
  {
    id: "docker",
    name: "Docker",
    url: "https://www.docker.com/",
    icon: DOCKER_ICON,
    ariaLabel: "Docker",
  },
];

export const navigationItems: NavigationItem[] = [
  {
    id: "home",
    name: "Home",
    path: "/",
    tooltip: "Home",
    icon: Home,
    enabled: true,
  },
  {
    id: "posts",
    name: "Posts",
    path: "/posts",
    tooltip: "Posts",
    icon: Newspaper,
    enabled: true,
    isActive: (path: string) =>
      path.startsWith("/posts") || path.startsWith("/post/"),
  },
  {
    id: "resume",
    name: "Resume",
    path: "/resume",
    tooltip: "Resume",
    icon: FileUser,
    enabled: !!(resumeConfig.tomlFile && resumeConfig.tomlFile.trim()),
  },
  {
    id: "projects",
    name: "Projects",
    path: "/projects",
    tooltip: "Projects",
    icon: CodeXml,
    enabled: true,
    isActive: (path: string) => path.startsWith("/projects"),
  },
  {
    id: "talks",
    name: "Talks",
    path: "/talks",
    tooltip: "Talks",
    icon: Megaphone,
    enabled: true,
    isActive: (path: string) => path.startsWith("/talks"),
  },
  {
    id: "terminal",
    name: "Terminal",
    path: "/terminal",
    tooltip: "Terminal",
    icon: TerminalIcon,
    enabled: true,
  },
];
