Website Redesign 7
This commit is contained in:
1 parent
9b9a201c3e
commit
96e2d0650c
72 files changed
+7504
-1231
No files matched your search
@@ -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';
|
||||
Reference in new issue
Block a user