diff --git a/apps/fronted/src/assets/images/template-cover/classic.png b/apps/fronted/src/assets/images/template-cover/classic.png index 225c89f..2592081 100644 Binary files a/apps/fronted/src/assets/images/template-cover/classic.png and b/apps/fronted/src/assets/images/template-cover/classic.png differ diff --git a/apps/fronted/src/assets/images/template-cover/left-right.png b/apps/fronted/src/assets/images/template-cover/left-right.png index ea6ed52..1208151 100644 Binary files a/apps/fronted/src/assets/images/template-cover/left-right.png and b/apps/fronted/src/assets/images/template-cover/left-right.png differ diff --git a/apps/fronted/src/assets/images/template-cover/modern.png b/apps/fronted/src/assets/images/template-cover/modern.png index 7dadc9f..38ebf5b 100644 Binary files a/apps/fronted/src/assets/images/template-cover/modern.png and b/apps/fronted/src/assets/images/template-cover/modern.png differ diff --git a/apps/fronted/src/components/preview/BaseInfo.tsx b/apps/fronted/src/components/preview/BaseInfo.tsx index 7849957..1fc8d18 100644 --- a/apps/fronted/src/components/preview/BaseInfo.tsx +++ b/apps/fronted/src/components/preview/BaseInfo.tsx @@ -218,7 +218,7 @@ const BaseInfo = ({ className={fieldsContainerClass} style={{ fontSize: `${globalSettings?.baseFontSize || 14}px`, - color: "rgb(75, 85, 99)", + color: isModernTemplate ? "#fff" : "rgb(75, 85, 99)", maxWidth: layout === "center" ? "none" : "400px", }} > diff --git a/apps/fronted/src/components/preview/SectionTitle.tsx b/apps/fronted/src/components/preview/SectionTitle.tsx index 451395b..5629d0d 100644 --- a/apps/fronted/src/components/preview/SectionTitle.tsx +++ b/apps/fronted/src/components/preview/SectionTitle.tsx @@ -2,6 +2,9 @@ import { useMemo } from "react"; import { GlobalSettings } from "@/types/resume"; import { useResumeStore } from "@/store/useResumeStore"; +import { cn } from "@/lib/utils"; +import { templateConfigs } from "@/config/templates"; + interface SectionTitleProps { globalSettings?: GlobalSettings; type: string; @@ -9,28 +12,106 @@ interface SectionTitleProps { } const SectionTitle = ({ type, title, globalSettings }: SectionTitleProps) => { - const sectionTitleStyles = { - fontSize: `${globalSettings?.headerSize || 18}px`, - borderColor: globalSettings?.themeColor, - color: globalSettings?.themeColor, - }; const { activeResume } = useResumeStore(); - const { menuSections = [] } = activeResume || {}; + const { menuSections = [], templateId = "default" } = activeResume || {}; + const renderTitle = useMemo(() => { if (type === "custom") { return title; } const sectionConfig = menuSections.find((s) => s.id === type); return sectionConfig?.title; - }, [menuSections, type]); + }, [menuSections, type, title]); - return ( -

- {renderTitle} -

+ const config = + templateConfigs[templateId as string] || templateConfigs["default"]; + const { styles } = config.sectionTitle; + + const themeColor = globalSettings?.themeColor; + + const baseStyles = useMemo( + () => ({ + fontSize: `${globalSettings?.headerSize || styles.fontSize}px`, + fontWeight: "bold", + color: themeColor, + marginBottom: `${globalSettings?.paragraphSpacing}px`, + }), + [ + globalSettings?.headerSize, + globalSettings?.paragraphSpacing, + styles.fontSize, + themeColor, + ] ); + + const renderTemplateTitle = () => { + switch (templateId) { + case "modern": + return ( +

+ {renderTitle} +

+ ); + + case "left-right": + return ( +
+
+

+ {renderTitle} +

+
+ ); + + case "classic": + return ( +

+ {renderTitle} +

+ ); + + default: + return ( +

+ {renderTitle} +

+ ); + } + }; + + return renderTemplateTitle(); }; + export default SectionTitle; diff --git a/apps/fronted/src/components/templates/LeftRightTemplate.tsx b/apps/fronted/src/components/templates/LeftRightTemplate.tsx index 7483519..3117238 100644 --- a/apps/fronted/src/components/templates/LeftRightTemplate.tsx +++ b/apps/fronted/src/components/templates/LeftRightTemplate.tsx @@ -27,9 +27,9 @@ const LeftRightTemplate: React.FC = ({ case "basic": return ( ); case "experience": diff --git a/apps/fronted/src/components/templates/ModernTemplate.tsx b/apps/fronted/src/components/templates/ModernTemplate.tsx index 2823606..738138b 100644 --- a/apps/fronted/src/components/templates/ModernTemplate.tsx +++ b/apps/fronted/src/components/templates/ModernTemplate.tsx @@ -82,7 +82,7 @@ const ModernTemplate: React.FC = ({ data, template }) => { return (
= ({ data, template }) => {
= { + default: { + sectionTitle: { + styles: { + fontSize: 18, + }, + }, + }, + classic: { + sectionTitle: { + className: "border-b pb-2", + styles: { + fontSize: 18, + borderColor: "var(--theme-color)", + }, + }, + }, + modern: { + sectionTitle: { + className: "font-semibold mb-2 uppercase tracking-wider", + styles: { + fontSize: 18, + }, + }, + }, + "left-right": { + sectionTitle: { + className: "pl-1 flex items-center", + styles: { + fontSize: 18, + backgroundColor: "var(--theme-color)", + opacity: 0.1, + color: "var(--theme-color)", + borderLeftWidth: "3px", + borderLeftStyle: "solid", + borderLeftColor: "var(--theme-color)", + }, + }, + }, +}; diff --git a/apps/fronted/src/store/useResumeStore.ts b/apps/fronted/src/store/useResumeStore.ts index a1c76e1..fff6687 100644 --- a/apps/fronted/src/store/useResumeStore.ts +++ b/apps/fronted/src/store/useResumeStore.ts @@ -553,6 +553,10 @@ export const useResumeStore = create( paragraphSpacing: template.spacing.itemGap, pagePadding: template.spacing.contentPadding, }, + basic: { + ...resumes[activeResumeId].basic, + layout: template.basic.layout, + }, }; set({ diff --git a/apps/fronted/src/types/template.ts b/apps/fronted/src/types/template.ts index 9e47ebe..beecf21 100644 --- a/apps/fronted/src/types/template.ts +++ b/apps/fronted/src/types/template.ts @@ -1,3 +1,5 @@ +import { CSSProperties } from "react"; + export interface ResumeTemplate { id: string; name: string; @@ -15,4 +17,14 @@ export interface ResumeTemplate { itemGap: number; contentPadding: number; }; + basic: { + layout?: "left" | "center" | "right"; + }; +} + +export interface TemplateConfig { + sectionTitle: { + className?: string; + styles: CSSProperties; + }; }