Major re-work!
Some checks failed
Docker Deploy / build-and-push (push) Has been cancelled

This commit is contained in:
2025-06-12 11:09:24 -06:00
parent 324449dd59
commit ab2eb7eeac
13 changed files with 545 additions and 348 deletions

121
src/types/index.ts Normal file
View File

@@ -0,0 +1,121 @@
import type { ComponentType } from "preact";
// Icon Types
export type LucideIcon = ComponentType<{ size?: number; class?: string }>;
export type AstroIconName = string; // For astro-icon string references like "mdi:email"
export type CustomIconComponent = ComponentType<any>; // For custom components like SpotifyIcon
export type IconType = LucideIcon | AstroIconName | CustomIconComponent;
export interface Talk {
id: string;
name: string;
description: string;
link: string;
date?: string;
}
export interface Project {
id: string;
name: string;
description: string;
link: string;
technologies?: string[];
status?: string;
}
export interface SocialLink {
id: string;
name: string;
url: string;
icon: IconType;
ariaLabel: string;
}
export interface TechLink {
id: string;
name: string;
url: string;
icon: IconType;
ariaLabel: string;
}
export interface NavigationItem {
id: string;
name: string;
path: string;
tooltip: string;
icon: IconType;
enabled?: boolean;
isActive?: (path: string) => boolean;
}
export interface ResumeConfig {
jsonFile: string;
pdfFile: {
path: string;
filename: string;
displayText: string;
};
sections: {
enabled: string[];
summary?: {
title?: string;
enabled?: boolean;
};
experience?: {
title?: string;
enabled?: boolean;
};
education?: {
title?: string;
enabled?: boolean;
};
skills?: {
title?: string;
enabled?: boolean;
};
volunteer?: {
title?: string;
enabled?: boolean;
};
profiles?: {
title?: string;
enabled?: boolean;
};
};
}
export interface PersonalInfo {
name: string;
profileImage: {
src: string;
alt: string;
width: number;
height: number;
};
tagline: string;
description?: string;
}
export interface HomepageSections {
socialLinks: {
title: string;
description?: string;
};
techStack: {
title: string;
description?: string;
};
}
export interface SiteConfig {
personal: PersonalInfo;
homepage: HomepageSections;
resume: ResumeConfig;
meta: {
title: string;
description: string;
url: string;
author: string;
};
}