tailwind.config.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /** @type {import('tailwindcss').Config} */
  2. export default {
  3. content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  4. darkMode: 'class',
  5. theme: {
  6. extend: {
  7. colors: {
  8. // 主色调 - Teal/Cyan 青色系
  9. primary: {
  10. 50: '#f0fdfa',
  11. 100: '#ccfbf1',
  12. 200: '#99f6e4',
  13. 300: '#5eead4',
  14. 400: '#2dd4bf',
  15. 500: '#14b8a6',
  16. 600: '#0d9488',
  17. 700: '#0f766e',
  18. 800: '#115e59',
  19. 900: '#134e4a',
  20. 950: '#042f2e'
  21. },
  22. // 辅助色 - 深蓝灰
  23. accent: {
  24. 50: '#f8fafc',
  25. 100: '#f1f5f9',
  26. 200: '#e2e8f0',
  27. 300: '#cbd5e1',
  28. 400: '#94a3b8',
  29. 500: '#64748b',
  30. 600: '#475569',
  31. 700: '#334155',
  32. 800: '#1e293b',
  33. 900: '#0f172a',
  34. 950: '#020617'
  35. },
  36. // 深色模式背景
  37. dark: {
  38. 50: '#f8fafc',
  39. 100: '#f1f5f9',
  40. 200: '#e2e8f0',
  41. 300: '#cbd5e1',
  42. 400: '#94a3b8',
  43. 500: '#64748b',
  44. 600: '#475569',
  45. 700: '#334155',
  46. 800: '#1e293b',
  47. 900: '#0f172a',
  48. 950: '#020617'
  49. }
  50. },
  51. fontFamily: {
  52. sans: [
  53. 'system-ui',
  54. '-apple-system',
  55. 'BlinkMacSystemFont',
  56. 'Segoe UI',
  57. 'Roboto',
  58. 'Helvetica Neue',
  59. 'Arial',
  60. 'PingFang SC',
  61. 'Hiragino Sans GB',
  62. 'Microsoft YaHei',
  63. 'sans-serif'
  64. ],
  65. mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'monospace']
  66. },
  67. boxShadow: {
  68. glass: '0 8px 32px rgba(0, 0, 0, 0.08)',
  69. 'glass-sm': '0 4px 16px rgba(0, 0, 0, 0.06)',
  70. glow: '0 0 20px rgba(20, 184, 166, 0.25)',
  71. 'glow-lg': '0 0 40px rgba(20, 184, 166, 0.35)',
  72. card: '0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06)',
  73. 'card-hover': '0 10px 40px rgba(0, 0, 0, 0.08)',
  74. 'inner-glow': 'inset 0 1px 0 rgba(255, 255, 255, 0.1)'
  75. },
  76. backgroundImage: {
  77. 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
  78. 'gradient-primary': 'linear-gradient(135deg, #14b8a6 0%, #0d9488 100%)',
  79. 'gradient-dark': 'linear-gradient(135deg, #1e293b 0%, #0f172a 100%)',
  80. 'gradient-glass':
  81. 'linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%)',
  82. 'mesh-gradient':
  83. 'radial-gradient(at 40% 20%, rgba(20, 184, 166, 0.12) 0px, transparent 50%), radial-gradient(at 80% 0%, rgba(6, 182, 212, 0.08) 0px, transparent 50%), radial-gradient(at 0% 50%, rgba(20, 184, 166, 0.08) 0px, transparent 50%)'
  84. },
  85. animation: {
  86. 'fade-in': 'fadeIn 0.3s ease-out',
  87. 'slide-up': 'slideUp 0.3s ease-out',
  88. 'slide-down': 'slideDown 0.3s ease-out',
  89. 'slide-in-right': 'slideInRight 0.3s ease-out',
  90. 'scale-in': 'scaleIn 0.2s ease-out',
  91. 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
  92. shimmer: 'shimmer 2s linear infinite',
  93. glow: 'glow 2s ease-in-out infinite alternate'
  94. },
  95. keyframes: {
  96. fadeIn: {
  97. '0%': { opacity: '0' },
  98. '100%': { opacity: '1' }
  99. },
  100. slideUp: {
  101. '0%': { opacity: '0', transform: 'translateY(10px)' },
  102. '100%': { opacity: '1', transform: 'translateY(0)' }
  103. },
  104. slideDown: {
  105. '0%': { opacity: '0', transform: 'translateY(-10px)' },
  106. '100%': { opacity: '1', transform: 'translateY(0)' }
  107. },
  108. slideInRight: {
  109. '0%': { opacity: '0', transform: 'translateX(20px)' },
  110. '100%': { opacity: '1', transform: 'translateX(0)' }
  111. },
  112. scaleIn: {
  113. '0%': { opacity: '0', transform: 'scale(0.95)' },
  114. '100%': { opacity: '1', transform: 'scale(1)' }
  115. },
  116. shimmer: {
  117. '0%': { backgroundPosition: '-200% 0' },
  118. '100%': { backgroundPosition: '200% 0' }
  119. },
  120. glow: {
  121. '0%': { boxShadow: '0 0 20px rgba(20, 184, 166, 0.25)' },
  122. '100%': { boxShadow: '0 0 30px rgba(20, 184, 166, 0.4)' }
  123. }
  124. },
  125. backdropBlur: {
  126. xs: '2px'
  127. },
  128. borderRadius: {
  129. '4xl': '2rem'
  130. }
  131. }
  132. },
  133. plugins: []
  134. }