From 1942f672726515e4afdf3d520eb955ea5c6b1ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20S=C3=A1nchez?= Date: Wed, 22 Apr 2026 13:15:38 -0500 Subject: [PATCH 1/6] feat: implement Deep Obsidian aesthetic --- app/globals.css | 19 ++++++++++++++----- app/layout.tsx | 17 +++++++++++++---- components/ui/experience-card.tsx | 4 ++-- components/ui/navbar.tsx | 2 +- components/ui/project-card.tsx | 4 ++-- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/app/globals.css b/app/globals.css index d498622..3f86cd2 100644 --- a/app/globals.css +++ b/app/globals.css @@ -5,27 +5,36 @@ @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); - --font-sans: var(--font-open-sans); + --font-sans: var(--font-inter); + --font-heading: var(--font-outfit); --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-accent: var(--accent); + --color-secondary: var(--secondary); } /* Light Theme (Default) */ :root { --background: #ffffff; --foreground: #171717; - --accent: #64ACEC; + --accent: #6366f1; + --secondary: #10b981; } /* Dark Theme (Class-based) */ .dark { - --background: #0a0a0a; + --background: #050505; --foreground: #ededed; - --accent: #64ACEC; + --accent: #6366f1; + --secondary: #10b981; } body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; +} + +@layer components { + .glass-card { + @apply bg-white/5 backdrop-blur-md border border-white/10 rounded-2xl shadow-2xl; + } } \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index 7bbc5e0..33ff900 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,10 +1,15 @@ import type { Metadata, Viewport } from "next"; -import { Open_Sans } from "next/font/google"; +import { Inter, Outfit } from "next/font/google"; import "./globals.css"; import { ThemeProvider } from "@/components/theme-provider" -const openSans = Open_Sans({ - variable: "--font-open-sans", +const inter = Inter({ + variable: "--font-inter", + subsets: ["latin"], +}); + +const outfit = Outfit({ + variable: "--font-outfit", subsets: ["latin"], }); @@ -27,9 +32,13 @@ export default function RootLayout({ return ( +
+
+
+
{children} diff --git a/components/ui/experience-card.tsx b/components/ui/experience-card.tsx index 592c58c..3defe18 100644 --- a/components/ui/experience-card.tsx +++ b/components/ui/experience-card.tsx @@ -15,13 +15,13 @@ export function ExperienceCard({ experience, isEven }: ExperienceCardProps) { {/* Content Side */}
{experience.year} -

{experience.title}

+

{experience.title}

{experience.company}

{experience.description} diff --git a/components/ui/navbar.tsx b/components/ui/navbar.tsx index b9f1d34..a9a77ca 100644 --- a/components/ui/navbar.tsx +++ b/components/ui/navbar.tsx @@ -12,7 +12,7 @@ export function Navbar() {

+ ) } diff --git a/components/ui/tactile-button.tsx b/components/ui/tactile-button.tsx new file mode 100644 index 0000000..fdd81c8 --- /dev/null +++ b/components/ui/tactile-button.tsx @@ -0,0 +1,44 @@ +"use client" +import { motion } from "framer-motion" +import { ReactNode } from "react" + +interface Props { + href?: string + onClick?: () => void + className?: string + children: ReactNode +} + +export function TactileButton({ href, onClick, className = "", children }: Props) { + const isLink = href !== undefined + + const baseClasses = `relative overflow-hidden group flex items-center justify-center ${className}` + + const shineElement = ( + + ) + + if (isLink) { + return ( + + {children} + {shineElement} + + ) + } + + return ( + + {children} + {shineElement} + + ) +} From e8cf93944b492900a84e1bd97c9ad99316770a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20S=C3=A1nchez?= Date: Wed, 22 Apr 2026 13:52:24 -0500 Subject: [PATCH 4/6] update deployment --- .github/workflows/deploy.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ed7d6cf..937e265 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -7,7 +7,10 @@ name: Deploy Next.js site to Pages on: # Runs on pushes targeting the default branch push: - branches: ["main", "master", "feat/MVP"] # Including current working branch as well for testing + branches: ["master"] # Including current working branch as well for testing + + pull_request: + branches: ["master"] # Rebuild the site when a new CV is published release: From 7c90bdba0bc55c61e1f16a09eeffb74c91e3d750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20S=C3=A1nchez?= Date: Wed, 22 Apr 2026 13:55:49 -0500 Subject: [PATCH 5/6] ci: fix deploy job on PR and node 20 deprecation --- .github/workflows/deploy.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 937e265..1ae65c7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,6 +25,9 @@ permissions: pages: write id-token: write +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: @@ -92,6 +95,7 @@ jobs: # Deployment job deploy: + if: github.event_name != 'pull_request' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} From 9e9ec0d879e1830e17b603c325d7ebca02bab225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20S=C3=A1nchez?= Date: Wed, 22 Apr 2026 13:57:20 -0500 Subject: [PATCH 6/6] ci: fix yaml syntax error in deploy.yml --- .github/workflows/deploy.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1ae65c7..b906f7b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,10 +5,7 @@ name: Deploy Next.js site to Pages on: - # Runs on pushes targeting the default branch - push: - branches: ["master"] # Including current working branch as well for testing - + # Runs on pull request to master pull_request: branches: ["master"]