Files
R3ap3r 3178b8f4f7 Aurora SpotiRip desktop and web app
- Spotify playlist, library, album and artist browsing with in-app playback
- Song, playlist and album downloads via spotdl with YouTube and Bandcamp fallbacks
- Electron desktop app (castLabs Widevine) with a permanent sidebar layout
- Linux and Windows packaging scripts
2026-09-25 23:20:57 -05:00

108 lines
2.4 KiB
CSS

@layer base {
.tabsList {
display: flex;
overflow-x: auto;
scrollbar-width: none; -ms-overflow-style: none; margin: 0;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.tabsList::-webkit-scrollbar {
display: none; }
.tabsTrigger {
display: inline-flex;
align-items: center;
justify-content: center;
font-family: var(--font-family-base);
font-size: 0.9rem;
font-weight: 500;
color: var(--muted-foreground);
background-color: transparent;
padding: var(--spacing-3) var(--spacing-4);
border: none;
border-radius: 0;
cursor: pointer;
position: relative;
transition: color var(--animation-duration-normal)
cubic-bezier(0.22, 1, 0.36, 1);
white-space: nowrap;
}
.tabsTrigger:hover {
color: var(--foreground);
}
.tabsTrigger[data-state="active"] {
color: var(--primary);
font-weight: 600;
}
.tabsTrigger[data-state="active"]::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2px;
background-color: var(--primary);
transform-origin: center;
transition: transform var(--animation-duration-normal)
cubic-bezier(0.22, 1, 0.36, 1);
transform: scaleX(1);
}
.tabsTrigger:not([data-state="active"]):hover::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2px;
background-color: color-mix(
in srgb,
var(--muted-foreground) 30%,
transparent
);
transform-origin: center;
transform: scaleX(0.6);
transition:
transform var(--animation-duration-normal) cubic-bezier(0.22, 1, 0.36, 1),
background-color var(--animation-duration-normal)
cubic-bezier(0.22, 1, 0.36, 1);
}
.tabsTrigger:focus-visible {
outline: none;
box-shadow: var(--shadow-focus);
border-radius: var(--radius-sm);
}
.tabsTrigger[disabled] {
opacity: 0.5;
cursor: not-allowed;
color: var(--muted-foreground);
}
.tabsContent {
color: var(--foreground);
outline: none;
}
.tabsContent[hidden] {
display: none !important;
}
:global(.dark) .tabsTrigger[data-state="active"]::after {
background-color: var(--primary);
}
:global(.dark) .tabsTrigger:not([data-state="active"]):hover::after {
background-color: color-mix(
in srgb,
var(--muted-foreground) 40%,
transparent
);
}
}