gitmaps 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -11
- package/app/[owner]/[repo]/page.client.tsx +5 -0
- package/app/[owner]/[repo]/page.tsx +6 -0
- package/app/[slug]/page.client.tsx +5 -0
- package/app/[slug]/page.tsx +6 -0
- package/app/api/manifest.json/route.ts +20 -0
- package/app/api/pwa-icon/route.ts +14 -0
- package/app/api/repo/clone-stream/route.ts +20 -12
- package/app/api/repo/imports/route.ts +21 -3
- package/app/api/repo/list/route.ts +30 -0
- package/app/api/repo/upload/route.ts +6 -9
- package/app/api/sw.js/route.ts +70 -0
- package/app/galaxy-canvas/page.client.tsx +2 -0
- package/app/galaxy-canvas/page.tsx +5 -0
- package/app/globals.css +477 -95
- package/app/icon.png +0 -0
- package/app/layout.tsx +30 -2
- package/app/lib/canvas-text.ts +4 -72
- package/app/lib/canvas.ts +1 -1
- package/app/lib/card-arrangement.ts +21 -7
- package/app/lib/card-context-menu.tsx +2 -2
- package/app/lib/card-groups.ts +9 -2
- package/app/lib/cards.tsx +3 -1
- package/app/lib/connections.tsx +34 -43
- package/app/lib/events.tsx +25 -0
- package/app/lib/file-card-plugin.ts +14 -0
- package/app/lib/file-preview.ts +68 -41
- package/app/lib/galaxydraw-bridge.ts +5 -0
- package/app/lib/global-search.ts +48 -27
- package/app/lib/layers.tsx +17 -18
- package/app/lib/perf-overlay.ts +78 -0
- package/app/lib/positions.ts +1 -1
- package/app/lib/repo.tsx +18 -8
- package/app/lib/shortcuts-panel.ts +2 -0
- package/app/lib/viewport-culling.ts +7 -0
- package/app/page.client.tsx +72 -18
- package/app/page.tsx +22 -86
- package/banner.png +0 -0
- package/package.json +2 -2
- package/packages/galaxydraw/README.md +2 -2
- package/packages/galaxydraw/package.json +1 -1
- package/server.ts +1 -1
- package/app/api/connections/route.ts +0 -72
- package/app/api/positions/route.ts +0 -80
- package/app/api/repo/browse/route.ts +0 -55
- package/app/lib/pr-review.ts +0 -374
package/app/globals.css
CHANGED
|
@@ -1,47 +1,53 @@
|
|
|
1
|
-
/* Git Canvas - Premium Dark Theme */
|
|
1
|
+
/* Git Canvas - Premium Dark Theme v2 */
|
|
2
2
|
:root {
|
|
3
|
-
--bg-primary: #
|
|
4
|
-
--bg-secondary: #
|
|
5
|
-
--bg-tertiary: #
|
|
6
|
-
--bg-elevated: #
|
|
7
|
-
--bg-card: linear-gradient(
|
|
3
|
+
--bg-primary: #08080e;
|
|
4
|
+
--bg-secondary: #0e0e18;
|
|
5
|
+
--bg-tertiary: #161622;
|
|
6
|
+
--bg-elevated: #1e1e2e;
|
|
7
|
+
--bg-card: linear-gradient(145deg, rgba(28, 28, 48, 0.92), rgba(16, 16, 28, 0.96));
|
|
8
|
+
--bg-glass: rgba(14, 14, 24, 0.7);
|
|
8
9
|
|
|
9
10
|
--accent-primary: #7c3aed;
|
|
10
11
|
--accent-secondary: #a855f7;
|
|
11
12
|
--accent-tertiary: #c084fc;
|
|
12
|
-
--accent-glow: rgba(124, 58, 237, 0.
|
|
13
|
+
--accent-glow: rgba(124, 58, 237, 0.35);
|
|
14
|
+
--accent-gradient: linear-gradient(135deg, #7c3aed, #a855f7, #6d28d9);
|
|
15
|
+
--accent-gradient-3d: linear-gradient(180deg, #a855f7 0%, #7c3aed 40%, #5b21b6 100%);
|
|
13
16
|
|
|
14
17
|
--success: #10b981;
|
|
15
18
|
--warning: #f59e0b;
|
|
16
19
|
--error: #ef4444;
|
|
17
20
|
--info: #3b82f6;
|
|
18
21
|
|
|
19
|
-
--text-primary: #
|
|
20
|
-
--text-secondary: #
|
|
21
|
-
--text-muted: #
|
|
22
|
+
--text-primary: #eef2ff;
|
|
23
|
+
--text-secondary: #a1a1b5;
|
|
24
|
+
--text-muted: #5c5c72;
|
|
22
25
|
|
|
23
|
-
--border-subtle: rgba(255, 255, 255, 0.
|
|
24
|
-
--border-default: rgba(255, 255, 255, 0.
|
|
25
|
-
--border-accent: rgba(124, 58, 237, 0.
|
|
26
|
+
--border-subtle: rgba(255, 255, 255, 0.04);
|
|
27
|
+
--border-default: rgba(255, 255, 255, 0.07);
|
|
28
|
+
--border-accent: rgba(124, 58, 237, 0.25);
|
|
29
|
+
--border-glass: rgba(255, 255, 255, 0.06);
|
|
26
30
|
|
|
27
|
-
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.
|
|
28
|
-
--shadow-md: 0 4px
|
|
29
|
-
--shadow-lg: 0
|
|
31
|
+
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
32
|
+
--shadow-md: 0 4px 24px rgba(0, 0, 0, 0.5);
|
|
33
|
+
--shadow-lg: 0 12px 48px rgba(0, 0, 0, 0.6);
|
|
30
34
|
--shadow-glow: 0 0 30px var(--accent-glow);
|
|
35
|
+
--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
31
36
|
|
|
32
|
-
--radius-sm:
|
|
33
|
-
--radius-md:
|
|
37
|
+
--radius-sm: 8px;
|
|
38
|
+
--radius-md: 12px;
|
|
34
39
|
--radius-lg: 16px;
|
|
35
40
|
--radius-xl: 24px;
|
|
36
41
|
|
|
37
42
|
--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
38
43
|
--transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
39
44
|
--transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
45
|
+
--transition-spring: 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
40
46
|
|
|
41
47
|
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
42
48
|
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
43
49
|
|
|
44
|
-
--sidebar-width:
|
|
50
|
+
--sidebar-width: 300px;
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
/* Light Theme Override */
|
|
@@ -130,24 +136,37 @@ body {
|
|
|
130
136
|
#app {
|
|
131
137
|
display: flex;
|
|
132
138
|
height: 100vh;
|
|
133
|
-
background:
|
|
134
|
-
radial-gradient(ellipse at bottom right, rgba(168, 85, 247, 0.05) 0%, transparent 50%),
|
|
135
|
-
var(--bg-primary);
|
|
139
|
+
background: var(--bg-primary);
|
|
136
140
|
}
|
|
137
141
|
|
|
138
142
|
/* Sidebar */
|
|
139
143
|
.sidebar {
|
|
140
144
|
width: var(--sidebar-width);
|
|
141
|
-
background:
|
|
145
|
+
background: linear-gradient(180deg, rgba(14, 14, 24, 0.98) 0%, rgba(10, 10, 16, 0.99) 100%);
|
|
142
146
|
border-right: 1px solid var(--border-subtle);
|
|
143
147
|
display: flex;
|
|
144
148
|
flex-direction: column;
|
|
145
149
|
overflow: hidden;
|
|
150
|
+
position: relative;
|
|
151
|
+
z-index: 10;
|
|
152
|
+
box-shadow: 4px 0 24px rgba(0, 0, 0, 0.3);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.sidebar::after {
|
|
156
|
+
content: '';
|
|
157
|
+
position: absolute;
|
|
158
|
+
top: 0;
|
|
159
|
+
right: 0;
|
|
160
|
+
width: 1px;
|
|
161
|
+
height: 100%;
|
|
162
|
+
background: linear-gradient(180deg, rgba(124, 58, 237, 0.15) 0%, transparent 30%, transparent 70%, rgba(124, 58, 237, 0.1) 100%);
|
|
163
|
+
pointer-events: none;
|
|
146
164
|
}
|
|
147
165
|
|
|
148
166
|
.sidebar-header {
|
|
149
|
-
padding:
|
|
167
|
+
padding: 16px 18px;
|
|
150
168
|
border-bottom: 1px solid var(--border-subtle);
|
|
169
|
+
background: linear-gradient(180deg, rgba(124, 58, 237, 0.06) 0%, transparent 100%);
|
|
151
170
|
}
|
|
152
171
|
|
|
153
172
|
.logo {
|
|
@@ -155,27 +174,27 @@ body {
|
|
|
155
174
|
align-items: center;
|
|
156
175
|
gap: 10px;
|
|
157
176
|
font-size: 1rem;
|
|
158
|
-
font-weight:
|
|
177
|
+
font-weight: 700;
|
|
159
178
|
color: var(--text-primary);
|
|
160
|
-
letter-spacing: -0.
|
|
179
|
+
letter-spacing: -0.02em;
|
|
161
180
|
}
|
|
162
181
|
|
|
163
182
|
.logo svg {
|
|
164
|
-
color: var(--accent-
|
|
165
|
-
filter: drop-shadow(0 0
|
|
183
|
+
color: var(--accent-secondary);
|
|
184
|
+
filter: drop-shadow(0 0 8px var(--accent-glow));
|
|
166
185
|
}
|
|
167
186
|
|
|
168
187
|
/* Repository Selector */
|
|
169
188
|
.repo-selector {
|
|
170
|
-
padding:
|
|
189
|
+
padding: 12px 16px;
|
|
171
190
|
border-bottom: 1px solid var(--border-subtle);
|
|
172
191
|
}
|
|
173
192
|
|
|
174
193
|
.repo-dropdown {
|
|
175
194
|
width: 100%;
|
|
176
|
-
padding:
|
|
177
|
-
background:
|
|
178
|
-
border: 1px solid var(--border-
|
|
195
|
+
padding: 10px 12px;
|
|
196
|
+
background: rgba(22, 22, 34, 0.8);
|
|
197
|
+
border: 1px solid var(--border-glass);
|
|
179
198
|
border-radius: var(--radius-sm);
|
|
180
199
|
color: var(--text-primary);
|
|
181
200
|
font-family: var(--font-mono);
|
|
@@ -183,16 +202,17 @@ body {
|
|
|
183
202
|
cursor: pointer;
|
|
184
203
|
transition: all var(--transition-fast);
|
|
185
204
|
appearance: none;
|
|
186
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%
|
|
205
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e6e8a' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
|
|
187
206
|
background-repeat: no-repeat;
|
|
188
|
-
background-position: right
|
|
189
|
-
padding-right:
|
|
207
|
+
background-position: right 10px center;
|
|
208
|
+
padding-right: 30px;
|
|
209
|
+
box-shadow: var(--shadow-inset), 0 2px 6px rgba(0, 0, 0, 0.2);
|
|
190
210
|
}
|
|
191
211
|
|
|
192
212
|
.repo-dropdown:focus {
|
|
193
213
|
outline: none;
|
|
194
214
|
border-color: var(--accent-primary);
|
|
195
|
-
box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.
|
|
215
|
+
box-shadow: var(--shadow-inset), 0 0 0 2px rgba(124, 58, 237, 0.15), 0 0 12px rgba(124, 58, 237, 0.1);
|
|
196
216
|
}
|
|
197
217
|
|
|
198
218
|
.repo-dropdown option {
|
|
@@ -210,21 +230,22 @@ body {
|
|
|
210
230
|
|
|
211
231
|
.clone-url-input {
|
|
212
232
|
flex: 1;
|
|
213
|
-
padding:
|
|
214
|
-
background:
|
|
215
|
-
border: 1px solid var(--border-
|
|
233
|
+
padding: 8px 10px;
|
|
234
|
+
background: rgba(22, 22, 34, 0.8);
|
|
235
|
+
border: 1px solid var(--border-glass);
|
|
216
236
|
border-radius: var(--radius-sm);
|
|
217
237
|
color: var(--text-primary);
|
|
218
238
|
font-family: var(--font-mono);
|
|
219
239
|
font-size: 0.72rem;
|
|
220
240
|
transition: all var(--transition-fast);
|
|
221
241
|
min-width: 0;
|
|
242
|
+
box-shadow: var(--shadow-inset);
|
|
222
243
|
}
|
|
223
244
|
|
|
224
245
|
.clone-url-input:focus {
|
|
225
246
|
outline: none;
|
|
226
247
|
border-color: var(--accent-primary);
|
|
227
|
-
box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.
|
|
248
|
+
box-shadow: var(--shadow-inset), 0 0 0 2px rgba(124, 58, 237, 0.15);
|
|
228
249
|
}
|
|
229
250
|
|
|
230
251
|
.clone-url-input::placeholder {
|
|
@@ -236,31 +257,36 @@ body {
|
|
|
236
257
|
display: flex;
|
|
237
258
|
align-items: center;
|
|
238
259
|
gap: 4px;
|
|
239
|
-
padding:
|
|
240
|
-
background:
|
|
260
|
+
padding: 7px 12px;
|
|
261
|
+
background: var(--accent-gradient-3d);
|
|
241
262
|
border: none;
|
|
242
263
|
border-radius: var(--radius-sm);
|
|
243
264
|
color: white;
|
|
244
265
|
font-size: 0.7rem;
|
|
245
|
-
font-weight:
|
|
266
|
+
font-weight: 600;
|
|
246
267
|
cursor: pointer;
|
|
247
268
|
transition: all var(--transition-fast);
|
|
248
269
|
white-space: nowrap;
|
|
249
270
|
flex-shrink: 0;
|
|
271
|
+
box-shadow: 0 2px 8px rgba(124, 58, 237, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.15);
|
|
272
|
+
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
250
273
|
}
|
|
251
274
|
|
|
252
275
|
.clone-btn:hover {
|
|
253
|
-
background: linear-gradient(
|
|
254
|
-
box-shadow: 0 0
|
|
276
|
+
background: linear-gradient(180deg, #c084fc 0%, #a855f7 40%, #7c3aed 100%);
|
|
277
|
+
box-shadow: 0 4px 16px rgba(124, 58, 237, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
278
|
+
transform: translateY(-1px);
|
|
255
279
|
}
|
|
256
280
|
|
|
257
281
|
.clone-btn:active {
|
|
258
|
-
transform: scale(0.
|
|
282
|
+
transform: translateY(0) scale(0.97);
|
|
283
|
+
box-shadow: 0 1px 4px rgba(124, 58, 237, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
259
284
|
}
|
|
260
285
|
|
|
261
286
|
.clone-btn:disabled {
|
|
262
|
-
opacity: 0.
|
|
287
|
+
opacity: 0.4;
|
|
263
288
|
cursor: not-allowed;
|
|
289
|
+
transform: none;
|
|
264
290
|
}
|
|
265
291
|
|
|
266
292
|
.clone-status {
|
|
@@ -422,13 +448,14 @@ body {
|
|
|
422
448
|
font-size: 0.65rem !important;
|
|
423
449
|
}
|
|
424
450
|
|
|
425
|
-
/* View Tabs (sidebar) */
|
|
451
|
+
/* View Tabs (sidebar) — 3D gradient style */
|
|
426
452
|
.view-tabs {
|
|
427
453
|
display: flex;
|
|
428
|
-
padding:
|
|
454
|
+
padding: 8px 14px;
|
|
429
455
|
gap: 6px;
|
|
430
456
|
border-bottom: 1px solid var(--border-subtle);
|
|
431
457
|
align-items: center;
|
|
458
|
+
background: rgba(0, 0, 0, 0.15);
|
|
432
459
|
}
|
|
433
460
|
|
|
434
461
|
.view-tab {
|
|
@@ -436,7 +463,7 @@ body {
|
|
|
436
463
|
align-items: center;
|
|
437
464
|
justify-content: center;
|
|
438
465
|
gap: 5px;
|
|
439
|
-
padding:
|
|
466
|
+
padding: 7px 12px;
|
|
440
467
|
font-size: 0.72rem;
|
|
441
468
|
font-weight: 500;
|
|
442
469
|
background: transparent;
|
|
@@ -445,22 +472,25 @@ body {
|
|
|
445
472
|
border-radius: var(--radius-sm);
|
|
446
473
|
cursor: pointer;
|
|
447
474
|
transition: all var(--transition-fast);
|
|
475
|
+
position: relative;
|
|
448
476
|
}
|
|
449
477
|
|
|
450
478
|
.view-tab:hover {
|
|
451
|
-
background:
|
|
479
|
+
background: rgba(255, 255, 255, 0.04);
|
|
452
480
|
color: var(--text-secondary);
|
|
453
481
|
}
|
|
454
482
|
|
|
455
483
|
.view-tab.active {
|
|
456
|
-
background: var(--accent-
|
|
484
|
+
background: var(--accent-gradient-3d);
|
|
457
485
|
color: white;
|
|
458
|
-
box-shadow: 0 0
|
|
486
|
+
box-shadow: 0 2px 10px rgba(124, 58, 237, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.15);
|
|
487
|
+
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
488
|
+
font-weight: 600;
|
|
459
489
|
}
|
|
460
490
|
|
|
461
491
|
.view-tab svg {
|
|
462
492
|
flex-shrink: 0;
|
|
463
|
-
opacity: 0.
|
|
493
|
+
opacity: 0.85;
|
|
464
494
|
}
|
|
465
495
|
|
|
466
496
|
/* All Files Toggle */
|
|
@@ -584,11 +614,11 @@ body {
|
|
|
584
614
|
/* Commit Item */
|
|
585
615
|
.commit-item {
|
|
586
616
|
position: relative;
|
|
587
|
-
padding:
|
|
588
|
-
margin-bottom:
|
|
617
|
+
padding: 10px 14px;
|
|
618
|
+
margin-bottom: 2px;
|
|
589
619
|
background: transparent;
|
|
590
620
|
border: 1px solid transparent;
|
|
591
|
-
border-radius: var(--radius-
|
|
621
|
+
border-radius: var(--radius-sm);
|
|
592
622
|
cursor: pointer;
|
|
593
623
|
transition: all var(--transition-fast);
|
|
594
624
|
}
|
|
@@ -598,38 +628,50 @@ body {
|
|
|
598
628
|
}
|
|
599
629
|
|
|
600
630
|
.commit-item:hover {
|
|
601
|
-
background:
|
|
631
|
+
background: rgba(255, 255, 255, 0.025);
|
|
602
632
|
border-color: var(--border-subtle);
|
|
603
633
|
}
|
|
604
634
|
|
|
605
635
|
.commit-item.active {
|
|
606
|
-
background:
|
|
607
|
-
border-color:
|
|
608
|
-
box-shadow:
|
|
636
|
+
background: linear-gradient(135deg, rgba(124, 58, 237, 0.08), rgba(124, 58, 237, 0.03));
|
|
637
|
+
border-color: rgba(124, 58, 237, 0.2);
|
|
638
|
+
box-shadow: 0 0 12px rgba(124, 58, 237, 0.06);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.commit-item.active::after {
|
|
642
|
+
content: '';
|
|
643
|
+
position: absolute;
|
|
644
|
+
left: 0;
|
|
645
|
+
top: 8px;
|
|
646
|
+
bottom: 8px;
|
|
647
|
+
width: 2px;
|
|
648
|
+
background: var(--accent-gradient-3d);
|
|
649
|
+
border-radius: 1px;
|
|
609
650
|
}
|
|
610
651
|
|
|
611
652
|
.commit-hash {
|
|
612
653
|
font-family: var(--font-mono);
|
|
613
|
-
font-size: 0.
|
|
654
|
+
font-size: 0.78rem;
|
|
614
655
|
color: var(--accent-tertiary);
|
|
615
656
|
font-weight: 500;
|
|
616
657
|
}
|
|
617
658
|
|
|
618
659
|
.commit-message {
|
|
619
|
-
font-size: 0.
|
|
660
|
+
font-size: 0.82rem;
|
|
620
661
|
color: var(--text-primary);
|
|
621
|
-
margin-top:
|
|
662
|
+
margin-top: 3px;
|
|
622
663
|
white-space: nowrap;
|
|
623
664
|
overflow: hidden;
|
|
624
665
|
text-overflow: ellipsis;
|
|
666
|
+
line-height: 1.4;
|
|
625
667
|
}
|
|
626
668
|
|
|
627
669
|
.commit-meta {
|
|
628
670
|
display: flex;
|
|
629
671
|
align-items: center;
|
|
630
|
-
gap:
|
|
631
|
-
margin-top:
|
|
632
|
-
font-size: 0.
|
|
672
|
+
gap: 10px;
|
|
673
|
+
margin-top: 5px;
|
|
674
|
+
font-size: 0.72rem;
|
|
633
675
|
color: var(--text-muted);
|
|
634
676
|
}
|
|
635
677
|
|
|
@@ -641,20 +683,24 @@ body {
|
|
|
641
683
|
}
|
|
642
684
|
|
|
643
685
|
.commit-ref-badge {
|
|
644
|
-
background: rgba(124, 58, 237, 0.
|
|
645
|
-
border: 1px solid rgba(124, 58, 237, 0.
|
|
646
|
-
color: var(--accent-
|
|
647
|
-
padding:
|
|
648
|
-
border-radius:
|
|
649
|
-
font-size: 0.
|
|
686
|
+
background: linear-gradient(135deg, rgba(124, 58, 237, 0.18), rgba(124, 58, 237, 0.08));
|
|
687
|
+
border: 1px solid rgba(124, 58, 237, 0.25);
|
|
688
|
+
color: var(--accent-tertiary);
|
|
689
|
+
padding: 1px 6px;
|
|
690
|
+
border-radius: 6px;
|
|
691
|
+
font-size: 0.62rem;
|
|
650
692
|
font-weight: 600;
|
|
651
693
|
white-space: nowrap;
|
|
694
|
+
letter-spacing: 0.02em;
|
|
652
695
|
}
|
|
653
696
|
|
|
654
697
|
.commit-author {
|
|
655
698
|
display: flex;
|
|
656
699
|
align-items: center;
|
|
657
700
|
gap: 4px;
|
|
701
|
+
max-width: 140px;
|
|
702
|
+
overflow: hidden;
|
|
703
|
+
text-overflow: ellipsis;
|
|
658
704
|
}
|
|
659
705
|
|
|
660
706
|
/* Canvas Controls */
|
|
@@ -817,12 +863,16 @@ body {
|
|
|
817
863
|
display: flex;
|
|
818
864
|
align-items: center;
|
|
819
865
|
justify-content: space-between;
|
|
820
|
-
padding:
|
|
821
|
-
background:
|
|
866
|
+
padding: 4px 12px;
|
|
867
|
+
background: linear-gradient(180deg, rgba(14, 14, 24, 0.95) 0%, rgba(10, 10, 16, 0.9) 100%);
|
|
822
868
|
border-bottom: 1px solid var(--border-subtle);
|
|
823
|
-
height:
|
|
869
|
+
height: 38px;
|
|
824
870
|
flex-shrink: 0;
|
|
825
871
|
overflow: hidden;
|
|
872
|
+
backdrop-filter: blur(12px);
|
|
873
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
874
|
+
position: relative;
|
|
875
|
+
z-index: 5;
|
|
826
876
|
}
|
|
827
877
|
|
|
828
878
|
.header-left {
|
|
@@ -892,17 +942,37 @@ body {
|
|
|
892
942
|
gap: 4px !important;
|
|
893
943
|
}
|
|
894
944
|
|
|
895
|
-
/* Changed Files Panel */
|
|
945
|
+
/* Changed Files Panel — Glassmorphism */
|
|
896
946
|
.changed-files-panel {
|
|
897
947
|
position: absolute;
|
|
898
|
-
top:
|
|
899
|
-
right:
|
|
948
|
+
top: 48px;
|
|
949
|
+
right: 10px;
|
|
900
950
|
width: 260px;
|
|
901
|
-
max-height: calc(100% -
|
|
902
|
-
background:
|
|
903
|
-
|
|
951
|
+
max-height: calc(100% - 60px - 140px);
|
|
952
|
+
background: rgba(14, 14, 24, 0.85);
|
|
953
|
+
backdrop-filter: blur(20px);
|
|
954
|
+
-webkit-backdrop-filter: blur(20px);
|
|
955
|
+
border: 1px solid var(--border-glass);
|
|
904
956
|
border-radius: var(--radius-md);
|
|
905
|
-
box-shadow: var(--shadow-lg);
|
|
957
|
+
box-shadow: var(--shadow-lg), 0 0 1px rgba(255, 255, 255, 0.05);
|
|
958
|
+
z-index: 200;
|
|
959
|
+
display: flex;
|
|
960
|
+
flex-direction: column;
|
|
961
|
+
animation: fadeIn 150ms ease;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
.connections-panel {
|
|
965
|
+
position: absolute;
|
|
966
|
+
top: 48px;
|
|
967
|
+
right: 280px;
|
|
968
|
+
width: 320px;
|
|
969
|
+
max-height: calc(100% - 60px - 140px);
|
|
970
|
+
background: rgba(14, 14, 24, 0.85);
|
|
971
|
+
backdrop-filter: blur(20px);
|
|
972
|
+
-webkit-backdrop-filter: blur(20px);
|
|
973
|
+
border: 1px solid var(--border-glass);
|
|
974
|
+
border-radius: var(--radius-md);
|
|
975
|
+
box-shadow: var(--shadow-lg), 0 0 1px rgba(255, 255, 255, 0.05);
|
|
906
976
|
z-index: 200;
|
|
907
977
|
display: flex;
|
|
908
978
|
flex-direction: column;
|
|
@@ -5254,19 +5324,24 @@ body {
|
|
|
5254
5324
|
transition: opacity 0.25s ease, transform 0.25s ease;
|
|
5255
5325
|
}
|
|
5256
5326
|
|
|
5257
|
-
/* When not hovered,
|
|
5327
|
+
/* When not hovered, hide non-active items but show active layer name */
|
|
5258
5328
|
#layersBarContainer:not(:hover) .layers-bar {
|
|
5259
|
-
|
|
5260
|
-
|
|
5261
|
-
|
|
5262
|
-
|
|
5329
|
+
opacity: 0.7;
|
|
5330
|
+
transition: opacity 0.2s ease;
|
|
5331
|
+
}
|
|
5332
|
+
|
|
5333
|
+
#layersBarContainer:not(:hover) .layers-bar-item:not(.active) {
|
|
5334
|
+
display: none;
|
|
5335
|
+
}
|
|
5336
|
+
|
|
5337
|
+
#layersBarContainer:not(:hover) .layers-bar-add {
|
|
5338
|
+
display: none;
|
|
5263
5339
|
}
|
|
5264
5340
|
|
|
5265
5341
|
/* On hover, expand to full width */
|
|
5266
5342
|
#layersBarContainer:hover .layers-bar {
|
|
5267
|
-
max-width: 800px;
|
|
5268
5343
|
opacity: 1;
|
|
5269
|
-
transition:
|
|
5344
|
+
transition: opacity 0.15s ease;
|
|
5270
5345
|
}
|
|
5271
5346
|
|
|
5272
5347
|
.layers-bar {
|
|
@@ -5883,6 +5958,310 @@ body {
|
|
|
5883
5958
|
color: var(--text-muted);
|
|
5884
5959
|
}
|
|
5885
5960
|
|
|
5961
|
+
/* Feature pills (inline in hero) */
|
|
5962
|
+
.landing-features {
|
|
5963
|
+
display: flex;
|
|
5964
|
+
flex-wrap: wrap;
|
|
5965
|
+
gap: 10px;
|
|
5966
|
+
justify-content: center;
|
|
5967
|
+
margin-top: 20px;
|
|
5968
|
+
animation: landingSlideUp 0.5s 0.3s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
5969
|
+
}
|
|
5970
|
+
|
|
5971
|
+
.feature-pill {
|
|
5972
|
+
display: flex;
|
|
5973
|
+
align-items: center;
|
|
5974
|
+
gap: 6px;
|
|
5975
|
+
padding: 6px 14px;
|
|
5976
|
+
background: rgba(124, 58, 237, 0.1);
|
|
5977
|
+
border: 1px solid rgba(124, 58, 237, 0.2);
|
|
5978
|
+
border-radius: 20px;
|
|
5979
|
+
font-size: 0.78rem;
|
|
5980
|
+
color: var(--text-secondary);
|
|
5981
|
+
font-weight: 500;
|
|
5982
|
+
white-space: nowrap;
|
|
5983
|
+
transition: border-color 0.2s, background 0.2s;
|
|
5984
|
+
}
|
|
5985
|
+
|
|
5986
|
+
.feature-pill:hover {
|
|
5987
|
+
border-color: rgba(124, 58, 237, 0.4);
|
|
5988
|
+
background: rgba(124, 58, 237, 0.15);
|
|
5989
|
+
}
|
|
5990
|
+
|
|
5991
|
+
.feature-icon {
|
|
5992
|
+
font-size: 0.9rem;
|
|
5993
|
+
}
|
|
5994
|
+
|
|
5995
|
+
/* Repo card as anchor link */
|
|
5996
|
+
a.repo-card-btn {
|
|
5997
|
+
text-decoration: none;
|
|
5998
|
+
color: inherit;
|
|
5999
|
+
}
|
|
6000
|
+
|
|
6001
|
+
/* ─── Dimensions Section ─── */
|
|
6002
|
+
.landing-dimensions {
|
|
6003
|
+
display: flex;
|
|
6004
|
+
flex-direction: column;
|
|
6005
|
+
gap: 12px;
|
|
6006
|
+
margin-bottom: 40px;
|
|
6007
|
+
animation: landingSlideUp 0.5s 0.3s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
6008
|
+
}
|
|
6009
|
+
|
|
6010
|
+
.dimension-label {
|
|
6011
|
+
font-size: 0.7rem;
|
|
6012
|
+
text-transform: uppercase;
|
|
6013
|
+
letter-spacing: 0.08em;
|
|
6014
|
+
color: var(--text-muted);
|
|
6015
|
+
text-align: center;
|
|
6016
|
+
margin-bottom: 8px;
|
|
6017
|
+
font-weight: 500;
|
|
6018
|
+
}
|
|
6019
|
+
|
|
6020
|
+
.dimension-card {
|
|
6021
|
+
display: grid;
|
|
6022
|
+
grid-template-columns: auto 1fr;
|
|
6023
|
+
grid-template-rows: auto auto;
|
|
6024
|
+
gap: 4px 14px;
|
|
6025
|
+
background: rgba(255, 255, 255, 0.015);
|
|
6026
|
+
border: 1px solid rgba(255, 255, 255, 0.04);
|
|
6027
|
+
border-radius: 12px;
|
|
6028
|
+
padding: 16px 20px;
|
|
6029
|
+
transition: border-color 0.3s, background 0.3s, transform 0.3s;
|
|
6030
|
+
position: relative;
|
|
6031
|
+
overflow: hidden;
|
|
6032
|
+
}
|
|
6033
|
+
|
|
6034
|
+
.dimension-card::before {
|
|
6035
|
+
content: '';
|
|
6036
|
+
position: absolute;
|
|
6037
|
+
inset: 0;
|
|
6038
|
+
background: radial-gradient(ellipse at 20% 50%, rgba(167, 139, 250, 0.04), transparent 60%);
|
|
6039
|
+
pointer-events: none;
|
|
6040
|
+
}
|
|
6041
|
+
|
|
6042
|
+
.dimension-card:hover {
|
|
6043
|
+
border-color: rgba(167, 139, 250, 0.15);
|
|
6044
|
+
background: rgba(255, 255, 255, 0.025);
|
|
6045
|
+
transform: translateX(2px);
|
|
6046
|
+
}
|
|
6047
|
+
|
|
6048
|
+
.dim-badge {
|
|
6049
|
+
grid-row: 1 / 3;
|
|
6050
|
+
display: flex;
|
|
6051
|
+
flex-direction: column;
|
|
6052
|
+
align-items: center;
|
|
6053
|
+
justify-content: center;
|
|
6054
|
+
width: 48px;
|
|
6055
|
+
gap: 2px;
|
|
6056
|
+
}
|
|
6057
|
+
|
|
6058
|
+
.dim-num {
|
|
6059
|
+
font-family: var(--font-display);
|
|
6060
|
+
font-size: 1.3rem;
|
|
6061
|
+
font-weight: 800;
|
|
6062
|
+
background: linear-gradient(135deg, #a78bfa, #60a5fa);
|
|
6063
|
+
-webkit-background-clip: text;
|
|
6064
|
+
-webkit-text-fill-color: transparent;
|
|
6065
|
+
background-clip: text;
|
|
6066
|
+
line-height: 1.1;
|
|
6067
|
+
}
|
|
6068
|
+
|
|
6069
|
+
.dim-axis {
|
|
6070
|
+
font-size: 0.6rem;
|
|
6071
|
+
text-transform: uppercase;
|
|
6072
|
+
letter-spacing: 0.08em;
|
|
6073
|
+
color: var(--text-muted);
|
|
6074
|
+
font-weight: 600;
|
|
6075
|
+
}
|
|
6076
|
+
|
|
6077
|
+
.dim-visual {
|
|
6078
|
+
display: none;
|
|
6079
|
+
/* Hidden on small screens, shown in wide layout */
|
|
6080
|
+
}
|
|
6081
|
+
|
|
6082
|
+
.dim-svg {
|
|
6083
|
+
width: 100%;
|
|
6084
|
+
height: auto;
|
|
6085
|
+
}
|
|
6086
|
+
|
|
6087
|
+
.dimension-card h3 {
|
|
6088
|
+
font-size: 0.85rem;
|
|
6089
|
+
font-weight: 600;
|
|
6090
|
+
color: var(--text-primary);
|
|
6091
|
+
margin: 0;
|
|
6092
|
+
line-height: 1.3;
|
|
6093
|
+
}
|
|
6094
|
+
|
|
6095
|
+
.dimension-card p {
|
|
6096
|
+
font-size: 0.75rem;
|
|
6097
|
+
color: var(--text-secondary);
|
|
6098
|
+
margin: 0;
|
|
6099
|
+
line-height: 1.5;
|
|
6100
|
+
grid-column: 2;
|
|
6101
|
+
}
|
|
6102
|
+
|
|
6103
|
+
.dimension-card em {
|
|
6104
|
+
color: #a78bfa;
|
|
6105
|
+
font-style: normal;
|
|
6106
|
+
font-weight: 600;
|
|
6107
|
+
}
|
|
6108
|
+
|
|
6109
|
+
/* Specific dimension colors */
|
|
6110
|
+
.dim-1d:hover {
|
|
6111
|
+
border-color: rgba(167, 139, 250, 0.2);
|
|
6112
|
+
}
|
|
6113
|
+
|
|
6114
|
+
.dim-1d .dim-num {
|
|
6115
|
+
background: linear-gradient(135deg, #a78bfa, #c084fc);
|
|
6116
|
+
-webkit-background-clip: text;
|
|
6117
|
+
background-clip: text;
|
|
6118
|
+
}
|
|
6119
|
+
|
|
6120
|
+
.dim-2d:hover {
|
|
6121
|
+
border-color: rgba(96, 165, 250, 0.2);
|
|
6122
|
+
}
|
|
6123
|
+
|
|
6124
|
+
.dim-2d .dim-num {
|
|
6125
|
+
background: linear-gradient(135deg, #60a5fa, #818cf8);
|
|
6126
|
+
-webkit-background-clip: text;
|
|
6127
|
+
background-clip: text;
|
|
6128
|
+
}
|
|
6129
|
+
|
|
6130
|
+
.dim-3d:hover {
|
|
6131
|
+
border-color: rgba(52, 211, 153, 0.2);
|
|
6132
|
+
}
|
|
6133
|
+
|
|
6134
|
+
.dim-3d .dim-num {
|
|
6135
|
+
background: linear-gradient(135deg, #34d399, #60a5fa);
|
|
6136
|
+
-webkit-background-clip: text;
|
|
6137
|
+
background-clip: text;
|
|
6138
|
+
}
|
|
6139
|
+
|
|
6140
|
+
.dim-conn:hover {
|
|
6141
|
+
border-color: rgba(167, 139, 250, 0.25);
|
|
6142
|
+
}
|
|
6143
|
+
|
|
6144
|
+
.dim-conn .dim-num {
|
|
6145
|
+
background: linear-gradient(135deg, #f472b6, #a78bfa);
|
|
6146
|
+
-webkit-background-clip: text;
|
|
6147
|
+
background-clip: text;
|
|
6148
|
+
font-size: 1.5rem;
|
|
6149
|
+
}
|
|
6150
|
+
|
|
6151
|
+
.dim-4d:hover {
|
|
6152
|
+
border-color: rgba(124, 58, 237, 0.25);
|
|
6153
|
+
}
|
|
6154
|
+
|
|
6155
|
+
.dim-4d .dim-num {
|
|
6156
|
+
background: linear-gradient(135deg, #7c3aed, #a78bfa);
|
|
6157
|
+
-webkit-background-clip: text;
|
|
6158
|
+
background-clip: text;
|
|
6159
|
+
}
|
|
6160
|
+
|
|
6161
|
+
/* Connection pulse animation */
|
|
6162
|
+
@keyframes connPulse {
|
|
6163
|
+
|
|
6164
|
+
0%,
|
|
6165
|
+
100% {
|
|
6166
|
+
r: 6;
|
|
6167
|
+
opacity: 0.15;
|
|
6168
|
+
}
|
|
6169
|
+
|
|
6170
|
+
50% {
|
|
6171
|
+
r: 10;
|
|
6172
|
+
opacity: 0.05;
|
|
6173
|
+
}
|
|
6174
|
+
}
|
|
6175
|
+
|
|
6176
|
+
.conn-pulse {
|
|
6177
|
+
animation: connPulse 2s ease-in-out infinite;
|
|
6178
|
+
}
|
|
6179
|
+
|
|
6180
|
+
/* ─── Pitch Section (AI code review) ─── */
|
|
6181
|
+
.landing-pitch {
|
|
6182
|
+
text-align: center;
|
|
6183
|
+
margin-bottom: 40px;
|
|
6184
|
+
padding: 32px 24px;
|
|
6185
|
+
background: linear-gradient(135deg, rgba(124, 58, 237, 0.05), rgba(96, 165, 250, 0.03));
|
|
6186
|
+
border: 1px solid rgba(167, 139, 250, 0.08);
|
|
6187
|
+
border-radius: 16px;
|
|
6188
|
+
position: relative;
|
|
6189
|
+
overflow: hidden;
|
|
6190
|
+
animation: landingSlideUp 0.5s 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
6191
|
+
}
|
|
6192
|
+
|
|
6193
|
+
.landing-pitch::before {
|
|
6194
|
+
content: '';
|
|
6195
|
+
position: absolute;
|
|
6196
|
+
top: -50%;
|
|
6197
|
+
left: -50%;
|
|
6198
|
+
width: 200%;
|
|
6199
|
+
height: 200%;
|
|
6200
|
+
background: radial-gradient(circle at center, rgba(167, 139, 250, 0.03), transparent 50%);
|
|
6201
|
+
pointer-events: none;
|
|
6202
|
+
}
|
|
6203
|
+
|
|
6204
|
+
.pitch-badge {
|
|
6205
|
+
display: inline-block;
|
|
6206
|
+
font-size: 0.65rem;
|
|
6207
|
+
text-transform: uppercase;
|
|
6208
|
+
letter-spacing: 0.1em;
|
|
6209
|
+
color: #a78bfa;
|
|
6210
|
+
background: rgba(167, 139, 250, 0.1);
|
|
6211
|
+
border: 1px solid rgba(167, 139, 250, 0.15);
|
|
6212
|
+
border-radius: 20px;
|
|
6213
|
+
padding: 4px 14px;
|
|
6214
|
+
margin-bottom: 16px;
|
|
6215
|
+
font-weight: 600;
|
|
6216
|
+
}
|
|
6217
|
+
|
|
6218
|
+
.pitch-title {
|
|
6219
|
+
font-family: var(--font-display);
|
|
6220
|
+
font-size: 1.4rem;
|
|
6221
|
+
font-weight: 700;
|
|
6222
|
+
color: var(--text-primary);
|
|
6223
|
+
line-height: 1.3;
|
|
6224
|
+
margin: 0 0 12px;
|
|
6225
|
+
}
|
|
6226
|
+
|
|
6227
|
+
.pitch-accent {
|
|
6228
|
+
background: linear-gradient(135deg, #a78bfa, #60a5fa, #34d399);
|
|
6229
|
+
-webkit-background-clip: text;
|
|
6230
|
+
-webkit-text-fill-color: transparent;
|
|
6231
|
+
background-clip: text;
|
|
6232
|
+
}
|
|
6233
|
+
|
|
6234
|
+
.pitch-body {
|
|
6235
|
+
font-size: 0.82rem;
|
|
6236
|
+
color: var(--text-secondary);
|
|
6237
|
+
line-height: 1.65;
|
|
6238
|
+
max-width: 560px;
|
|
6239
|
+
margin: 0 auto;
|
|
6240
|
+
}
|
|
6241
|
+
|
|
6242
|
+
/* ─── Wide layout: show visuals inline ─── */
|
|
6243
|
+
@media (min-width: 900px) {
|
|
6244
|
+
.dimension-card {
|
|
6245
|
+
grid-template-columns: auto 200px 1fr;
|
|
6246
|
+
gap: 4px 20px;
|
|
6247
|
+
}
|
|
6248
|
+
|
|
6249
|
+
.dim-visual {
|
|
6250
|
+
display: flex;
|
|
6251
|
+
align-items: center;
|
|
6252
|
+
justify-content: center;
|
|
6253
|
+
grid-row: 1 / 3;
|
|
6254
|
+
}
|
|
6255
|
+
|
|
6256
|
+
.dimension-card h3 {
|
|
6257
|
+
grid-column: 3;
|
|
6258
|
+
}
|
|
6259
|
+
|
|
6260
|
+
.dimension-card p {
|
|
6261
|
+
grid-column: 3;
|
|
6262
|
+
}
|
|
6263
|
+
}
|
|
6264
|
+
|
|
5886
6265
|
/* Stats row */
|
|
5887
6266
|
.landing-stats {
|
|
5888
6267
|
display: flex;
|
|
@@ -6160,10 +6539,10 @@ body {
|
|
|
6160
6539
|
align-items: center;
|
|
6161
6540
|
gap: 6px;
|
|
6162
6541
|
width: 100%;
|
|
6163
|
-
padding:
|
|
6542
|
+
padding: 9px 12px;
|
|
6164
6543
|
margin-top: 8px;
|
|
6165
|
-
background:
|
|
6166
|
-
border: 1px solid var(--border-
|
|
6544
|
+
background: rgba(22, 22, 34, 0.6);
|
|
6545
|
+
border: 1px solid var(--border-glass);
|
|
6167
6546
|
border-radius: var(--radius-sm);
|
|
6168
6547
|
color: var(--text-secondary);
|
|
6169
6548
|
font-family: var(--font-sans);
|
|
@@ -6171,12 +6550,14 @@ body {
|
|
|
6171
6550
|
font-weight: 500;
|
|
6172
6551
|
cursor: pointer;
|
|
6173
6552
|
transition: all var(--transition-fast);
|
|
6553
|
+
box-shadow: var(--shadow-inset);
|
|
6174
6554
|
}
|
|
6175
6555
|
|
|
6176
6556
|
.github-import-btn:hover {
|
|
6177
|
-
background:
|
|
6178
|
-
border-color:
|
|
6557
|
+
background: rgba(124, 58, 237, 0.08);
|
|
6558
|
+
border-color: rgba(124, 58, 237, 0.2);
|
|
6179
6559
|
color: var(--text-primary);
|
|
6560
|
+
box-shadow: var(--shadow-inset), 0 0 12px rgba(124, 58, 237, 0.08);
|
|
6180
6561
|
}
|
|
6181
6562
|
|
|
6182
6563
|
.github-import-btn:active {
|
|
@@ -6521,6 +6902,7 @@ body {
|
|
|
6521
6902
|
margin: 0 0 8px 0;
|
|
6522
6903
|
display: -webkit-box;
|
|
6523
6904
|
-webkit-line-clamp: 2;
|
|
6905
|
+
line-clamp: 2;
|
|
6524
6906
|
-webkit-box-orient: vertical;
|
|
6525
6907
|
overflow: hidden;
|
|
6526
6908
|
}
|