306 lines
9.1 KiB
JavaScript
306 lines
9.1 KiB
JavaScript
/** @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: [
|
|
require('tailwind-scrollbar')({ nocompatible: true }),
|
|
],
|
|
}
|