feat(cv): rebuild professional resume studio
This commit is contained in:
@@ -15,6 +15,22 @@ export type CvVariantSettings = {
|
||||
dateFormat?: string | null;
|
||||
language?: string | null;
|
||||
headline?: string | null;
|
||||
textColor?: string | null;
|
||||
mutedColor?: string | null;
|
||||
headingColor?: string | null;
|
||||
backgroundColor?: string | null;
|
||||
baseFontSizePt?: number | null;
|
||||
headingSizePt?: number | null;
|
||||
lineHeight?: number | null;
|
||||
pageMarginMm?: number | null;
|
||||
sectionGapMm?: number | null;
|
||||
entryGapMm?: number | null;
|
||||
headingStyle?: "caps-rule" | "underline" | "plain" | "bar" | null;
|
||||
headerStyle?: "plain" | "band" | "centered" | "kicker" | null;
|
||||
skillsStyle?: "tags" | "text" | null;
|
||||
layout?: "single" | "sidebar-left" | "sidebar-right" | "header-band" | null;
|
||||
sidebarWidthMm?: number | null;
|
||||
sidebarSections?: string[] | null;
|
||||
showPhoto: boolean;
|
||||
showPageNumbers: boolean;
|
||||
showIcons: boolean;
|
||||
@@ -47,10 +63,13 @@ export type CvVariantSummary = {
|
||||
id: number;
|
||||
name: string;
|
||||
themeId: string;
|
||||
language?: string | null;
|
||||
publicSlug: string;
|
||||
isPublic: boolean;
|
||||
version: number;
|
||||
jobApplicationId: number | null;
|
||||
jobTitle?: string | null;
|
||||
companyName?: string | null;
|
||||
updatedAtUtc: string;
|
||||
};
|
||||
|
||||
@@ -74,6 +93,7 @@ export const AI_ACTIONS: { key: string; label: string }[] = [
|
||||
{ key: "shorten", label: "Shorten" },
|
||||
{ key: "expand", label: "Expand" },
|
||||
{ key: "grammar", label: "Fix grammar" },
|
||||
{ key: "impact", label: "Add measurable impact" },
|
||||
{ key: "ats", label: "ATS optimise" },
|
||||
{ key: "bullets", label: "Generate bullets" },
|
||||
{ key: "summary", label: "Generate summary" },
|
||||
@@ -82,7 +102,8 @@ export const AI_ACTIONS: { key: string; label: string }[] = [
|
||||
];
|
||||
|
||||
export const DEFAULT_SECTION_ORDER = [
|
||||
"summary", "experience", "education", "projects", "skills", "certifications", "languages", "interests",
|
||||
"summary", "experience", "education", "projects", "skills", "certifications", "languages", "awards",
|
||||
"publications", "organisations", "interests", "references",
|
||||
];
|
||||
|
||||
export const SECTION_LABELS: Record<string, string> = {
|
||||
@@ -94,6 +115,10 @@ export const SECTION_LABELS: Record<string, string> = {
|
||||
certifications: "Certifications",
|
||||
languages: "Languages",
|
||||
interests: "Interests",
|
||||
awards: "Awards",
|
||||
publications: "Publications",
|
||||
organisations: "Organisations",
|
||||
references: "References",
|
||||
};
|
||||
|
||||
const CSS_PIXELS_PER_MM = 96 / 25.4;
|
||||
@@ -166,6 +191,7 @@ export function wrapSelection(
|
||||
|
||||
export const cvBuilderApi = {
|
||||
themes: () => api.get<CvTheme[]>("/cv/themes").then((r) => r.data),
|
||||
themePreview: (themeId: string) => api.get<CvRender>(`/cv/themes/${encodeURIComponent(themeId)}/preview`).then((r) => r.data),
|
||||
outline: () => api.get<CvOutline>("/cv/outline").then((r) => r.data),
|
||||
list: () => api.get<CvVariantSummary[]>("/cv/variants").then((r) => r.data),
|
||||
create: (body: { name?: string; jobApplicationId?: number | null; settings?: CvVariantSettings }) =>
|
||||
|
||||
Reference in New Issue
Block a user