Files
emailToChat/tailwind.config.js
luzadevandClaude Opus 4.7 620b8fca67 Initial commit: EmailToChat — multi-channel email manager with AI
Desktop app (Electron + Vite + React + TypeScript) that receives email via
IMAP, sends/forwards via SMTP, Telegram (Bot API + MTProto user account) and
WhatsApp (whatsapp-web.js), with AI integration (Anthropic, OpenAI, Ollama)
for auto-classification, summary, structured extraction and reply drafts.

Features:
- Multi-account IMAP/SMTP with Gmail OAuth2 (loopback flow) + App Password preset
- Telegram Bot API via telegraf, with chat discovery from getUpdates
- Telegram MTProto via gram.js for sending to phone numbers like WhatsApp
- WhatsApp via whatsapp-web.js with QR-code session (locally generated PNG)
- Forwarding engine with rule-based filters incl. AI category match
- SQLite persistence (better-sqlite3) with idempotent migrations
- Contact picker with autocomplete, CSV/vCard import, search
- Dark mode (light/dark/system) with futuristic glass-morphism UI
- Settings tabbed: Email Accounts / Telegram / WhatsApp / AI / OAuth creds / Preferences

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 14:42:12 +02:00

98 lines
3.5 KiB
JavaScript

import defaultTheme from 'tailwindcss/defaultTheme'
/** @type {import('tailwindcss').Config} */
export default {
darkMode: 'class',
content: ['./src/renderer/index.html', './src/renderer/src/**/*.{ts,tsx}'],
theme: {
extend: {
fontFamily: {
sans: ['Inter', ...defaultTheme.fontFamily.sans],
display: ['"Space Grotesk"', 'Inter', ...defaultTheme.fontFamily.sans],
mono: ['"JetBrains Mono"', ...defaultTheme.fontFamily.mono]
},
colors: {
brand: {
50: '#eef4ff',
100: '#d9e6ff',
200: '#bcd2ff',
300: '#8eb4ff',
400: '#598bff',
500: '#3563ff',
600: '#2046f5',
700: '#1a35d8',
800: '#1c2faf',
900: '#1c2c87'
},
neon: {
cyan: '#06b6d4',
blue: '#3b82f6',
purple: '#a855f7',
pink: '#ec4899',
green: '#10b981'
},
ink: {
50: '#f8fafc',
100: '#f1f5f9',
200: '#e2e8f0',
300: '#cbd5e1',
400: '#94a3b8',
500: '#64748b',
600: '#475569',
700: '#334155',
800: '#1e293b',
900: '#0f172a',
950: '#020617'
}
},
boxShadow: {
glow: '0 0 30px -8px rgba(99, 102, 241, 0.45)',
'glow-sm': '0 0 15px -4px rgba(99, 102, 241, 0.35)',
'glow-cyan': '0 0 30px -8px rgba(6, 182, 212, 0.5)',
'glow-purple': '0 0 30px -8px rgba(168, 85, 247, 0.5)',
'glow-success': '0 0 20px -6px rgba(16, 185, 129, 0.6)',
'glow-danger': '0 0 20px -6px rgba(239, 68, 68, 0.6)',
'inset-glow': 'inset 0 1px 0 0 rgba(255, 255, 255, 0.08)',
'depth':
'0 10px 30px -10px rgba(15, 23, 42, 0.1), 0 4px 6px -2px rgba(15, 23, 42, 0.04)',
'depth-lg':
'0 25px 50px -12px rgba(15, 23, 42, 0.18), 0 8px 16px -6px rgba(15, 23, 42, 0.08)'
},
animation: {
'fade-in': 'fadeIn 0.25s ease-out',
'slide-up': 'slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)',
'glow-pulse': 'glowPulse 2.5s ease-in-out infinite',
'shimmer': 'shimmer 2s linear infinite',
'gradient-x': 'gradientX 6s ease infinite'
},
keyframes: {
fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' } },
slideUp: {
'0%': { transform: 'translateY(12px)', opacity: '0' },
'100%': { transform: 'translateY(0)', opacity: '1' }
},
glowPulse: {
'0%, 100%': { opacity: '0.7', filter: 'brightness(1)' },
'50%': { opacity: '1', filter: 'brightness(1.15)' }
},
shimmer: {
'0%': { backgroundPosition: '-200% 0' },
'100%': { backgroundPosition: '200% 0' }
},
gradientX: {
'0%, 100%': { backgroundPosition: '0% 50%' },
'50%': { backgroundPosition: '100% 50%' }
}
},
backgroundImage: {
'gradient-radial': 'radial-gradient(circle at top left, var(--tw-gradient-stops))',
'mesh-light':
'radial-gradient(at 0% 0%, rgba(99,102,241,0.10) 0, transparent 50%), radial-gradient(at 100% 0%, rgba(168,85,247,0.08) 0, transparent 50%), radial-gradient(at 100% 100%, rgba(6,182,212,0.08) 0, transparent 50%)',
'mesh-dark':
'radial-gradient(at 0% 0%, rgba(99,102,241,0.22) 0, transparent 50%), radial-gradient(at 100% 0%, rgba(168,85,247,0.18) 0, transparent 50%), radial-gradient(at 100% 100%, rgba(6,182,212,0.15) 0, transparent 50%)'
}
}
},
plugins: []
}