Implemented comprehensive theme switching: - 5 beautiful themes: Dark, Light, Synthwave, Forest, Ocean - Persistent theme preference in localStorage - Theme switcher in toolbar with descriptions - Custom CSS variables for each theme - Smooth theme transitions - Mobile-friendly theme selector Users can now customize their IDE appearance to match their preference.
154 lines
2.8 KiB
CSS
154 lines
2.8 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
/* Default Dark Theme */
|
|
:root, .theme-dark {
|
|
--background: #0a0a0f;
|
|
--surface: #1a1a1f;
|
|
--primary: #8b5cf6;
|
|
--primary-light: #a78bfa;
|
|
--primary-dark: #7c3aed;
|
|
--secondary: #ec4899;
|
|
--accent: #06b6d4;
|
|
--border: #2a2a2f;
|
|
--foreground: #ffffff;
|
|
--muted: #6b7280;
|
|
}
|
|
|
|
/* Light Theme */
|
|
.theme-light {
|
|
--background: #ffffff;
|
|
--surface: #f9fafb;
|
|
--primary: #7c3aed;
|
|
--primary-light: #8b5cf6;
|
|
--primary-dark: #6d28d9;
|
|
--secondary: #db2777;
|
|
--accent: #0891b2;
|
|
--border: #e5e7eb;
|
|
--foreground: #111827;
|
|
--muted: #6b7280;
|
|
}
|
|
|
|
/* Synthwave Theme */
|
|
.theme-synthwave {
|
|
--background: #2b213a;
|
|
--surface: #241b2f;
|
|
--primary: #ff6ac1;
|
|
--primary-light: #ff8ad8;
|
|
--primary-dark: #ff4aaa;
|
|
--secondary: #9d72ff;
|
|
--accent: #72f1b8;
|
|
--border: #495495;
|
|
--foreground: #f8f8f2;
|
|
--muted: #a599e9;
|
|
}
|
|
|
|
/* Forest Theme */
|
|
.theme-forest {
|
|
--background: #0d1b1e;
|
|
--surface: #1a2f33;
|
|
--primary: #2dd4bf;
|
|
--primary-light: #5eead4;
|
|
--primary-dark: #14b8a6;
|
|
--secondary: #34d399;
|
|
--accent: #a7f3d0;
|
|
--border: #234e52;
|
|
--foreground: #ecfdf5;
|
|
--muted: #6ee7b7;
|
|
}
|
|
|
|
/* Ocean Theme */
|
|
.theme-ocean {
|
|
--background: #0c1821;
|
|
--surface: #1b2838;
|
|
--primary: #3b82f6;
|
|
--primary-light: #60a5fa;
|
|
--primary-dark: #2563eb;
|
|
--secondary: #06b6d4;
|
|
--accent: #38bdf8;
|
|
--border: #1e3a5f;
|
|
--foreground: #dbeafe;
|
|
--muted: #7dd3fc;
|
|
}
|
|
|
|
* {
|
|
border-color: var(--border);
|
|
}
|
|
|
|
body {
|
|
background-color: var(--background);
|
|
color: var(--foreground);
|
|
font-family: var(--font-inter), 'Inter', sans-serif;
|
|
}
|
|
|
|
code, pre {
|
|
font-family: var(--font-jetbrains-mono), 'JetBrains Mono', monospace;
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.text-balance {
|
|
text-wrap: balance;
|
|
}
|
|
}
|
|
|
|
/* Custom scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: #1a1a1f;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #2a2a2f;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #3a3a3f;
|
|
}
|
|
|
|
/* Animation classes */
|
|
.animate-slide-in {
|
|
animation: slideIn 0.2s ease-out;
|
|
}
|
|
|
|
.animate-fade-in {
|
|
animation: fadeIn 0.2s ease-in-out;
|
|
}
|
|
|
|
@keyframes slideIn {
|
|
from {
|
|
transform: translateY(-10px);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateY(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* Monaco Editor theme overrides */
|
|
.monaco-editor .margin {
|
|
background-color: #0a0a0f !important;
|
|
}
|
|
|
|
.monaco-editor {
|
|
background-color: #0a0a0f !important;
|
|
}
|