Redesign visitor log as readable cards replacing dense table
Each visit is now a card showing name/IP, page path, location, device, visit count, new/returning tag, and timestamp at a glance. Logged-in users show their display name prominently. Click to expand still shows full page history and raw details. Adds a purple "Logged in" tag for study users. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+124
@@ -7886,6 +7886,130 @@
|
||||
color: var(--brand-gold);
|
||||
}
|
||||
|
||||
/* ── Visitor cards ── */
|
||||
.admin-visitor-cards {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.4rem;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.admin-visitor-card {
|
||||
border: 1px solid rgba(201, 168, 76, 0.12);
|
||||
border-radius: 0.5rem;
|
||||
background: #0d0d0a;
|
||||
overflow: hidden;
|
||||
transition: border-color 0.15s;
|
||||
}
|
||||
|
||||
.admin-visitor-card--expanded {
|
||||
border-color: rgba(201, 168, 76, 0.35);
|
||||
}
|
||||
|
||||
.admin-visitor-card__main {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
width: 100%;
|
||||
padding: 0.65rem 1rem;
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.admin-visitor-card__main:hover {
|
||||
background: rgba(201, 168, 76, 0.04);
|
||||
}
|
||||
|
||||
.admin-visitor-card__left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.15rem;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.admin-visitor-card__name {
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: var(--brand-warm-white);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.admin-visitor-card__path {
|
||||
font-size: 0.78rem;
|
||||
color: var(--brand-gold);
|
||||
opacity: 0.8;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.admin-visitor-card__right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
gap: 0.2rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.admin-visitor-card__meta {
|
||||
font-size: 0.76rem;
|
||||
color: #8a7f5a;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.admin-visitor-card__tags {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.4rem;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.admin-visitor-card__time {
|
||||
font-size: 0.72rem;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.admin-visitor-card__chevron {
|
||||
font-size: 0.65rem;
|
||||
color: #555;
|
||||
flex-shrink: 0;
|
||||
margin-left: 0.25rem;
|
||||
}
|
||||
|
||||
.admin-visitor-tag--user {
|
||||
background: #1a1a3a;
|
||||
color: #8888dd;
|
||||
border: 1px solid #2a2a5a;
|
||||
}
|
||||
|
||||
.admin-visitor-card__detail {
|
||||
padding: 0.75rem 1rem 1rem;
|
||||
border-top: 1px solid rgba(201, 168, 76, 0.1);
|
||||
background: #080807;
|
||||
}
|
||||
|
||||
.admin-visitor-card__detail-meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem 1.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
font-size: 0.78rem;
|
||||
color: #8a7f5a;
|
||||
}
|
||||
|
||||
.admin-visitor-card__detail-meta strong {
|
||||
color: #b0a48c;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* ── Podcast hub tabs ── */
|
||||
.admin-tabs--podcast {
|
||||
margin-bottom: 2rem;
|
||||
|
||||
Reference in New Issue
Block a user