feat: enable viewing and downloading of CV-Cris-Charles-Garcia.pdf across portfolio and maintenance page

This commit is contained in:
ssbg04 committed 2026-09-02 22:58:42 +08:00
1 parent 457a2278f6
commit c369b7dde2
7 files changed
+52 -64

No files matched your search

Binary file not shown.
-57
View File
@@ -1,57 +0,0 @@
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Contents 4 0 R /Resources << /Font << /F1 5 0 R /F2 6 0 R >> >> >>
endobj
4 0 obj
<< /Length 380 >>
stream
BT
/F1 20 Tf
50 720 Td
(Cris Charles Garcia - Software Developer) Tj
0 -30 Td
/F2 11 Tf
(Email: crischarlesgarcia345@gmail.com | Location: Laguna, Philippines) Tj
0 -18 Td
(GitHub: github.com/ssbg04) Tj
0 -30 Td
/F1 14 Tf
(Certifications) Tj
0 -20 Td
/F2 11 Tf
(- Cisco: Computer Hardware Basics) Tj
0 -16 Td
(- Cisco: Digital Awareness) Tj
0 -16 Td
(- Cisco: Endpoint Security) Tj
0 -16 Td
(- Cisco: Introduction to Cybersecurity) Tj
ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold >>
endobj
6 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000253 00000 n
0000000685 00000 n
0000000757 00000 n
trailer
<< /Size 7 /Root 1 0 R >>
startxref
824
%%EOF
BIN
View File
Binary file not shown.
+19 -5
View File
@@ -75,16 +75,30 @@ export default function About({ settings, experience }: AboutProps) {
</a>
</div>
<div className="pt-2">
{/* Dual Action: View and Download Resume/CV */}
<div className="pt-2 grid grid-cols-2 gap-2">
<a
href={settings.resumeFile && settings.resumeFile !== '#' ? settings.resumeFile : '/Cris_Charles_Garcia_Resume.pdf'}
download="Cris_Charles_Garcia_Resume.pdf"
className="w-full inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl bg-primary-custom text-white text-xs font-medium hover:bg-primary-custom/90 transition-all cursor-pointer"
href={settings.resumeFile && settings.resumeFile !== '#' ? settings.resumeFile : '/CV-Cris-Charles-Garcia.pdf'}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-1.5 px-3 py-2 rounded-xl bg-primary-custom text-white text-xs font-medium hover:bg-primary-custom/90 transition-all cursor-pointer text-center"
>
<svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" strokeWidth="2" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" />
<path strokeLinecap="round" strokeLinejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
</svg>
View CV
</a>
<a
href={settings.resumeFile && settings.resumeFile !== '#' ? settings.resumeFile : '/CV-Cris-Charles-Garcia.pdf'}
download="CV-Cris-Charles-Garcia.pdf"
className="inline-flex items-center justify-center gap-1.5 px-3 py-2 rounded-xl border border-border-custom hover:border-primary-custom/40 text-foreground-custom text-xs font-medium hover:bg-primary-custom/5 transition-all cursor-pointer text-center"
>
<svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" strokeWidth="2" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
</svg>
Download Resume/CV
Download
</a>
</div>
</div>
+1 -1
View File
@@ -71,7 +71,7 @@ export const mockSiteSettings: SiteSettings = {
],
email: "crischarlesgarcia345@gmail.com",
location: "Laguna, Philippines",
resumeFile: "/Cris_Charles_Garcia_Resume.pdf"
resumeFile: "/CV-Cris-Charles-Garcia.pdf"
};
export const mockSocialLinks: SocialLink[] = [
+1 -1
View File
@@ -15,7 +15,7 @@ export const onRequest = defineMiddleware((context, next) => {
pathname === '/maintenance' ||
pathname.startsWith('/_astro') ||
pathname.startsWith('/api') ||
/\.(png|svg|ico|webp|jpg|jpeg|gif|css|js|txt|xml|json|woff2?|ttf|eot)$/i.test(pathname)
/\.(png|svg|ico|webp|jpg|jpeg|gif|css|js|txt|xml|json|woff2?|ttf|eot|pdf)$/i.test(pathname)
) {
return next();
}
+31
View File
@@ -67,6 +67,37 @@ const socialLinks = await getSocialLinks();
</div>
</div>
{/* Resume / CV Section */}
<div class="pt-4 border-t border-border-custom/60 flex flex-col gap-2.5">
<span class="text-xs font-mono uppercase tracking-wider text-muted-foreground-custom">
Resume / Curriculum Vitae
</span>
<div class="grid grid-cols-2 gap-2">
<a
href="/CV-Cris-Charles-Garcia.pdf"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center justify-center gap-1.5 px-3 py-2 rounded-xl bg-primary-custom text-white text-xs font-medium hover:bg-primary-custom/90 transition-all text-center"
>
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" />
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
</svg>
View CV
</a>
<a
href="/CV-Cris-Charles-Garcia.pdf"
download="CV-Cris-Charles-Garcia.pdf"
class="inline-flex items-center justify-center gap-1.5 px-3 py-2 rounded-xl border border-border-custom hover:border-primary-custom/40 text-foreground-custom text-xs font-medium hover:bg-primary-custom/5 transition-all text-center"
>
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
</svg>
Download PDF
</a>
</div>
</div>
</div>
{/* Understated footer */}