diff --git a/public/logo_cartoon.webp b/src/assets/logo_cartoon.webp similarity index 100% rename from public/logo_cartoon.webp rename to src/assets/logo_cartoon.webp diff --git a/public/logo_real.webp b/src/assets/logo_real.webp similarity index 100% rename from public/logo_real.webp rename to src/assets/logo_real.webp diff --git a/src/components/NavigationBar.tsx b/src/components/NavigationBar.tsx index a72cbcb..609fc4f 100644 --- a/src/components/NavigationBar.tsx +++ b/src/components/NavigationBar.tsx @@ -103,13 +103,12 @@ export default function NavigationBar({ currentPath }: NavigationBarProps) {
  • -
    - - {item.name} -
    + + {item.name}
  • ); diff --git a/src/components/TalkCard.astro b/src/components/TalkCard.astro index 0a2a648..3cfc73a 100644 --- a/src/components/TalkCard.astro +++ b/src/components/TalkCard.astro @@ -1,6 +1,6 @@ --- import { Icon } from "astro-icon/components"; -import type { Talk } from '../types'; +import type { Talk } from "../types"; interface Props { talk: Talk; @@ -16,14 +16,7 @@ const { talk } = Astro.props;

    - - {talk.name} - + {talk.name}

    @@ -31,12 +24,14 @@ const { talk } = Astro.props;

    - {talk.date && ( -
    - Date: - {talk.date} -
    - )} + { + talk.date && ( +
    + Date: + {talk.date} +
    + ) + }
    diff --git a/src/config/data.ts b/src/config/data.ts index 4bf4b08..c8e0a58 100644 --- a/src/config/data.ts +++ b/src/config/data.ts @@ -7,8 +7,8 @@ import type { PersonalInfo, HomepageSections, SiteConfig, - ResumeConfig -} from '../types'; + ResumeConfig, +} from "../types"; // Import Lucide Icons import { @@ -20,7 +20,9 @@ import { Megaphone, } from "lucide-preact"; -import SpotifyIcon from '../components/SpotifyIcon'; +import SpotifyIcon from "../components/SpotifyIcon"; + +import logo from "../assets/logo_real.webp"; // Astro Icon references const EMAIL_ICON = "mdi:email"; @@ -39,25 +41,25 @@ const DOCKER_ICON = "simple-icons:docker"; export const personalInfo: PersonalInfo = { name: "Atridad Lahiji", profileImage: { - src: "/logo_real.webp", + src: logo, alt: "A drawing of Atridad Lahiji by Shelze!", width: 150, - height: 150 + height: 150, }, tagline: "Researcher, Full-Stack Developer, and IT Professional.", - description: "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" + description: "Find me across the web", }, techStack: { title: "Stuff I Use:", - description: "Technologies and tools I work with" - } + description: "Technologies and tools I work with", + }, }; // Resume Configuration @@ -66,35 +68,42 @@ export const resumeConfig: ResumeConfig = { pdfFile: { path: "/files/Atridad_Lahiji_Resume.pdf", filename: "Atridad_Lahiji_Resume.pdf", - displayText: "Download Resume (PDF)" + displayText: "Download Resume (PDF)", }, sections: { - enabled: ["summary", "experience", "education", "skills", "volunteer", "profiles"], + enabled: [ + "summary", + "experience", + "education", + "skills", + "volunteer", + "profiles", + ], summary: { title: "Summary", - enabled: true + enabled: true, }, experience: { title: "Professional Experience", - enabled: true + enabled: true, }, education: { title: "Education", - enabled: true + enabled: true, }, skills: { title: "Technical Skills", - enabled: true + enabled: true, }, volunteer: { title: "Volunteer Work", - enabled: true + enabled: true, }, profiles: { title: "Professional Profiles", - enabled: true - } - } + enabled: true, + }, + }, }; // Site Metadata Configuration @@ -104,17 +113,19 @@ export const siteConfig: SiteConfig = { resume: resumeConfig, meta: { title: "Atridad Lahiji", - description: "Personal website of Atridad Lahiji - Researcher, Full-Stack Developer, and IT Professional", + description: + "Personal website of Atridad Lahiji - Researcher, Full-Stack Developer, and IT Professional", url: "https://atri.dad", - author: "Atridad Lahiji" - } + 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.", + description: + "A basic introduction to the concepts behind HATEOAS or Hypermedia as the engine of application state.", link: "/files/DevEdmonton_Talk_HATEOAS.pdf", }, ]; @@ -123,7 +134,8 @@ 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.", + description: + "A web-based BlueSky PDS Manager. Manage your invite codes and users with a simple web UI.", link: "https://pdsman.atri.dad", }, { @@ -135,19 +147,22 @@ export const projects: Project[] = [ { id: "goth-stack", name: "GOTH Stack", - description: "🚀 A Web Application Template Powered by HTMX + Go + Tailwind 🚀", + 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).", + 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.", + 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", }, ]; @@ -156,23 +171,23 @@ export const sections = { resume: { name: "Resume", path: "/resume", - description: "Professional experience, skills, and background" + description: "Professional experience, skills, and background", }, posts: { - name: "Blog Posts", + name: "Blog Posts", path: "/posts", - description: "Technical articles and thoughts" + description: "Technical articles and thoughts", }, talks: { name: "Talks", - path: "/talks", - description: "Conference talks and presentations" + path: "/talks", + description: "Conference talks and presentations", }, projects: { name: "Projects", path: "/projects", - description: "Personal and professional projects" - } + description: "Personal and professional projects", + }, } as const; export const socialLinks: SocialLink[] = [ @@ -181,36 +196,36 @@ export const socialLinks: SocialLink[] = [ name: "Email", url: "mailto:me@atri.dad", icon: EMAIL_ICON, - ariaLabel: "Email me" + ariaLabel: "Email me", }, { id: "rss", name: "RSS Feed", url: "/feed", icon: RSS_ICON, - ariaLabel: "RSS Feed" + ariaLabel: "RSS Feed", }, { id: "gitea", name: "Forgejo (Git)", url: "https://git.atri.dad/atridad", icon: GITEA_ICON, - ariaLabel: "Forgejo (Git)" + ariaLabel: "Forgejo (Git)", }, { id: "bluesky", name: "Bluesky", url: "https://bsky.app/profile/atri.dad", icon: BLUESKY_ICON, - ariaLabel: "Bluesky Profile" + ariaLabel: "Bluesky Profile", }, { id: "spotify", name: "Spotify", url: "https://open.spotify.com/user/31pjwuuqwnn5zr7fnhfjjmi7c4bi?si=1be2bfdc844c4d85", icon: SpotifyIcon, - ariaLabel: "Spotify Profile" - } + ariaLabel: "Spotify Profile", + }, ]; export const techLinks: TechLink[] = [ @@ -219,50 +234,50 @@ export const techLinks: TechLink[] = [ name: "React", url: "https://react.dev/", icon: REACT_ICON, - ariaLabel: "React" + ariaLabel: "React", }, { id: "typescript", name: "TypeScript", url: "https://www.typescriptlang.org/", icon: TYPESCRIPT_ICON, - ariaLabel: "TypeScript" + ariaLabel: "TypeScript", }, { id: "astro", name: "Astro", url: "https://astro.build/", icon: ASTRO_ICON, - ariaLabel: "Astro" + ariaLabel: "Astro", }, { id: "go", name: "Go", url: "https://go.dev/", icon: GO_ICON, - ariaLabel: "Go" + ariaLabel: "Go", }, { id: "postgresql", name: "PostgreSQL", url: "https://www.postgresql.org/", icon: POSTGRESQL_ICON, - ariaLabel: "PostgreSQL" + ariaLabel: "PostgreSQL", }, { id: "redis", name: "Redis", url: "https://redis.io/", icon: REDIS_ICON, - ariaLabel: "Redis" + ariaLabel: "Redis", }, { id: "docker", name: "Docker", url: "https://www.docker.com/", icon: DOCKER_ICON, - ariaLabel: "Docker" - } + ariaLabel: "Docker", + }, ]; export const navigationItems: NavigationItem[] = [ @@ -272,7 +287,7 @@ export const navigationItems: NavigationItem[] = [ path: "/", tooltip: "Home", icon: Home, - enabled: true + enabled: true, }, { id: "posts", @@ -281,7 +296,8 @@ export const navigationItems: NavigationItem[] = [ tooltip: "Posts", icon: NotebookPen, enabled: true, - isActive: (path: string) => path.startsWith("/posts") || path.startsWith("/post/") + isActive: (path: string) => + path.startsWith("/posts") || path.startsWith("/post/"), }, { id: "resume", @@ -289,7 +305,7 @@ export const navigationItems: NavigationItem[] = [ path: "/resume", tooltip: "Resume", icon: BriefcaseBusiness, - enabled: !!(resumeConfig.jsonFile && resumeConfig.jsonFile.trim()) + enabled: !!(resumeConfig.jsonFile && resumeConfig.jsonFile.trim()), }, { id: "projects", @@ -298,7 +314,7 @@ export const navigationItems: NavigationItem[] = [ tooltip: "Projects", icon: CodeXml, enabled: true, - isActive: (path: string) => path.startsWith("/projects") + isActive: (path: string) => path.startsWith("/projects"), }, { id: "talks", @@ -307,7 +323,7 @@ export const navigationItems: NavigationItem[] = [ tooltip: "Talks", icon: Megaphone, enabled: true, - isActive: (path: string) => path.startsWith("/talks") + isActive: (path: string) => path.startsWith("/talks"), }, { id: "terminal", @@ -315,6 +331,6 @@ export const navigationItems: NavigationItem[] = [ path: "/terminal", tooltip: "Terminal", icon: TerminalIcon, - enabled: true - } -]; \ No newline at end of file + enabled: true, + }, +]; diff --git a/src/types/index.ts b/src/types/index.ts index 351bb87..826a51a 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,3 +1,4 @@ +import type { ImageMetadata } from "astro"; import type { ComponentType } from "preact"; // Icon Types @@ -88,7 +89,7 @@ export interface ResumeConfig { export interface PersonalInfo { name: string; profileImage: { - src: string; + src: ImageMetadata; alt: string; width: number; height: number; @@ -118,4 +119,4 @@ export interface SiteConfig { url: string; author: string; }; -} \ No newline at end of file +}