Skip to Content

Types Reference

Shared TypeScript types and interfaces used across the landing page.


courses.ts

Testimonial

export type Testimonial = { en: string; id: string; author: string; role_en: string; role_id: string; avatarPalette?: string; avatarSrc?: string; };
FieldTypeRequiredDescription
enstringYesTODO
idstringYesTODO
authorstringYesTODO
role_enstringYesTODO
role_idstringYesTODO
avatarPalettestringNoTODO
avatarSrcstringNoTODO

SyllabusItem

export type SyllabusItem = { mod: number; free: boolean; title_en: string; title_id: string; min: number; };
FieldTypeRequiredDescription
modnumberYesTODO
freebooleanYesTODO
title_enstringYesTODO
title_idstringYesTODO
minnumberYesTODO

Course

export type Course = { id: string; titleKey?: string; title_en?: string; title_id?: string; bodyKey?: string; body_en?: string; body_id?: string; moduleCount: number; readHours: number; coverKey: 'workflow' | 'chat' | 'evals'; syllabus: SyllabusItem[]; available: boolean; rating?: number; reviewCount?: number; completion?: number; badge_en?: string; badge_id?: string; testimonial?: Testimonial; testimonials?: Testimonial[]; };
FieldTypeRequiredDescription
idstringYesTODO
titleKeystringNoTODO
title_enstringNoTODO
title_idstringNoTODO
bodyKeystringNoTODO
body_enstringNoTODO
body_idstringNoTODO
moduleCountnumberYesTODO
readHoursnumberYesTODO
coverKey`‘workflow''chat''evals’`
syllabusSyllabusItem[]YesTODO
availablebooleanYesTODO
ratingnumberNoTODO
reviewCountnumberNoTODO
completionnumberNoTODO
badge_enstringNoTODO
badge_idstringNoTODO
testimonialTestimonialNoTODO
testimonialsTestimonial[]NoTODO

ui-store.ts

UIState

interface UIState { theme: Theme; mobileMenuOpen: boolean; setTheme: (theme: Theme) => void; toggleMobileMenu: () => void; }
FieldTypeRequiredDescription
themeThemeYesTODO
mobileMenuOpenbooleanYesTODO
setTheme(theme: Theme) =\> voidYesTODO
toggleMobileMenu() =\> voidYesTODO

Theme

export type Theme = 'light' | 'dark';

contact.ts

ContactFormData

export type ContactFormData = z.infer<typeof contactSchema>;