rln.waku.org/tailwind.config.ts

120 lines
3.6 KiB
TypeScript
Raw Normal View History

2025-04-04 17:29:57 +05:30
import type { Config } from "tailwindcss";
import { fontFamily } from "tailwindcss/defaultTheme";
import animatePlugin from "tailwindcss-animate";
export default {
content: [
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
],
darkMode: ["class"],
theme: {
extend: {
fontFamily: {
sans: ["var(--font-sans)", ...fontFamily.sans],
mono: ["var(--font-mono)", ...fontFamily.mono],
},
colors: {
// Cypherpunk inspired color palette
background: "hsl(230, 25%, 7%)", // Deep space background
foreground: "hsl(213, 31%, 91%)",
border: "hsl(230, 15%, 20%)",
input: "hsl(230, 15%, 15%)",
// Base accent colors
primary: {
DEFAULT: "hsl(150, 100%, 54%)", // Neon green
foreground: "hsl(230, 25%, 7%)",
muted: "hsla(150, 100%, 54%, 0.2)",
},
secondary: {
DEFAULT: "hsl(280, 100%, 60%)", // Electric purple
foreground: "hsl(230, 25%, 7%)",
muted: "hsla(280, 100%, 60%, 0.2)",
},
accent: {
DEFAULT: "hsl(190, 100%, 50%)", // Digital blue
foreground: "hsl(230, 25%, 7%)",
muted: "hsla(190, 100%, 50%, 0.2)",
},
// Status colors
success: {
DEFAULT: "hsl(142, 76%, 50%)",
muted: "hsla(142, 76%, 50%, 0.2)",
},
warning: {
DEFAULT: "hsl(38, 100%, 50%)",
muted: "hsla(38, 100%, 50%, 0.2)",
},
destructive: {
DEFAULT: "hsl(0, 100%, 55%)",
muted: "hsla(0, 100%, 55%, 0.2)",
foreground: "hsl(210, 40%, 98%)",
},
// UI component colors
muted: {
DEFAULT: "hsl(230, 15%, 25%)",
foreground: "hsl(213, 20%, 65%)",
},
card: {
DEFAULT: "hsl(229, 20%, 10%)",
foreground: "hsl(213, 31%, 91%)",
},
popover: {
DEFAULT: "hsl(229, 20%, 10%)",
foreground: "hsl(213, 31%, 91%)",
},
// Specialized elements
terminal: {
background: "hsl(230, 25%, 5%)",
border: "hsl(150, 100%, 54%, 0.3)",
text: "hsl(150, 100%, 54%)",
muted: "hsl(150, 100%, 25%)",
},
},
borderRadius: {
lg: "0.5rem",
md: "calc(0.5rem - 2px)",
sm: "calc(0.5rem - 4px)",
},
boxShadow: {
glow: "0 0 10px var(--tw-shadow-color), 0 0 20px var(--tw-shadow-color)",
"glow-sm": "0 0 5px var(--tw-shadow-color), 0 0 10px var(--tw-shadow-color)",
},
keyframes: {
"scan-line": {
"0%": { transform: "translateY(0%)" },
"100%": { transform: "translateY(100%)" },
},
blink: {
"0%, 100%": { opacity: "1" },
"50%": { opacity: "0" },
},
"terminal-typing": {
"0%": { width: "0" },
"100%": { width: "100%" },
},
flicker: {
"0%, 100%": { opacity: "1" },
"5%, 25%, 75%, 95%": { opacity: "0.8" },
"10%, 30%, 80%, 90%": { opacity: "0.9" },
"15%, 45%, 65%, 85%": { opacity: "0.85" },
"20%, 40%, 60%, 70%": { opacity: "0.75" },
},
},
animation: {
"scan-line": "scan-line 6s linear infinite",
blink: "blink 1s step-end infinite",
"terminal-typing": "terminal-typing 3s steps(40, end)",
flicker: "flicker 5s linear infinite",
},
},
},
plugins: [animatePlugin],
} satisfies Config;