Files
archived-gitea-ai-assistant/frontend/src/index.css
jeffusion 5bb1c3a2d1 fix(frontend): standardize favicon/title, 401 redirect, SPA root route, and theme switching
- Replace default Vite favicon and title with project-specific branding
- Add axios response interceptor to handle 401 by clearing token and redirecting to login
- Move health check endpoint from '/' to '/api/health' so SPA index.html is served on root
- Integrate next-themes ThemeProvider with system preference detection and manual toggle
- Update docker-compose and k8s health check paths accordingly
- Replace hardcoded dark-only colors with semantic CSS variable tokens for theme compatibility
2026-03-24 12:30:13 +08:00

88 lines
2.3 KiB
CSS

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 240 10% 98%;
--foreground: 240 10% 3.9%;
--card: 0 0% 100%;
--card-foreground: 240 10% 3.9%;
--popover: 0 0% 100%;
--popover-foreground: 240 10% 3.9%;
--primary: 180 100% 35%;
--primary-foreground: 0 0% 100%;
--secondary: 240 4.8% 95.9%;
--secondary-foreground: 240 5.9% 10%;
--muted: 240 4.8% 95.9%;
--muted-foreground: 240 3.8% 46.1%;
--accent: 180 100% 35%;
--accent-foreground: 0 0% 100%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 0 0% 98%;
--border: 240 5.9% 90%;
--input: 240 5.9% 90%;
--ring: 180 100% 35%;
--radius: 0.5rem;
}
.dark {
--background: 240 10% 4%;
--foreground: 0 0% 98%;
--card: 240 10% 6%;
--card-foreground: 0 0% 98%;
--popover: 240 10% 6%;
--popover-foreground: 0 0% 98%;
--primary: 175 90% 45%;
--primary-foreground: 240 10% 4%;
--secondary: 240 5% 15%;
--secondary-foreground: 0 0% 98%;
--muted: 240 5% 15%;
--muted-foreground: 240 5% 65%;
--accent: 175 90% 45%;
--accent-foreground: 240 10% 4%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 0% 98%;
--border: 240 5% 15%;
--input: 240 5% 15%;
--ring: 175 90% 45%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground font-sans antialiased selection:bg-primary/30 selection:text-primary;
}
h1, h2, h3, h4, h5, h6 {
@apply tracking-tight;
}
code, pre, .font-mono {
font-family: 'JetBrains Mono', monospace;
}
}
@layer utilities {
.font-sans {
font-family: 'Inter', sans-serif;
}
.bg-grid-pattern {
background-size: 40px 40px;
background-image: linear-gradient(to right, hsl(var(--foreground) / 0.05) 1px, transparent 1px),
linear-gradient(to bottom, hsl(var(--foreground) / 0.05) 1px, transparent 1px);
}
.glass-panel {
@apply bg-card/80 backdrop-blur-xl border border-border shadow-2xl;
}
.tech-glow {
box-shadow: 0 0 20px -5px hsl(var(--primary) / 0.5);
}
.tech-glow:hover {
box-shadow: 0 0 30px -5px hsl(var(--primary) / 0.7);
}
}