diff --git a/.gitignore b/.gitignore
index 7707366..0905cfd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ next-env.d.ts
# AI
CLAUDE.md
+.cursor
# Personal files
gptPrompt.md
diff --git a/apps/lab/docusaurus.config.js b/apps/lab/docusaurus.config.js
index a27d3d6..a3b4221 100644
--- a/apps/lab/docusaurus.config.js
+++ b/apps/lab/docusaurus.config.js
@@ -58,6 +58,11 @@ const config = {
themeConfig: {
image: 'img/lab-social-card.jpg',
+ colorMode: {
+ defaultMode: 'dark',
+ disableSwitch: false,
+ respectPrefersColorScheme: true,
+ },
navbar: {
title: 'Lab',
logo: {
diff --git a/apps/portfolio/app/[locale]/layout.tsx b/apps/portfolio/app/[locale]/layout.tsx
index d070f8c..f567edc 100644
--- a/apps/portfolio/app/[locale]/layout.tsx
+++ b/apps/portfolio/app/[locale]/layout.tsx
@@ -144,7 +144,7 @@ export default async function LocaleLayout({
- {children}
+ {children}
diff --git a/apps/portfolio/src/shared/components/layout/Navigation.tsx b/apps/portfolio/src/shared/components/layout/Navigation.tsx
index 01b0e91..3b2ecd4 100644
--- a/apps/portfolio/src/shared/components/layout/Navigation.tsx
+++ b/apps/portfolio/src/shared/components/layout/Navigation.tsx
@@ -29,7 +29,7 @@ import { fadeInUp } from '@/shared/utils/motion';
export function Navigation() {
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const [mounted, setMounted] = useState(false);
- const { theme, setTheme } = useTheme();
+ const { theme, resolvedTheme, setTheme } = useTheme();
// Prevent hydration mismatch by only rendering theme icon after mount
useEffect(() => {
@@ -63,7 +63,7 @@ export function Navigation() {
};
const toggleTheme = () => {
- setTheme(theme === 'dark' ? 'light' : 'dark');
+ setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');
};
const localeOptions = useMemo(
@@ -97,7 +97,7 @@ export function Navigation() {
return (
- {mounted ? (theme === 'dark' ? '☀️' : '🌙') : null}
+ {mounted ? (resolvedTheme === 'dark' ? '☀️' : '🌙') : null}
{/* Mobile Menu Button */}
diff --git a/apps/portfolio/src/shared/constants/navigation.ts b/apps/portfolio/src/shared/constants/navigation.ts
index 2f94b0f..3c7c002 100644
--- a/apps/portfolio/src/shared/constants/navigation.ts
+++ b/apps/portfolio/src/shared/constants/navigation.ts
@@ -5,6 +5,8 @@
* used in Navigation and Footer components.
*/
+import { personalInfo } from './personal';
+
export interface NavSection {
key: 'home' | 'about' | 'projects' | 'contact';
sectionId: string;
@@ -35,8 +37,8 @@ export const NAV_SECTIONS: NavSection[] = [
];
export const SOCIAL_LINK_URLS = {
- github: 'https://github.com/usuario',
- linkedin: 'https://linkedin.com/in/usuario',
+ github: personalInfo.social.github,
+ linkedin: personalInfo.social.linkedin,
} as const;
export type SocialLinkKey = keyof typeof SOCIAL_LINK_URLS;
diff --git a/apps/portfolio/tests/shared/components/layout/Footer.test.tsx b/apps/portfolio/tests/shared/components/layout/Footer.test.tsx
index d4b85ad..a97b106 100644
--- a/apps/portfolio/tests/shared/components/layout/Footer.test.tsx
+++ b/apps/portfolio/tests/shared/components/layout/Footer.test.tsx
@@ -54,13 +54,16 @@ describe('Footer Component', () => {
it('should have correct href for GitHub link', () => {
renderFooter();
const githubLink = screen.getByRole('link', { name: /github/i });
- expect(githubLink).toHaveAttribute('href', 'https://github.com/usuario');
+ expect(githubLink).toHaveAttribute('href', 'https://github.com/GMNAPI');
});
it('should have correct href for LinkedIn link', () => {
renderFooter();
const linkedinLink = screen.getByRole('link', { name: /linkedin/i });
- expect(linkedinLink).toHaveAttribute('href', 'https://linkedin.com/in/usuario');
+ expect(linkedinLink).toHaveAttribute(
+ 'href',
+ 'https://www.linkedin.com/in/angel-hidalgo-barreiro'
+ );
});
it('should open social links in new tab', () => {
diff --git a/apps/portfolio/tests/shared/components/layout/Navigation.test.tsx b/apps/portfolio/tests/shared/components/layout/Navigation.test.tsx
index d7cd1c9..ae8dac2 100644
--- a/apps/portfolio/tests/shared/components/layout/Navigation.test.tsx
+++ b/apps/portfolio/tests/shared/components/layout/Navigation.test.tsx
@@ -112,10 +112,10 @@ describe('Navigation Component', () => {
});
describe('Styles', () => {
- it('should have sticky positioning', () => {
+ it('should have fixed positioning', () => {
renderNavigation();
const nav = screen.getByRole('navigation');
- expect(nav).toHaveClass('sticky');
+ expect(nav).toHaveClass('fixed');
});
it('should have proper z-index', () => {
@@ -316,6 +316,7 @@ describe('Navigation Component', () => {
mockUseTheme.mockReturnValue({
theme: 'light',
+ resolvedTheme: 'light',
setTheme: mockSetTheme,
});
@@ -332,6 +333,7 @@ describe('Navigation Component', () => {
mockUseTheme.mockReturnValue({
theme: 'dark',
+ resolvedTheme: 'dark',
setTheme: mockSetTheme,
});