CodeReview/frontend/tailwind.config.js

174 lines
5.9 KiB
JavaScript
Raw Permalink Normal View History

export default {
darkMode: ['class'],
content: [
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
'./node_modules/streamdown/dist/**/*.js'
],
safelist: ['border', 'border-border'],
prefix: '',
theme: {
container: {
center: true,
padding: '2rem',
screens: {
'2xl': '1400px',
},
},
extend: {
// Typography - Pixel-perfect monospace for terminal aesthetic
fontFamily: {
mono: ['"ArkPixel"', '"CJK Fallback"', '"Noto Sans SC"', '"PingFang SC"', '"Microsoft YaHei"', '"JetBrains Mono"', '"Roboto Mono"', '"Courier New"', 'monospace'],
sans: ['"Inter"', '"Noto Sans SC"', '"PingFang SC"', '"Microsoft YaHei"', 'system-ui', 'sans-serif'],
display: ['"Orbitron"', '"Rajdhani"', 'sans-serif'],
},
fontSize: {
'xs': ['0.8125rem', { lineHeight: '1.125rem', letterSpacing: '0.01em' }], // 13px
'sm': ['0.9375rem', { lineHeight: '1.375rem', letterSpacing: '0.01em' }], // 15px
'base': ['1rem', { lineHeight: '1.5rem', letterSpacing: '0' }], // 16px
'lg': ['1.125rem', { lineHeight: '1.75rem', letterSpacing: '-0.01em' }], // 18px
'xl': ['1.375rem', { lineHeight: '1.875rem', letterSpacing: '-0.01em' }], // 22px
'2xl': ['1.625rem', { lineHeight: '2.125rem', letterSpacing: '-0.02em' }], // 26px
'3xl': ['2rem', { lineHeight: '2.5rem', letterSpacing: '-0.02em' }], // 32px
'4xl': ['2.5rem', { lineHeight: '3rem', letterSpacing: '-0.02em' }], // 40px
},
// Extended Color System
colors: {
border: 'hsl(var(--border))',
input: 'hsl(var(--input))',
ring: 'hsl(var(--ring))',
background: 'hsl(var(--background))',
foreground: 'hsl(var(--foreground))',
primary: {
DEFAULT: 'hsl(var(--primary))',
foreground: 'hsl(var(--primary-foreground))',
},
secondary: {
DEFAULT: 'hsl(var(--secondary))',
foreground: 'hsl(var(--secondary-foreground))',
},
success: {
DEFAULT: 'hsl(var(--success))',
foreground: 'hsl(var(--success-foreground))',
},
destructive: {
DEFAULT: 'hsl(var(--destructive))',
foreground: 'hsl(var(--destructive-foreground))',
},
muted: {
DEFAULT: 'hsl(var(--muted))',
foreground: 'hsl(var(--muted-foreground))',
},
accent: {
DEFAULT: 'hsl(var(--accent))',
foreground: 'hsl(var(--accent-foreground))',
},
popover: {
DEFAULT: 'hsl(var(--popover))',
foreground: 'hsl(var(--popover-foreground))',
},
card: {
DEFAULT: 'hsl(var(--card))',
foreground: 'hsl(var(--card-foreground))',
},
// Core Palette - Direct color access
terminal: {
orange: '#FF6B2C', // Vibrant Orange
'orange-dark': '#E55A1F',
red: '#D32F2F', // Deep Red
'red-dark': '#B71C1C',
green: '#00E676', // Signal Green
'green-dark': '#00C853',
grey: {
50: '#F5F5F5',
100: '#E0E0E0',
200: '#BDBDBD',
300: '#9E9E9E',
400: '#757575',
500: '#616161',
600: '#424242',
700: '#303030',
800: '#212121',
900: '#1A1A1A',
}
}
},
// Simplified Border Radius
borderRadius: {
lg: 'var(--radius)',
md: 'var(--radius)',
sm: 'var(--radius)',
none: '0',
},
// Refined Shadows - Subtle and clean
boxShadow: {
'sm': 'var(--shadow-sm)',
'md': 'var(--shadow-md)',
'lg': '0 4px 6px rgba(0, 0, 0, 0.12)',
'focus': 'var(--shadow-focus)',
// Minimal retro effect for special cases
'terminal': '1px 1px 0px rgba(0, 0, 0, 0.15)',
'terminal-md': '2px 2px 0px rgba(0, 0, 0, 0.15)',
// Glow effects for status indicators
'glow-orange': '0 0 8px rgba(255, 107, 44, 0.4)',
'glow-red': '0 0 8px rgba(211, 47, 47, 0.4)',
'glow-green': '0 0 8px rgba(0, 230, 118, 0.4)',
},
// Refined Animations
keyframes: {
'accordion-down': {
from: { height: '0' },
to: { height: 'var(--radix-accordion-content-height)' },
},
'accordion-up': {
from: { height: 'var(--radix-accordion-content-height)' },
to: { height: '0' },
},
// Subtle fade in
'fade-in': {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
// Slide in from bottom
'slide-up': {
'0%': { transform: 'translateY(10px)', opacity: '0' },
'100%': { transform: 'translateY(0)', opacity: '1' },
},
// Subtle pulse for status indicators
'pulse-glow': {
'0%, 100%': { opacity: '1' },
'50%': { opacity: '0.7' },
},
// Terminal cursor blink
'blink': {
'0%, 100%': { opacity: '1' },
'50%': { opacity: '0' },
},
// Simplified scanline
'scanline': {
'0%': { transform: 'translateY(-100%)' },
'100%': { transform: 'translateY(100%)' },
},
},
animation: {
'accordion-down': 'accordion-down 0.2s ease-out',
'accordion-up': 'accordion-up 0.2s ease-out',
'fade-in': 'fade-in 0.15s ease-out',
'slide-up': 'slide-up 0.2s ease-out',
'pulse-glow': 'pulse-glow 2s ease-in-out infinite',
'blink': 'blink 1s step-end infinite',
'scanline': 'scanline 8s linear infinite',
},
// Spacing adjustments for pixel-perfect layouts
spacing: {
'18': '4.5rem',
'88': '22rem',
},
},
},
plugins: [
require('tailwindcss-animate'),
],
};