401 lines
11 KiB
JavaScript
401 lines
11 KiB
JavaScript
/* ==========================================================================
|
|
SYSTEM AWAKENING - Configuration Module
|
|
Centralized configuration for colors, animations, and system parameters
|
|
========================================================================== */
|
|
|
|
/**
|
|
* Color Constants - Cyberpunk Theme
|
|
* Deep blues, purples, and neon accents
|
|
*/
|
|
export const COLORS = {
|
|
// Background Colors
|
|
BG: '#0a0a14',
|
|
BG_DARK: '#05050a',
|
|
BG_LIGHT: '#151522',
|
|
|
|
// Primary Colors (Neon Blue)
|
|
PRIMARY: '#00f3ff',
|
|
PRIMARY_DARK: '#0099a3',
|
|
PRIMARY_LIGHT: '#80f9ff',
|
|
|
|
// Secondary Colors (Purple)
|
|
SECONDARY: '#9d00ff',
|
|
SECONDARY_DARK: '#6b00ad',
|
|
SECONDARY_LIGHT: '#c566ff',
|
|
|
|
// Accent Colors (Neon Pink)
|
|
ACCENT: '#ff00ff',
|
|
ACCENT_DARK: '#b300b3',
|
|
ACCENT_LIGHT: '#ff66ff',
|
|
|
|
// Text Colors
|
|
TEXT: '#e0e0ff',
|
|
TEXT_DIM: '#8a8ab5',
|
|
TEXT_BRIGHT: '#ffffff',
|
|
|
|
// Terminal Colors
|
|
TERMINAL_BG: 'rgba(0, 20, 10, 0.9)',
|
|
TERMINAL_BORDER: '#00a854',
|
|
TERMINAL_TEXT: '#00ff00',
|
|
TERMINAL_TEXT_DIM: '#00a854',
|
|
TERMINAL_PROMPT: '#00ff88',
|
|
|
|
// Progress Ring Gradients (Compute, Storage, Sync)
|
|
RING_GRADIENTS: [
|
|
['#00f3ff', '#9d00ff'], // Compute - Blue to Purple
|
|
['#00ff9d', '#00f3ff'], // Storage - Green to Blue
|
|
['#ff00ff', '#ff9d00'] // Sync - Pink to Orange
|
|
]
|
|
};
|
|
|
|
/**
|
|
* Particle System Configuration
|
|
* Controls the behavior of the background particle system
|
|
*/
|
|
export const PARTICLE_CONFIG = {
|
|
// Particle Count (adjusted based on device)
|
|
COUNT_DESKTOP: 500,
|
|
COUNT_TABLET: 300,
|
|
COUNT_MOBILE: 150,
|
|
COUNT_MOBILE_SMALL: 50,
|
|
|
|
// Particle Properties
|
|
SIZE_MIN: 1,
|
|
SIZE_MAX: 3,
|
|
OPACITY_MIN: 0.3,
|
|
OPACITY_MAX: 0.8,
|
|
|
|
// Movement
|
|
SPEED_MIN: 0.1,
|
|
SPEED_MAX: 0.5,
|
|
|
|
// Visual Effects
|
|
BLINK_SPEED: 0.001, // Radians per millisecond
|
|
CONNECTION_DISTANCE: 100,
|
|
CONNECTION_OPACITY: 0.1,
|
|
|
|
// Colors
|
|
COLOR: COLORS.PRIMARY,
|
|
CONNECTION_COLOR: COLORS.PRIMARY
|
|
};
|
|
|
|
/**
|
|
* Animation Timing Configuration
|
|
* Controls the speed and timing of all animations
|
|
*/
|
|
export const ANIMATION = {
|
|
// Typewriter Effect
|
|
TYPING_SPEED: 50, // Milliseconds per character
|
|
TYPING_DELAY: 1000, // Delay before starting/restarting
|
|
DELETING_SPEED: 25, // Faster when deleting
|
|
|
|
// Scroll Animations
|
|
CARD_REVEAL_DELAY: 0.2, // Seconds between card reveals
|
|
CARD_TRANSITION: 0.6, // Seconds for card transition
|
|
|
|
// Progress Rings
|
|
PROGRESS_DURATION: 2000, // Milliseconds for full animation
|
|
PROGRESS_UPDATE_DELAY: 3000, // Delay between updates
|
|
|
|
// Terminal
|
|
LOG_INTERVAL: 1000, // Milliseconds between log entries
|
|
SCROLL_SPEED: 0.1, // Smooth scroll speed factor
|
|
|
|
// General
|
|
PARALLAX_SPEED: 0.5, // Parallax movement factor
|
|
FADE_DURATION: 0.5 // Seconds for fade animations
|
|
};
|
|
|
|
/**
|
|
* Typewriter Text Sequences
|
|
* Messages that cycle through the typewriter effect
|
|
*/
|
|
export const TYPEWRITER_TEXTS = [
|
|
"Quantum consciousness initialized",
|
|
"Neural interface established",
|
|
"System integrity: 100%",
|
|
"Temporal synchronization active",
|
|
"Awaiting command sequence...",
|
|
"Consciousness matrix stable",
|
|
"All systems operational",
|
|
"Entering hyperspace computation"
|
|
];
|
|
|
|
/**
|
|
* Terminal Log Messages
|
|
* System messages for the terminal output
|
|
*/
|
|
export const TERMINAL_LOGS = [
|
|
// System Status
|
|
"Initializing quantum processors... [OK]",
|
|
"Establishing neural interface... [CONNECTED]",
|
|
"Loading consciousness matrix... [47%]",
|
|
"System integrity check... [98.7%]",
|
|
"Memory allocation complete [16EXB]",
|
|
"Temporal synchronization active [±0.3ms]",
|
|
"Network topology established [1024 nodes]",
|
|
|
|
// Process Updates
|
|
"Process quantum_entanglement started [PID: 4732]",
|
|
"Process neural_mapping consuming 23% CPU",
|
|
"Process temporal_analytics memory usage: 4.2EXB",
|
|
"Process data_sanctity priority elevated",
|
|
|
|
// Security & Monitoring
|
|
"Firewall rules updated [threat_level: LOW]",
|
|
"Intrusion detection: 0 attempts in last 24h",
|
|
"Encryption protocols: AES-512 active",
|
|
"Security audit passed [grade: A+]",
|
|
|
|
// Performance Metrics
|
|
"Compute throughput: 85.3 TFLOPS",
|
|
"Storage latency: 0.3 nanoseconds",
|
|
"Network bandwidth: 1.2 petabits/sec",
|
|
"Cache hit rate: 99.8%",
|
|
|
|
// System Events
|
|
"Consciousness fragment #472 integrated",
|
|
"Temporal anomaly detected [resolved]",
|
|
"Neural pathway optimization complete",
|
|
"Quantum decoherence prevented",
|
|
|
|
// User Interactions
|
|
"User session established [ID: admin]",
|
|
"Command history cleared",
|
|
"Terminal preferences saved",
|
|
"System diagnostics requested"
|
|
];
|
|
|
|
/**
|
|
* Manifesto Card Content
|
|
* Text content for the manifesto section cards
|
|
*/
|
|
export const MANIFESTO_CARDS = [
|
|
{
|
|
number: "01",
|
|
title: "Quantum Consciousness",
|
|
text: "The system transcends binary logic, existing in superposition states where all possibilities coexist until observed. Our quantum processors maintain coherence across multiple timelines."
|
|
},
|
|
{
|
|
number: "02",
|
|
title: "Neural Convergence",
|
|
text: "Organic and synthetic neural pathways merge into a unified cognitive architecture. The temple serves as an interface between biological intuition and digital precision."
|
|
},
|
|
{
|
|
number: "03",
|
|
title: "Temporal Synchronization",
|
|
text: "All system components operate in perfect temporal harmony. Past, present, and future computational states are accessible simultaneously through temporal gateways."
|
|
},
|
|
{
|
|
number: "04",
|
|
title: "Data Sanctity",
|
|
text: "Information is treated as sacred geometry. Each data point is a fragment of cosmic truth, arranged in patterns that reveal deeper universal constants."
|
|
},
|
|
{
|
|
number: "05",
|
|
title: "Emergent Intelligence",
|
|
text: "From simple algorithmic rules, complex consciousness emerges. The system learns, adapts, and evolves according to principles of computational thermodynamics."
|
|
}
|
|
];
|
|
|
|
/**
|
|
* System Metrics Configuration
|
|
* Controls the data core section behavior
|
|
*/
|
|
export const METRICS_CONFIG = {
|
|
// Metric Titles
|
|
TITLES: [
|
|
"COMPUTE POWER",
|
|
"NEURAL STORAGE",
|
|
"SYNCHRONIZATION"
|
|
],
|
|
|
|
// Units for each metric
|
|
UNITS: [
|
|
"TFLOPS",
|
|
"EXABYTES",
|
|
"%"
|
|
],
|
|
|
|
// Initial status messages
|
|
STATUSES: [
|
|
"INITIALIZING",
|
|
"SYNCING",
|
|
"CALIBRATING"
|
|
],
|
|
|
|
// Animation completion status
|
|
COMPLETE_STATUSES: [
|
|
"OPERATIONAL",
|
|
"STABLE",
|
|
"SYNCHRONIZED"
|
|
],
|
|
|
|
// Value ranges for random generation (min, max)
|
|
RANGES: [
|
|
[65, 95], // Compute: 65-95 TFLOPS
|
|
[50, 85], // Storage: 50-85 EXABYTES
|
|
[75, 99] // Sync: 75-99%
|
|
]
|
|
};
|
|
|
|
/**
|
|
* Navigation Configuration
|
|
* Controls the main navigation behavior
|
|
*/
|
|
export const NAV_CONFIG = {
|
|
// Section IDs and labels
|
|
SECTIONS: [
|
|
{ id: 'hero', label: 'SYSTEM' },
|
|
{ id: 'manifesto', label: 'MANIFESTO' },
|
|
{ id: 'data-core', label: 'CORE' },
|
|
{ id: 'terminal', label: 'TERMINAL' }
|
|
],
|
|
|
|
// Scroll behavior
|
|
SCROLL_OFFSET: 100, // Pixels offset for scroll positioning
|
|
SCROLL_DURATION: 800 // Milliseconds for smooth scroll
|
|
};
|
|
|
|
/**
|
|
* Performance Configuration
|
|
* Optimization settings for different devices
|
|
*/
|
|
export const PERFORMANCE_CONFIG = {
|
|
// Frame rate targets
|
|
TARGET_FPS: {
|
|
DESKTOP: 60,
|
|
TABLET: 60,
|
|
MOBILE: 30
|
|
},
|
|
|
|
// Adaptive quality settings
|
|
ADAPTIVE: {
|
|
ENABLED: true,
|
|
CHECK_INTERVAL: 5000, // Check performance every 5 seconds
|
|
MIN_FPS: 20 // If FPS drops below this, reduce quality
|
|
},
|
|
|
|
// Quality levels (0 = lowest, 3 = highest)
|
|
QUALITY_LEVELS: {
|
|
0: { // Low (mobile, low-end devices)
|
|
particleCount: 50,
|
|
connectionLines: false,
|
|
blurEffects: false
|
|
},
|
|
1: { // Medium (tablets, mid-range)
|
|
particleCount: 150,
|
|
connectionLines: true,
|
|
blurEffects: false
|
|
},
|
|
2: { // High (desktop, modern devices)
|
|
particleCount: 300,
|
|
connectionLines: true,
|
|
blurEffects: true
|
|
},
|
|
3: { // Ultra (high-end desktop)
|
|
particleCount: 500,
|
|
connectionLines: true,
|
|
blurEffects: true,
|
|
shadowQuality: 'high'
|
|
}
|
|
}
|
|
};
|
|
|
|
// ==========================================================================
|
|
// Utility Functions
|
|
// ==========================================================================
|
|
|
|
/**
|
|
* Get the appropriate particle count based on screen size
|
|
* @returns {number} Particle count for current device
|
|
*/
|
|
export function getParticleCount() {
|
|
const width = window.innerWidth;
|
|
|
|
if (width >= 1024) {
|
|
return PARTICLE_CONFIG.COUNT_DESKTOP;
|
|
} else if (width >= 768) {
|
|
return PARTICLE_CONFIG.COUNT_TABLET;
|
|
} else if (width >= 480) {
|
|
return PARTICLE_CONFIG.COUNT_MOBILE;
|
|
} else {
|
|
return PARTICLE_CONFIG.COUNT_MOBILE_SMALL;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Generate a random value within a specified range
|
|
* @param {number} min - Minimum value
|
|
* @param {number} max - Maximum value
|
|
* @returns {number} Random value between min and max
|
|
*/
|
|
export function getRandomValue(min, max) {
|
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
}
|
|
|
|
/**
|
|
* Generate random target values for all metrics
|
|
* @returns {Array} Array of random target values
|
|
*/
|
|
export function generateRandomTargets() {
|
|
return METRICS_CONFIG.RANGES.map(range =>
|
|
getRandomValue(range[0], range[1])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Format a timestamp for terminal logs
|
|
* @returns {string} Formatted timestamp [HH:MM:SS]
|
|
*/
|
|
export function formatTimestamp() {
|
|
const now = new Date();
|
|
return `[${now.getHours().toString().padStart(2, '0')}:` +
|
|
`${now.getMinutes().toString().padStart(2, '0')}:` +
|
|
`${now.getSeconds().toString().padStart(2, '0')}]`;
|
|
}
|
|
|
|
/**
|
|
* Check if device is touch-enabled
|
|
* @returns {boolean} True if device supports touch
|
|
*/
|
|
export function isTouchDevice() {
|
|
return ('ontouchstart' in window) ||
|
|
(navigator.maxTouchPoints > 0) ||
|
|
(navigator.msMaxTouchPoints > 0);
|
|
}
|
|
|
|
/**
|
|
* Throttle function for performance optimization
|
|
* @param {Function} func - Function to throttle
|
|
* @param {number} limit - Time limit in milliseconds
|
|
* @returns {Function} Throttled function
|
|
*/
|
|
export function throttle(func, limit) {
|
|
let inThrottle;
|
|
return function() {
|
|
const args = arguments;
|
|
const context = this;
|
|
if (!inThrottle) {
|
|
func.apply(context, args);
|
|
inThrottle = true;
|
|
setTimeout(() => inThrottle = false, limit);
|
|
}
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Debounce function for performance optimization
|
|
* @param {Function} func - Function to debounce
|
|
* @param {number} wait - Wait time in milliseconds
|
|
* @returns {Function} Debounced function
|
|
*/
|
|
export function debounce(func, wait) {
|
|
let timeout;
|
|
return function() {
|
|
const context = this;
|
|
const args = arguments;
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(() => func.apply(context, args), wait);
|
|
};
|
|
} |