Align brand search SEO with Grace Salmoun

هذا الالتزام موجود في:
2026-05-03 16:48:06 +03:00
الأصل bd1bb5c2a8
التزام e6f1c6670b
15 ملفات معدلة مع 101 إضافات و48 حذوفات

عرض الملف

@@ -7,6 +7,7 @@ import { SiteShell } from "@/components/site-shell";
import {
getBasePath,
getDirection,
getResumePath,
portfolioContent,
resumeFile,
sharedProfile,
@@ -25,6 +26,7 @@ export function HomePage({ language }: { language: Language }) {
? "لوحة بورتفوليو لمجمع إعلامي ومبنى التلفزيون"
: "Portfolio board for Media Complex and TV Building";
const basePath = getBasePath(language);
const resumePath = getResumePath(language);
const hasResume = resumeFile.available;
const contactCards = [
{
@@ -91,7 +93,7 @@ export function HomePage({ language }: { language: Language }) {
{t.ui.downloadCv}
</Link>
) : (
<Link href={`${basePath}/resume`} className="button-secondary hero-action-link">
<Link href={resumePath} className="button-secondary hero-action-link">
{t.ui.onlineResume}
</Link>
)}
@@ -322,7 +324,7 @@ export function HomePage({ language }: { language: Language }) {
</div>
<div className="grid gap-5 sm:grid-cols-2">
<Link href={`${basePath}/resume`} className="soft-card content-stack-default block">
<Link href={resumePath} className="soft-card content-stack-default block">
<p className="eyebrow-note">{t.ui.onlineResume}</p>
<p className="type-card-title display-face text-[var(--color-ink)]">
{t.ui.viewFullResume}

عرض الملف

@@ -5,18 +5,15 @@ import { usePathname } from "next/navigation";
import { portfolioContent, type Language } from "@/data/portfolio";
export function LanguageToggle({ language }: { language: Language }) {
const pathname = usePathname() ?? `/${language}`;
const pathname = usePathname() ?? (language === "ar" ? "/ar" : "/");
const nextLanguage = language === "en" ? "ar" : "en";
const { languageLabel, languageToggleAriaLabel } = portfolioContent[language].ui;
const segments = pathname.split("/").filter(Boolean);
if (segments[0] === "en" || segments[0] === "ar") {
segments[0] = nextLanguage;
} else {
segments.unshift(nextLanguage);
}
const nextPath = `/${segments.join("/")}`;
const contentSegments = segments[0] === "en" || segments[0] === "ar" ? segments.slice(1) : segments;
const nextPath =
nextLanguage === "ar"
? `/ar${contentSegments.length ? `/${contentSegments.join("/")}` : ""}`
: `/${contentSegments.join("/")}` || "/";
return (
<Link

عرض الملف

@@ -32,7 +32,7 @@ export function Navbar({ language }: { language: Language }) {
<div className="logo-shell navbar-logo-shell overflow-hidden rounded-[20px] border p-2">
<Image
src={sharedProfile.logoImage}
alt={language === "ar" ? "شعار غريس بطرس سلمون" : "Grace Butrus Salmoun logo"}
alt={language === "ar" ? "شعار غريس بطرس سلمون" : "Grace Salmoun logo"}
width={60}
height={60}
className="navbar-logo-image h-[60px] w-[60px] rounded-[14px] object-contain"

عرض الملف

@@ -2,7 +2,7 @@ import Link from "next/link";
import { JsonLd } from "@/components/json-ld";
import { SectionHeading } from "@/components/section-heading";
import { SiteShell } from "@/components/site-shell";
import { portfolioContent, resumeFile, sharedProfile, type Language } from "@/data/portfolio";
import { getBasePath, portfolioContent, resumeFile, sharedProfile, type Language } from "@/data/portfolio";
import { getResumeStructuredData } from "@/data/seo";
export function ResumePageContent({ language }: { language: Language }) {
@@ -11,6 +11,7 @@ export function ResumePageContent({ language }: { language: Language }) {
const address = language === "ar" ? sharedProfile.addressAr : sharedProfile.address;
const hasResume = resumeFile.available;
const structuredData = getResumeStructuredData(language);
const portfolioPath = getBasePath(language);
return (
<SiteShell language={language}>
@@ -41,7 +42,7 @@ export function ResumePageContent({ language }: { language: Language }) {
{t.ui.resumeUnavailable}
</p>
)}
<Link href={`/${language}`} className="button-secondary">
<Link href={portfolioPath} className="button-secondary">
{t.ui.backToPortfolio}
</Link>
</div>