diff --git a/frontend/public/dark-theme.css b/frontend/public/dark-theme.css index 58b0960b..17834395 100644 --- a/frontend/public/dark-theme.css +++ b/frontend/public/dark-theme.css @@ -60,10 +60,49 @@ background-color: var(--studio-bg-success); } +/* Status card/badge backgrounds (100-level) */ +.dark .bg-yellow-100 { + background-color: var(--studio-bg-warning); +} + +.dark .bg-green-100 { + background-color: var(--studio-bg-success); +} + +.dark .bg-red-100 { + background-color: var(--studio-bg-error); +} + .dark .bg-blue-100 { background-color: var(--studio-bg-info); } +/* Status pill active/selected backgrounds (200-level) */ +.dark .bg-yellow-200 { + background-color: var(--studio-bg-warning-active); +} + +.dark .bg-green-200 { + background-color: var(--studio-bg-success-active); +} + +.dark .bg-red-200 { + background-color: var(--studio-bg-error-active); +} + +/* Status card/badge hover backgrounds */ +.dark .hover\:bg-yellow-100:hover { + background-color: var(--studio-bg-warning-hover); +} + +.dark .hover\:bg-green-100:hover { + background-color: var(--studio-bg-success-hover); +} + +.dark .hover\:bg-red-100:hover { + background-color: var(--studio-bg-error-hover); +} + .dark .border-red-200 { border-color: var(--studio-border-error); } @@ -76,6 +115,55 @@ border-color: var(--studio-border-success); } +/* Hover/other status borders (200-level is handled above) */ +.dark .border-yellow-300 { + border-color: var(--studio-border-warning); +} + +.dark .border-green-300 { + border-color: var(--studio-border-success); +} + +.dark .border-red-300 { + border-color: var(--studio-border-error); +} + +.dark .hover\:border-yellow-300:hover { + border-color: var(--studio-border-warning); +} + +.dark .hover\:border-green-300:hover { + border-color: var(--studio-border-success); +} + +.dark .hover\:border-red-300:hover { + border-color: var(--studio-border-error); +} + +/* Status text colors – label (600-level) and value (700–900-level) */ +.dark .text-yellow-600, +.dark .text-yellow-700, +.dark .text-yellow-800, +.dark .text-yellow-900 { + color: var(--studio-text-warning); +} + +.dark .text-green-600, +.dark .text-green-800, +.dark .text-green-900 { + color: var(--studio-text-success); +} + +.dark .text-red-600, +.dark .text-red-800, +.dark .text-red-900 { + color: var(--studio-text-error); +} + +.dark .text-blue-800 { + color: var(--studio-text-info); +} + .dark .text-red-700 { color: var(--studio-text-error); } @@ -92,6 +180,28 @@ --tw-ring-color: var(--studio-ring-muted); } +/* Status ring colors in dark mode */ +.dark .ring-yellow-400, +.dark .ring-yellow-500 { + --tw-ring-color: var(--studio-ring-warning); +} + +.dark .ring-green-400, +.dark .ring-green-500 { + --tw-ring-color: var(--studio-ring-success); +} + +.dark .ring-red-400, +.dark .ring-red-500 { + --tw-ring-color: var(--studio-ring-error); +} + +.dark .ring-gray-400, +.dark .ring-gray-500, +.dark .ring-slate-500 { + --tw-ring-color: var(--studio-ring-muted); +} + /* ---- Ring / shadow ---- */ .dark .ring-black\/5, .dark .ring-opacity-5 { @@ -358,6 +468,62 @@ } +/* ---- Task action button gradients (dark mode) ---- */ +.dark .from-blue-500 { + --tw-gradient-from: #1d4ed8; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(29 78 216 / 0)); +} + +.dark .to-blue-600 { + --tw-gradient-to: #1e40af; +} + +.dark .hover\:from-blue-600:hover { + --tw-gradient-from: #2563eb; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(37 99 235 / 0)); +} + +.dark .hover\:to-blue-700:hover { + --tw-gradient-to: #1d4ed8; +} + +.dark .from-green-500 { + --tw-gradient-from: #15803d; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(21 128 61 / 0)); +} + +.dark .to-green-600 { + --tw-gradient-to: #166534; +} + +.dark .hover\:from-green-600:hover { + --tw-gradient-from: #16a34a; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(22 163 74 / 0)); +} + +.dark .hover\:to-green-700:hover { + --tw-gradient-to: #15803d; +} + +/* Red action buttons: pending cancel (dark mode) */ +.dark .from-red-500 { + --tw-gradient-from: #b91c1c; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(185 28 28 / 0)); +} + +.dark .to-red-600 { + --tw-gradient-to: #991b1b; +} + +.dark .hover\:from-red-600:hover { + --tw-gradient-from: #dc2626; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(220 38 38 / 0)); +} + +.dark .hover\:to-red-700:hover { + --tw-gradient-to: #b91c1c; +} + /* ---- Input placeholder contrast ---- */ .dark ::placeholder, .dark .placeholder\:text-gray-400::placeholder { diff --git a/frontend/public/theme-variables.css b/frontend/public/theme-variables.css index 3406f7c7..a257c6fc 100644 --- a/frontend/public/theme-variables.css +++ b/frontend/public/theme-variables.css @@ -47,13 +47,23 @@ --studio-bg-warning: #fefce8; --studio-bg-success: #f0fdf4; --studio-bg-info: #eff6ff; + --studio-bg-warning-active: #fef9c3; + --studio-bg-success-active: #dcfce7; + --studio-bg-error-active: #fee2e2; + --studio-bg-warning-hover: #fef08a; + --studio-bg-success-hover: #bbf7d0; + --studio-bg-error-hover: #fecaca; --studio-border-error: #fecaca; --studio-border-warning: #fde047; --studio-border-success: #bbf7d0; --studio-border-info: #bfdbfe; --studio-text-error: #b91c1c; + --studio-text-warning: #92400e; --studio-text-success: #15803d; + --studio-text-info: #1e40af; --studio-ring-success: rgba(34, 197, 94, 0.2); + --studio-ring-warning: rgba(245, 158, 11, 0.2); + --studio-ring-error: rgba(239, 68, 68, 0.2); --studio-ring-muted: rgba(75, 85, 99, 0.2); /* Tooltip */ @@ -150,13 +160,23 @@ --studio-bg-warning: #422006; --studio-bg-success: #052e16; --studio-bg-info: #1e3a8a; + --studio-bg-warning-active: #713f12; + --studio-bg-success-active: #14532d; + --studio-bg-error-active: #7f1d1d; + --studio-bg-warning-hover: #4d2a0a; + --studio-bg-success-hover: #073b1c; + --studio-bg-error-hover: #500d0d; --studio-border-error: #7f1d1d; --studio-border-warning: #854d0e; --studio-border-success: #14532d; --studio-border-info: #1e40af; --studio-text-error: #fca5a5; + --studio-text-warning: #fcd34d; --studio-text-success: #86efac; + --studio-text-info: #93c5fd; --studio-ring-success: rgba(34, 197, 94, 0.3); + --studio-ring-warning: rgba(252, 211, 77, 0.25); + --studio-ring-error: rgba(252, 165, 165, 0.25); --studio-ring-muted: rgba(75, 85, 99, 0.4); /* Tooltip */ @@ -229,13 +249,23 @@ --studio-bg-warning: #422006; --studio-bg-success: #052e16; --studio-bg-info: #1e3a8a; + --studio-bg-warning-active: #713f12; + --studio-bg-success-active: #14532d; + --studio-bg-error-active: #7f1d1d; + --studio-bg-warning-hover: #4d2a0a; + --studio-bg-success-hover: #073b1c; + --studio-bg-error-hover: #500d0d; --studio-border-error: #7f1d1d; --studio-border-warning: #854d0e; --studio-border-success: #14532d; --studio-border-info: #1e40af; --studio-text-error: #fca5a5; + --studio-text-warning: #fcd34d; --studio-text-success: #86efac; + --studio-text-info: #93c5fd; --studio-ring-success: rgba(34, 197, 94, 0.3); + --studio-ring-warning: rgba(252, 211, 77, 0.25); + --studio-ring-error: rgba(252, 165, 165, 0.25); --studio-ring-muted: rgba(75, 85, 99, 0.4); --studio-tooltip-bg: #252525; --studio-tooltip-text: #e8e8e8; diff --git a/frontend/src/task-by-name/task-by-name.html b/frontend/src/task-by-name/task-by-name.html index 8b2407fd..8dee03c9 100644 --- a/frontend/src/task-by-name/task-by-name.html +++ b/frontend/src/task-by-name/task-by-name.html @@ -31,22 +31,22 @@
- {{ Math.min((page - 1) * pageSize + 1, numDocs) }}–{{ Math.min(page * pageSize, numDocs) }} +
+ {{ Math.min((page - 1) * pageSize + 1, numDocs) }}–{{ Math.min(page * pageSize, numDocs) }} of - {{ numDocs }} - tasks + {{ numDocs }} + tasks
Run task {{ selectedTask?.id }} immediately?
This will execute the task right away, bypassing its scheduled time.
Cancel task {{ selectedTask?.id }}?
This will permanently cancel the task and it cannot be undone.