Initial commit for iiEasy: all files included
This commit is contained in:
442
types.ts
Executable file
442
types.ts
Executable file
@@ -0,0 +1,442 @@
|
||||
import React from 'react';
|
||||
|
||||
export interface NavLinkItem {
|
||||
id: string;
|
||||
label: string;
|
||||
href: string;
|
||||
icon?: React.ElementType;
|
||||
children?: NavLinkItem[];
|
||||
targetView?: CurrentView; // For view switching
|
||||
}
|
||||
|
||||
export interface GalleryItem {
|
||||
id: string;
|
||||
type: 'image' | 'video';
|
||||
url: string;
|
||||
altText?: string;
|
||||
caption?: string;
|
||||
}
|
||||
|
||||
export interface Post {
|
||||
id:string;
|
||||
title: string;
|
||||
category: string;
|
||||
date?: string;
|
||||
publishedAt?: string;
|
||||
readTime?: string;
|
||||
imageUrl: string;
|
||||
videoUrl?: string;
|
||||
isFeatured?: boolean;
|
||||
description?: string;
|
||||
fullContent?: string | React.ReactNode; // For detail view
|
||||
gallery?: GalleryItem[]; // Added gallery
|
||||
href: string; // Will be used to set selectedItemId or for direct linking if routing is added
|
||||
}
|
||||
|
||||
export interface NewsArticle {
|
||||
id: string;
|
||||
title: string;
|
||||
category: string;
|
||||
date?: string;
|
||||
publishedAt?: string;
|
||||
imageUrl: string;
|
||||
href: string;
|
||||
description?: string;
|
||||
fullContent?: string | React.ReactNode; // For detail view
|
||||
gallery?: GalleryItem[]; // Added gallery
|
||||
}
|
||||
|
||||
export interface ResearchPaper {
|
||||
id: string;
|
||||
title: string;
|
||||
category: string; // e.g., "Публикация", "Статья"
|
||||
date?: string;
|
||||
publishedAt?: string;
|
||||
imageUrl: string;
|
||||
href: string;
|
||||
authors?: string[];
|
||||
abstract?: string; // For detail view
|
||||
fullContent?: string | React.ReactNode; // For detail view
|
||||
gallery?: GalleryItem[]; // Added gallery for ResearchPaper
|
||||
}
|
||||
|
||||
export interface BusinessStory {
|
||||
id: string;
|
||||
title: string;
|
||||
category: string; // e.g., "API", "ChatGPT", "Партнерство"
|
||||
imageUrl: string;
|
||||
href: string;
|
||||
description?: string;
|
||||
fullContent?: string | React.ReactNode; // For detail view
|
||||
gallery?: GalleryItem[]; // Added gallery
|
||||
}
|
||||
|
||||
export interface Vacancy {
|
||||
id: string;
|
||||
title: string;
|
||||
department: string;
|
||||
location: string;
|
||||
type: string; // e.g., Full-time, Part-time
|
||||
description: string; // Short description for the card
|
||||
fullDescription?: string | React.ReactNode; // Detailed description for the detail page
|
||||
responsibilities?: string[];
|
||||
qualifications?: string[];
|
||||
offer?: string[];
|
||||
href: string; // For consistency, though navigation will use selectedItemId
|
||||
}
|
||||
|
||||
// For EducationBusinessSection
|
||||
export interface BusinessCourse {
|
||||
icon: string; // Updated to string to hold icon name from Strapi
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
// For EducationStudentsSection
|
||||
export interface StudentProgram {
|
||||
icon: string; // Updated to string to hold icon name from Strapi
|
||||
title: string;
|
||||
targetAudience: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
// For AcceleratorAboutSection
|
||||
export interface AcceleratorFeature {
|
||||
icon: React.ElementType;
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
// For BusinessServicesSection (Services)
|
||||
export interface ServiceItemData {
|
||||
icon: string; // Updated to string to hold icon name from Strapi
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
// For BusinessServicesSection (Client Logos)
|
||||
export interface ClientLogo {
|
||||
id: string;
|
||||
name: string;
|
||||
imageUrl: string;
|
||||
}
|
||||
|
||||
// For AcceleratorProjectsSection
|
||||
export interface AcceleratorProject {
|
||||
id: string;
|
||||
name: string;
|
||||
tagline: string;
|
||||
description: string;
|
||||
imageUrl: string;
|
||||
category: string; // e.g., Healthcare AI, FinTech, EdTech
|
||||
websiteUrl?: string;
|
||||
statuspro: 'Active' | 'Graduated' | 'Acquired'; // Renamed from status
|
||||
}
|
||||
|
||||
// For AcceleratorInvestmentSection
|
||||
export interface InvestmentProject {
|
||||
id: string;
|
||||
name: string;
|
||||
industry: string;
|
||||
problem: string;
|
||||
solution: string;
|
||||
teamSize: number;
|
||||
fundingSought: string; // e.g., "$500K - $1M"
|
||||
imageUrl: string;
|
||||
contactEmail?: string;
|
||||
}
|
||||
|
||||
|
||||
export type CurrentView =
|
||||
| 'main'
|
||||
| 'about'
|
||||
| 'mission'
|
||||
| 'careers'
|
||||
| 'businessLanding'
|
||||
| 'businessServices'
|
||||
| 'educationBusiness'
|
||||
| 'educationStudents'
|
||||
| 'researchAll'
|
||||
| 'newsAll'
|
||||
| 'storiesAll'
|
||||
| 'acceleratorAbout'
|
||||
| 'acceleratorProjects'
|
||||
| 'acceleratorInvestment'
|
||||
| 'blogPostDetail'
|
||||
| 'newsArticleDetail'
|
||||
| 'researchPaperDetail'
|
||||
| 'businessStoryDetail'
|
||||
| 'vacancyDetail'
|
||||
| 'termsOfUse' // New view for Terms of Use
|
||||
| 'privacyPolicy'; // New view for Privacy Policy
|
||||
|
||||
|
||||
// --- Content Types for Centralized Text ---
|
||||
|
||||
export interface HeroContent {
|
||||
titlePart1: string;
|
||||
titlePart2Gradient: string;
|
||||
subtitle: string;
|
||||
primaryButtonText: string;
|
||||
secondaryButtonText: string;
|
||||
scrollDownAriaLabel: string;
|
||||
}
|
||||
|
||||
export interface AboutUsContent {
|
||||
title: string;
|
||||
paragraph1: string;
|
||||
paragraph2: string;
|
||||
teamTitle: string;
|
||||
teamParagraph: string;
|
||||
valuesTitle: string;
|
||||
valuesList: { strong: string; text: string }[];
|
||||
closingParagraph: string;
|
||||
}
|
||||
|
||||
export interface FooterLink {
|
||||
text: string;
|
||||
href: string;
|
||||
targetView: CurrentView; // Added to control view switching
|
||||
}
|
||||
|
||||
export interface FooterSocialLink {
|
||||
name: string;
|
||||
href: string;
|
||||
icon: React.ElementType; // Added icon type
|
||||
ariaLabel: string; // Added ariaLabel
|
||||
}
|
||||
|
||||
export interface FooterContent {
|
||||
legalTitle: string;
|
||||
legalLinks: FooterLink[];
|
||||
copyrightText: (year: number) => string;
|
||||
tagline: string;
|
||||
credits: string;
|
||||
socialTitle: string;
|
||||
socialLinks: FooterSocialLink[];
|
||||
address: string;
|
||||
email: string;
|
||||
emailHref: string;
|
||||
companyName?: string;
|
||||
companyInn?: string;
|
||||
}
|
||||
|
||||
export interface ContactMethodUI {
|
||||
id: string;
|
||||
name: string;
|
||||
href: string;
|
||||
icon: React.ElementType;
|
||||
bgColor: string;
|
||||
hoverBgColor: string;
|
||||
ringColor: string;
|
||||
ariaLabel: string;
|
||||
}
|
||||
|
||||
export interface ConnectSectionContent {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface BlogSectionContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
showAllText: string;
|
||||
showAllAriaLabel: string;
|
||||
}
|
||||
|
||||
export interface NewsSectionContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
showAllText: string;
|
||||
showAllAriaLabel: string;
|
||||
}
|
||||
|
||||
export interface ResearchSectionContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
showAllText: string;
|
||||
showAllAriaLabel: string;
|
||||
}
|
||||
|
||||
export interface BusinessSectionContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
showAllText: string;
|
||||
showAllAriaLabel: string;
|
||||
}
|
||||
|
||||
export interface MissionSection {
|
||||
title: string;
|
||||
content: string | React.ReactNode;
|
||||
}
|
||||
export interface OurMissionContent {
|
||||
title: string;
|
||||
preamble: string | React.ReactNode;
|
||||
sections: MissionSection[];
|
||||
closingStatement: string;
|
||||
}
|
||||
|
||||
export interface CareersPageContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
noVacanciesTitle: string;
|
||||
noVacanciesMessagePt1: string;
|
||||
noVacanciesMessagePt2: string;
|
||||
noVacanciesContactEmailText: string;
|
||||
hrEmail: string;
|
||||
notFoundTitle: string;
|
||||
notFoundMessage: string;
|
||||
applyButtonText: string;
|
||||
applySubject: string;
|
||||
}
|
||||
|
||||
export interface BusinessLandingContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
emptyStateTitle: string;
|
||||
emptyStateMessage: string;
|
||||
}
|
||||
|
||||
export interface BusinessServicesContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
trustedByTitle: string;
|
||||
ctaTitle: string;
|
||||
ctaSubtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface EducationBusinessContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
ctaTitle: string;
|
||||
ctaSubtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface EducationStudentsContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
ctaTitle: string;
|
||||
ctaSubtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface AllItemsPageContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
backButtonTextPrefix: string;
|
||||
backButtonTextSuffix: string;
|
||||
subtitle: string;
|
||||
emptyStateTitle: string;
|
||||
emptyStateMessage: string;
|
||||
}
|
||||
|
||||
export interface AcceleratorAboutContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
whatWeOfferTitle: string;
|
||||
whatWeOfferParagraph: string;
|
||||
ctaTitle: string;
|
||||
ctaSubtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface AcceleratorProjectsContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
emptyStateTitle: string;
|
||||
emptyStateMessage: string;
|
||||
projectWebsiteButtonText: string;
|
||||
}
|
||||
|
||||
export interface AcceleratorInvestmentContent {
|
||||
title: string;
|
||||
titleGradientPart: string;
|
||||
subtitle: string;
|
||||
problemLabel: string;
|
||||
solutionLabel: string;
|
||||
teamLabel: string;
|
||||
fundingLabel: string;
|
||||
contactProjectButtonText: string;
|
||||
requestContactButtonText: string;
|
||||
emptyStateTitle: string;
|
||||
emptyStateMessage: string;
|
||||
investorCtaTitle: string;
|
||||
investorCtaSubtitle: string;
|
||||
contactMethods: ContactMethodUI[];
|
||||
}
|
||||
|
||||
export interface DetailPageContent { // Base for specific detail page content types
|
||||
notFoundTitle: string;
|
||||
backButtonText: string;
|
||||
itemTypeSingular: string;
|
||||
itemTypePlural: string;
|
||||
galleryTitle?: string; // Added gallery title
|
||||
keepReadingTitle?: string;
|
||||
viewAllButtonText?: string;
|
||||
previousItemButtonLabel?: string;
|
||||
nextItemButtonLabel?: string;
|
||||
noPreviousItemText?: string;
|
||||
noNextItemText?: string;
|
||||
}
|
||||
|
||||
export interface BlogPostDetailContent extends DetailPageContent {}
|
||||
export interface NewsArticleDetailContent extends DetailPageContent {}
|
||||
export interface BusinessStoryDetailContent extends DetailPageContent {}
|
||||
|
||||
export interface ResearchPaperDetailContent extends DetailPageContent {
|
||||
abstractTitle: string;
|
||||
}
|
||||
|
||||
export interface VacancyDetailContent {
|
||||
notFoundTitle: string;
|
||||
vacancyNotFoundMessage: string;
|
||||
backButtonText: string;
|
||||
descriptionTitle: string;
|
||||
responsibilitiesTitle: string;
|
||||
qualificationsTitle: string;
|
||||
offerTitle: string;
|
||||
applyPromptTitle: string;
|
||||
applyPromptMessage: string;
|
||||
applyButtonText: string;
|
||||
hrEmail: string;
|
||||
mailtoSubjectPrefix: string;
|
||||
mailtoBodyPrefix: string;
|
||||
}
|
||||
|
||||
export interface LegalPageSection {
|
||||
heading?: string;
|
||||
content: string | React.ReactNode;
|
||||
}
|
||||
export interface TermsOfUseContent {
|
||||
title: string;
|
||||
pageTitleGradientPart: string;
|
||||
lastUpdated: string;
|
||||
backButtonText: string;
|
||||
sections: LegalPageSection[];
|
||||
}
|
||||
|
||||
export interface PrivacyPolicyContent {
|
||||
title: string;
|
||||
pageTitleGradientPart: string;
|
||||
lastUpdated: string;
|
||||
backButtonText: string;
|
||||
sections: LegalPageSection[];
|
||||
}
|
||||
|
||||
|
||||
export interface UITexts {
|
||||
playVideoAriaLabel: string;
|
||||
pauseVideoAriaLabel: string;
|
||||
sidebarToggleOpenAriaLabel: string;
|
||||
sidebarToggleCloseAriaLabel: string;
|
||||
}
|
||||
Reference in New Issue
Block a user