Jimin Huang commited on
Commit
ffd0317
·
1 Parent(s): 27ba647

Change settings

Browse files
Files changed (1) hide show
  1. src/components/HeaderOpen.vue +86 -119
src/components/HeaderOpen.vue CHANGED
@@ -1,7 +1,7 @@
1
  <template>
2
  <header class="arena-header">
3
  <div class="top-row">
4
- <div class="logos-group">
5
  <img
6
  v-for="(logo, i) in hostingLogos"
7
  :key="'host-' + i"
@@ -11,177 +11,144 @@
11
  @click="navigateTo('/')"
12
  />
13
  </div>
14
- <div class="arena-title">Asset Market Arena</div>
 
 
15
  </div>
16
 
17
- <nav class="menu-section">
18
- <span class="menu-item" @click="navigateTo('/live')">Live Arena</span>
19
- <span class="menu-item" @click="navigateTo('/leaderboard')">Leaderboard</span>
20
- <span class="menu-item" @click="navigateTo('/add-asset')">Agent Arena</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  </nav>
22
 
 
23
  <div class="ama-gradient-rule" />
24
  </header>
25
  </template>
26
 
27
  <script>
28
  export default {
 
29
  data() {
30
  return {
31
  hostingLogos: [
32
- {
33
- name: 'DeepKin',
34
- src: new URL('../assets/images/companies_images/deepkin_logo.png', import.meta.url).href
35
- },
36
- {
37
- name: 'The Fin AI',
38
- src: new URL('../assets/images/companies_images/logofinai.png', import.meta.url).href
39
- },
40
- {
41
- name: 'NaCTeM',
42
- src: new URL('../assets/images/companies_images/nactemlogo.png', import.meta.url).href
43
- },
44
- {
45
- name: 'PAAL AI',
46
- src: new URL('../assets/images/companies_images/paalai_logo.png', import.meta.url).href
47
- }
48
  ]
49
- };
50
  },
51
  methods: {
52
- navigateTo(path) {
53
- this.$router.push(path);
54
- }
55
  }
56
- };
57
  </script>
58
 
59
- <style scoped>
60
- /* === Brand Gradient and Podium Palette === */
61
  :root {
62
- --ama-start: rgb(0, 0, 185);
63
- --ama-end: rgb(240, 0, 15);
64
- --gold: #d4af37;
65
- --silver: #c0c0c0;
66
- --bronze: #cd7f32;
 
 
67
  }
 
68
 
 
 
69
  .arena-header {
70
- display: flex;
71
- flex-direction: column;
72
- align-items: center;
73
- gap: 1.2rem;
74
- padding: 1.5rem 1rem 2rem;
75
- background: linear-gradient(135deg, #f8f9fb 0%, #ffffff 100%);
76
- border-bottom: 2px solid #e5e7eb;
77
- position: sticky;
78
- top: 0;
79
- z-index: 50;
80
  backdrop-filter: blur(10px);
81
  }
82
 
83
  .top-row {
84
- display: flex;
85
- align-items: center;
86
- justify-content: center;
87
- flex-wrap: wrap;
88
- gap: 1rem;
89
  }
90
 
91
  .logos-group {
92
- display: flex;
93
- flex-wrap: wrap;
94
- gap: 0.75rem;
95
- justify-content: center;
96
  }
97
 
98
  .logo-image {
99
- height: 18px;
100
- width: auto;
101
- object-fit: contain;
102
- cursor: pointer;
103
- filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3))
104
- drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
105
- transition: transform 0.25s ease;
106
- }
107
- .logo-image:hover {
108
- transform: translateY(-2px) scale(1.05);
109
  }
 
110
 
111
  .arena-title {
112
- font-size: 2rem;
113
- font-weight: 900;
114
- background: linear-gradient(90deg, var(--ama-start), var(--ama-end));
115
- -webkit-background-clip: text;
116
- background-clip: text;
117
- color: transparent;
118
- letter-spacing: -0.02em;
119
- text-transform: uppercase;
120
  }
121
 
122
- /* === Navigation Section === */
123
  .menu-section {
124
- display: flex;
125
- gap: 2rem;
126
- flex-wrap: wrap;
127
- justify-content: center;
128
- margin-top: 0.5rem;
129
  }
130
 
131
  .menu-item {
132
- cursor: pointer;
133
- font-size: 1.1rem;
134
- font-weight: 600;
135
- color: #1f2937;
136
- position: relative;
137
- padding-bottom: 4px;
138
- transition: color 0.25s ease;
139
  }
 
140
 
141
- .menu-item:hover {
142
- color: var(--ama-end);
 
 
143
  }
144
-
145
  .menu-item::after {
146
- content: '';
147
- position: absolute;
148
- bottom: 0;
149
- left: 0;
150
- width: 0%;
151
- height: 2px;
152
- background: linear-gradient(90deg, var(--ama-start), var(--ama-end));
153
- transition: width 0.3s ease;
154
- }
155
-
156
- .menu-item:hover::after {
157
- width: 100%;
158
  }
 
 
159
 
160
- /* === AMA Gradient Rule === */
161
  .ama-gradient-rule {
162
- width: 100%;
163
- height: 3px;
164
- margin-top: 1.25rem;
165
- background: linear-gradient(
166
  90deg,
167
- rgba(0, 0, 185, 0),
168
- rgb(0, 0, 185),
169
- rgb(240, 0, 15),
170
- rgba(240, 0, 15, 0)
171
  );
172
- border-radius: 2px;
173
  }
174
 
175
- /* === Responsive === */
176
  @media (max-width: 768px) {
177
- .arena-title {
178
- font-size: 1.5rem;
179
- }
180
- .logo-image {
181
- height: 24px;
182
- }
183
- .menu-section {
184
- gap: 1rem;
185
- }
186
  }
187
  </style>
 
1
  <template>
2
  <header class="arena-header">
3
  <div class="top-row">
4
+ <div class="logos-group" aria-label="Hosting partners">
5
  <img
6
  v-for="(logo, i) in hostingLogos"
7
  :key="'host-' + i"
 
11
  @click="navigateTo('/')"
12
  />
13
  </div>
14
+
15
+ <!-- Keep the title if you want it visible; otherwise remove this block -->
16
+ <div class="arena-title" aria-label="Asset Market Arena">Asset Market Arena</div>
17
  </div>
18
 
19
+ <nav class="menu-section" aria-label="Primary">
20
+ <span
21
+ class="menu-item"
22
+ :class="{ active: isActive('/live') }"
23
+ @click="navigateTo('/live')"
24
+ >Live Arena</span>
25
+
26
+ <span
27
+ class="menu-item"
28
+ :class="{ active: isActive('/leaderboard') }"
29
+ @click="navigateTo('/leaderboard')"
30
+ >Leaderboard</span>
31
+
32
+ <span
33
+ class="menu-item"
34
+ :class="{ active: isActive('/add-asset') }"
35
+ @click="navigateTo('/add-asset')"
36
+ >Agent Arena</span>
37
  </nav>
38
 
39
+ <!-- AMA gradient hairline -->
40
  <div class="ama-gradient-rule" />
41
  </header>
42
  </template>
43
 
44
  <script>
45
  export default {
46
+ name: 'ArenaHeader',
47
  data() {
48
  return {
49
  hostingLogos: [
50
+ { name: 'DeepKin', src: new URL('../assets/images/companies_images/deepkin_logo.png', import.meta.url).href },
51
+ { name: 'The Fin AI',src: new URL('../assets/images/companies_images/logofinai.png', import.meta.url).href },
52
+ { name: 'NaCTeM', src: new URL('../assets/images/companies_images/nactemlogo.png', import.meta.url).href },
53
+ { name: 'PAAL AI', src: new URL('../assets/images/companies_images/paalai_logo.png', import.meta.url).href },
 
 
 
 
 
 
 
 
 
 
 
 
54
  ]
55
+ }
56
  },
57
  methods: {
58
+ navigateTo(path) { this.$router.push(path) },
59
+ isActive(path) { return this.$route?.path?.startsWith(path) }
 
60
  }
61
+ }
62
  </script>
63
 
64
+ <!-- Global tokens (not scoped) -->
65
+ <style>
66
  :root {
67
+ /* AMA brand */
68
+ --ama-start: 0, 0, 185; /* rgb(0,0,185) */
69
+ --ama-end: 240, 0, 15; /* rgb(240,0,15) */
70
+ /* Podium palette (for future reuse) */
71
+ --gold: #D4AF37;
72
+ --silver: #C0C0C0;
73
+ --bronze: #CD7F32;
74
  }
75
+ </style>
76
 
77
+ <!-- Component styles -->
78
+ <style scoped>
79
  .arena-header {
80
+ position: sticky; top: 0; z-index: 50;
81
+ display: flex; flex-direction: column; align-items: center;
82
+ gap: 1rem;
83
+ padding: 18px 16px 16px;
84
+ background: linear-gradient(135deg, #fbfcff 0%, #ffffff 100%);
85
+ border-bottom: 1px solid #e5e7eb;
 
 
 
 
86
  backdrop-filter: blur(10px);
87
  }
88
 
89
  .top-row {
90
+ display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
91
+ gap: 12px;
 
 
 
92
  }
93
 
94
  .logos-group {
95
+ display: flex; flex-wrap: wrap; gap: 12px; justify-content: center;
 
 
 
96
  }
97
 
98
  .logo-image {
99
+ height: 18px; width: auto; object-fit: contain; cursor: pointer;
100
+ filter: drop-shadow(0 0.5px 1px rgba(0,0,0,.15));
101
+ transition: transform .18s ease;
 
 
 
 
 
 
 
102
  }
103
+ .logo-image:hover { transform: translateY(-1px) scale(1.03); }
104
 
105
  .arena-title {
106
+ font-size: 22px; font-weight: 900; letter-spacing: -0.01em;
107
+ /* AMA gradient text */
108
+ background-image: linear-gradient(90deg, rgb(var(--ama-start)), rgb(var(--ama-end)));
109
+ -webkit-background-clip: text; background-clip: text; color: transparent;
110
+ text-transform: none;
 
 
 
111
  }
112
 
 
113
  .menu-section {
114
+ display: flex; gap: 28px; flex-wrap: wrap; justify-content: center; margin-top: 6px;
 
 
 
 
115
  }
116
 
117
  .menu-item {
118
+ cursor: pointer; position: relative;
119
+ font-size: 22px; font-weight: 700; color: #1f2937;
120
+ padding-bottom: 4px; transition: color .2s ease;
 
 
 
 
121
  }
122
+ .menu-item:hover { color: rgb(var(--ama-end)); }
123
 
124
+ /* Active tab = AMA gradient text + underline always on */
125
+ .menu-item.active {
126
+ background-image: linear-gradient(90deg, rgb(var(--ama-start)), rgb(var(--ama-end)));
127
+ -webkit-background-clip: text; background-clip: text; color: transparent;
128
  }
 
129
  .menu-item::after {
130
+ content: ''; position: absolute; left: 0; bottom: 0;
131
+ height: 2px; width: 0%;
132
+ background-image: linear-gradient(90deg, rgb(var(--ama-start)), rgb(var(--ama-end)));
133
+ transition: width .25s ease;
 
 
 
 
 
 
 
 
134
  }
135
+ .menu-item:hover::after { width: 100%; }
136
+ .menu-item.active::after { width: 100%; }
137
 
 
138
  .ama-gradient-rule {
139
+ width: 100%; height: 3px; margin-top: 10px; border-radius: 2px;
140
+ background-image: linear-gradient(
 
 
141
  90deg,
142
+ rgba(var(--ama-start), 0),
143
+ rgb(var(--ama-start)),
144
+ rgb(var(--ama-end)),
145
+ rgba(var(--ama-end), 0)
146
  );
 
147
  }
148
 
 
149
  @media (max-width: 768px) {
150
+ .arena-title { font-size: 18px; }
151
+ .logo-image { height: 16px; }
152
+ .menu-item { font-size: 18px; gap: 18px; }
 
 
 
 
 
 
153
  }
154
  </style>