Reactive-Resume/schema/src/section.ts

140 lines
2.1 KiB
TypeScript

import { DateRange } from './atoms';
import { Profile } from './basics';
export type WorkExperience = {
id?: string;
name: string;
position: string;
date?: DateRange;
url?: string;
summary?: string;
};
export type Education = {
id?: string;
institution: string;
degree: string;
area?: string;
score?: string;
date?: DateRange;
url?: string;
summary?: string;
courses?: string[];
};
export type Award = {
id?: string;
title: string;
awarder: string;
date?: string;
url?: string;
summary?: string;
};
export type Certificate = {
id?: string;
name: string;
issuer: string;
date?: string;
url?: string;
summary?: string;
};
export type Volunteer = {
id?: string;
organization: string;
position: string;
date?: DateRange;
url?: string;
summary?: string;
};
export type Publication = {
id?: string;
name: string;
publisher: string;
date?: string;
url?: string;
summary?: string;
};
export type Skill = {
id?: string;
name: string;
level?: string;
levelNum: number;
keywords?: string[];
};
export type Language = {
id?: string;
name: string;
level: string;
levelNum: number;
};
export type Interest = {
id?: string;
name: string;
keywords?: string[];
};
export type Project = {
id?: string;
name: string;
description: string;
date?: DateRange;
url?: string;
summary?: string;
keywords?: string[];
};
export type Reference = {
id?: string;
name: string;
relationship: string;
phone?: string;
email?: string;
summary?: string;
};
export type Custom = {
id?: string;
title: string;
subtitle?: string;
date?: DateRange;
url?: string;
level?: string;
levelNum?: number;
summary?: string;
keywords?: string[];
};
export type ListItem =
| Award
| Certificate
| Education
| Interest
| Language
| Profile
| Project
| Publication
| Reference
| Skill
| Volunteer
| WorkExperience
| Custom;
export type SectionType = 'basic' | 'custom';
export type SectionPath = `sections.${string}`;
export type Section = {
id?: string;
name: string;
type: SectionType;
columns: number;
visible: boolean;
items: ListItem[];
};