Files
Website/js/config.js
2025-08-17 14:16:58 +02:00

156 Zeilen
3.7 KiB
JavaScript

/**
* Central configuration file for IntelSight website
* Contains all constants, settings and selectors
*/
// Application Configuration
const CONFIG = {
// Animation Settings
ANIMATION: {
PARTICLE_COUNT: 100,
PARTICLE_SPEED: 3,
PARTICLE_SIZE_MIN: 1,
PARTICLE_SIZE_MAX: 3,
CONNECTION_DISTANCE: 100,
COUNTER_SPEED: 200,
SCROLL_THRESHOLD: 50,
FADE_DURATION: 500,
GLITCH_ITERATIONS: 5,
GLITCH_INTERVAL: 50
},
// Hero Video Settings
HERO_VIDEOS: {
ROTATION_INTERVAL: 12000, // 12 seconds per video (slower like Palantir)
FADE_DURATION: 3000, // 3 second fade transition (much slower)
VIDEO_SOURCES: [
'assets/videos/hero-tech-pattern.mp4',
'assets/videos/hero-data-flow.mp4',
'assets/videos/hero-network-viz.mp4',
'assets/videos/hero-code-abstract.mp4'
]
},
// Language Settings
I18N: {
DEFAULT_LANGUAGE: 'de',
SUPPORTED_LANGUAGES: ['de', 'en'],
STORAGE_KEY: 'intelsight_language'
},
// Trust Indicators Target Values
TRUST_INDICATORS: {
AVAILABILITY: 99.9,
AUTHORITIES_COUNT: 500,
SUPPORT_HOURS: 24
},
// Intersection Observer Settings
OBSERVER: {
THRESHOLD: 0.3,
ROOT_MARGIN: '0px'
},
// Authentication Settings
AUTH: {
SESSION_KEY: 'accountForgerAuth',
REDIRECT_PAGE: 'accountforger-video.html'
},
// Timeouts and Intervals
TIMING: {
SCROLL_HIDE_DELAY: 500,
COUNTER_UPDATE_INTERVAL: 10,
MAP_POINT_SPAWN_INTERVAL: 5000,
RESPONSE_TIMER_UPDATE: 2000,
LIVE_COUNTER_UPDATE: 3000
}
};
// DOM Selectors
const SELECTORS = {
// Navigation
NAVBAR: '.navbar',
NAV_MENU: '.nav-menu',
LANG_TOGGLE: '.lang-toggle',
// Hero Section
HERO: '.hero',
HERO_CONTENT: '.hero-content',
HERO_VIDEO: '.hero-video',
PARTICLE_CANVAS: '#particleCanvas',
SCROLL_INDICATOR: '.scroll-indicator',
// Trust Indicators
TRUST_INDICATORS: '.trust-indicators',
INDICATOR_VALUE: '.indicator-value',
// About Section
ABOUT_TABS: '.about-tab',
ABOUT_PANELS: '.about-panel',
// Products Section
EXPAND_BUTTON: '.expand-button',
TOOLS_GRID: '.tools-grid',
TOOL_CARDS: '.tool-card',
// Modals
LOGIN_MODAL: '.login-modal',
MODAL_CLOSE: '.modal-close',
// Forms
CONTACT_FORM: '#contactForm',
LOGIN_FORM: '#loginForm',
// Animation Elements
INTERACTIVE_ICON: '#interactiveIcon',
NEURAL_CANVAS: '#neuralCanvas',
DATA_PARTICLES: '#dataParticles',
LIVE_COUNTER: '#liveCounter',
RESPONSE_TIMER: '#responseTimer',
MAP_POINTS: '#mapPoints',
// Generic
TRANSLATABLE: '[data-translate]',
SMOOTH_LINKS: 'a[href^="#"]',
SKIP_NAV: '.skip-nav'
};
// CSS Classes
const CLASSES = {
ACTIVE: 'active',
SCROLLED: 'scrolled',
COLLAPSED: 'collapsed',
VISIBLE: 'visible',
LOADED: 'loaded',
EXPANDED: 'expanded',
HIDDEN: 'hidden',
// Animation Classes
FADE_IN: 'fade-in',
FADE_OUT: 'fade-out',
SLIDE_UP: 'slide-up',
SLIDE_DOWN: 'slide-down',
// Component Classes
PARTICLE: 'particle',
DATA_PARTICLE: 'data-particle',
MAP_POINT: 'map-point',
NODE: 'node',
WIDGET: 'widget',
TAB: 'tab',
PANEL: 'panel'
};
// Data Attributes
const DATA_ATTRS = {
TRANSLATE: 'data-translate',
TAB: 'data-tab',
EXPANDED: 'data-expanded',
LANG: 'data-lang',
TARGET: 'data-target',
TOOL: 'data-tool'
};
// Export for use in other modules (if using module system)
// For now, these are global constants available to all scripts