Files
nl-blogs/client/tailwind.config.js
2026-01-16 11:06:59 +08:00

77 lines
2.9 KiB
JavaScript

/** @type {import('tailwindcss').Config} */
export default {
darkMode: 'class',
content: [
"./index.html",
"./src/**/*.{vue,js,ts,jsx,tsx}",
],
theme: {
extend: {
fontFamily: {
sans: ['"Inter"', '"Noto Sans SC"', 'sans-serif'],
serif: ['"Playfair Display"', 'serif'],
mono: ['"JetBrains Mono"', 'monospace'],
},
colors: {
art: {
bg: '#050505',
surface: '#121214',
border: 'rgba(255,255,255,0.08)',
text: '#ececec',
muted: '#888888',
accent: '#d4b383',
error: '#ef4444',
'admin-bg': '#0a0a0a',
'admin-card': '#121214',
'admin-hover': '#1a1a1c',
}
},
backgroundImage: {
'noise': "url('data:image/svg+xml,%3Csvg viewBox=%220 0 200 200%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cfilter id=%22noiseFilter%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%220.65%22 numOctaves=%223%22 stitchTiles=%22stitch%22/%3E%3C/filter%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23noiseFilter)%22 opacity=%220.07%22/%3E%3C/svg%3E')",
},
animation: {
'float': 'float 8s ease-in-out infinite',
'slide-down': 'slideDown 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards',
'reveal': 'reveal 1s cubic-bezier(0.16, 1, 0.3, 1) forwards',
'spotlight': 'spotlight 2s ease .75s 1 forwards',
'marquee': 'marquee 25s linear infinite',
'marquee-reverse': 'marqueeReverse 30s linear infinite',
'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
'shake': 'shake 0.5s cubic-bezier(.36,.07,.19,.97) both',
},
keyframes: {
float: {
'0%, 100%': { transform: 'translateY(0)' },
'50%': { transform: 'translateY(-20px)' },
},
slideDown: {
'0%': { transform: 'translateY(-100%)' },
'100%': { transform: 'translateY(0)' },
},
reveal: {
'0%': { opacity: '0', transform: 'translateY(50px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
spotlight: {
'0%': { opacity: 0, transform: 'translate(-50%, -50%) scale(0.5)' },
'100%': { opacity: 1, transform: 'translate(-50%, -50%) scale(1)' }
},
marquee: {
'0%': { transform: 'translateX(0%)' },
'100%': { transform: 'translateX(-100%)' }
},
marqueeReverse: {
'0%': { transform: 'translateX(-50%)' },
'100%': { transform: 'translateX(0%)' }
},
shake: {
'10%, 90%': { transform: 'translate3d(-1px, 0, 0)' },
'20%, 80%': { transform: 'translate3d(2px, 0, 0)' },
'30%, 50%, 70%': { transform: 'translate3d(-4px, 0, 0)' },
'40%, 60%': { transform: 'translate3d(4px, 0, 0)' }
}
}
},
},
plugins: [],
}