mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-24 17:03:55 +10:00
v5.2.0: undo/redo, version history, embedded AI assistant, mobile builder & more (#3205)
This commit is contained in:
@@ -102,6 +102,11 @@ export const summarySchema = z.object({
|
||||
),
|
||||
columns: z.number().int().min(1).max(6).catch(1).describe("The number of columns the summary should span across."),
|
||||
hidden: z.boolean().describe("Whether to hide the summary from the resume."),
|
||||
keepTogether: z
|
||||
.boolean()
|
||||
.catch(false)
|
||||
.describe("If true, the summary is kept on a single page instead of splitting across a page break."),
|
||||
startOnNewPage: z.boolean().catch(false).describe("If true, the summary always begins on a new page."),
|
||||
content: z.string().describe("The content of the summary of the resume. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
@@ -285,6 +290,11 @@ export const baseSectionSchema = z.object({
|
||||
),
|
||||
columns: z.number().int().min(1).max(6).catch(1).describe("The number of columns the section should span across."),
|
||||
hidden: z.boolean().describe("Whether to hide the section from the resume."),
|
||||
keepTogether: z
|
||||
.boolean()
|
||||
.catch(false)
|
||||
.describe("If true, the section is kept on a single page instead of splitting across a page break."),
|
||||
startOnNewPage: z.boolean().catch(false).describe("If true, the section always begins on a new page."),
|
||||
});
|
||||
|
||||
const awardsSectionSchema = baseSectionSchema.extend({
|
||||
|
||||
@@ -27,6 +27,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "article",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
content: "",
|
||||
},
|
||||
sections: {
|
||||
@@ -35,6 +37,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "messenger-logo",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
experience: {
|
||||
@@ -42,6 +46,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "briefcase",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
education: {
|
||||
@@ -49,6 +55,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "graduation-cap",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
projects: {
|
||||
@@ -56,6 +64,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "code-simple",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
skills: {
|
||||
@@ -63,6 +73,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "compass-tool",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
languages: {
|
||||
@@ -70,6 +82,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "translate",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
interests: {
|
||||
@@ -77,6 +91,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "football",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
awards: {
|
||||
@@ -84,6 +100,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "trophy",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
certifications: {
|
||||
@@ -91,6 +109,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "certificate",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
publications: {
|
||||
@@ -98,6 +118,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "books",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
volunteer: {
|
||||
@@ -105,6 +127,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "hand-heart",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
references: {
|
||||
@@ -112,6 +136,8 @@ export const defaultResumeData: ResumeData = {
|
||||
icon: "phone",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -43,8 +43,10 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "article",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
content:
|
||||
"<p><strong>Passionate game developer with 5+ years of professional experience</strong> creating engaging gameplay systems and polished player experiences across multiple platforms. <a href='https://www.google.com'>Specialized</a> in Unity and Unreal Engine with strong expertise in C#, C++, and game design principles. Proven ability to collaborate effectively with cross-functional teams including designers, artists, and QA to deliver high-quality games on time and within scope.</p>",
|
||||
"<p><strong>Passionate game developer with 5+ years of professional experience</strong> creating engaging gameplay systems and polished player experiences across multiple platforms. Specialized in Unity and Unreal Engine with strong expertise in C#, C++, and game design principles. Proven ability to collaborate effectively with cross-functional teams including designers, artists, and QA to deliver high-quality games on time and within scope.</p>",
|
||||
},
|
||||
sections: {
|
||||
profiles: {
|
||||
@@ -52,6 +54,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "messenger-logo",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-3d42ddc9b4d8",
|
||||
@@ -86,6 +90,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "briefcase",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-44d8cec98ca4",
|
||||
@@ -110,6 +116,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "graduation-cap",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-48455f6cef9e",
|
||||
@@ -135,6 +143,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "code-simple",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-4d2603fe2801",
|
||||
@@ -182,6 +192,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "compass-tool",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-5a52dcf50ed4",
|
||||
@@ -250,6 +262,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "translate",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-73807ccc48b5",
|
||||
@@ -272,6 +286,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "football",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-7821b4de95f7",
|
||||
@@ -312,6 +328,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "trophy",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-8a8bb9fbe182",
|
||||
@@ -348,6 +366,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "certificate",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-91fe8a4dfea6",
|
||||
@@ -382,6 +402,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "books",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-9816f0081895",
|
||||
@@ -418,6 +440,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "hand-heart",
|
||||
columns: 2,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-a02580473e05",
|
||||
@@ -454,6 +478,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "phone",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [
|
||||
{
|
||||
id: "019bef5a-93e4-7746-ad39-a945c0f42dd5",
|
||||
@@ -477,6 +503,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "briefcase",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
id: "019becaf-0b87-769d-98a6-46ccf558c0e8",
|
||||
type: "experience",
|
||||
items: [
|
||||
@@ -519,6 +547,8 @@ export const sampleResumeData: ResumeData = {
|
||||
icon: "envelope-simple",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
id: "019bef5b-0b3d-7e2a-8a7c-12d9e23a4f6b",
|
||||
type: "cover-letter",
|
||||
items: [
|
||||
@@ -600,3 +630,15 @@ export const sampleResumeData: ResumeData = {
|
||||
styleRules: [],
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the sample resume, optionally overriding `basics.name` so the seeded
|
||||
* content reflects the name the user entered when creating the resume. When no
|
||||
* name is given, the default sample persona is returned unchanged.
|
||||
*/
|
||||
export const createSampleResumeData = (name?: string): ResumeData => {
|
||||
const trimmed = name?.trim();
|
||||
if (!trimmed) return sampleResumeData;
|
||||
|
||||
return { ...sampleResumeData, basics: { ...sampleResumeData.basics, name: trimmed } };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user