diff --git a/src/data/types/common.ts b/src/data/types/common.ts new file mode 100644 index 0000000..0a7d4b4 --- /dev/null +++ b/src/data/types/common.ts @@ -0,0 +1,24 @@ +export type Icon = string; + +export interface Detail { + label: string; + value: string | string[]; +} + +export interface Social { + name: string; + icon: Icon; + url: string; +} + +export interface Tag { + name: string; + icon?: Icon; + url?: string; + description?: string; +} + +export interface SectionConfig { + title: string; + icon: Icon; +} diff --git a/src/data/types/experience-section.ts b/src/data/types/experience-section.ts new file mode 100644 index 0000000..ea50ce6 --- /dev/null +++ b/src/data/types/experience-section.ts @@ -0,0 +1,16 @@ +import type { SectionConfig, Social, Tag } from './common'; + +interface ExperienceItem { + role: string; + company: string; + startDate: Date; + endDate: Date | null; + description: string | string[]; + technologies: Tag[]; + socials: Social[]; +} + +export interface ExperienceSection { + items: ExperienceItem[]; + config: SectionConfig; +} diff --git a/src/data/types/favorites-section.ts b/src/data/types/favorites-section.ts new file mode 100644 index 0000000..2518347 --- /dev/null +++ b/src/data/types/favorites-section.ts @@ -0,0 +1,40 @@ +import type { SectionConfig } from './common'; + +interface Book { + title: string; + cover: string; + author: string; + url?: string; +} + +interface Person { + name: string; + image: string; + url?: string; +} + +interface Video { + title: string; + thumbnail: string; + url: string; +} + +interface Media { + title: string; + type: string; + image: string; + url: string; +} + +interface SubSection { + title: string; + data: Data; +} + +export interface FavoritesSection { + config: SectionConfig; + books: SubSection; + people: SubSection; + videos: SubSection