feat: refine portfolio content, contact, and supporting media

This commit is contained in:
2026-09-05 20:08:57 +03:00
parent 15bcdf7cec
commit 103427f95b
53 changed files with 824 additions and 204 deletions

View File

@@ -0,0 +1,9 @@
import type { ContactContent } from './types';
// The page carries separate parts; a complete address is assembled only when
// someone interacts. This deters simple harvesting, not a determined crawler.
export const contactAddress = (email: ContactContent['email']): string =>
`${email.localPart}@${email.domain}`;
export const readableContactAddress = (email: ContactContent['email']): string =>
`${email.localPart} [at] ${email.domain.replaceAll('.', ' [dot] ')}`;