style: unify Loop Monitor UI design with improved clarity

Major visual improvements across all components:

Left Sidebar (Loop Cards):
- Enhanced card styling with better shadows and borders (4px left border)
- Improved hover states with subtle elevation
- Better selected state with primary color highlight
- Increased padding and spacing (1rem padding, 0.75rem margin)
- Cleaner status indicator badges

Right Panel (Detail View):
- Added background containers to all detail sections with borders
- Improved section headers with bottom borders for clear separation
- Enhanced progress items with individual card styling
- Better visual hierarchy with consistent spacing (1rem gaps)
- Added info-box component for V2 loop information

Meta Information:
- Detail-meta items now have pill-style backgrounds
- Dashed separator line for better visual grouping
- Improved spacing and padding

CLI Steps:
- Enhanced step cards with better borders and hover states
- 3px left accent border for status indication
- Smooth transitions on hover

Typography & Colors:
- Unified border-radius: 0.625rem for sections, 0.5rem for items
- Consistent background: hsl(var(--muted) / 0.25) for sections
- Better border opacity: hsl(var(--border) / 0.5) and 0.6 variants
- Improved font weights and sizes for clarity

Overall result: Cleaner, more professional interface with better visual hierarchy and clarity.
This commit is contained in:
catlog22
2026-01-22 11:20:16 +08:00
parent 15b3977e88
commit 62d5ce3f34

View File

@@ -328,25 +328,27 @@
========================================== */ ========================================== */
.loop-card { .loop-card {
padding: 0.875rem 1rem; padding: 1rem;
margin-bottom: 0.5rem; margin-bottom: 0.75rem;
background: hsl(var(--card)); background: hsl(var(--card));
border: 1px solid hsl(var(--border)); border: 1px solid hsl(var(--border));
border-left: 3px solid hsl(var(--muted-foreground)); border-left: 4px solid hsl(var(--muted-foreground));
border-radius: 0.5rem; border-radius: 0.625rem;
cursor: pointer; cursor: pointer;
transition: all 0.2s ease; transition: all 0.2s ease;
box-shadow: 0 1px 3px hsl(var(--foreground) / 0.04);
} }
.loop-card:hover { .loop-card:hover {
transform: translateY(-2px); transform: translateY(-1px);
box-shadow: 0 4px 12px hsl(var(--foreground) / 0.08); box-shadow: 0 4px 12px hsl(var(--foreground) / 0.1);
border-color: hsl(var(--primary)); border-color: hsl(var(--primary) / 0.5);
} }
.loop-card.selected { .loop-card.selected {
background: hsl(var(--accent) / 0.5); background: hsl(var(--primary) / 0.08);
border-color: hsl(var(--primary)); border-color: hsl(var(--primary));
box-shadow: 0 0 0 2px hsl(var(--primary) / 0.15);
} }
/* Status border colors */ /* Status border colors */
@@ -359,8 +361,8 @@
.loop-card-header { .loop-card-header {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.5rem; gap: 0.625rem;
margin-bottom: 0.5rem; margin-bottom: 0.625rem;
} }
.loop-status-indicator { .loop-status-indicator {
@@ -412,7 +414,7 @@
.loop-card-body { .loop-card-body {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 0.375rem; gap: 0.5rem;
} }
.loop-description { .loop-description {
@@ -564,8 +566,9 @@
.detail-info { .detail-info {
padding: 1rem; padding: 1rem;
background: hsl(var(--muted) / 0.3); background: hsl(var(--muted) / 0.25);
border-radius: 0.5rem; border-radius: 0.625rem;
border: 1px solid hsl(var(--border) / 0.5);
} }
.detail-title { .detail-title {
@@ -585,22 +588,32 @@
.detail-meta { .detail-meta {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 1rem; gap: 0.75rem 1.25rem;
font-size: 0.75rem; font-size: 0.75rem;
color: hsl(var(--muted-foreground)); color: hsl(var(--muted-foreground));
margin-top: 0.5rem;
padding-top: 0.75rem;
border-top: 1px dashed hsl(var(--border) / 0.6);
} }
.detail-meta span { .detail-meta span {
display: flex; display: inline-flex;
align-items: center; align-items: center;
gap: 0.375rem; gap: 0.375rem;
padding: 0.25rem 0.5rem;
background: hsl(var(--muted) / 0.4);
border-radius: 0.375rem;
} }
/* Detail Section */ /* Detail Section */
.detail-section { .detail-section {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 0.75rem; gap: 1rem;
padding: 1rem;
background: hsl(var(--muted) / 0.25);
border-radius: 0.625rem;
border: 1px solid hsl(var(--border) / 0.5);
} }
.detail-section h4 { .detail-section h4 {
@@ -611,6 +624,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.5rem; gap: 0.5rem;
padding-bottom: 0.75rem;
border-bottom: 1px solid hsl(var(--border) / 0.5);
} }
.progress-group { .progress-group {
@@ -622,13 +637,39 @@
.progress-item { .progress-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 0.375rem; gap: 0.5rem;
padding: 0.875rem;
background: hsl(var(--background));
border-radius: 0.5rem;
border: 1px solid hsl(var(--border) / 0.6);
} }
.progress-item label { .progress-item label {
font-size: 0.75rem; font-size: 0.75rem;
font-weight: 500; font-weight: 600;
color: hsl(var(--foreground));
display: flex;
align-items: center;
gap: 0.375rem;
}
/* Info Box for V2 Loops */
.info-box {
padding: 1rem;
background: hsl(var(--background));
border-radius: 0.5rem;
border: 1px solid hsl(var(--border) / 0.6);
}
.info-box p {
margin: 0 0 1rem 0;
font-size: 0.875rem;
color: hsl(var(--muted-foreground)); color: hsl(var(--muted-foreground));
line-height: 1.5;
}
.info-box .btn {
margin-top: 0;
} }
/* ========================================== /* ==========================================
@@ -646,10 +687,18 @@
.step-item { .step-item {
display: flex; display: flex;
gap: 0.75rem; gap: 0.75rem;
padding: 0.75rem; padding: 0.875rem;
background: hsl(var(--muted) / 0.3); background: hsl(var(--background));
border-radius: 0.375rem; border-radius: 0.5rem;
border-left: 2px solid hsl(var(--border)); border: 1px solid hsl(var(--border) / 0.6);
border-left: 3px solid hsl(var(--muted-foreground) / 0.5);
transition: all 0.2s ease;
}
.cli-step:hover,
.step-item:hover {
background: hsl(var(--muted) / 0.15);
border-left-color: hsl(var(--primary) / 0.6);
} }
.cli-step.current, .cli-step.current,