From 9d5f347ffb22054ccedfe55ac736989e367ef236 Mon Sep 17 00:00:00 2001 From: poyrazavsever Date: Mon, 31 Aug 2026 20:08:04 +0300 Subject: [PATCH] perf(images): optimize cards and compact logo assets --- components/blog-content.tsx | 2 +- components/home-projects-section.tsx | 3 +- components/links-content.tsx | 2 +- components/project-card-with-popover.tsx | 37 +++++++++++++----- components/reference-cards.tsx | 47 ++++++++++++++++++----- public/logo/logo-96.webp | Bin 0 -> 2056 bytes 6 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 public/logo/logo-96.webp diff --git a/components/blog-content.tsx b/components/blog-content.tsx index e11334f..13968e3 100644 --- a/components/blog-content.tsx +++ b/components/blog-content.tsx @@ -156,7 +156,7 @@ export function BlogContent({ data, section = "blog" }: BlogContentProps) { readTime={post.readTime} href={post.href} className="rounded-sm border-border [&_h3]:line-clamp-2 [&_h3]:min-h-[2.5rem] [&_p]:line-clamp-3" - author={{ name: post.author, avatar: "/logo/logo.webp" }} + author={{ name: post.author, avatar: "/logo/logo-96.webp" }} /> ))} diff --git a/components/home-projects-section.tsx b/components/home-projects-section.tsx index 45db64f..27d1d21 100644 --- a/components/home-projects-section.tsx +++ b/components/home-projects-section.tsx @@ -43,7 +43,7 @@ export function HomeProjectsSection() {
- {projects.map((project) => ( + {projects.map((project, index) => ( ))}
diff --git a/components/links-content.tsx b/components/links-content.tsx index 84928be..b399e58 100644 --- a/components/links-content.tsx +++ b/components/links-content.tsx @@ -131,7 +131,7 @@ export function LinksContent({
- + PA diff --git a/components/project-card-with-popover.tsx b/components/project-card-with-popover.tsx index 7b1a308..e13d28a 100644 --- a/components/project-card-with-popover.tsx +++ b/components/project-card-with-popover.tsx @@ -1,10 +1,10 @@ "use client"; import { useEffect, useRef, useState } from "react"; +import Image from "next/image"; import { Icon } from "@iconify/react"; -import { Badge, Typography } from "poyraz-ui/atoms"; +import { Badge, Card, Typography } from "poyraz-ui/atoms"; import { - ImageCard, Popover, PopoverContent, PopoverTrigger, @@ -25,6 +25,7 @@ type ProjectCardWithPopoverProps = { architectureLabel: string; className?: string; triggerClassName?: string; + priority?: boolean; }; export function ProjectCardWithPopover({ @@ -41,6 +42,7 @@ export function ProjectCardWithPopover({ architectureLabel, className, triggerClassName, + priority = false, }: ProjectCardWithPopoverProps) { const [open, setOpen] = useState(false); const closeTimer = useRef | null>(null); @@ -69,13 +71,30 @@ export function ProjectCardWithPopover({ }, []); const card = ( - + + +
+ {badge ? ( + {badge} + ) : null} +
+

{title}

+ {description ? ( +

{description}

+ ) : null} +
+ ); const triggerClasses = `block ${triggerClassName ?? ""} text-inherit outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`; diff --git a/components/reference-cards.tsx b/components/reference-cards.tsx index 57e3350..5720a2d 100644 --- a/components/reference-cards.tsx +++ b/components/reference-cards.tsx @@ -1,5 +1,7 @@ -import { TestimonialCard } from "poyraz-ui/molecules"; +import Image from "next/image"; +import { Card, CardContent } from "poyraz-ui/atoms"; +import { StarRating } from "poyraz-ui/molecules"; import { REFERENCES } from "@/data/references"; import { useLocale } from "next-intl"; import { getLocalizedValue } from "@/lib/locale"; @@ -27,14 +29,41 @@ export function ReferenceCards({ const quoteText = getLocalizedValue(item.quote, locale); const card = ( - + + + + “ + +
+ {quoteText} +
+ {showRating && item.rating != null ? ( + + ) : null} +
+ +
+
+ {item.author} +
+
+ {getLocalizedValue(item.role, locale)} +
+
+
+
+
); const href = item.documentHref || item.profileHref; diff --git a/public/logo/logo-96.webp b/public/logo/logo-96.webp new file mode 100644 index 0000000000000000000000000000000000000000..8ea7e89c091c5f1edae409050ba07552861aebf1 GIT binary patch literal 2056 zcmV+j2>16=Nk&Eh2mkgVbGCeD z&O&5#MN-?8cbrH_Dn!(x95G%pF`3|KGbc>Ui%pCRC;J_fGGw!uNaeZWnTv~uD==3eP^{?&=vgHnOP223bG+grd$tu8uXdnRo`9I6@ zhUol`buoM|@1s9@R$u~kc3#oRLNA(u56msO{awg&cS&^mJ}^eqf1xJ-GYRq8$G~TbP{A{N#Oeu??xx~e*rWuzg|REd z1?<-6ym=!v|9*w^9@2!5V)Tjke=T7^ z&PjH*V^^PaJ#7FeWeoj!RYRE9^TJgDifI`BJ1w*!95V zQL#(Xxst)a0Vj7n!JWk$E3&MsGg_%TY}?QEx>7lwcIG9lan>oOG~xFH4D%Qx(z_9& za-3HoH2hGT&Lf!X_MAenMh98b7(j&90n-sHdQx zRcR&cw5%CS*XE#IlH|d>{IgC7E;wh4wDX{k<~I2Oi(-oE7ram+msKt8agxhI%<5&x zQa6%7J~$sBrA^z$C~ajzZH#7#n?R{*Egn)}E7aPSqaW|Bigp(|r zXC!jh_b1eGNCRaI$K)!em!Y=>8BZn0`j$IU?P}1->2_6}h^5VU)5O^UG4B3Ys$#pr zYMjUVb-$op+uho*;Z(ASM>UMP-qUimEY_S{f2AkjuS3~QTG|eobAiP6Hn~-VTw2^5I&M8AN1Uf! z8Cj8bk)LBzN=0=W_n$JcHK%UZPa5Uo{^cSE{85NW-ft!}2M6`-h0NHI3kn9PWrU9G zL~5)IpA&AqFY%LzZ9wsXv0GoOYG&*#vT#3vyNWdc;xBTrOF>T@G)DEtE?G+14mawK zP}r(6IDH5255k0bX}}R=Fv-=YjH-P-%fja^dAS~;?<)jZNH@_SSG8h5|eE5 zJX+1QqfMaYb;woP9OqstRr*q2?ZO82j-`8zDJGHjM?QeK>NSdn`1-l|-~d<>cHI@i zNvs?^s{6I|@A&Aa8;`}ioeAF`_h)v&cDH-CMe))pSWt(^&a*$Eq&6P~{u$P^9)D|D zK%pj|xpx%hZRy(;7RncWRjc(gZT;@cdu&@aBH6H4;6#~5lMF&>;vh#m=M@HNL7 zRHBd>_=evC?VKvQ-OT5U>u7Q9 zg>Qtwm5V9DPgkctGv1Rv>w22Sf`r>7WVY9T4qEn zGKoFV2z4sNM))~s5vW}dC|INy+G@P6i}aw_B@ZC@5Q+GPS{$jAMN!JDk7Ax(4ccWh(K(-~Xwbknh%Y6pd^1ok) ztO5VT*`b(MA=1I2^H92Prg^(MQ!mo25>Q2*;_H6fhx%!f6a&I&A{lbRDehG%SbN)V zIjin8N8eWwbb+~Qr{~6*4R5{w%%?df(`X{{fw zJ&UVg19l_<@F770({27ep3o{R^O0~GDexNE-g8aPG^{Z)U!zw&C zbUD6b3t(nNUdB1NN;Qk$JsefobP*M3;Qndbe}Tx#jdfmGgO*ydYV_H@Zz8!<4K)pZST-0`~3k>Hq-RI3WH2 literal 0 HcmV?d00001