diff --git a/AGENTS.md b/AGENTS.md index f9aa570..a1af4d7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -45,7 +45,7 @@ src/ │ └── sitemap.ts # SEO sitemap │ ├── components/ -│ ├── ui/ # Pure presentational (Button, Badge, Card, Modal) +│ ├── ui/ # Pure presentational (Button, Badge, Avatar, ImageCarousel) │ │ └── *.tsx # No data fetching, minimal logic │ └── common/ # Shared layout components (Navbar, Footer, Container) │ └── *.tsx @@ -53,7 +53,6 @@ src/ ├── features/ # Domain features (encapsulated behavior + UI) │ ├── landing/ # Hero section components │ ├── language/ # Language switch logic + UI -│ ├── constructionNotice/ # Scroll guard + modal │ └── projects/ # Project cards, detail views │ ├── i18n/ # next-intl configuration diff --git a/src/app/es/page.tsx b/src/app/es/page.tsx index 5d35805..80f70ab 100644 --- a/src/app/es/page.tsx +++ b/src/app/es/page.tsx @@ -1,13 +1,14 @@ import type { Metadata } from 'next' import { JsonLd, LocalizedShell } from '@/components/common' import { HomePageClient } from '@/features/landing' +import { SIDEBAR_CONTENT_OFFSET_CLASS } from '@/features/morphNav/layout' import { buildHomeJsonLd, buildHomeMetadata } from '@/lib/seo' export const metadata: Metadata = buildHomeMetadata('es') export default function SpanishHome() { return ( - + diff --git a/src/app/globals.css b/src/app/globals.css index e0c3d53..7777052 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,5 +1,10 @@ @import "tailwindcss"; +@theme { + /* Extra breakpoint between small phones (320-419px) and large phones (420-639px). */ + --breakpoint-xs: 26.25rem; +} + /* CSS Variables for theming */ :root { --bg: #040304; @@ -29,6 +34,8 @@ html { color-scheme: dark; scroll-behavior: smooth; + /* Keep hash targets clear of the fixed 4rem header. */ + scroll-padding-top: 5rem; } body { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d433964..c8c2d3a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,4 @@ -import type { Metadata } from 'next' +import type { Metadata, Viewport } from 'next' import './globals.css' import { SITE } from '@/lib/constants' import { OG_IMAGE } from '@/lib/seo' @@ -58,6 +58,13 @@ export const metadata: Metadata = { }, } +export const viewport: Viewport = { + width: 'device-width', + initialScale: 1, + viewportFit: 'cover', + themeColor: '#040304', +} + export default function RootLayout({ children, }: Readonly<{ @@ -66,7 +73,6 @@ export default function RootLayout({ return ( - + diff --git a/src/components/common/Footer.tsx b/src/components/common/Footer.tsx index cf3fbaa..0f5b867 100644 --- a/src/components/common/Footer.tsx +++ b/src/components/common/Footer.tsx @@ -5,8 +5,13 @@ import { Container, EmailIcon, ExternalLinkIcon, GitHubIcon, LinkedInIcon } from import { LINKS, SITE, getCvUrl } from '@/lib/constants' import { useEmailCopyFeedback } from '@/lib/hooks/useEmailCopyFeedback' import { motion } from 'framer-motion' +import { cn } from '@/lib/utils' -export function Footer() { +export interface FooterProps { + className?: string +} + +export function Footer({ className }: FooterProps = {}) { const t = useTranslations('footer') const tNav = useTranslations('nav') const { locale } = useLocale() @@ -37,7 +42,7 @@ export function Footer() { ] return ( -