Files
supervisor-ui/lib/utils/chartColors.ts

54 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

fix: resolve 7 critical UI issues - charts, layouts, and mobile responsiveness This commit fixes all reported UI issues across the dashboard: ## Issue 1: Chart Colors and Tooltips ✅ - Create chartColors utility with static hex colors for Recharts compatibility - Replace CSS variable colors (hsl(var(--))) with hex colors in all charts - Add custom tooltip styling with dark background and white text for readability - Fixes: ProcessStateChart, ProcessUptimeChart, GroupStatistics ## Issue 2: Process Card Heights ✅ - Add h-full and flex flex-col to ProcessCard component - Add auto-rows-fr to process grid layout - Ensures all cards have consistent heights regardless of content ## Issue 3: Batch Actions Button Labels ✅ - Simplify button labels from "Start Selected" to "Start" - Remove "Stop Selected" to "Stop", "Restart Selected" to "Restart" - Labels now always visible on all screen sizes ## Issue 4: Mobile Menu Background ✅ - Change mobile menu from semi-transparent (bg-background/95) to solid (bg-background) - Removes backdrop blur for better visibility ## Issue 5: Group Header Button Overflow ✅ - Add flex-wrap to button container in GroupCard - Stack buttons vertically on mobile (flex-col md:flex-row) - Buttons take full width on mobile, auto width on desktop ## Issue 6: Logs Search Input Overflow ✅ - Change LogSearch from max-w-md to w-full sm:flex-1 sm:max-w-md - Search input now full width on mobile, constrained on desktop ## Issue 7: Logs Action Button Overflow ✅ - Add flex-wrap to LogControls button container - Buttons wrap to new row when space is limited 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 21:52:35 +01:00
/**
* Chart color utilities for Recharts compatibility
*
* Recharts doesn't properly parse CSS custom properties or OKLCH colors,
* so we provide static hex colors that work reliably across themes.
*/
export const chartColors = {
primary: '#3b82f6', // Blue
success: '#22c55e', // Green
warning: '#eab308', // Yellow
destructive: '#ef4444', // Red
accent: '#06b6d4', // Cyan
muted: '#9ca3af', // Gray
running: '#22c55e', // Same as success
stopped: '#6b7280', // Darker gray
fatal: '#ef4444', // Same as destructive
starting: '#eab308', // Same as warning
backoff: '#f97316', // Orange
stopping: '#fb923c', // Light orange
exited: '#9ca3af', // Same as muted
unknown: '#64748b', // Slate
};
/**
* Get color for process state
*/
export function getStateColor(state: string): string {
const stateMap: Record<string, string> = {
running: chartColors.running,
stopped: chartColors.stopped,
fatal: chartColors.fatal,
starting: chartColors.starting,
backoff: chartColors.backoff,
stopping: chartColors.stopping,
exited: chartColors.exited,
unknown: chartColors.unknown,
};
return stateMap[state.toLowerCase()] || chartColors.muted;
}
/**
* Color palette for multiple data series
*/
export const colorPalette = [
chartColors.primary,
chartColors.success,
chartColors.warning,
chartColors.accent,
chartColors.destructive,
chartColors.muted,
];