diff --git a/src/components/resume/templates/azurill.tsx b/src/components/resume/templates/azurill.tsx
index 534146b0e..67083653d 100644
--- a/src/components/resume/templates/azurill.tsx
+++ b/src/components/resume/templates/azurill.tsx
@@ -1,5 +1,4 @@
import { EnvelopeIcon, GlobeIcon, MapPinIcon, PhoneIcon } from "@phosphor-icons/react";
-import { isRTL } from "@/utils/locale";
import { cn } from "@/utils/style";
import { getSectionComponent } from "../shared/get-section-component";
import { PageIcon } from "../shared/page-icon";
@@ -8,68 +7,61 @@ import { PagePicture } from "../shared/page-picture";
import { useResumeStore } from "../store/resume";
import type { TemplateProps } from "./types";
+const sectionClassName = cn(
+ // Heading Decoration in Sidebar Layout
+ "group-data-[layout=sidebar]:[&>h6]:px-4",
+ "group-data-[layout=sidebar]:[&>h6]:relative",
+ "group-data-[layout=sidebar]:[&>h6]:inline-flex",
+ "group-data-[layout=sidebar]:[&>h6]:items-center",
+ "group-data-[layout=sidebar]:[&>h6]:before:content-['']",
+ "group-data-[layout=sidebar]:[&>h6]:before:absolute",
+ "group-data-[layout=sidebar]:[&>h6]:before:left-0",
+ "group-data-[layout=sidebar]:[&>h6]:before:rounded-full",
+ "group-data-[layout=sidebar]:[&>h6]:before:size-2",
+ "group-data-[layout=sidebar]:[&>h6]:before:border",
+ "group-data-[layout=sidebar]:[&>h6]:before:border-(--page-primary-color)",
+ "group-data-[layout=sidebar]:[&>h6]:after:content-['']",
+ "group-data-[layout=sidebar]:[&>h6]:after:absolute",
+ "group-data-[layout=sidebar]:[&>h6]:after:right-0",
+ "group-data-[layout=sidebar]:[&>h6]:after:rounded-full",
+ "group-data-[layout=sidebar]:[&>h6]:after:size-2",
+ "group-data-[layout=sidebar]:[&>h6]:after:border",
+ "group-data-[layout=sidebar]:[&>h6]:after:border-(--page-primary-color)",
+
+ // Section in Sidebar Layout
+ "group-data-[layout=sidebar]:[&_.section-item-header>div]:flex-col",
+ "group-data-[layout=sidebar]:[&_.section-item-header>div]:items-start",
+
+ // Section in Main Layout
+ "group-data-[layout=main]:[&>.section-content]:relative",
+ "group-data-[layout=main]:[&>.section-content]:ml-4",
+ "group-data-[layout=main]:[&>.section-content]:pl-4",
+ "group-data-[layout=main]:[&>.section-content]:border-l",
+ "group-data-[layout=main]:[&>.section-content]:border-(--page-primary-color)",
+
+ // Timeline Marker in Main Layout
+ "group-data-[layout=main]:[&>.section-content]:after:content-['']",
+ "group-data-[layout=main]:[&>.section-content]:after:absolute",
+ "group-data-[layout=main]:[&>.section-content]:after:top-5",
+ "group-data-[layout=main]:[&>.section-content]:after:left-0",
+ "group-data-[layout=main]:[&>.section-content]:after:size-2.5",
+ "group-data-[layout=main]:[&>.section-content]:after:translate-x-[-50%]",
+ "group-data-[layout=main]:[&>.section-content]:after:translate-y-[-50%]",
+ "group-data-[layout=main]:[&>.section-content]:after:rounded-full",
+ "group-data-[layout=main]:[&>.section-content]:after:border",
+ "group-data-[layout=main]:[&>.section-content]:after:border-(--page-primary-color)",
+ "group-data-[layout=main]:[&>.section-content]:after:bg-(--page-background-color)",
+);
+
/**
* Template: Azurill
*/
export function AzurillTemplate({ pageIndex, pageLayout }: TemplateProps) {
const isFirstPage = pageIndex === 0;
const { main, sidebar, fullWidth } = pageLayout;
- const locale = useResumeStore((state) => state.resume.data.metadata.page.locale);
- const rtlDirection = isRTL(locale);
-
- const sectionClassName = cn(
- // Heading Decoration in Sidebar Layout
- "group-data-[layout=sidebar]:[&>h6]:px-4",
- "group-data-[layout=sidebar]:[&>h6]:relative",
- "group-data-[layout=sidebar]:[&>h6]:inline-flex",
- "group-data-[layout=sidebar]:[&>h6]:items-center",
- "group-data-[layout=sidebar]:[&>h6]:before:content-['']",
- "group-data-[layout=sidebar]:[&>h6]:before:absolute",
- "group-data-[layout=sidebar]:[&>h6]:before:start-0",
- "group-data-[layout=sidebar]:[&>h6]:before:rounded-full",
- "group-data-[layout=sidebar]:[&>h6]:before:size-2",
- "group-data-[layout=sidebar]:[&>h6]:before:border",
- "group-data-[layout=sidebar]:[&>h6]:before:border-(--page-primary-color)",
- "group-data-[layout=sidebar]:[&>h6]:after:content-['']",
- "group-data-[layout=sidebar]:[&>h6]:after:absolute",
- "group-data-[layout=sidebar]:[&>h6]:after:end-0",
- "group-data-[layout=sidebar]:[&>h6]:after:rounded-full",
- "group-data-[layout=sidebar]:[&>h6]:after:size-2",
- "group-data-[layout=sidebar]:[&>h6]:after:border",
- "group-data-[layout=sidebar]:[&>h6]:after:border-(--page-primary-color)",
-
- // Section in Sidebar Layout
- "group-data-[layout=sidebar]:[&_.section-item-header>div]:flex-col",
- "group-data-[layout=sidebar]:[&_.section-item-header>div]:items-start",
-
- // Section in Main Layout
- "group-data-[layout=main]:[&>.section-content]:relative",
- "group-data-[layout=main]:[&>.section-content]:ms-4",
- "group-data-[layout=main]:[&>.section-content]:ps-4",
- "group-data-[layout=main]:[&>.section-content]:border-s",
- "group-data-[layout=main]:[&>.section-content]:border-(--page-primary-color)",
-
- // Timeline Marker in Main Layout
- "group-data-[layout=main]:[&>.section-content]:after:content-['']",
- "group-data-[layout=main]:[&>.section-content]:after:absolute",
- "group-data-[layout=main]:[&>.section-content]:after:top-5",
- "group-data-[layout=main]:[&>.section-content]:after:start-0",
- "group-data-[layout=main]:[&>.section-content]:after:size-2.5",
- rtlDirection
- ? "group-data-[layout=main]:[&>.section-content]:after:[transform:translate(50%,-50%)]"
- : "group-data-[layout=main]:[&>.section-content]:after:translate-x-[-50%]",
- "group-data-[layout=main]:[&>.section-content]:after:translate-y-[-50%]",
- "group-data-[layout=main]:[&>.section-content]:after:rounded-full",
- "group-data-[layout=main]:[&>.section-content]:after:border",
- "group-data-[layout=main]:[&>.section-content]:after:border-(--page-primary-color)",
- "group-data-[layout=main]:[&>.section-content]:after:bg-(--page-background-color)",
- );
return (
-
+
{isFirstPage &&
}
@@ -100,10 +92,10 @@ function Header() {
const basics = useResumeStore((state) => state.resume.data.basics);
return (
-
+
-
+
{basics.name}
{basics.headline}
diff --git a/src/components/resume/templates/bronzor.tsx b/src/components/resume/templates/bronzor.tsx
index 535f2f455..96dea74a1 100644
--- a/src/components/resume/templates/bronzor.tsx
+++ b/src/components/resume/templates/bronzor.tsx
@@ -1,5 +1,4 @@
import { EnvelopeIcon, GlobeIcon, MapPinIcon, PhoneIcon } from "@phosphor-icons/react";
-import { isRTL } from "@/utils/locale";
import { cn } from "@/utils/style";
import { getSectionComponent } from "../shared/get-section-component";
import { PageIcon } from "../shared/page-icon";
@@ -22,14 +21,9 @@ const sectionClassName = cn(
export function BronzorTemplate({ pageIndex, pageLayout }: TemplateProps) {
const isFirstPage = pageIndex === 0;
const { main, sidebar, fullWidth } = pageLayout;
- const locale = useResumeStore((state) => state.resume.data.metadata.page.locale);
- const rtlDirection = isRTL(locale);
return (
-
+
{isFirstPage &&
}
diff --git a/src/components/resume/templates/chikorita.tsx b/src/components/resume/templates/chikorita.tsx
index 5e738beac..0913a5a73 100644
--- a/src/components/resume/templates/chikorita.tsx
+++ b/src/components/resume/templates/chikorita.tsx
@@ -1,5 +1,4 @@
import { EnvelopeIcon, GlobeIcon, MapPinIcon, PhoneIcon } from "@phosphor-icons/react";
-import { isRTL } from "@/utils/locale";
import { cn } from "@/utils/style";
import { getSectionComponent } from "../shared/get-section-component";
import { PageIcon } from "../shared/page-icon";
@@ -34,16 +33,12 @@ const sectionClassName = cn(
export function ChikoritaTemplate({ pageIndex, pageLayout }: TemplateProps) {
const isFirstPage = pageIndex === 0;
const { main, sidebar, fullWidth } = pageLayout;
- const locale = useResumeStore((state) => state.resume.data.metadata.page.locale);
- const rtlDirection = isRTL(locale);
return (
-
+
{/* Sidebar Background */}
{!fullWidth && (
-
+
)}
{isFirstPage &&
}
diff --git a/src/components/resume/templates/ditgar.tsx b/src/components/resume/templates/ditgar.tsx
index f66413699..6fb8f48c7 100644
--- a/src/components/resume/templates/ditgar.tsx
+++ b/src/components/resume/templates/ditgar.tsx
@@ -1,4 +1,3 @@
-import { isRTL } from "@/utils/locale";
import { cn } from "@/utils/style";
import { getSectionComponent } from "../shared/get-section-component";
import { PageIcon } from "../shared/page-icon";
@@ -29,32 +28,18 @@ const sectionClassName = cn(
export function DitgarTemplate({ pageIndex, pageLayout }: TemplateProps) {
const isFirstPage = pageIndex === 0;
const { main, sidebar, fullWidth } = pageLayout;
- const locale = useResumeStore((state) => state.resume.data.metadata.page.locale);
- const rtlDirection = isRTL(locale);
const SummaryComponent = getSectionComponent("summary", {
sectionClassName: cn(sectionClassName, "px-(--page-margin-x) pt-(--page-margin-y)"),
});
return (
-
+
{/* Sidebar Background */}
{(!fullWidth || isFirstPage) && (
-
+
)}
-
- {isFirstPage && }
-
-
{(!fullWidth || isFirstPage) && (