Website Redesign 7

This commit is contained in:
SirBlob committed 2025-11-28 02:40:12 +00:00
1 parent 9b9a201c3e
commit 96e2d0650c
72 files changed
+7504 -1231

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
// Central helper functions and re-exports
import { terminalSettings, pageSpeedSettings, speedPresets, user } from './config';
export type SpeedPreset = 'instant' | 'fast' | 'normal' | 'slow' | 'typewriter';
/**
* Calculate typing speed based on content length and speed multiplier
* Longer content types faster to maintain good UX
* @param contentLength - Length of the content to type
* @param speedMultiplier - Speed multiplier (0 = instant, 0.5 = 2x faster, 2 = 2x slower)
*/
export function calculateTypeSpeed(contentLength: number, speedMultiplier: number = 1): number {
// Instant mode - no delay
if (speedMultiplier === 0) return 0;
const { baseTypeSpeed, minTypeSpeed, maxTypeSpeed } = terminalSettings;
let speed: number;
// Shorter content = slower typing (more readable)
// Longer content = faster typing (less waiting)
if (contentLength < 20) speed = maxTypeSpeed;
else if (contentLength < 50) speed = baseTypeSpeed;
else if (contentLength < 100) speed = baseTypeSpeed * 0.7;
else if (contentLength < 200) speed = baseTypeSpeed * 0.5;
else speed = minTypeSpeed;
// Apply speed multiplier
return Math.max(0, Math.round(speed * speedMultiplier));
}
/**
* Get speed multiplier for a page
* @param pageName - Name of the page (e.g., 'home', 'portfolio')
*/
export function getPageSpeedMultiplier(pageName: string): number {
const setting = pageSpeedSettings[pageName];
if (setting === undefined) return 1; // Default to normal
if (typeof setting === 'number') {
return setting;
}
return speedPresets[setting] ?? 1;
}
/**
* Get the terminal prompt string
*/
export function getPrompt(path: string = '~'): string {
const { promptStyle } = terminalSettings;
switch (promptStyle) {
case 'full':
return `${user.username}@${user.hostname}:${path}$`;
case 'short':
return `${user.username}:${path}$`;
case 'minimal':
return '$';
default:
return '$';
}
}
// Barrel exports (convenience re-exports)
export { user, terminalSettings, pageSpeedSettings, speedPresets, pageMeta, site } from './config';