/** @type {import('tailwindcss').Config} */ export default { content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", ], theme: { extend: { colors: { // 主色调 - 现代蓝色系 primary: { 50: '#eff6ff', 100: '#dbeafe', 200: '#bfdbfe', 300: '#93c5fd', 400: '#60a5fa', 500: '#3b82f6', 600: '#2563eb', 700: '#1d4ed8', 800: '#1e40af', 900: '#1e3a8a', 950: '#172554', }, // 中性色 - 更丰富的灰色层次 gray: { 25: '#fcfcfd', 50: '#f9fafb', 100: '#f3f4f6', 200: '#e5e7eb', 300: '#d1d5db', 400: '#9ca3af', 500: '#6b7280', 600: '#4b5563', 700: '#374151', 800: '#1f2937', 900: '#111827', 950: '#030712', }, // 成功色 success: { 50: '#f0fdf4', 100: '#dcfce7', 200: '#bbf7d0', 300: '#86efac', 400: '#4ade80', 500: '#22c55e', 600: '#16a34a', 700: '#15803d', 800: '#166534', 900: '#14532d', }, // 警告色 warning: { 50: '#fffbeb', 100: '#fef3c7', 200: '#fde68a', 300: '#fcd34d', 400: '#fbbf24', 500: '#f59e0b', 600: '#d97706', 700: '#b45309', 800: '#92400e', 900: '#78350f', }, // 错误色 error: { 50: '#fef2f2', 100: '#fee2e2', 200: '#fecaca', 300: '#fca5a5', 400: '#f87171', 500: '#ef4444', 600: '#dc2626', 700: '#b91c1c', 800: '#991b1b', 900: '#7f1d1d', }, // 信息色 info: { 50: '#eff6ff', 100: '#dbeafe', 200: '#bfdbfe', 300: '#93c5fd', 400: '#60a5fa', 500: '#3b82f6', 600: '#2563eb', 700: '#1d4ed8', 800: '#1e40af', 900: '#1e3a8a', } }, fontFamily: { sans: [ 'Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'sans-serif' ], mono: [ 'JetBrains Mono', 'Fira Code', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace' ], }, fontSize: { 'xs': ['0.75rem', { lineHeight: '1rem' }], 'sm': ['0.875rem', { lineHeight: '1.25rem' }], 'base': ['1rem', { lineHeight: '1.5rem' }], 'lg': ['1.125rem', { lineHeight: '1.75rem' }], 'xl': ['1.25rem', { lineHeight: '1.75rem' }], '2xl': ['1.5rem', { lineHeight: '2rem' }], '3xl': ['1.875rem', { lineHeight: '2.25rem' }], '4xl': ['2.25rem', { lineHeight: '2.5rem' }], '5xl': ['3rem', { lineHeight: '1' }], '6xl': ['3.75rem', { lineHeight: '1' }], }, spacing: { '18': '4.5rem', '88': '22rem', '128': '32rem', }, borderRadius: { 'none': '0', 'sm': '0.125rem', 'DEFAULT': '0.25rem', 'md': '0.375rem', 'lg': '0.5rem', 'xl': '0.75rem', '2xl': '1rem', '3xl': '1.5rem', 'full': '9999px', }, boxShadow: { 'xs': '0 1px 2px 0 rgb(0 0 0 / 0.05)', 'sm': '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)', 'DEFAULT': '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)', 'md': '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)', 'lg': '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)', 'xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)', '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)', 'inner': 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)', 'glow': '0 0 20px rgb(59 130 246 / 0.15)', 'glow-lg': '0 0 40px rgb(59 130 246 / 0.15)', }, animation: { // 基础动画 'spin-slow': 'spin 3s linear infinite', 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite', // 进入动画 'fade-in': 'fadeIn 0.3s ease-out', 'fade-in-up': 'fadeInUp 0.4s ease-out', 'fade-in-down': 'fadeInDown 0.4s ease-out', 'fade-in-left': 'fadeInLeft 0.4s ease-out', 'fade-in-right': 'fadeInRight 0.4s ease-out', // 滑动动画 'slide-up': 'slideUp 0.3s ease-out', 'slide-down': 'slideDown 0.3s ease-out', 'slide-left': 'slideLeft 0.3s ease-out', 'slide-right': 'slideRight 0.3s ease-out', // 缩放动画 'scale-in': 'scaleIn 0.2s ease-out', 'scale-out': 'scaleOut 0.2s ease-in', // 弹跳动画 'bounce-in': 'bounceIn 0.6s ease-out', 'bounce-subtle': 'bounceSubtle 0.6s ease-out', // 摇摆动画 'wiggle': 'wiggle 1s ease-in-out infinite', 'shake': 'shake 0.5s ease-in-out', // 呼吸动画 'breathe': 'breathe 2s ease-in-out infinite', // 加载动画 'loading-dots': 'loadingDots 1.4s ease-in-out infinite', 'loading-bars': 'loadingBars 1.2s ease-in-out infinite', 'loading-shimmer': 'loadingShimmer 2s ease-in-out infinite', }, keyframes: { // 淡入动画 fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' }, }, fadeInUp: { '0%': { opacity: '0', transform: 'translateY(20px)' }, '100%': { opacity: '1', transform: 'translateY(0)' }, }, fadeInDown: { '0%': { opacity: '0', transform: 'translateY(-20px)' }, '100%': { opacity: '1', transform: 'translateY(0)' }, }, fadeInLeft: { '0%': { opacity: '0', transform: 'translateX(-20px)' }, '100%': { opacity: '1', transform: 'translateX(0)' }, }, fadeInRight: { '0%': { opacity: '0', transform: 'translateX(20px)' }, '100%': { opacity: '1', transform: 'translateX(0)' }, }, // 滑动动画 slideUp: { '0%': { transform: 'translateY(10px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' }, }, slideDown: { '0%': { transform: 'translateY(-10px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' }, }, slideLeft: { '0%': { transform: 'translateX(10px)', opacity: '0' }, '100%': { transform: 'translateX(0)', opacity: '1' }, }, slideRight: { '0%': { transform: 'translateX(-10px)', opacity: '0' }, '100%': { transform: 'translateX(0)', opacity: '1' }, }, // 缩放动画 scaleIn: { '0%': { transform: 'scale(0.95)', opacity: '0' }, '100%': { transform: 'scale(1)', opacity: '1' }, }, scaleOut: { '0%': { transform: 'scale(1)', opacity: '1' }, '100%': { transform: 'scale(0.95)', opacity: '0' }, }, // 弹跳动画 bounceIn: { '0%': { transform: 'scale(0.3)', opacity: '0' }, '50%': { transform: 'scale(1.05)' }, '70%': { transform: 'scale(0.9)' }, '100%': { transform: 'scale(1)', opacity: '1' }, }, bounceSubtle: { '0%, 20%, 53%, 80%, 100%': { transform: 'translate3d(0,0,0)' }, '40%, 43%': { transform: 'translate3d(0, -8px, 0)' }, '70%': { transform: 'translate3d(0, -4px, 0)' }, '90%': { transform: 'translate3d(0, -2px, 0)' }, }, // 摇摆动画 wiggle: { '0%, 100%': { transform: 'rotate(-3deg)' }, '50%': { transform: 'rotate(3deg)' }, }, shake: { '0%, 100%': { transform: 'translateX(0)' }, '10%, 30%, 50%, 70%, 90%': { transform: 'translateX(-2px)' }, '20%, 40%, 60%, 80%': { transform: 'translateX(2px)' }, }, // 呼吸动画 breathe: { '0%, 100%': { transform: 'scale(1)', opacity: '1' }, '50%': { transform: 'scale(1.05)', opacity: '0.8' }, }, // 加载动画 loadingDots: { '0%, 80%, 100%': { transform: 'scale(0)' }, '40%': { transform: 'scale(1)' }, }, loadingBars: { '0%, 40%, 100%': { transform: 'scaleY(0.4)' }, '20%': { transform: 'scaleY(1)' }, }, loadingShimmer: { '0%': { backgroundPosition: '-200% 0' }, '100%': { backgroundPosition: '200% 0' }, }, }, backdropBlur: { 'xs': '2px', }, transitionTimingFunction: { 'bounce-in': 'cubic-bezier(0.68, -0.55, 0.265, 1.55)', 'smooth': 'cubic-bezier(0.4, 0, 0.2, 1)', 'snappy': 'cubic-bezier(0.4, 0, 0.6, 1)', }, transitionDuration: { '400': '400ms', '600': '600ms', }, }, }, plugins: [], }