feat(repo-tabs): add context menu for managing repository tabs

This update introduces a context menu for repository tabs, allowing users
to easily close individual tabs, close all other tabs, or close tabs to the
right. Additionally, several visual elements related to loading animations
have been removed to streamline the user interface.

- Implement context menu actions for repository tab management
- Remove unnecessary loading animations from the splash screen and overlays
- Enhance user experience with improved tab management functionality
This commit is contained in:
Christoph Brandau
2026-07-08 15:34:30 +02:00
parent cc179e9eef
commit 8793d3de40
5 changed files with 124 additions and 98 deletions
@@ -101,7 +101,6 @@
<path class="fhl-trace fhl-trace-branch" d="M28 36 C52 48, 70 70, 91 94" />
</svg>
<img src={iconUrl} alt="" class="file-history-loading-icon" />
<span class="file-history-loading-sheen"></span>
</div>
<span class="file-history-loading-label">Loading history…</span>
<span class="file-history-loading-bar" aria-hidden="true"><span></span></span>
@@ -17,7 +17,6 @@
<path class="trace trace-cut" d="M46 180 L174 180" />
</svg>
<img src={iconUrl} alt="" class="repo-loading-icon" />
<span class="repo-loading-sheen"></span>
</div>
<div class="repo-loading-text">
@@ -78,17 +77,6 @@
inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.repo-loading-card::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
pointer-events: none;
background: linear-gradient(110deg, transparent 0%, rgba(160, 124, 255, 0.1) 48%, transparent 54%);
transform: translateX(-100%);
animation: card-scan 2.8s ease-in-out infinite;
}
.repo-loading-mark {
position: relative;
width: 168px;
@@ -157,18 +145,6 @@
animation: icon-float 2.4s ease-in-out infinite;
}
.repo-loading-sheen {
position: absolute;
z-index: 2;
width: 108px;
height: 168px;
border-radius: 50%;
background: linear-gradient(90deg, transparent 8%, rgba(255, 255, 255, 0.18), transparent 72%);
transform: translateX(-96px) rotate(16deg);
mix-blend-mode: screen;
animation: icon-sheen 2.8s ease-in-out infinite;
}
.repo-loading-text {
display: flex;
flex-direction: column;
@@ -213,19 +189,10 @@
@keyframes overlay-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes grid-drift { to { transform: translate3d(42px, 42px, 0); } }
@keyframes card-scan {
0%, 34% { transform: translateX(-100%); }
72%, 100% { transform: translateX(100%); }
}
@keyframes icon-float {
0%, 100% { transform: translateY(0) scale(1); }
50% { transform: translateY(-5px) scale(1.015); }
}
@keyframes icon-sheen {
0%, 18% { transform: translateX(-96px) rotate(16deg); opacity: 0; }
44% { opacity: 0.9; }
68%, 100% { transform: translateX(98px) rotate(16deg); opacity: 0; }
}
@keyframes halo-breathe {
0%, 100% { opacity: 0.35; transform: rotate(45deg) scale(0.95); }
50% { opacity: 0.8; transform: rotate(45deg) scale(1.04); }
@@ -242,11 +209,9 @@
@media (prefers-reduced-motion: reduce) {
.repo-loading-grid,
.repo-loading-card::before,
.repo-loading-halo,
.repo-loading-traces .trace,
.repo-loading-icon,
.repo-loading-sheen,
.repo-loading-bar span { animation: none; }
.repo-loading-traces .trace { stroke-dashoffset: 0; opacity: 0.72; }
}