dodey917 commited on
Commit
f261c3e
·
verified ·
1 Parent(s): b9a675d

Change the website function what to do with it and i want you toi do what you like the website to be as anything you want i give you full permpermission to do it

Browse files
Files changed (4) hide show
  1. components/footer.js +22 -22
  2. components/navbar.js +11 -11
  3. index.html +70 -31
  4. script.js +161 -231
components/footer.js CHANGED
@@ -89,54 +89,54 @@ class CryptoFooter extends HTMLElement {
89
  <div class="footer-content">
90
  <div class="footer-grid">
91
  <div>
92
- <div class="footer-logo">DXN1</div>
93
  <p class="footer-description">
94
- The next generation decentralized finance platform built on cutting-edge blockchain technology.
95
- Join the revolution and be part of the future.
96
  </p>
97
  <div class="social-links">
98
  <a href="#" class="social-link">
99
- <i data-feather="twitter"></i>
100
  </a>
101
  <a href="#" class="social-link">
102
- <i data-feather="github"></i>
103
  </a>
104
  <a href="#" class="social-link">
105
- <i data-feather="discord"></i>
106
  </a>
107
  <a href="#" class="social-link">
108
- <i data-feather="telegram"></i>
109
  </a>
110
  </div>
111
  </div>
112
 
113
  <div>
114
- <h4 class="footer-heading">Product</h4>
115
  <div class="footer-links">
116
- <a href="#" class="footer-link">Exchange</a>
117
- <a href="#" class="footer-link">Wallet</a>
118
- <a href="#" class="footer-link">Staking</a>
119
- <a href="#" class="footer-link">NFT Marketplace</a>
120
  </div>
121
  </div>
122
 
123
  <div>
124
- <h4 class="footer-heading">Company</h4>
125
  <div class="footer-links">
126
- <a href="#" class="footer-link">About</a>
127
- <a href="#" class="footer-link">Team</a>
128
- <a href="#" class="footer-link">Careers</a>
129
- <a href="#" class="footer-link">Blog</a>
130
  </div>
131
  </div>
132
 
133
  <div>
134
- <h4 class="footer-heading">Support</h4>
135
  <div class="footer-links">
136
- <a href="#" class="footer-link">Help Center</a>
137
  <a href="#" class="footer-link">Contact</a>
138
- <a href="#" class="footer-link">Documentation</a>
139
- <a href="#" class="footer-link">API</a>
 
140
  </div>
141
  </div>
142
  </div>
@@ -144,7 +144,7 @@ class CryptoFooter extends HTMLElement {
144
  <div class="footer-bottom">
145
  <p>&copy; 2024 DXN1 Crypto Nexus. All rights reserved.</p>
146
  </div>
147
- </div>
148
  </footer>
149
  `;
150
  }
 
89
  <div class="footer-content">
90
  <div class="footer-grid">
91
  <div>
92
+ <div class="footer-logo">NEXUS</div>
93
  <p class="footer-description">
94
+ A creative studio pushing the boundaries of digital art and interactive media.
95
+ We transform ideas into stunning visual experiences.
96
  </p>
97
  <div class="social-links">
98
  <a href="#" class="social-link">
99
+ <i data-feather="instagram"></i>
100
  </a>
101
  <a href="#" class="social-link">
102
+ <i data-feather="dribbble"></i>
103
  </a>
104
  <a href="#" class="social-link">
105
+ <i data-feather="behance"></i>
106
  </a>
107
  <a href="#" class="social-link">
108
+ <i data-feather="linkedin"></i>
109
  </a>
110
  </div>
111
  </div>
112
 
113
  <div>
114
+ <h4 class="footer-heading">Services</h4>
115
  <div class="footer-links">
116
+ <a href="#" class="footer-link">Digital Art</a>
117
+ <a href="#" class="footer-link">Interactive Media</a>
118
+ <a href="#" class="footer-link">Motion Graphics</a>
119
+ <a href="#" class="footer-link">Web Design</a>
120
  </div>
121
  </div>
122
 
123
  <div>
124
+ <h4 class="footer-heading">Studio</h4>
125
  <div class="footer-links">
126
+ <a href="#" class="footer-link">About Us</a>
127
+ <a href="#" class="footer-link">Our Team</a>
128
+ <a href="#" class="footer-link">Process</a>
129
+ <a href="#" class="footer-link">Testimonials</a>
130
  </div>
131
  </div>
132
 
133
  <div>
134
+ <h4 class="footer-heading">Connect</h4>
135
  <div class="footer-links">
 
136
  <a href="#" class="footer-link">Contact</a>
137
+ <a href="#" class="footer-link">Collaborate</a>
138
+ <a href="#" class="footer-link">Portfolio</a>
139
+ <a href="#" class="footer-link">Blog</a>
140
  </div>
141
  </div>
142
  </div>
 
144
  <div class="footer-bottom">
145
  <p>&copy; 2024 DXN1 Crypto Nexus. All rights reserved.</p>
146
  </div>
147
+ </div>
148
  </footer>
149
  `;
150
  }
components/navbar.js CHANGED
@@ -30,6 +30,7 @@ class CryptoNavbar extends HTMLElement {
30
  color: white;
31
  text-decoration: none;
32
  }
 
33
  .nav-links {
34
  display: flex;
35
  gap: 2rem;
@@ -46,7 +47,8 @@ class CryptoNavbar extends HTMLElement {
46
  .nav-link:hover {
47
  color: #3b82f6;
48
  }
49
- .mobile-menu-btn {
 
50
  display: none;
51
  background: none;
52
  border: none;
@@ -65,23 +67,21 @@ class CryptoNavbar extends HTMLElement {
65
  }
66
  </style>
67
  <nav class="navbar">
68
- <a href="/" class="logo">DXN1</a>
69
  <div class="nav-links">
70
- <a href="/" class="nav-link">Home</a>
71
- <a href="bar.html" class="nav-link">Bar</a>
72
- <a href="#features" class="nav-link">Features</a>
73
  <a href="#about" class="nav-link">About</a>
74
- <a href="#tokenomics" class="nav-link">Tokenomics</a>
75
- <a href="#roadmap" class="nav-link">Roadmap</a>
76
- <button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg font-semibold transition-all duration-300">
77
- Connect Wallet
78
  </button>
79
  </div>
80
- <button class="mobile-menu-btn">
81
  <i data-feather="menu"></i>
82
  </button>
83
  </nav>
84
- `;
85
  }
86
  }
87
 
 
30
  color: white;
31
  text-decoration: none;
32
  }
33
+
34
  .nav-links {
35
  display: flex;
36
  gap: 2rem;
 
47
  .nav-link:hover {
48
  color: #3b82f6;
49
  }
50
+
51
+ .mobile-menu-btn {
52
  display: none;
53
  background: none;
54
  border: none;
 
67
  }
68
  </style>
69
  <nav class="navbar">
70
+ <a href="/" class="logo">NEXUS</a>
71
  <div class="nav-links">
72
+ <a href="#portfolio" class="nav-link">Portfolio</a>
73
+ <a href="#services" class="nav-link">Services</a>
 
74
  <a href="#about" class="nav-link">About</a>
75
+ <a href="#gallery" class="nav-link">Gallery</a>
76
+ <button class="bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-lg font-semibold transition-all duration-300">
77
+ Start Project
 
78
  </button>
79
  </div>
80
+ <button class="mobile-menu-btn">
81
  <i data-feather="menu"></i>
82
  </button>
83
  </nav>
84
+ `;
85
  }
86
  }
87
 
index.html CHANGED
@@ -3,8 +3,8 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>DXN1 - Crypto Nexus</title>
7
- <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
  <link rel="stylesheet" href="style.css">
9
  <script src="https://cdn.tailwindcss.com"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
@@ -22,59 +22,98 @@
22
  <!-- Hero Content -->
23
  <div class="relative z-10 text-center px-4 max-w-4xl mx-auto">
24
  <h1 class="text-6xl md:text-8xl font-bold text-white mb-6">
25
- DXN1
26
  </h1>
27
- <p class="text-xl md:text-2xl text-blue-300 mb-8">
28
- The Future of Decentralized Finance
29
  </p>
30
  <p class="text-lg text-gray-300 mb-12 max-w-2xl mx-auto">
31
- Experience the next generation of cryptocurrency with our innovative blockchain technology.
32
- Connect, trade, and grow in the decentralized ecosystem.
33
  </p>
34
  <div class="flex flex-col sm:flex-row gap-4 justify-center">
35
- <button class="bg-blue-600 hover:bg-blue-700 text-white px-8 py-4 rounded-lg font-semibold transition-all duration-300 transform hover:scale-105">
36
- Get Started
37
  </button>
38
- <button class="border-2 border-blue-500 text-blue-400 hover:bg-blue-500 hover:text-white px-8 py-4 rounded-lg font-semibold transition-all duration-300">
39
- Learn More
40
  </button>
41
  </div>
42
- </div>
43
  </section>
44
-
45
- <!-- Features Section -->
46
- <section class="py-20 px-4">
47
  <div class="max-w-6xl mx-auto">
48
  <h2 class="text-4xl md:text-5xl font-bold text-white text-center mb-16">
49
- Why Choose DXN1?
50
  </h2>
51
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
52
- <div class="bg-gray-800 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300">
53
- <div class="text-blue-400 mb-4">
54
- <i data-feather="shield" class="w-12 h-12"></i>
55
  </div>
56
- <h3 class="text-2xl font-bold text-white mb-4">Secure</h3>
57
- <p class="text-gray-300">Military-grade encryption and decentralized architecture ensure your assets are always safe.</p>
58
  </div>
59
- <div class="bg-gray-800 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300">
60
  <div class="text-blue-400 mb-4">
61
- <i data-feather="zap" class="w-12 h-12"></i>
62
  </div>
63
- <h3 class="text-2xl font-bold text-white mb-4">Fast</h3>
64
- <p class="text-gray-300">Lightning-fast transactions with near-zero fees across our global network.</p>
65
  </div>
66
- <div class="bg-gray-800 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300">
67
- <div class="text-blue-400 mb-4">
68
- <i data-feather="users" class="w-12 h-12"></i>
69
  </div>
70
- <h3 class="text-2xl font-bold text-white mb-4">Community</h3>
71
- <p class="text-gray-300">Join a thriving community of developers, traders, and blockchain enthusiasts.</p>
72
  </div>
73
  </div>
74
  </div>
75
  </section>
76
 
77
- <!-- Footer Component -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  <crypto-footer></crypto-footer>
79
 
80
  <!-- Web Components -->
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Nexus Creative Studio - Digital Art & Interactive Media</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
  <link rel="stylesheet" href="style.css">
9
  <script src="https://cdn.tailwindcss.com"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
 
22
  <!-- Hero Content -->
23
  <div class="relative z-10 text-center px-4 max-w-4xl mx-auto">
24
  <h1 class="text-6xl md:text-8xl font-bold text-white mb-6">
25
+ NEXUS
26
  </h1>
27
+ <p class="text-xl md:text-2xl text-purple-300 mb-8">
28
+ Creative Studio & Digital Art Collective
29
  </p>
30
  <p class="text-lg text-gray-300 mb-12 max-w-2xl mx-auto">
31
+ Where imagination meets technology. We create immersive digital experiences,
32
+ stunning visual art, and interactive media that captivates and inspires.
33
  </p>
34
  <div class="flex flex-col sm:flex-row gap-4 justify-center">
35
+ <button class="bg-purple-600 hover:bg-purple-700 text-white px-8 py-4 rounded-lg font-semibold transition-all duration-300 transform hover:scale-105">
36
+ View Portfolio
37
  </button>
38
+ <button class="border-2 border-purple-500 text-purple-400 hover:bg-purple-500 hover:text-white px-8 py-4 rounded-lg font-semibold transition-all duration-300">
39
+ Our Work
40
  </button>
41
  </div>
42
+ </div>
43
  </section>
44
+ <!-- Creative Showcase Section -->
45
+ <section class="py-20 px-4" id="portfolio">
 
46
  <div class="max-w-6xl mx-auto">
47
  <h2 class="text-4xl md:text-5xl font-bold text-white text-center mb-16">
48
+ Our Creative Magic
49
  </h2>
50
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
51
+ <div class="bg-gradient-to-br from-purple-900 to-indigo-900 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300 border border-purple-500/20">
52
+ <div class="text-purple-400 mb-4">
53
+ <i data-feather="palette" class="w-12 h-12"></i>
54
  </div>
55
+ <h3 class="text-2xl font-bold text-white mb-4">Digital Art</h3>
56
+ <p class="text-gray-300">Breathtaking visual narratives, surreal landscapes, and abstract compositions that push creative boundaries.</p>
57
  </div>
58
+ <div class="bg-gradient-to-br from-blue-900 to-cyan-900 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300 border border-blue-500/20">
59
  <div class="text-blue-400 mb-4">
60
+ <i data-feather="cpu" class="w-12 h-12"></i>
61
  </div>
62
+ <h3 class="text-2xl font-bold text-white mb-4">Interactive Media</h3>
63
+ <p class="text-gray-300">Immersive web experiences, interactive installations, and responsive digital environments.</p>
64
  </div>
65
+ <div class="bg-gradient-to-br from-pink-900 to-red-900 rounded-xl p-8 hover:transform hover:scale-105 transition-all duration-300 border border-pink-500/20">
66
+ <div class="text-pink-400 mb-4">
67
+ <i data-feather="film" class="w-12 h-12"></i>
68
  </div>
69
+ <h3 class="text-2xl font-bold text-white mb-4">Motion Design</h3>
70
+ <p class="text-gray-300">Dynamic animations, cinematic sequences, and visual storytelling that brings ideas to life.</p>
71
  </div>
72
  </div>
73
  </div>
74
  </section>
75
 
76
+ <!-- Gallery Preview Section -->
77
+ <section class="py-20 px-4 bg-gray-800/50">
78
+ <div class="max-w-6xl mx-auto">
79
+ <h2 class="text-4xl md:text-5xl font-bold text-white text-center mb-16">
80
+ Featured Works
81
+ </h2>
82
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
83
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-purple-600 to-pink-600 h-64">
84
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
85
+ <span class="text-white font-semibold">Neon Dreams</span>
86
+ </div>
87
+ </div>
88
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-blue-600 to-cyan-600 h-64">
89
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
90
+ <span class="text-white font-semibold">Digital Horizons</span>
91
+ </div>
92
+ </div>
93
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-green-600 to-emerald-600 h-64">
94
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
95
+ <span class="text-white font-semibold">Nature Code</span>
96
+ </div>
97
+ </div>
98
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-orange-600 to-red-600 h-64">
99
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
100
+ <span class="text-white font-semibold">Urban Pulse</span>
101
+ </div>
102
+ </div>
103
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-indigo-600 to-purple-600 h-64">
104
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
105
+ <span class="text-white font-semibold">Cosmic Dance</span>
106
+ </div>
107
+ </div>
108
+ <div class="relative group overflow-hidden rounded-xl bg-gradient-to-br from-teal-600 to-blue-600 h-64">
109
+ <div class="absolute inset-0 bg-black/30 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
110
+ <span class="text-white font-semibold">Liquid Thoughts</span>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </section>
116
+ <!-- Footer Component -->
117
  <crypto-footer></crypto-footer>
118
 
119
  <!-- Web Components -->
script.js CHANGED
@@ -1,11 +1,13 @@
1
- // Network Animation for DXN1 Crypto Nexus
2
- class NetworkAnimation {
 
3
  constructor(canvas) {
4
  this.canvas = canvas;
5
  this.ctx = canvas.getContext('2d');
6
  this.particles = [];
7
- this.connections = [];
8
- this.mouse = { x: 0, y: 0, radius: 150 };
 
9
 
10
  this.init();
11
  this.animate();
@@ -14,21 +16,42 @@ class NetworkAnimation {
14
 
15
  init() {
16
  this.resizeCanvas();
 
17
 
18
- // Create particles
19
- const particleCount = Math.min(50, Math.floor(window.innerWidth / 20));
20
  for (let i = 0; i < particleCount; i++) {
21
  this.particles.push({
22
  x: Math.random() * this.canvas.width,
23
  y: Math.random() * this.canvas.height,
24
- vx: (Math.random() - 0.5) * 2,
25
- vy: (Math.random() - 0.5) * 2,
26
- radius: Math.random() * 3 + 2,
27
- originalRadius: Math.random() * 3 + 2
 
 
 
 
28
  });
29
  }
30
  }
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  resizeCanvas() {
33
  this.canvas.width = window.innerWidth;
34
  this.canvas.height = window.innerHeight;
@@ -50,131 +73,148 @@ class NetworkAnimation {
50
 
51
  animate() {
52
  requestAnimationFrame(() => this.animate());
53
- this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
54
 
 
 
 
 
 
55
  this.updateParticles();
 
56
  this.drawConnections();
57
- this.drawParticles();
58
- this.checkForDNDFormation();
59
  }
60
 
61
  updateParticles() {
62
- this.particles.forEach(particle => {
63
- // Move particles
64
- particle.x += particle.vx;
65
- particle.y += particle.vy;
66
-
67
- // Bounce off walls
68
- if (particle.x < 0 || particle.x > this.canvas.width) particle.vx *= -1;
69
- if (particle.y < 0 || particle.y > this.canvas.height) particle.vy *= -1;
 
 
70
 
71
- // Mouse interaction
72
  if (this.mouse.x && this.mouse.y) {
73
- const dx = particle.x - this.mouse.x;
74
- const dy = particle.y - this.mouse.y;
75
  const distance = Math.sqrt(dx * dx + dy * dy);
76
 
77
  if (distance < this.mouse.radius) {
78
- const angle = Math.atan2(dy, dx);
79
  const force = (this.mouse.radius - distance) / this.mouse.radius;
 
 
 
 
80
 
81
- particle.vx += Math.cos(angle) * force * 0.5;
82
- particle.vy += Math.sin(angle) * force * 0.5;
83
  }
84
  }
85
 
86
- // Apply friction
87
- particle.vx *= 0.99;
88
- particle.vy *= 0.99;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  });
90
  }
91
 
92
- drawParticles() {
93
  this.particles.forEach(particle => {
 
94
  this.ctx.beginPath();
95
  this.ctx.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2);
96
 
97
- // Create gradient for particles
98
- const gradient = this.ctx.createRadialGradient(
99
- particle.x, particle.y, 0,
100
- particle.x, particle.y, particle.radius
101
- );
102
- gradient.addColorStop(0, 'rgba(59, 130, 246, 1)');
103
- gradient.addColorStop(1, 'rgba(59, 130, 246, 0.3)');
104
 
105
- this.ctx.fillStyle = gradient;
 
 
 
 
 
106
  this.ctx.fill();
 
107
  });
108
  }
109
 
110
  drawConnections() {
111
- this.ctx.strokeStyle = 'rgba(59, 130, 246, 0.3)';
112
- this.ctx.lineWidth = 1;
113
-
114
  for (let i = 0; i < this.particles.length; i++) {
115
  for (let j = i + 1; j < this.particles.length; j++) {
116
  const dx = this.particles[i].x - this.particles[j].x;
117
  const dy = this.particles[i].y - this.particles[j].y;
118
  const distance = Math.sqrt(dx * dx + dy * dy);
119
 
120
- if (distance < 150) {
 
 
 
 
 
121
  this.ctx.beginPath();
122
  this.ctx.moveTo(this.particles[i].x, this.particles[i].y);
123
  this.ctx.lineTo(this.particles[j].x, this.particles[j].y);
124
-
125
- // Adjust opacity based on distance
126
- const opacity = 1 - (distance / 150);
127
- this.ctx.strokeStyle = `rgba(59, 130, 246, ${opacity * 0.3})`;
128
  this.ctx.stroke();
129
  }
130
  }
131
  }
132
  }
133
 
134
- checkForDNDFormation() {
135
- // Check if particles are forming a DND pattern (clustered in center)
136
- let centerX = this.canvas.width / 2;
137
- let centerY = this.canvas.height / 2;
138
- let clusterRadius = 200;
139
- let particlesInCluster = 0;
140
-
141
- this.particles.forEach(particle => {
142
- const dx = particle.x - centerX;
143
- const dy = particle.y - centerY;
144
- const distance = Math.sqrt(dx * dx + dy * dy);
145
-
146
- if (distance < clusterRadius) {
147
- particlesInCluster++;
148
- }
149
- });
150
-
151
- // If enough particles are clustered, show DND effect
152
- if (particlesInCluster > this.particles.length * 0.7) {
153
- this.showDNDEffect();
154
  }
155
  }
156
 
157
- showDNDEffect() {
158
- // Create a temporary DND visualization
 
 
 
159
  this.ctx.save();
160
- this.ctx.globalAlpha = 0.8;
161
- this.ctx.fillStyle = 'rgba(59, 130, 246, 0.1)';
162
- this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
 
164
- // Draw DND text in the center
165
- this.ctx.font = 'bold 48px Inter';
166
- this.ctx.fillStyle = 'rgba(255, 255, 255, 0.9)';
167
- this.ctx.textAlign = 'center';
168
- this.ctx.fillText('DND', this.canvas.width / 2, this.canvas.height / 2);
169
  this.ctx.restore();
170
-
171
- // Reset after showing effect
172
- setTimeout(() => {
173
- this.particles.forEach(particle => {
174
- particle.vx = (Math.random() - 0.5) * 4;
175
- particle.vy = (Math.random() - 0.5) * 4;
176
- });
177
- }, 1000);
178
  }
179
  }
180
 
@@ -182,158 +222,38 @@ class NetworkAnimation {
182
  document.addEventListener('DOMContentLoaded', function() {
183
  const canvas = document.getElementById('networkCanvas');
184
  if (canvas) {
185
- new NetworkAnimation(canvas);
186
  }
 
 
 
187
  });
188
- // Crypto Bar Data Fetching
189
- class CryptoBar {
190
- constructor() {
191
- this.cryptoDataContainer = document.getElementById('cryptoData');
192
- this.tradingPairsContainer = document.getElementById('tradingPairs');
193
- this.marketStatsContainer = document.getElementById('marketStats');
194
-
195
- if (this.cryptoDataContainer) {
196
- this.init();
197
- }
198
- }
199
-
200
- async init() {
201
- await this.fetchCryptoData();
202
- await this.fetchTradingPairs();
203
- await this.fetchMarketStats();
204
- }
205
 
206
- async fetchCryptoData() {
207
- try {
208
- // Using CoinGecko API for cryptocurrency data
209
- const response = await fetch('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin,ethereum,binancecoin,ripple&order=market_cap_desc&per_page=4&page=1&sparkline=false');
210
- const data = await response.json();
211
-
212
- this.renderCryptoData(data);
213
- } catch (error) {
214
- console.error('Error fetching crypto data:', error);
215
- this.renderError(this.cryptoDataContainer, 'Failed to load market data');
216
- }
217
- }
218
-
219
- async fetchTradingPairs() {
220
- try {
221
- // Using Binance API for trading pairs (fallback to static data if CORS issues)
222
- const tradingPairs = [
223
- { pair: 'BTC/USDT', price: '$65,432.10', change: '+2.34%', volume: '$28.5B' },
224
- { pair: 'ETH/USDT', price: '$3,456.78', change: '+1.23%', volume: '$15.2B' },
225
- { pair: 'BNB/USDT', price: '$567.89', change: '-0.56%', volume: '$3.8B' },
226
- { pair: 'XRP/USDT', price: '$0.5678', change: '+3.45%', volume: '$2.1B' },
227
- { pair: 'ADA/USDT', price: '$0.4567', change: '+1.89%', volume: '$1.2B' }
228
- ];
229
-
230
- this.renderTradingPairs(tradingPairs);
231
- } catch (error) {
232
- console.error('Error fetching trading pairs:', error);
233
- this.renderError(this.tradingPairsContainer, 'Failed to load trading pairs');
234
- }
235
- }
236
-
237
- async fetchMarketStats() {
238
- try {
239
- // Using CoinGecko API for global market data
240
- const response = await fetch('https://api.coingecko.com/api/v3/global');
241
- const data = await response.json();
242
-
243
- this.renderMarketStats(data.data);
244
- } catch (error) {
245
- console.error('Error fetching market stats:', error);
246
- this.renderError(this.marketStatsContainer, 'Failed to load market statistics');
247
- }
248
- }
249
-
250
- renderCryptoData(data) {
251
- this.cryptoDataContainer.innerHTML = data.map(coin => `
252
- <div class="bg-gray-700 rounded-lg p-4 hover:transform hover:scale-105 transition-all duration-300 glow-on-hover">
253
- <div class="flex items-center justify-between mb-3">
254
- <div class="flex items-center">
255
- <img src="${coin.image}" alt="${coin.name}" class="w-8 h-8 rounded-full mr-3">
256
- <span class="text-white font-semibold">${coin.symbol.toUpperCase()}</span>
257
- </div>
258
- <span class="text-blue-400 font-bold">${coin.current_price.toLocaleString()}</span>
259
- </div>
260
- <div class="flex justify-between items-center">
261
- <span class="text-sm ${coin.price_change_percentage_24h >= 0 ? 'text-green-400' : 'text-red-400'}">
262
- ${coin.price_change_percentage_24h >= 0 ? '+' : ''}${coin.price_change_percentage_24h.toFixed(2)}%
263
- </span>
264
- <span class="text-gray-300 text-sm">24h</span>
265
- </div>
266
- </div>
267
- `).join('');
268
- }
269
-
270
- renderTradingPairs(pairs) {
271
- this.tradingPairsContainer.innerHTML = pairs.map(pair => `
272
- <tr class="border-b border-gray-600 hover:bg-gray-700 transition-colors">
273
- <td class="py-4 font-semibold">${pair.pair}</td>
274
- <td class="py-4 text-right">${pair.price}</td>
275
- <td class="py-4 text-right ${pair.change.includes('+') ? 'text-green-400' : 'text-red-400'}">${pair.change}</td>
276
- <td class="py-4 text-right text-gray-300">${pair.volume}</td>
277
- </tr>
278
- `).join('');
279
- }
280
-
281
- renderMarketStats(stats) {
282
- this.marketStatsContainer.innerHTML = `
283
- <div class="bg-gray-700 rounded-lg p-6 text-center">
284
- <div class="text-blue-400 mb-3">
285
- <i data-feather="dollar-sign" class="w-10 h-10 mx-auto"></i>
286
- </div>
287
- <h3 class="text-xl font-semibold text-white mb-2">Total Market Cap</h3>
288
- <p class="text-2xl font-bold text-white">${(stats.total_market_cap.usd / 1e12).toFixed(2)}T</p>
289
- </div>
290
- <div class="bg-gray-700 rounded-lg p-6 text-center">
291
- <div class="text-blue-400 mb-3">
292
- <i data-feather="trending-up" class="w-10 h-10 mx-auto"></i>
293
- </div>
294
- <h3 class="text-xl font-semibold text-white mb-2">24h Volume</h3>
295
- <p class="text-2xl font-bold text-white">${(stats.total_volume.usd / 1e9).toFixed(2)}B</p>
296
- </div>
297
- <div class="bg-gray-700 rounded-lg p-6 text-center">
298
- <div class="text-blue-400 mb-3">
299
- <i data-feather="activity" class="w-10 h-10 mx-auto"></i>
300
- </div>
301
- <h3 class="text-xl font-semibold text-white mb-2">Market Cap Change</h3>
302
- <p class="text-2xl font-bold ${stats.market_cap_change_percentage_24h_usd >= 0 ? 'text-green-400' : 'text-red-400'}">${stats.market_cap_change_percentage_24h_usd.toFixed(2)}%</p>
303
- </div>
304
- `;
305
 
306
- // Re-initialize feather icons for the new content
307
- if (feather) {
308
- feather.replace();
309
- }
310
- }
311
-
312
- renderError(container, message) {
313
- container.innerHTML = `
314
- <div class="text-center p-4 bg-red-900/20 rounded-lg border border-red-500/30">
315
- <div class="text-red-400 mb-2">
316
- <i data-feather="alert-circle" class="w-8 h-8 mx-auto"></i>
317
- </div>
318
- <p class="text-red-300">${message}</p>
319
- </div>
320
- `;
321
- }
322
  }
323
 
324
- // Initialize crypto bar when DOM is loaded
325
- document.addEventListener('DOMContentLoaded', function() {
326
- const canvas = document.getElementById('networkCanvas');
327
- if (canvas) {
328
- new NetworkAnimation(canvas);
329
- }
330
-
331
- // Initialize crypto bar if on bar page
332
- if (document.getElementById('cryptoData')) {
333
- new CryptoBar();
334
- }
335
- });
336
-
337
  // Smooth scrolling for anchor links
338
  document.querySelectorAll('a[href^="#"]').forEach(anchor => {
339
  anchor.addEventListener('click', function (e) {
@@ -347,3 +267,13 @@ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
347
  }
348
  });
349
  });
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ // Creative Studio Animation for Nexus
3
+ class CreativeParticleAnimation {
4
  constructor(canvas) {
5
  this.canvas = canvas;
6
  this.ctx = canvas.getContext('2d');
7
  this.particles = [];
8
+ this.flowField = [];
9
+ this.mouse = { x: 0, y: 0, radius: 200 };
10
+ this.time = 0;
11
 
12
  this.init();
13
  this.animate();
 
16
 
17
  init() {
18
  this.resizeCanvas();
19
+ this.createFlowField();
20
 
21
+ // Create creative particles with artistic properties
22
+ const particleCount = Math.min(80, Math.floor(window.innerWidth / 15));
23
  for (let i = 0; i < particleCount; i++) {
24
  this.particles.push({
25
  x: Math.random() * this.canvas.width,
26
  y: Math.random() * this.canvas.height,
27
+ vx: (Math.random() - 0.5) * 3,
28
+ vy: (Math.random() - 0.5) * 3,
29
+ radius: Math.random() * 4 + 1,
30
+ hue: Math.random() * 360,
31
+ saturation: 70 + Math.random() * 30,
32
+ lightness: 50 + Math.random() * 30,
33
+ life: Math.random() * 100,
34
+ maxLife: 100 + Math.random() * 50
35
  });
36
  }
37
  }
38
 
39
+ createFlowField() {
40
+ const cols = Math.floor(this.canvas.width / 50);
41
+ const rows = Math.floor(this.canvas.height / 50);
42
+
43
+ for (let x = 0; x < cols; x++) {
44
+ this.flowField[x] = [];
45
+ for (let y = 0; y < rows; y++) {
46
+ const angle = Math.sin(x * 0.01 + this.time * 0.001) * Math.cos(y * 0.01 + this.time * 0.001);
47
+ this.flowField[x][y] = {
48
+ angle: angle,
49
+ strength: Math.sin(angle) * 2
50
+ };
51
+ }
52
+ }
53
+ }
54
+
55
  resizeCanvas() {
56
  this.canvas.width = window.innerWidth;
57
  this.canvas.height = window.innerHeight;
 
73
 
74
  animate() {
75
  requestAnimationFrame(() => this.animate());
 
76
 
77
+ // Create trailing effect
78
+ this.ctx.fillStyle = 'rgba(17, 24, 39, 0.1)';
79
+ this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
80
+
81
+ this.time += 1;
82
  this.updateParticles();
83
+ this.drawParticleTrails();
84
  this.drawConnections();
85
+ this.drawArtisticElements();
 
86
  }
87
 
88
  updateParticles() {
89
+ this.particles.forEach((particle, index) => {
90
+ // Flow field influence
91
+ const col = Math.floor(particle.x / 50);
92
+ const row = Math.floor(particle.y / 50);
93
+
94
+ if (this.flowField[col] && this.flowField[col][row]) {
95
+ const field = this.flowField[col][row];
96
+ particle.vx += Math.cos(field.angle) * field.strength * 0.1;
97
+ particle.vy += Math.sin(field.angle) * field.strength * 0.1;
98
+ }
99
 
100
+ // Mouse interaction - attract particles
101
  if (this.mouse.x && this.mouse.y) {
102
+ const dx = this.mouse.x - particle.x;
103
+ const dy = this.mouse.y - particle.y;
104
  const distance = Math.sqrt(dx * dx + dy * dy);
105
 
106
  if (distance < this.mouse.radius) {
 
107
  const force = (this.mouse.radius - distance) / this.mouse.radius;
108
+ const angle = Math.atan2(dy, dx);
109
+
110
+ particle.vx += Math.cos(angle) * force * 0.8;
111
+ particle.vy += Math.sin(angle) * force * 0.8;
112
 
113
+ // Color shift on interaction
114
+ particle.hue = (particle.hue + force * 20) % 360;
115
  }
116
  }
117
 
118
+ // Natural movement
119
+ particle.x += particle.vx;
120
+ particle.y += particle.vy;
121
+ particle.vx *= 0.98;
122
+ particle.vy *= 0.98;
123
+
124
+ // Boundary bounce with creative wrapping
125
+ if (particle.x < 0 || particle.x > this.canvas.width) particle.vx *= -0.8;
126
+ if (particle.y < 0 || particle.y > this.canvas.height) particle.vy *= -0.8;
127
+
128
+ // Keep particles in bounds
129
+ particle.x = Math.max(0, Math.min(this.canvas.width, particle.x));
130
+ particle.y = Math.max(0, Math.min(this.canvas.height, particle.y));
131
+
132
+ // Particle life cycle
133
+ particle.life += 1;
134
+ if (particle.life > particle.maxLife) {
135
+ // Respawn with new properties
136
+ particle.x = Math.random() * this.canvas.width;
137
+ particle.y = Math.random() * this.canvas.height;
138
+ particle.life = 0;
139
+ particle.hue = Math.random() * 360;
140
+ }
141
  });
142
  }
143
 
144
+ drawParticleTrails() {
145
  this.particles.forEach(particle => {
146
+ // Draw particle trail
147
  this.ctx.beginPath();
148
  this.ctx.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2);
149
 
150
+ const alpha = (particle.maxLife - particle.life) / particle.maxLife;
151
+ const color = `hsla(${particle.hue}, ${particle.saturation}%, ${particle.lightness}%, ${alpha})`;
 
 
 
 
 
152
 
153
+ this.ctx.fillStyle = color;
154
+ this.ctx.fill();
155
+
156
+ // Add glow effect
157
+ this.ctx.shadowColor = color;
158
+ this.ctx.shadowBlur = 10;
159
  this.ctx.fill();
160
+ this.ctx.shadowBlur = 0;
161
  });
162
  }
163
 
164
  drawConnections() {
 
 
 
165
  for (let i = 0; i < this.particles.length; i++) {
166
  for (let j = i + 1; j < this.particles.length; j++) {
167
  const dx = this.particles[i].x - this.particles[j].x;
168
  const dy = this.particles[i].y - this.particles[j].y;
169
  const distance = Math.sqrt(dx * dx + dy * dy);
170
 
171
+ if (distance < 120) {
172
+ const opacity = 1 - (distance / 120);
173
+ const hue = (this.particles[i].hue + this.particles[j].hue) / 2;
174
+
175
+ this.ctx.strokeStyle = `hsla(${hue}, 80%, 60%, ${opacity * 0.3})`;
176
+ this.ctx.lineWidth = 1;
177
  this.ctx.beginPath();
178
  this.ctx.moveTo(this.particles[i].x, this.particles[i].y);
179
  this.ctx.lineTo(this.particles[j].x, this.particles[j].y);
 
 
 
 
180
  this.ctx.stroke();
181
  }
182
  }
183
  }
184
  }
185
 
186
+ drawArtisticElements() {
187
+ // Draw abstract geometric shapes
188
+ if (this.time % 300 === 0) {
189
+ this.drawGeometricShape();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  }
191
  }
192
 
193
+ drawGeometricShape() {
194
+ const centerX = this.canvas.width / 2;
195
+ const centerY = this.canvas.height / 2;
196
+ const size = 50 + Math.sin(this.time * 0.01) * 30;
197
+
198
  this.ctx.save();
199
+ this.ctx.translate(centerX, centerY);
200
+ this.ctx.rotate(this.time * 0.001);
201
+
202
+ // Draw rotating polygon
203
+ this.ctx.beginPath();
204
+ for (let i = 0; i < 6; i++) {
205
+ const angle = (i / 6) * Math.PI * 2;
206
+ const x = Math.cos(angle) * size;
207
+ const y = Math.sin(angle) * size;
208
+ if (i === 0) this.ctx.moveTo(x, y);
209
+ else this.ctx.lineTo(x, y);
210
+ }
211
+ this.ctx.closePath();
212
+
213
+ this.ctx.strokeStyle = `hsla(${(this.time * 0.5) % 360}, 70%, 70%, 0.5)`;
214
+ this.ctx.lineWidth = 2;
215
+ this.ctx.stroke();
216
 
 
 
 
 
 
217
  this.ctx.restore();
 
 
 
 
 
 
 
 
218
  }
219
  }
220
 
 
222
  document.addEventListener('DOMContentLoaded', function() {
223
  const canvas = document.getElementById('networkCanvas');
224
  if (canvas) {
225
+ new CreativeParticleAnimation(canvas);
226
  }
227
+
228
+ // Add interactive gallery effects
229
+ addGalleryInteractions();
230
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
 
232
+ // Gallery interaction effects
233
+ function addGalleryInteractions() {
234
+ const galleryItems = document.querySelectorAll('.grid > div');
235
+
236
+ galleryItems.forEach((item, index) => {
237
+ item.addEventListener('mouseenter', function() {
238
+ this.style.transform = 'scale(1.05) rotate(2deg)';
239
+ this.style.zIndex = '10';
240
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
 
242
+ item.addEventListener('mouseleave', function() {
243
+ this.style.transform = 'scale(1) rotate(0deg)';
244
+ this.style.zIndex = '1';
245
+ });
246
+
247
+ // Add click effect
248
+ item.addEventListener('click', function() {
249
+ this.classList.add('animate-pulse');
250
+ setTimeout(() => {
251
+ this.classList.remove('animate-pulse');
252
+ }, 1000);
253
+ });
254
+ });
 
 
 
255
  }
256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  // Smooth scrolling for anchor links
258
  document.querySelectorAll('a[href^="#"]').forEach(anchor => {
259
  anchor.addEventListener('click', function (e) {
 
267
  }
268
  });
269
  });
270
+
271
+ // Add scroll-based animations
272
+ window.addEventListener('scroll', function() {
273
+ const scrolled = window.pageYOffset;
274
+ const parallax = document.querySelector('#networkCanvas');
275
+
276
+ if (parallax) {
277
+ parallax.style.transform = `translateY(${scrolled * 0.5}px)`;
278
+ }
279
+ });