mirror of
https://github.com/mudler/LocalAI.git
synced 2026-02-18 23:21:58 -05:00
* feat(ui): left navbar, dark/light theme Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * darker background Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
199 lines
8.3 KiB
CSS
199 lines
8.3 KiB
CSS
/* LocalAI Theme - CSS Variables System */
|
|
/* Based on logo color palette: cyan, teal, navy, purple */
|
|
|
|
/* Dark Theme (Default) - Charcoal Gray Style */
|
|
:root,
|
|
[data-theme="dark"],
|
|
.dark {
|
|
/* Base Colors - Charcoal Gray */
|
|
--color-bg-primary: #121212; /* Main background */
|
|
--color-bg-secondary: #1A1A1A; /* Elevated surfaces */
|
|
--color-bg-tertiary: #222222; /* Cards, panels */
|
|
--color-bg-overlay: rgba(18, 18, 18, 0.95); /* Modals, overlays */
|
|
|
|
/* Override tw-elements dark background */
|
|
background-color: #121212 !important;
|
|
|
|
/* Brand Colors */
|
|
--color-primary: #38BDF8; /* Cyan - primary actions */
|
|
--color-primary-hover: #0EA5E9; /* Darker cyan on hover */
|
|
--color-primary-active: #0284C7; /* Active state */
|
|
--color-primary-text: #FFFFFF; /* Text on primary background */
|
|
--color-primary-light: rgba(56, 189, 248, 0.08); /* Light cyan backgrounds (reduced) */
|
|
--color-primary-border: rgba(56, 189, 248, 0.15); /* Cyan borders (reduced) */
|
|
|
|
--color-secondary: #14B8A6; /* Teal - secondary actions */
|
|
--color-secondary-hover: #0D9488; /* Darker teal on hover */
|
|
--color-secondary-light: rgba(20, 184, 166, 0.1);
|
|
|
|
--color-accent: #8B5CF6; /* Purple - special states */
|
|
--color-accent-hover: #7C3AED; /* Darker purple on hover */
|
|
--color-accent-light: rgba(139, 92, 246, 0.1);
|
|
|
|
--color-accent-purple: #A78BFA; /* Light purple for gradients */
|
|
--color-accent-teal: #2DD4BF; /* Light teal for gradients */
|
|
|
|
/* Text Colors */
|
|
--color-text-primary: #E5E7EB; /* Primary text */
|
|
--color-text-secondary: #94A3B8; /* Secondary text */
|
|
--color-text-muted: #64748B; /* Tertiary text */
|
|
--color-text-disabled: #475569; /* Disabled text */
|
|
--color-text-inverse: #FFFFFF; /* Text on light backgrounds */
|
|
|
|
/* Border Colors - Visible on charcoal */
|
|
--color-border-subtle: rgba(255, 255, 255, 0.08); /* Minimal borders */
|
|
--color-border-default: rgba(255, 255, 255, 0.12); /* Default borders */
|
|
--color-border-strong: rgba(56, 189, 248, 0.3); /* Focus borders */
|
|
--color-border-divider: rgba(255, 255, 255, 0.05); /* Section dividers */
|
|
--color-border-primary: rgba(56, 189, 248, 0.2); /* Primary borders */
|
|
--color-border-secondary: rgba(255, 255, 255, 0.1);
|
|
--color-border-focus: rgba(56, 189, 248, 0.4); /* Focus borders */
|
|
|
|
/* Status Colors */
|
|
--color-success: #14B8A6; /* Use teal for success (aligned with logo) */
|
|
--color-success-light: rgba(20, 184, 166, 0.1);
|
|
--color-warning: #F59E0B;
|
|
--color-warning-light: rgba(245, 158, 11, 0.1);
|
|
--color-error: #EF4444;
|
|
--color-error-light: rgba(239, 68, 68, 0.1);
|
|
--color-info: #38BDF8; /* Use cyan for info */
|
|
--color-info-light: rgba(56, 189, 248, 0.1);
|
|
|
|
/* Gradient Definitions */
|
|
--gradient-primary: linear-gradient(135deg, #38BDF8 0%, #8B5CF6 50%, #14B8A6 100%);
|
|
--gradient-hero: linear-gradient(135deg, #121212 0%, #1A1A1A 50%, #121212 100%);
|
|
--gradient-card: linear-gradient(135deg, rgba(56, 189, 248, 0.04) 0%, rgba(139, 92, 246, 0.04) 100%);
|
|
--gradient-text: linear-gradient(135deg, #38BDF8 0%, #8B5CF6 50%, #14B8A6 100%);
|
|
|
|
/* Shadows - Charcoal theme */
|
|
--shadow-none: none;
|
|
--shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.25);
|
|
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.3);
|
|
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.35);
|
|
--shadow-glow: 0 0 0 1px rgba(56, 189, 248, 0.15), 0 0 12px rgba(56, 189, 248, 0.2);
|
|
--shadow-sidebar: 1px 0 3px rgba(0, 0, 0, 0.25);
|
|
|
|
/* Animation Timing - Minimal */
|
|
--duration-instant: 100ms;
|
|
--duration-fast: 150ms;
|
|
--duration-normal: 200ms;
|
|
--duration-slow: 300ms;
|
|
|
|
/* Animation Easing */
|
|
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
|
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
--ease-spring: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
|
|
/* Spacing Scale (for reference, used via Tailwind) */
|
|
--spacing-xs: 0.25rem; /* 4px */
|
|
--spacing-sm: 0.5rem; /* 8px */
|
|
--spacing-md: 1rem; /* 16px */
|
|
--spacing-lg: 1.5rem; /* 24px */
|
|
--spacing-xl: 2rem; /* 32px */
|
|
--spacing-2xl: 3rem; /* 48px */
|
|
--spacing-3xl: 4rem; /* 64px */
|
|
|
|
/* Border Radius */
|
|
--radius-none: 0;
|
|
--radius-sm: 4px;
|
|
--radius-md: 6px; /* Updated per PRD */
|
|
--radius-lg: 8px;
|
|
--radius-xl: 12px;
|
|
--radius-full: 9999px;
|
|
|
|
/* Width System - Container Sizes */
|
|
--width-xs: 20rem; /* 320px */
|
|
--width-sm: 24rem; /* 384px */
|
|
--width-md: 28rem; /* 448px */
|
|
--width-lg: 32rem; /* 512px */
|
|
--width-xl: 36rem; /* 576px */
|
|
--width-2xl: 42rem; /* 672px */
|
|
--width-3xl: 48rem; /* 768px */
|
|
--width-4xl: 56rem; /* 896px */
|
|
--width-5xl: 64rem; /* 1024px */
|
|
--width-6xl: 72rem; /* 1152px */
|
|
--width-7xl: 80rem; /* 1280px */
|
|
|
|
/* Sidebar */
|
|
--sidebar-width: 220px;
|
|
--sidebar-bg: var(--color-bg-primary);
|
|
--sidebar-border: var(--color-border-subtle);
|
|
}
|
|
|
|
/* Light Theme */
|
|
[data-theme="light"] {
|
|
/* Base Colors */
|
|
--color-bg-primary: #F8FAFC; /* Soft gray background */
|
|
--color-bg-secondary: #FFFFFF; /* Elevated surfaces */
|
|
--color-bg-tertiary: #FFFFFF; /* Cards, panels */
|
|
--color-bg-overlay: rgba(248, 250, 252, 0.9); /* Modals, overlays */
|
|
|
|
/* Brand Colors - Slightly adjusted for light backgrounds */
|
|
--color-primary: #0EA5E9; /* Slightly darker cyan for better contrast */
|
|
--color-primary-hover: #0284C7; /* Darker on hover */
|
|
--color-primary-active: #0369A1; /* Active state */
|
|
--color-primary-text: #FFFFFF; /* Text on primary background */
|
|
--color-primary-light: rgba(14, 165, 233, 0.08); /* Light cyan backgrounds */
|
|
--color-primary-border: rgba(14, 165, 233, 0.2); /* Cyan borders */
|
|
|
|
--color-secondary: #0D9488; /* Teal - secondary actions */
|
|
--color-secondary-hover: #0F766E; /* Darker teal on hover */
|
|
--color-secondary-light: rgba(13, 148, 136, 0.1);
|
|
|
|
--color-accent: #7C3AED; /* Purple - special states */
|
|
--color-accent-hover: #6D28D9; /* Darker purple on hover */
|
|
--color-accent-light: rgba(124, 58, 237, 0.1);
|
|
|
|
--color-accent-purple: #A78BFA; /* Light purple for gradients */
|
|
--color-accent-teal: #2DD4BF; /* Light teal for gradients */
|
|
|
|
/* Text Colors */
|
|
--color-text-primary: #1E293B; /* Primary text - dark slate */
|
|
--color-text-secondary: #64748B; /* Secondary text */
|
|
--color-text-muted: #94A3B8; /* Tertiary text */
|
|
--color-text-disabled: #CBD5E1; /* Disabled text */
|
|
--color-text-inverse: #FFFFFF; /* Text on dark backgrounds */
|
|
|
|
/* Border Colors */
|
|
--color-border-subtle: rgba(15, 23, 42, 0.06); /* Minimal borders */
|
|
--color-border-default: rgba(15, 23, 42, 0.1); /* Default borders */
|
|
--color-border-strong: rgba(14, 165, 233, 0.3); /* Focus borders */
|
|
--color-border-divider: rgba(15, 23, 42, 0.04); /* Section dividers */
|
|
--color-border-primary: rgba(14, 165, 233, 0.2); /* Primary borders */
|
|
--color-border-secondary: rgba(15, 23, 42, 0.08);
|
|
--color-border-focus: rgba(14, 165, 233, 0.4); /* Focus borders */
|
|
|
|
/* Status Colors - Adjusted for light theme */
|
|
--color-success: #0D9488;
|
|
--color-success-light: rgba(13, 148, 136, 0.1);
|
|
--color-warning: #D97706;
|
|
--color-warning-light: rgba(217, 119, 6, 0.1);
|
|
--color-error: #DC2626;
|
|
--color-error-light: rgba(220, 38, 38, 0.1);
|
|
--color-info: #0EA5E9;
|
|
--color-info-light: rgba(14, 165, 233, 0.1);
|
|
|
|
/* Gradient Definitions */
|
|
--gradient-primary: linear-gradient(135deg, #0EA5E9 0%, #7C3AED 50%, #0D9488 100%);
|
|
--gradient-hero: linear-gradient(135deg, #F8FAFC 0%, #FFFFFF 50%, #F8FAFC 100%);
|
|
--gradient-card: linear-gradient(135deg, rgba(14, 165, 233, 0.03) 0%, rgba(124, 58, 237, 0.03) 100%);
|
|
--gradient-text: linear-gradient(135deg, #0EA5E9 0%, #7C3AED 50%, #0D9488 100%);
|
|
|
|
/* Shadows - More visible in light theme */
|
|
--shadow-none: none;
|
|
--shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
|
|
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.08);
|
|
--shadow-glow: 0 0 0 1px rgba(14, 165, 233, 0.15), 0 0 8px rgba(14, 165, 233, 0.2);
|
|
--shadow-sidebar: 1px 0 3px rgba(0, 0, 0, 0.08);
|
|
|
|
/* Sidebar */
|
|
--sidebar-bg: #FFFFFF;
|
|
--sidebar-border: rgba(15, 23, 42, 0.06);
|
|
}
|
|
|