AgentVikram commited on
Commit
c487bfb
·
verified ·
1 Parent(s): d576558

this is too generic. I want more futuristic, minimal and super cool

Browse files
Files changed (5) hide show
  1. components/neon-button.js +58 -0
  2. components/podcast-player.js +24 -6
  3. index.html +8 -10
  4. script.js +68 -3
  5. style.css +47 -2
components/neon-button.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class NeonButton extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ button {
7
+ position: relative;
8
+ background: transparent;
9
+ color: var(--neon-primary);
10
+ border: 2px solid var(--neon-primary);
11
+ padding: 1rem 2.5rem;
12
+ font-size: 1rem;
13
+ font-weight: 500;
14
+ text-transform: uppercase;
15
+ letter-spacing: 0.1em;
16
+ cursor: pointer;
17
+ transition: all 0.3s ease;
18
+ overflow: hidden;
19
+ z-index: 1;
20
+ }
21
+
22
+ button:hover {
23
+ color: var(--bg-dark);
24
+ box-shadow: 0 0 10px var(--neon-primary),
25
+ 0 0 20px var(--neon-primary),
26
+ 0 0 40px var(--neon-primary);
27
+ }
28
+
29
+ button::before {
30
+ content: '';
31
+ position: absolute;
32
+ top: 0;
33
+ left: -100%;
34
+ width: 100%;
35
+ height: 100%;
36
+ background: linear-gradient(90deg, transparent, var(--neon-primary), transparent);
37
+ transition: 0.5s;
38
+ z-index: -1;
39
+ }
40
+
41
+ button:hover::before {
42
+ left: 100%;
43
+ }
44
+
45
+ .icon {
46
+ margin-right: 0.5rem;
47
+ vertical-align: middle;
48
+ }
49
+ </style>
50
+ <button>
51
+ <i data-feather="${this.getAttribute('icon')}" class="icon"></i>
52
+ <slot></slot>
53
+ </button>
54
+ `;
55
+ feather.replace();
56
+ }
57
+ }
58
+ customElements.define('neon-button', NeonButton);
components/podcast-player.js CHANGED
@@ -4,13 +4,31 @@ class PodcastPlayer extends HTMLElement {
4
  this.shadowRoot.innerHTML = `
5
  <style>
6
  .player-container {
7
- background: linear-gradient(to right, #1a1a2e, #16213e);
8
- border-radius: 12px;
9
- padding: 1.5rem;
10
- color: white;
11
- margin-top: 2rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  }
13
- .player-header {
14
  display: flex;
15
  align-items: center;
16
  margin-bottom: 1rem;
 
4
  this.shadowRoot.innerHTML = `
5
  <style>
6
  .player-container {
7
+ background: rgba(10, 10, 20, 0.8);
8
+ border: 1px solid rgba(0, 240, 255, 0.2);
9
+ border-radius: 0;
10
+ padding: 2rem;
11
+ color: var(--text-primary);
12
+ margin-top: 3rem;
13
+ backdrop-filter: blur(10px);
14
+ box-shadow: 0 0 30px rgba(0, 240, 255, 0.1);
15
+ position: relative;
16
+ overflow: hidden;
17
+ }
18
+
19
+ .player-container::before {
20
+ content: '';
21
+ position: absolute;
22
+ top: -2px;
23
+ left: -2px;
24
+ right: -2px;
25
+ bottom: -2px;
26
+ background: linear-gradient(45deg, var(--neon-primary), var(--neon-secondary));
27
+ z-index: -1;
28
+ filter: blur(5px);
29
+ opacity: 0.3;
30
  }
31
+ .player-header {
32
  display: flex;
33
  align-items: center;
34
  margin-bottom: 1rem;
index.html CHANGED
@@ -30,13 +30,13 @@
30
  </head>
31
  <body class="bg-gray-50 dark:bg-gray-900 min-h-screen">
32
  <custom-navbar></custom-navbar>
33
-
34
- <main class="container mx-auto px-4 py-8">
35
- <section class="text-center mb-16">
36
- <h1 class="text-4xl md:text-6xl font-bold bg-gradient-to-r from-primary-500 to-secondary-500 bg-clip-text text-transparent mb-4">
37
- MindMeld SummarAIzer
38
  </h1>
39
- <p class="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto">
40
  Transform any content into digestible knowledge with AI-powered summaries, mind maps, and podcast-style audio overviews.
41
  </p>
42
  </section>
@@ -44,10 +44,8 @@
44
  <section class="max-w-4xl mx-auto bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6 mb-16">
45
  <div class="flex flex-col md:flex-row gap-4 mb-6">
46
  <div class="relative flex-1">
47
- <button class="w-full py-3 px-4 rounded-lg bg-primary-500 hover:bg-primary-600 text-white font-medium transition">
48
- <i data-feather="upload" class="inline mr-2"></i> Upload File (PDF, DOCX, PPTX, MP3, MP4)
49
- </button>
50
- <input type="file" class="absolute inset-0 w-full h-full opacity-0 cursor-pointer" accept=".pdf,.docx,.pptx,.mp3,.mp4,.jpg,.png" multiple>
51
  </div>
52
  <div class="flex-1">
53
  <input type="text" placeholder="Enter YouTube/Article URL" class="w-full py-3 px-4 rounded-lg bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 font-medium transition focus:outline-none focus:ring-2 focus:ring-primary-500">
 
30
  </head>
31
  <body class="bg-gray-50 dark:bg-gray-900 min-h-screen">
32
  <custom-navbar></custom-navbar>
33
+ <div class="scanlines"></div>
34
+ <main class="container mx-auto px-4 py-12 max-w-7xl">
35
+ <section class="text-center mb-20">
36
+ <h1 class="text-5xl md:text-7xl font-bold bg-gradient-to-r from-cyan-400 to-purple-500 bg-clip-text text-transparent mb-6 animate-neon-glow">
37
+ <span class="inline-block animate-float">NEURAL</span> <span class="inline-block animate-float delay-100">SYNTHESIS</span>
38
  </h1>
39
+ <p class="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto">
40
  Transform any content into digestible knowledge with AI-powered summaries, mind maps, and podcast-style audio overviews.
41
  </p>
42
  </section>
 
44
  <section class="max-w-4xl mx-auto bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6 mb-16">
45
  <div class="flex flex-col md:flex-row gap-4 mb-6">
46
  <div class="relative flex-1">
47
+ <neon-button icon="upload">Upload File</neon-button>
48
+ <input type="file" class="absolute inset-0 w-full h-full opacity-0 cursor-pointer" accept=".pdf,.docx,.pptx,.mp3,.mp4,.jpg,.png" multiple>
 
 
49
  </div>
50
  <div class="flex-1">
51
  <input type="text" placeholder="Enter YouTube/Article URL" class="w-full py-3 px-4 rounded-lg bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 font-medium transition focus:outline-none focus:ring-2 focus:ring-primary-500">
script.js CHANGED
@@ -1,4 +1,69 @@
1
- // Theme toggle functionality
 
2
  document.addEventListener('DOMContentLoaded', () => {
3
- // Check for saved theme preference
4
- if (localStorage.getItem('color
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ // Futuristic cursor effect
3
  document.addEventListener('DOMContentLoaded', () => {
4
+ // Create custom cursor
5
+ const cursor = document.createElement('div');
6
+ cursor.style.position = 'fixed';
7
+ cursor.style.width = '20px';
8
+ cursor.style.height = '20px';
9
+ cursor.style.borderRadius = '50%';
10
+ cursor.style.backgroundColor = 'rgba(0, 240, 255, 0.5)';
11
+ cursor.style.pointerEvents = 'none';
12
+ cursor.style.zIndex = '9999';
13
+ cursor.style.transform = 'translate(-50%, -50%)';
14
+ cursor.style.mixBlendMode = 'exclusion';
15
+ cursor.style.transition = 'transform 0.1s ease, width 0.3s ease, height 0.3s ease';
16
+ document.body.appendChild(cursor);
17
+
18
+ // Create cursor trail
19
+ const trail = document.createElement('div');
20
+ trail.style.position = 'fixed';
21
+ trail.style.width = '40px';
22
+ trail.style.height = '40px';
23
+ trail.style.borderRadius = '50%';
24
+ trail.style.border = '1px solid rgba(0, 240, 255, 0.3)';
25
+ trail.style.pointerEvents = 'none';
26
+ trail.style.zIndex = '9998';
27
+ trail.style.transform = 'translate(-50%, -50%)';
28
+ trail.style.transition = 'transform 0.4s ease, opacity 0.4s ease';
29
+ document.body.appendChild(trail);
30
+
31
+ document.addEventListener('mousemove', (e) => {
32
+ cursor.style.left = `${e.clientX}px`;
33
+ cursor.style.top = `${e.clientY}px`;
34
+
35
+ setTimeout(() => {
36
+ trail.style.left = `${e.clientX}px`;
37
+ trail.style.top = `${e.clientY}px`;
38
+ trail.style.opacity = '1';
39
+ }, 100);
40
+ });
41
+
42
+ document.addEventListener('mouseleave', () => {
43
+ trail.style.opacity = '0';
44
+ });
45
+
46
+ document.addEventListener('mousedown', () => {
47
+ cursor.style.width = '15px';
48
+ cursor.style.height = '15px';
49
+ });
50
+
51
+ document.addEventListener('mouseup', () => {
52
+ cursor.style.width = '20px';
53
+ cursor.style.height = '20px';
54
+ });
55
+
56
+ // Add hover effects
57
+ const hoverElements = document.querySelectorAll('a, button, [data-hover]');
58
+ hoverElements.forEach(el => {
59
+ el.addEventListener('mouseenter', () => {
60
+ cursor.style.width = '40px';
61
+ cursor.style.height = '40px';
62
+ cursor.style.backgroundColor = 'rgba(255, 0, 240, 0.7)';
63
+ });
64
+ el.addEventListener('mouseleave', () => {
65
+ cursor.style.width = '20px';
66
+ cursor.style.height = '20px';
67
+ cursor.style.backgroundColor = 'rgba(0, 240, 255, 0.5)';
68
+ });
69
+ });
style.css CHANGED
@@ -1,10 +1,55 @@
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
 
 
 
 
 
 
 
 
2
 
3
  body {
4
- font-family: 'Inter', sans-serif;
5
- transition: background-color 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  }
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  /* Custom scrollbar */
9
  ::-webkit-scrollbar {
10
  width: 8px;
 
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
2
+ :root {
3
+ --neon-primary: #00f0ff;
4
+ --neon-secondary: #ff00f0;
5
+ --bg-dark: #0a0a12;
6
+ --bg-light: #f5f5ff;
7
+ --text-primary: #e0e0ff;
8
+ --text-secondary: #a0a0c0;
9
+ }
10
 
11
  body {
12
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
13
+ background: var(--bg-dark);
14
+ color: var(--text-primary);
15
+ transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
16
+ line-height: 1.6;
17
+ overflow-x: hidden;
18
+ }
19
+
20
+ @keyframes neon-glow {
21
+ 0%, 100% { text-shadow: 0 0 10px var(--neon-primary), 0 0 20px var(--neon-primary); }
22
+ 50% { text-shadow: 0 0 5px var(--neon-primary), 0 0 10px var(--neon-primary); }
23
+ }
24
+
25
+ @keyframes float {
26
+ 0%, 100% { transform: translateY(0); }
27
+ 50% { transform: translateY(-10px); }
28
+ }
29
+
30
+ @keyframes scanline {
31
+ 0% { background-position: 0 -100vh; }
32
+ 100% { background-position: 0 100vh; }
33
  }
34
 
35
+ .scanlines {
36
+ position: fixed;
37
+ top: 0;
38
+ left: 0;
39
+ width: 100%;
40
+ height: 100%;
41
+ background: linear-gradient(
42
+ to bottom,
43
+ transparent 95%,
44
+ rgba(0, 240, 255, 0.05) 96%,
45
+ transparent 97%
46
+ );
47
+ background-size: 100% 8px;
48
+ pointer-events: none;
49
+ z-index: 9999;
50
+ animation: scanline 4s linear infinite;
51
+ mix-blend-mode: overlay;
52
+ }
53
  /* Custom scrollbar */
54
  ::-webkit-scrollbar {
55
  width: 8px;