mirror of
https://github.com/Patiun/com.gregkilmer.www.git
synced 2026-11-08 04:08:24 +00:00
86 lines
2.4 KiB
TypeScript
86 lines
2.4 KiB
TypeScript
/**
|
|
* site.ts
|
|
* ---------------------------------------------------------------------------
|
|
* Central source of truth for site-wide config: identity, nav structure (the
|
|
* two-group nav from the spec), social links, and the tagline.
|
|
*
|
|
* Components import from here rather than hard-coding values, so a single edit
|
|
* propagates everywhere. The spec's emoji icons are mapped to mdi icon names;
|
|
* actual icon rendering happens in components via <Icon />.
|
|
*/
|
|
|
|
export interface NavItem {
|
|
/** Display label. */
|
|
label: string;
|
|
/** Route path. */
|
|
href: string;
|
|
/** mdi icon name (without the `mdi:` prefix). */
|
|
icon: string;
|
|
}
|
|
|
|
export interface NavLinkGroup {
|
|
/** The two visual groups in the top nav ("who I am" vs "what I do"). */
|
|
items: NavItem[];
|
|
}
|
|
|
|
/** Top-level identity shown in the nav/logo area. */
|
|
export const siteIdentity = {
|
|
name: 'Greg Kilmer',
|
|
/** Spec tagline; appears beside the logo. */
|
|
tagline: 'Developer. Maker. Storyteller.',
|
|
/** Spec domain. */
|
|
domain: 'gregkilmer.com',
|
|
} as const;
|
|
|
|
/**
|
|
* Primary navigation. Two groups separated by a subtle divider, per the spec.
|
|
* Left group = "who I am" (Home, About)
|
|
* Right group = "what I do" (Professional, Interests, Contact)
|
|
*/
|
|
export const navGroups: NavLinkGroup[] = [
|
|
{
|
|
items: [
|
|
{ label: 'Home', href: '/', icon: 'home' },
|
|
{ label: 'About', href: '/about', icon: 'account' },
|
|
],
|
|
},
|
|
{
|
|
items: [
|
|
{ label: 'Professional', href: '/professional', icon: 'briefcase' },
|
|
{ label: 'Interests', href: '/interests', icon: 'dice-multiple' },
|
|
{ label: 'Contact', href: '/contact', icon: 'email' },
|
|
],
|
|
},
|
|
];
|
|
|
|
/** Flat list of all nav items (handy for active-link checks / mobile menus). */
|
|
export const allNavItems: NavItem[] = navGroups.flatMap((g) => g.items);
|
|
|
|
/**
|
|
* Social links for the footer and contact page.
|
|
* TODO placeholders flagged with [Greg to fill]; URLs left generic until provided.
|
|
*/
|
|
export const socials = {
|
|
github: {
|
|
label: 'GitHub',
|
|
handle: 'Patiun',
|
|
href: 'https://github.com/patiun',
|
|
icon: 'github',
|
|
},
|
|
linkedin: {
|
|
label: 'LinkedIn',
|
|
handle: 'Gregory Kilmer',
|
|
href: 'https://www.linkedin.com/in/gregory-kilmer-36646bb5/',
|
|
icon: 'linkedin',
|
|
},
|
|
/*discord: {
|
|
label: 'Discord',
|
|
handle: '[Greg to fill]',
|
|
href: '#',
|
|
icon: 'discord',
|
|
},*/
|
|
} as const;
|
|
|
|
/** Spec footer microcopy. */
|
|
export const footerMicrocopy = 'Built with intention. Powered by caffeine.';
|