mirror of
https://github.com/block/buzz.git
synced 2026-11-13 12:51:34 +00:00
feat(desktop): add subtle top/bottom fade on theme scroll area
- Add gradient fades at top and bottom of the theme grid container - Use h-3 (12px) for a subtle fade effect, not too aggressive
This commit is contained in:
@@ -436,43 +436,63 @@ function ThemeSettingsCard() {
|
||||
</div>
|
||||
|
||||
{/* Theme grid — constrained to ~3 rows, scrolls internally */}
|
||||
<div className="mb-6 max-h-[430px] overflow-y-auto rounded-lg">
|
||||
<div className="flex flex-wrap gap-4 p-1">
|
||||
{selectedMode === "system" &&
|
||||
pairedLight.map((lightName) => {
|
||||
const darkName = getThemePair(lightName);
|
||||
if (!darkName) return null;
|
||||
return (
|
||||
<PairedThemeTile
|
||||
darkVars={getVars(darkName)}
|
||||
isActive={isPairActive(lightName)}
|
||||
key={lightName}
|
||||
lightName={lightName}
|
||||
lightVars={getVars(lightName)}
|
||||
onSelect={() => handleSelectTheme(lightName)}
|
||||
<div className="relative mb-6">
|
||||
{/* Top fade */}
|
||||
<div
|
||||
aria-hidden="true"
|
||||
className="pointer-events-none absolute inset-x-0 top-0 z-10 h-3"
|
||||
style={{
|
||||
background:
|
||||
"linear-gradient(to bottom, hsl(var(--background)), hsl(var(--background) / 0))",
|
||||
}}
|
||||
/>
|
||||
{/* Bottom fade */}
|
||||
<div
|
||||
aria-hidden="true"
|
||||
className="pointer-events-none absolute inset-x-0 bottom-0 z-10 h-3"
|
||||
style={{
|
||||
background:
|
||||
"linear-gradient(to top, hsl(var(--background)), hsl(var(--background) / 0))",
|
||||
}}
|
||||
/>
|
||||
<div className="max-h-[430px] overflow-y-auto rounded-lg">
|
||||
<div className="flex flex-wrap gap-4 p-1">
|
||||
{selectedMode === "system" &&
|
||||
pairedLight.map((lightName) => {
|
||||
const darkName = getThemePair(lightName);
|
||||
if (!darkName) return null;
|
||||
return (
|
||||
<PairedThemeTile
|
||||
darkVars={getVars(darkName)}
|
||||
isActive={isPairActive(lightName)}
|
||||
key={lightName}
|
||||
lightName={lightName}
|
||||
lightVars={getVars(lightName)}
|
||||
onSelect={() => handleSelectTheme(lightName)}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
{selectedMode === "light" &&
|
||||
allLightThemes.map((name) => (
|
||||
<SingleThemeTile
|
||||
isActive={selectedThemeName === name}
|
||||
key={name}
|
||||
name={name}
|
||||
onSelect={() => handleSelectTheme(name)}
|
||||
vars={getVars(name)}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
{selectedMode === "light" &&
|
||||
allLightThemes.map((name) => (
|
||||
<SingleThemeTile
|
||||
isActive={selectedThemeName === name}
|
||||
key={name}
|
||||
name={name}
|
||||
onSelect={() => handleSelectTheme(name)}
|
||||
vars={getVars(name)}
|
||||
/>
|
||||
))}
|
||||
{selectedMode === "dark" &&
|
||||
allDarkThemes.map((name) => (
|
||||
<SingleThemeTile
|
||||
isActive={selectedThemeName === name}
|
||||
key={name}
|
||||
name={name}
|
||||
onSelect={() => handleSelectTheme(name)}
|
||||
vars={getVars(name)}
|
||||
/>
|
||||
))}
|
||||
))}
|
||||
{selectedMode === "dark" &&
|
||||
allDarkThemes.map((name) => (
|
||||
<SingleThemeTile
|
||||
isActive={selectedThemeName === name}
|
||||
key={name}
|
||||
name={name}
|
||||
onSelect={() => handleSelectTheme(name)}
|
||||
vars={getVars(name)}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user