feat: initial IQAI multi-model AI dashboard
- Express backend with Replicate API proxy (chat, models, account, search) - React + Vite + Tailwind frontend with custom Midnight Violet color scheme - @mention autocomplete to route messages to specific models - Parallel multi-model queries with model selection in sidebar - DuckDuckGo web search context injection - Model manager UI (add/edit/remove Replicate models) - Per-model system instructions per conversation - Replicate account info display in sidebar - Conversation history with local persistence (Zustand) - Full Docker deployment (backend + nginx-served frontend) - Montserrat + Poppins fonts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
55
frontend/tailwind.config.js
Normal file
55
frontend/tailwind.config.js
Normal file
@@ -0,0 +1,55 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
export default {
|
||||
content: ['./index.html', './src/**/*.{js,jsx}'],
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
sans: ['Poppins', 'Inter', 'system-ui', 'sans-serif'],
|
||||
display: ['Montserrat', 'Poppins', 'sans-serif'],
|
||||
mono: ['JetBrains Mono', 'Fira Code', 'monospace']
|
||||
},
|
||||
colors: {
|
||||
// Brand palette
|
||||
apricot: '#f9dbbd',
|
||||
tangerine: '#fca17d',
|
||||
blush: '#da627d',
|
||||
grape: '#9a348e',
|
||||
midnight: '#0d0628',
|
||||
// Surface shades (midnight-violet based)
|
||||
surface: {
|
||||
0: '#0d0628',
|
||||
1: '#110830',
|
||||
2: '#180d40',
|
||||
3: '#1e1150',
|
||||
4: '#261560'
|
||||
}
|
||||
},
|
||||
backgroundImage: {
|
||||
'brand-gradient': 'linear-gradient(135deg, #f9dbbd, #fca17d, #da627d, #9a348e, #0d0628)',
|
||||
'brand-gradient-r': 'linear-gradient(90deg, #9a348e, #da627d, #fca17d)',
|
||||
'brand-gradient-v': 'linear-gradient(180deg, #9a348e 0%, #0d0628 100%)',
|
||||
'glow-grape': 'radial-gradient(circle at center, #9a348e40, transparent 70%)',
|
||||
'glow-blush': 'radial-gradient(circle at center, #da627d30, transparent 70%)'
|
||||
},
|
||||
boxShadow: {
|
||||
'grape': '0 0 20px #9a348e40',
|
||||
'blush': '0 0 20px #da627d30',
|
||||
'tangerine': '0 0 20px #fca17d30'
|
||||
},
|
||||
animation: {
|
||||
'fade-in': 'fadeIn 0.2s ease-out',
|
||||
'slide-up': 'slideUp 0.25s ease-out',
|
||||
'glow-pulse': 'glowPulse 3s ease-in-out infinite'
|
||||
},
|
||||
keyframes: {
|
||||
fadeIn: { from: { opacity: 0 }, to: { opacity: 1 } },
|
||||
slideUp: { from: { opacity: 0, transform: 'translateY(10px)' }, to: { opacity: 1, transform: 'translateY(0)' } },
|
||||
glowPulse: {
|
||||
'0%, 100%': { boxShadow: '0 0 15px #9a348e30' },
|
||||
'50%': { boxShadow: '0 0 30px #9a348e60' }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
plugins: []
|
||||
};
|
||||
Reference in New Issue
Block a user