- Dark OLED theme with emerald/cyan accent gradients - Framer Motion animations (stagger, hover, fade effects) - shadcn/ui components: Cards, Badges, Progress, Dialog, Input - Responsive grid layout with glass-morphism cards - Animated status indicators with pulse effects - Sparkline uptime visualizations - Grid/List view toggle - Stats overview cards with color-coded borders - Tooltips on all interactive elements - Modern Plus Jakarta Sans typography - Production-ready with accessibility features
103 lines
3.1 KiB
TypeScript
103 lines
3.1 KiB
TypeScript
import type { Config } from "tailwindcss";
|
|
|
|
const config: Config = {
|
|
darkMode: ["class"],
|
|
content: [
|
|
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
|
|
],
|
|
theme: {
|
|
extend: {
|
|
fontFamily: {
|
|
sans: ['Plus Jakarta Sans', 'system-ui', 'sans-serif'],
|
|
},
|
|
colors: {
|
|
background: "hsl(var(--background))",
|
|
foreground: "hsl(var(--foreground))",
|
|
card: {
|
|
DEFAULT: "hsl(var(--card))",
|
|
foreground: "hsl(var(--card-foreground))",
|
|
},
|
|
popover: {
|
|
DEFAULT: "hsl(var(--popover))",
|
|
foreground: "hsl(var(--popover-foreground))",
|
|
},
|
|
primary: {
|
|
DEFAULT: "hsl(var(--primary))",
|
|
foreground: "hsl(var(--primary-foreground))",
|
|
},
|
|
secondary: {
|
|
DEFAULT: "hsl(var(--secondary))",
|
|
foreground: "hsl(var(--secondary-foreground))",
|
|
},
|
|
muted: {
|
|
DEFAULT: "hsl(var(--muted))",
|
|
foreground: "hsl(var(--muted-foreground))",
|
|
},
|
|
accent: {
|
|
DEFAULT: "hsl(var(--accent))",
|
|
foreground: "hsl(var(--accent-foreground))",
|
|
},
|
|
destructive: {
|
|
DEFAULT: "hsl(var(--destructive))",
|
|
foreground: "hsl(var(--destructive-foreground))",
|
|
},
|
|
border: "hsl(var(--border))",
|
|
input: "hsl(var(--input))",
|
|
ring: "hsl(var(--ring))",
|
|
chart: {
|
|
"1": "hsl(var(--chart-1))",
|
|
"2": "hsl(var(--chart-2))",
|
|
"3": "hsl(var(--chart-3))",
|
|
"4": "hsl(var(--chart-4))",
|
|
"5": "hsl(var(--chart-5))",
|
|
},
|
|
status: {
|
|
up: "#22C55E",
|
|
down: "#EF4444",
|
|
warning: "#F59E0B",
|
|
idle: "#6B7280",
|
|
},
|
|
},
|
|
borderRadius: {
|
|
lg: "var(--radius)",
|
|
md: "calc(var(--radius) - 2px)",
|
|
sm: "calc(var(--radius) - 4px)",
|
|
},
|
|
keyframes: {
|
|
"accordion-down": {
|
|
from: { height: "0" },
|
|
to: { height: "var(--radix-accordion-content-height)" },
|
|
},
|
|
"accordion-up": {
|
|
from: { height: "var(--radix-accordion-content-height)" },
|
|
to: { height: "0" },
|
|
},
|
|
"pulse-glow": {
|
|
"0%, 100%": { opacity: "1", boxShadow: "0 0 20px rgba(34, 197, 94, 0.5)" },
|
|
"50%": { opacity: "0.8", boxShadow: "0 0 10px rgba(34, 197, 94, 0.3)" },
|
|
},
|
|
"slide-up": {
|
|
"0%": { transform: "translateY(10px)", opacity: "0" },
|
|
"100%": { transform: "translateY(0)", opacity: "1" },
|
|
},
|
|
"fade-in": {
|
|
"0%": { opacity: "0" },
|
|
"100%": { opacity: "1" },
|
|
},
|
|
},
|
|
animation: {
|
|
"accordion-down": "accordion-down 0.2s ease-out",
|
|
"accordion-up": "accordion-up 0.2s ease-out",
|
|
"pulse-glow": "pulse-glow 2s ease-in-out infinite",
|
|
"slide-up": "slide-up 0.3s ease-out",
|
|
"fade-in": "fade-in 0.2s ease-out",
|
|
},
|
|
},
|
|
},
|
|
plugins: [require("tailwindcss-animate")],
|
|
};
|
|
|
|
export default config;
|