73 lines
2.5 KiB
TypeScript
73 lines
2.5 KiB
TypeScript
import { user, skills } from './user';
|
|
|
|
// ============================================================================
|
|
// NAVIGATION
|
|
// ============================================================================
|
|
|
|
export const navigation = [
|
|
{ name: 'home', path: '/', icon: '~' },
|
|
{ name: 'portfolio', path: '/portfolio', icon: '📁' },
|
|
// { name: 'models', path: '/models', icon: '🎨' },
|
|
{ name: 'projects', path: '/projects', icon: '🏆' },
|
|
// { name: 'components', path: '/components', icon: '🧩' },
|
|
{ name: 'blog', path: 'https://blog.sirblob.co', icon: '📝', external: true }
|
|
];
|
|
|
|
// ============================================================================
|
|
// SITE METADATA
|
|
// ============================================================================
|
|
|
|
export const site = {
|
|
title: `${user.displayname} | Portfolio`,
|
|
description: `${user.title} - ${user.bio}`,
|
|
keywords: ['developer', 'portfolio', 'programming', ...skills.languages, ...skills.frameworks],
|
|
ogImage: '/og-image.png',
|
|
twitterHandle: '@yourusername'
|
|
};
|
|
|
|
// ============================================================================
|
|
// PAGE META (per-route)
|
|
// ============================================================================
|
|
|
|
export interface PageMeta {
|
|
title: string;
|
|
description?: string;
|
|
icon?: string; // Iconify id or path to an image (e.g. 'mdi:home' or '/icons/home.svg')
|
|
keywords?: string[];
|
|
ogImage?: string;
|
|
}
|
|
|
|
// Map route => meta. Use route paths as keys (e.g. '/', '/portfolio')
|
|
export const pageMeta: Record<string, PageMeta> = {
|
|
'/': {
|
|
title: `${user.displayname} — Home`,
|
|
description: `Home — ${user.title} portfolio and projects.`,
|
|
icon: 'mdi:home',
|
|
keywords: ['home', 'portfolio', 'about']
|
|
},
|
|
'/portfolio': {
|
|
title: `${user.displayname} — Portfolio`,
|
|
description: 'Selected projects, highlights and case studies.',
|
|
icon: 'mdi:folder-multiple',
|
|
keywords: ['projects', 'portfolio', 'showcase']
|
|
},
|
|
'/models': {
|
|
title: `${user.displayname} — 3D Models`,
|
|
description: 'A curated collection of 3D models and previews.',
|
|
icon: 'mdi:cube-outline',
|
|
keywords: ['3d', 'models', 'glb', 'gltf']
|
|
},
|
|
'/projects': {
|
|
title: `${user.displayname} — Projects`,
|
|
description: 'Hackathon projects, demos and awards.',
|
|
icon: 'mdi:trophy',
|
|
keywords: ['hackathon', 'projects', 'events']
|
|
},
|
|
'/components': {
|
|
title: `${user.displayname} — Components`,
|
|
description: 'Terminal UI components showcase and documentation.',
|
|
icon: 'mdi:puzzle',
|
|
keywords: ['components', 'ui', 'terminal', 'tui']
|
|
}
|
|
};
|