Skip to content

Commit ccd861d

Browse files
committed
Reorganize UI: consolidate activity views and move settings to sidebar
- Moved Settings to sidebar as 'Configure' tab instead of button - Consolidated Scans, Activities, and Notifications into single 'Activity' view - Activity view shows all three sections side-by-side in compact cards - Settings modal now supports embedded mode for full-page view - Improved layout with better use of space - More organized navigation structure
1 parent df1d47a commit ccd861d

3 files changed

Lines changed: 397 additions & 219 deletions

File tree

webui/src/App.css

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,222 @@ body {
351351
padding: 2rem;
352352
}
353353

354+
.configure-view {
355+
padding: 0;
356+
}
357+
358+
.settings-embedded {
359+
width: 100%;
360+
}
361+
362+
.settings-content {
363+
padding: 1.5rem;
364+
}
365+
366+
/* Activity Grid */
367+
.activity-grid {
368+
display: grid;
369+
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
370+
gap: 1.5rem;
371+
}
372+
373+
/* Compact Lists */
374+
.scans-list-compact,
375+
.activities-list-compact,
376+
.notifications-list-compact {
377+
display: flex;
378+
flex-direction: column;
379+
gap: 0.75rem;
380+
max-height: 400px;
381+
overflow-y: auto;
382+
}
383+
384+
.scan-item-compact,
385+
.activity-item-compact,
386+
.notification-item-compact {
387+
display: flex;
388+
align-items: center;
389+
gap: 0.75rem;
390+
padding: 0.75rem;
391+
background: var(--bg-tertiary);
392+
border: 1px solid var(--border);
393+
border-radius: 0.5rem;
394+
transition: all 0.2s;
395+
}
396+
397+
.scan-item-compact:hover,
398+
.activity-item-compact:hover,
399+
.notification-item-compact:hover {
400+
background: var(--bg-primary);
401+
border-color: var(--accent);
402+
}
403+
404+
.scan-info-compact,
405+
.activity-info-compact,
406+
.notification-info-compact {
407+
flex: 1;
408+
display: flex;
409+
flex-direction: column;
410+
gap: 0.25rem;
411+
min-width: 0;
412+
}
413+
414+
.scan-name-compact,
415+
.activity-title-compact,
416+
.notification-title-compact {
417+
font-weight: 500;
418+
color: var(--text-primary);
419+
font-size: 0.875rem;
420+
white-space: nowrap;
421+
overflow: hidden;
422+
text-overflow: ellipsis;
423+
}
424+
425+
.scan-type-compact,
426+
.activity-subtitle-compact,
427+
.notification-episodes-compact {
428+
font-size: 0.75rem;
429+
color: var(--text-secondary);
430+
white-space: nowrap;
431+
overflow: hidden;
432+
text-overflow: ellipsis;
433+
}
434+
435+
.scan-status-compact {
436+
font-size: 1.25rem;
437+
flex-shrink: 0;
438+
}
439+
440+
.scan-status-compact.pending {
441+
color: #f59e0b;
442+
}
443+
444+
.scan-status-compact.completed {
445+
color: var(--success);
446+
}
447+
448+
.scan-status-compact.failed {
449+
color: var(--error);
450+
}
451+
452+
.activity-progress-compact {
453+
position: relative;
454+
width: 60px;
455+
height: 20px;
456+
background: var(--bg-primary);
457+
border-radius: 10px;
458+
overflow: hidden;
459+
flex-shrink: 0;
460+
}
461+
462+
.activity-progress-bar-compact {
463+
height: 100%;
464+
background: var(--accent);
465+
transition: width 0.3s ease;
466+
border-radius: 10px;
467+
}
468+
469+
.activity-progress-text {
470+
position: absolute;
471+
top: 50%;
472+
left: 50%;
473+
transform: translate(-50%, -50%);
474+
font-size: 0.625rem;
475+
font-weight: 600;
476+
color: var(--text-primary);
477+
z-index: 1;
478+
}
479+
480+
.notification-image-compact {
481+
width: 50px;
482+
height: 75px;
483+
flex-shrink: 0;
484+
border-radius: 0.25rem;
485+
overflow: hidden;
486+
background: var(--bg-primary);
487+
}
488+
489+
.notification-image-compact img {
490+
width: 100%;
491+
height: 100%;
492+
object-fit: cover;
493+
}
494+
495+
.notification-header-compact {
496+
display: flex;
497+
justify-content: space-between;
498+
align-items: center;
499+
gap: 0.5rem;
500+
margin-bottom: 0.25rem;
501+
}
502+
503+
.notification-type-compact {
504+
font-size: 0.625rem;
505+
text-transform: uppercase;
506+
padding: 0.125rem 0.375rem;
507+
border-radius: 0.25rem;
508+
font-weight: 600;
509+
background: var(--bg-primary);
510+
color: var(--text-secondary);
511+
}
512+
513+
.notification-time-compact {
514+
font-size: 0.625rem;
515+
color: var(--text-secondary);
516+
white-space: nowrap;
517+
}
518+
519+
.more-items {
520+
text-align: center;
521+
padding: 0.75rem;
522+
color: var(--text-secondary);
523+
font-size: 0.875rem;
524+
font-style: italic;
525+
}
526+
527+
.empty-state-compact {
528+
text-align: center;
529+
padding: 2rem 1rem;
530+
color: var(--text-secondary);
531+
font-size: 0.875rem;
532+
}
533+
534+
.notifications-controls-compact {
535+
display: flex;
536+
gap: 0.5rem;
537+
align-items: center;
538+
}
539+
540+
.notification-search-compact {
541+
padding: 0.5rem 0.75rem;
542+
background: var(--bg-tertiary);
543+
border: 1px solid var(--border);
544+
border-radius: 0.5rem;
545+
color: var(--text-primary);
546+
font-size: 0.75rem;
547+
width: 150px;
548+
}
549+
550+
.notification-search-compact:focus {
551+
outline: none;
552+
border-color: var(--accent);
553+
}
554+
555+
.notification-filter-compact {
556+
padding: 0.5rem 0.75rem;
557+
background: var(--bg-tertiary);
558+
border: 1px solid var(--border);
559+
border-radius: 0.5rem;
560+
color: var(--text-primary);
561+
font-size: 0.75rem;
562+
cursor: pointer;
563+
}
564+
565+
.notification-filter-compact:focus {
566+
outline: none;
567+
border-color: var(--accent);
568+
}
569+
354570
.scans-list-full,
355571
.activities-list-full,
356572
.notifications-list-full {

0 commit comments

Comments
 (0)