import type { Config } from 'tailwindcss'; import defaultTheme from 'tailwindcss/defaultTheme'; const config: Config = { darkMode: 'class', content: [ './src/pages/**/*.{js,ts,jsx,tsx,mdx}', './src/components/**/*.{js,ts,jsx,tsx,mdx}', './src/pages/**/*.{js,ts,jsx,tsx,mdx}', ], theme: { extend: { fontFamily: { primary: ['var(--font-body)', ...defaultTheme.fontFamily.sans], mono: ['var(--font-mono)', ...defaultTheme.fontFamily.mono], }, colors: { background: 'rgb(var(--color-background) / )', foreground: 'rgb(var(--color-foreground) / )', surface: 'rgb(var(--color-surface) / )', 'surface-secondary': 'rgb(var(--color-surface-secondary) / )', 'surface-tertiary': 'rgb(var(--color-surface-tertiary) / )', overlay: 'rgb(var(--color-overlay) / )', border: 'rgb(var(--color-border) / )', accent: 'rgb(var(--color-accent) / )', 'accent-strong': 'rgb(var(--color-accent-strong) / )', 'accent-foreground': 'rgb(var(--color-background) / )', field: 'rgb(var(--color-surface) / )', success: 'rgb(var(--color-success) / )', warning: 'rgb(var(--color-warning) / )', danger: 'rgb(var(--color-danger) / )', canvas: 'rgb(var(--a2-canvas) / )', stage: 'rgb(var(--a2-stage) / )', rail: 'rgb(var(--a2-rail) / )', ink: 'rgb(var(--a2-text) / )', 'ink-soft': 'rgb(var(--a2-text-soft) / )', muted: 'rgb(var(--a2-text-muted) / )', copper: 'rgb(var(--a2-copper) / )', 'copper-strong': 'rgb(var(--a2-copper-strong) / )', line: 'rgb(var(--a2-line) / )', signal: { stable: 'rgb(var(--a2-signal-stable) / )', warn: 'rgb(var(--a2-signal-warn) / )', error: 'rgb(var(--a2-signal-error) / )', }, primary: { 50: 'rgb(var(--color-primary-50) / )', 100: 'rgb(var(--color-primary-100) / )', 200: 'rgb(var(--color-primary-200) / )', 300: 'rgb(var(--color-primary-300) / )', 400: 'rgb(var(--color-primary-400) / )', 500: 'rgb(var(--color-primary-500) / )', 600: 'rgb(var(--color-primary-600) / )', 700: 'rgb(var(--color-primary-700) / )', 800: 'rgb(var(--color-primary-800) / )', 900: 'rgb(var(--color-primary-900) / )', }, dark: 'rgb(var(--color-dark) / )', // 主题颜色系统 'theme-bg': 'rgb(var(--color-theme-bg) / )', 'theme-surface': 'rgb(var(--color-theme-surface) / )', 'theme-accent': 'rgb(var(--color-theme-accent) / )', 'theme-text': 'rgb(var(--color-theme-text) / )', 'theme-text-secondary': 'rgb(var(--color-theme-text-secondary) / )', 'theme-border': 'rgb(var(--color-theme-border) / )', // 扩展主题颜色 'theme-success': 'rgb(var(--color-theme-success) / )', 'theme-warning': 'rgb(var(--color-theme-warning) / )', 'theme-error': 'rgb(var(--color-theme-error) / )', 'theme-info': 'rgb(var(--color-theme-info) / )', }, keyframes: { flicker: { '0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100%': { opacity: '0.99', filter: 'drop-shadow(0 0 1px rgba(252, 211, 77)) drop-shadow(0 0 15px rgba(245, 158, 11)) drop-shadow(0 0 1px rgba(252, 211, 77))', }, '20%, 21.999%, 63%, 63.999%, 65%, 69.999%': { opacity: '0.4', filter: 'none', }, }, shimmer: { '0%': { backgroundPosition: '-700px 0', }, '100%': { backgroundPosition: '700px 0', }, }, fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' }, }, 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' }, }, slideInFromRight: { '0%': { transform: 'translateX(100%)', opacity: '0' }, '100%': { transform: 'translateX(0)', opacity: '1' }, }, }, animation: { flicker: 'flicker 3s linear infinite', shimmer: 'shimmer 1.3s linear infinite', 'fade-in': 'fadeIn 0.3s ease-in-out', 'slide-up': 'slideUp 0.3s ease-in-out', 'slide-down': 'slideDown 0.3s ease-in-out', 'slide-in-from-right': 'slideInFromRight 0.3s ease-out', }, backgroundImage: { 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', }, }, }, plugins: [require('@tailwindcss/forms')], } satisfies Config; export default config;