100 lines
1.6 KiB
TypeScript
100 lines
1.6 KiB
TypeScript
import type { Lang } from './i18n.ts';
|
|
|
|
export type LocalizedText = {
|
|
[K in Lang]: string;
|
|
};
|
|
|
|
export interface PersonalInfo {
|
|
name: string;
|
|
location: string;
|
|
avatar: string;
|
|
email: string;
|
|
github: string;
|
|
linkedin: string;
|
|
website: string;
|
|
twitter: string;
|
|
position: LocalizedText;
|
|
description: LocalizedText;
|
|
about: {
|
|
[K in Lang]: string[];
|
|
};
|
|
stats: {
|
|
repositories: number;
|
|
commits: string;
|
|
contributions: number;
|
|
};
|
|
skills: {
|
|
frontend: string[];
|
|
backend: string[];
|
|
database: string[];
|
|
devops: string[];
|
|
mobile: string[];
|
|
};
|
|
terminal: {
|
|
username: string;
|
|
};
|
|
}
|
|
|
|
export interface ProjectImage {
|
|
bg: string;
|
|
hover: string;
|
|
text: string;
|
|
}
|
|
|
|
export interface Project {
|
|
id: string;
|
|
tag?: string;
|
|
title: string;
|
|
icon: string;
|
|
type?: string;
|
|
status?: string;
|
|
role?: string;
|
|
impact?: string;
|
|
systemType?: string;
|
|
context?: string;
|
|
challenges?: string[];
|
|
responsibilities?: string[];
|
|
outcomes?: string[];
|
|
color: string;
|
|
image: ProjectImage;
|
|
description: string[];
|
|
tech: string[];
|
|
link: string;
|
|
featured?: boolean;
|
|
coverImage?: string;
|
|
coverImageAlt?: string;
|
|
links?: {
|
|
github?: string;
|
|
demo?: string;
|
|
};
|
|
}
|
|
|
|
export interface ServiceIcon {
|
|
svg: string;
|
|
gradient: string;
|
|
}
|
|
|
|
export interface Service {
|
|
title: string;
|
|
icon: ServiceIcon;
|
|
items: string[];
|
|
color: string;
|
|
}
|
|
|
|
export interface UsesGroup {
|
|
title: LocalizedText;
|
|
items: string[];
|
|
}
|
|
|
|
export interface ContactIntent {
|
|
id: string;
|
|
title: LocalizedText;
|
|
description: LocalizedText;
|
|
}
|
|
|
|
export interface ContactMethod {
|
|
label: LocalizedText;
|
|
value: string;
|
|
href?: string;
|
|
}
|