From d332339b6816496d9df687af85298031f54aa13c Mon Sep 17 00:00:00 2001 From: Konrad Szwarc Date: Sat, 27 Aug 2022 15:18:29 +0200 Subject: [PATCH] Specify typings for data --- src/data/types/common.ts | 24 ++++++++++++++++ src/data/types/experience-section.ts | 16 +++++++++++ src/data/types/favorites-section.ts | 40 ++++++++++++++++++++++++++ src/data/types/index.ts | 17 +++++++++++ src/data/types/main-section.ts | 16 +++++++++++ src/data/types/portfolio-section.ts | 28 ++++++++++++++++++ src/data/types/seo.ts | 4 +++ src/data/types/skills-section.ts | 15 ++++++++++ src/data/types/testimonials-section.ts | 13 +++++++++ 9 files changed, 173 insertions(+) create mode 100644 src/data/types/common.ts create mode 100644 src/data/types/experience-section.ts create mode 100644 src/data/types/favorites-section.ts create mode 100644 src/data/types/index.ts create mode 100644 src/data/types/main-section.ts create mode 100644 src/data/types/portfolio-section.ts create mode 100644 src/data/types/seo.ts create mode 100644 src/data/types/skills-section.ts create mode 100644 src/data/types/testimonials-section.ts 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