fix: sticky header on overview

This commit is contained in:
Carl-Gerhard Lindesvärd
2025-12-08 22:12:53 +01:00
parent 315e4a59a3
commit e22a5b3237
3 changed files with 57 additions and 27 deletions

View File

@@ -32,19 +32,21 @@ function ProjectDashboard() {
const { projectId } = Route.useParams();
return (
<div>
<div className="col gap-2 p-4">
<div className="flex justify-between gap-2">
<div className="flex gap-2">
<OverviewRange />
<OverviewInterval />
<OverviewFilterButton mode="events" />
</div>
<div className="flex gap-2">
<LiveCounter projectId={projectId} />
<OverviewShare projectId={projectId} />
<div className="sticky-header -top-px!">
<div className="col gap-2 p-4">
<div className="flex justify-between gap-2">
<div className="flex gap-2">
<OverviewRange />
<OverviewInterval />
<OverviewFilterButton mode="events" />
</div>
<div className="flex gap-2">
<LiveCounter projectId={projectId} />
<OverviewShare projectId={projectId} />
</div>
</div>
<OverviewFiltersButtons />
</div>
<OverviewFiltersButtons />
</div>
<div className="grid grid-cols-6 gap-4 p-4 pt-0">
<OverviewMetrics projectId={projectId} />

View File

@@ -104,24 +104,26 @@ function RouteComponent() {
<LoginNavbar className="relative p-4" />
</div>
)}
<div className="">
<div className="mx-auto max-w-7xl justify-between row gap-4 p-4 pb-0">
<div className="flex gap-2">
<OverviewRange />
</div>
<div className="flex gap-2">
<LiveCounter projectId={projectId} />
<div className="sticky-header [animation-range:50px_100px]!">
<div className="p-4 col gap-2 mx-auto max-w-7xl">
<div className="row justify-between">
<div className="flex gap-2">
<OverviewRange />
</div>
<div className="flex gap-2">
<LiveCounter projectId={projectId} />
</div>
</div>
<OverviewFiltersButtons />
</div>
<OverviewFiltersButtons />
<div className="mx-auto grid max-w-7xl grid-cols-6 gap-4 p-4">
<OverviewMetrics projectId={projectId} />
<OverviewTopSources projectId={projectId} />
<OverviewTopPages projectId={projectId} />
<OverviewTopDevices projectId={projectId} />
<OverviewTopEvents projectId={projectId} />
<OverviewTopGeo projectId={projectId} />
</div>
</div>
<div className="mx-auto grid max-w-7xl grid-cols-6 gap-4 p-4">
<OverviewMetrics projectId={projectId} />
<OverviewTopSources projectId={projectId} />
<OverviewTopPages projectId={projectId} />
<OverviewTopDevices projectId={projectId} />
<OverviewTopEvents projectId={projectId} />
<OverviewTopGeo projectId={projectId} />
</div>
</div>
);

View File

@@ -373,4 +373,30 @@ button {
.scrollarea-content:hover::-webkit-scrollbar-thumb,
.scrollarea-content:active::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.4); /* darken on hover/scroll */
}
/* Scroll-driven animation for sticky header */
@keyframes sticky-shadow {
0% {
box-shadow: none;
border-bottom-color: transparent;
border-bottom-width: 1px;
background-color: transparent;
}
100% {
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
border-bottom-color: var(--color-border);
border-bottom-width: 1px;
background-color: var(--color-def-100);
}
}
.sticky-header {
position: sticky;
top: 0;
z-index: 10;
border-bottom: 1px solid transparent;
animation: sticky-shadow linear both;
animation-timeline: scroll();
animation-range: 0 1px;
}