monacousa-portal/tailwind.config.js

249 lines
8.8 KiB
JavaScript
Raw Permalink Normal View History

/** @type {import('tailwindcss').Config} */
export default {
content: [
"./components/**/*.{js,vue,ts}",
"./layouts/**/*.vue",
"./pages/**/*.vue",
"./plugins/**/*.{js,ts}",
"./app.vue",
"./error.vue",
],
theme: {
extend: {
colors: {
// Monaco Red Spectrum
'monaco': {
50: '#fef2f2',
100: '#fee2e2',
200: '#fecaca',
300: '#fca5a5',
400: '#f87171',
500: '#ef4444',
600: '#dc2626', // Primary
700: '#b91c1c',
800: '#991b1b',
900: '#7f1d1d',
},
// Glass Colors
'glass': {
'white': 'rgba(255, 255, 255, 0.7)',
'light': 'rgba(255, 255, 255, 0.85)',
'ultra-light': 'rgba(255, 255, 255, 0.95)',
'border': 'rgba(255, 255, 255, 0.6)',
'monaco': 'rgba(220, 38, 38, 0.1)',
'monaco-soft': 'rgba(220, 38, 38, 0.05)',
},
},
backgroundImage: {
// Bright gradients
'gradient-light': 'linear-gradient(135deg, #f5f5f5 0%, #ffffff 100%)',
'gradient-soft': 'linear-gradient(135deg, #fafafa 0%, #f5f5f5 100%)',
'gradient-monaco-soft': 'linear-gradient(135deg, #fff5f5 0%, #ffffff 100%)',
// Monaco gradients
'gradient-monaco': 'linear-gradient(135deg, #dc2626 0%, #b91c1c 100%)',
'gradient-monaco-light': 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)',
// Glass gradients
'gradient-glass': 'linear-gradient(135deg, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.6) 100%)',
'gradient-glass-soft': 'linear-gradient(135deg, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.4) 100%)',
},
backdropBlur: {
xs: '2px',
sm: '4px',
md: '8px',
lg: '12px',
xl: '16px',
'2xl': '20px',
'3xl': '30px',
},
boxShadow: {
'glass': '0 8px 32px rgba(31, 38, 135, 0.15)',
'glass-sm': '0 4px 16px rgba(31, 38, 135, 0.1)',
'glass-lg': '0 12px 48px rgba(31, 38, 135, 0.2)',
'glass-inset': 'inset 0 2px 4px rgba(255, 255, 255, 0.6), inset 0 -2px 4px rgba(0, 0, 0, 0.05)',
'monaco': '0 10px 40px rgba(220, 38, 38, 0.15)',
'monaco-sm': '0 4px 20px rgba(220, 38, 38, 0.1)',
'monaco-lg': '0 20px 60px rgba(220, 38, 38, 0.2)',
'soft': '0 2px 8px rgba(0, 0, 0, 0.08)',
'soft-lg': '0 4px 16px rgba(0, 0, 0, 0.12)',
},
animation: {
'fade-in': 'fadeIn 0.3s ease-in-out',
'slide-up': 'slideUp 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)',
'slide-down': 'slideDown 0.3s ease-out',
'scale-in': 'scaleIn 0.3s ease-out',
'float': 'float 3s ease-in-out infinite',
'shimmer': 'shimmer 2s infinite',
'pulse-soft': 'pulseSoft 2s ease-in-out infinite',
'glow': 'glow 2s ease-in-out infinite',
},
keyframes: {
fadeIn: {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
slideUp: {
'0%': { opacity: '0', transform: 'translateY(20px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
slideDown: {
'0%': { opacity: '0', transform: 'translateY(-20px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
scaleIn: {
'0%': { opacity: '0', transform: 'scale(0.9)' },
'100%': { opacity: '1', transform: 'scale(1)' },
},
float: {
'0%, 100%': { transform: 'translateY(0)' },
'50%': { transform: 'translateY(-10px)' },
},
shimmer: {
'0%': { backgroundPosition: '-1000px 0' },
'100%': { backgroundPosition: '1000px 0' },
},
pulseSoft: {
'0%, 100%': { opacity: '1' },
'50%': { opacity: '0.8' },
},
glow: {
'0%, 100%': { boxShadow: '0 0 20px rgba(220, 38, 38, 0.3)' },
'50%': { boxShadow: '0 0 30px rgba(220, 38, 38, 0.5)' },
},
},
fontFamily: {
'sans': ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
},
borderRadius: {
'glass': '20px',
},
transitionTimingFunction: {
'smooth': 'cubic-bezier(0.4, 0, 0.2, 1)',
'bounce': 'cubic-bezier(0.34, 1.56, 0.64, 1)',
},
},
},
plugins: [
// Custom glass utilities plugin
function({ addUtilities, addComponents, theme }) {
// Glass effect utilities
addUtilities({
'.glass': {
background: 'rgba(255, 255, 255, 0.7)',
backdropFilter: 'blur(20px)',
'-webkit-backdrop-filter': 'blur(20px)',
border: '1px solid rgba(255, 255, 255, 0.6)',
boxShadow: '0 8px 32px rgba(31, 38, 135, 0.15)',
},
'.glass-light': {
background: 'rgba(255, 255, 255, 0.85)',
backdropFilter: 'blur(20px)',
'-webkit-backdrop-filter': 'blur(20px)',
border: '1px solid rgba(255, 255, 255, 0.7)',
boxShadow: '0 8px 32px rgba(31, 38, 135, 0.12)',
},
'.glass-ultra': {
background: 'rgba(255, 255, 255, 0.95)',
backdropFilter: 'blur(30px)',
'-webkit-backdrop-filter': 'blur(30px)',
border: '1px solid rgba(255, 255, 255, 0.8)',
boxShadow: '0 8px 32px rgba(31, 38, 135, 0.1), inset 0 2px 4px rgba(255, 255, 255, 0.6)',
},
'.glass-monaco': {
background: 'linear-gradient(135deg, rgba(220, 38, 38, 0.05) 0%, rgba(255, 255, 255, 0.7) 100%)',
backdropFilter: 'blur(20px)',
'-webkit-backdrop-filter': 'blur(20px)',
borderLeft: '3px solid #dc2626',
border: '1px solid rgba(220, 38, 38, 0.2)',
boxShadow: '0 8px 32px rgba(220, 38, 38, 0.1)',
},
'.no-scrollbar': {
'-ms-overflow-style': 'none',
'scrollbar-width': 'none',
'&::-webkit-scrollbar': {
display: 'none',
},
},
'.scrollbar-thin': {
'scrollbar-width': 'thin',
'&::-webkit-scrollbar': {
width: '8px',
height: '8px',
},
'&::-webkit-scrollbar-track': {
background: 'rgba(0, 0, 0, 0.05)',
borderRadius: '9999px',
},
'&::-webkit-scrollbar-thumb': {
background: 'linear-gradient(135deg, #dc2626 0%, #b91c1c 100%)',
borderRadius: '9999px',
},
},
});
// Glass component classes
addComponents({
'.glass-card': {
background: 'rgba(255, 255, 255, 0.7)',
backdropFilter: 'blur(20px)',
'-webkit-backdrop-filter': 'blur(20px)',
border: '1px solid rgba(255, 255, 255, 0.6)',
boxShadow: '0 8px 32px rgba(31, 38, 135, 0.15)',
borderRadius: '20px',
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
'&:hover': {
background: 'rgba(255, 255, 255, 0.8)',
boxShadow: '0 12px 40px rgba(31, 38, 135, 0.2)',
transform: 'translateY(-4px)',
},
},
'.glass-button': {
background: 'rgba(255, 255, 255, 0.7)',
backdropFilter: 'blur(10px)',
'-webkit-backdrop-filter': 'blur(10px)',
border: '1px solid rgba(255, 255, 255, 0.8)',
boxShadow: '0 4px 15px rgba(0, 0, 0, 0.08)',
transition: 'all 0.3s ease',
'&:hover': {
background: 'rgba(255, 255, 255, 0.9)',
boxShadow: '0 6px 20px rgba(220, 38, 38, 0.15)',
transform: 'translateY(-2px)',
},
'&:active': {
transform: 'translateY(0)',
},
},
'.glass-input': {
background: 'rgba(255, 255, 255, 0.7)',
backdropFilter: 'blur(10px)',
'-webkit-backdrop-filter': 'blur(10px)',
border: '1px solid rgba(255, 255, 255, 0.6)',
transition: 'all 0.3s ease',
'&:hover': {
background: 'rgba(255, 255, 255, 0.8)',
borderColor: 'rgba(220, 38, 38, 0.2)',
},
'&:focus': {
background: 'rgba(255, 255, 255, 0.9)',
borderColor: '#dc2626',
boxShadow: '0 0 0 3px rgba(220, 38, 38, 0.1)',
outline: 'none',
},
},
'.glass-sidebar': {
background: 'rgba(255, 255, 255, 0.85)',
backdropFilter: 'blur(30px)',
'-webkit-backdrop-filter': 'blur(30px)',
borderRight: '1px solid rgba(255, 255, 255, 0.6)',
boxShadow: '4px 0 24px rgba(0, 0, 0, 0.08)',
},
'.glass-navbar': {
background: 'rgba(255, 255, 255, 0.9)',
backdropFilter: 'blur(20px)',
'-webkit-backdrop-filter': 'blur(20px)',
borderBottom: '1px solid rgba(255, 255, 255, 0.6)',
boxShadow: '0 4px 24px rgba(0, 0, 0, 0.08)',
},
});
},
],
}