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>
98 lines
3.5 KiB
JavaScript
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: []
|
|
}
|