GrantForge Bot
Deploy to Hugging Face
afd56bc
import React from 'react';
import { Target, Zap, AlertTriangle, ShieldCheck, TrendingUp } from 'lucide-react';
import { motion, Variants } from 'framer-motion';
const containerVariants: Variants = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.15
}
}
};
const itemVariants: Variants = {
hidden: { opacity: 0, y: 30, scale: 0.96 },
show: { opacity: 1, y: 0, scale: 1, transition: { type: "spring", stiffness: 280, damping: 20 } }
};
const DashboardHome: React.FC = () => {
return (
<motion.div variants={containerVariants} initial="hidden" animate="show" style={{ display: 'flex', flexDirection: 'column', gap: '2.5rem' }}>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))', gap: '2rem' }}>
<motion.div variants={itemVariants} className="glass-card" style={{ borderLeft: '4px solid var(--accent-blue)', position: 'relative' }}>
<div style={{ display: 'flex', gap: '1rem', alignItems: 'center', marginBottom: '1rem' }}>
<div style={{ background: 'rgba(59,130,246,0.1)', padding: '0.8rem', borderRadius: '10px' }}><Target color="var(--accent-blue)" /></div>
<div>
<div style={{ fontWeight: 'bold' }}>Dopasowanie Matcher</div>
<div style={{ fontSize: '0.8rem', color: 'var(--text-muted)' }}>Top 1 Program</div>
</div>
</div>
<h2 className="display-font" style={{ fontSize: '1.8rem', color: 'var(--text-primary)' }}>艢cie偶ka SMART</h2>
<div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', marginTop: '0.8rem' }}>
<div style={{ padding: '0.3rem 0.6rem', background: 'rgba(59, 130, 246, 0.15)', borderRadius: '6px', color: 'var(--accent-blue)', fontWeight: 700 }}>92% Match</div>
<span style={{ fontSize: '0.85rem', color: 'var(--text-muted)' }}>Automatyzacja M艢P</span>
</div>
</motion.div>
<motion.div variants={itemVariants} className="glass-card" style={{ background: 'linear-gradient(135deg, rgba(16, 185, 129, 0.12), transparent)', border: '1px solid rgba(16, 185, 129, 0.5)', position: 'relative', boxShadow: '0 10px 40px rgba(16, 185, 129, 0.1)' }}>
<div style={{ display: 'flex', gap: '1rem', alignItems: 'center', marginBottom: '1.2rem' }}>
<div style={{ background: 'rgba(16,185,129,0.25)', padding: '0.8rem', borderRadius: '12px' }}><Zap color="var(--accent-green)" size={28} /></div>
<div>
<div style={{ fontWeight: 800, fontSize: '1.05rem', color: 'var(--text-primary)' }}>Szanse Dofinansowania</div>
<div style={{ fontSize: '0.85rem', color: 'var(--accent-green)', fontWeight: 600 }}>Na start inwestycji</div>
</div>
</div>
<h2 className="display-font" style={{ fontSize: '3.5rem', color: 'var(--text-primary)', display: 'flex', alignItems: 'center', gap: '0.5rem', textShadow: '0 0 50px rgba(16, 185, 129, 0.5)', fontWeight: 900 }}>
<span style={{ background: 'linear-gradient(90deg, #10B981, #34D399)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>~2.4M</span>
<span style={{fontSize: '1.4rem', color: 'var(--text-muted)', fontWeight: 700}}>PLN</span>
<TrendingUp size={32} color="var(--accent-green)" style={{marginLeft: 'auto'}}/>
</h2>
<div style={{ display: 'flex', gap: '0.8rem', marginTop: '0.8rem', marginBottom: '1.5rem', flexWrap: 'wrap' }}>
<div style={{ fontSize: '0.85rem', background: 'rgba(16, 185, 129, 0.2)', color: 'var(--accent-green)', padding: '0.4rem 0.8rem', borderRadius: '6px', fontWeight: 800, display: 'flex', alignItems: 'center', gap: '0.4rem', boxShadow: '0 0 15px rgba(16, 185, 129, 0.25)' }}>
<TrendingUp size={14} /> Szansa Sukcesu: 88%
</div>
<div style={{ fontSize: '0.85rem', background: 'rgba(0, 0, 0, 0.4)', color: '#A7F3D0', padding: '0.4rem 0.8rem', borderRadius: '6px', fontWeight: 700, border: '1px solid rgba(16,185,129,0.3)' }}>
Intensywno艣膰 wsparcia (Dotacja): 65%
</div>
</div>
<div style={{ padding: '0.9rem', marginBottom: '0.5rem', background: 'rgba(16, 185, 129, 0.05)', borderRadius: '8px', border: '1px solid rgba(16,185,129,0.1)', fontSize: '0.85rem', color: 'var(--text-secondary)', lineHeight: 1.5 }}>
Warto艣膰 dofinansowania mo偶e nieznacznie ewoluowa膰 po uzupe艂nieniu brak贸w zadeklarowanych w module `Gap Analyzer`.
</div>
<motion.button
whileHover={{ scale: 1.03, boxShadow: '0 0 35px rgba(16, 185, 129, 0.5)' }}
whileTap={{ scale: 0.97 }}
className="btn"
style={{
width: '100%',
marginTop: '1.5rem',
background: 'linear-gradient(90deg, var(--accent-green), #059669)',
color: '#fff',
fontWeight: 800,
textTransform: 'uppercase',
letterSpacing: '1px',
boxShadow: '0 0 20px rgba(16, 185, 129, 0.3)'
}}>
Generuj pe艂ny wniosek
</motion.button>
</motion.div>
</div>
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '2rem' }}>
<motion.div variants={itemVariants} className="glass-card" style={{ borderTop: '4px solid var(--accent-red)' }}>
<h3 style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '1.5rem', color: '#EF4444', fontWeight: 800 }}>
<AlertTriangle size={22} color="#EF4444"/> Ryzyka i Braki (Gap Analyzer)
</h3>
<ul style={{ display: 'flex', flexDirection: 'column', gap: '1rem', listStyle: 'none', padding: 0 }}>
<li style={{ padding: '1.2rem', background: 'rgba(239, 68, 68, 0.1)', borderRadius: '12px', borderLeft: '4px solid #F97316' }}>
<strong style={{ color: '#fff', fontSize: '1.05rem', letterSpacing: '0.5px' }}>Brak opisu redukcji 艣ladu w臋glowego.</strong>
<div style={{ fontSize: '0.95rem', color: '#fff', opacity: 0.9, marginTop: '0.6rem', lineHeight: '1.5', fontWeight: 500 }}>Wym贸g zgodno艣ci z dyrektyw膮 DNSH, wniosek mo偶e by膰 obni偶ony o <span style={{ color: '#F87171', fontWeight: 800 }}>2 punkty</span> na starcie przez brak tego obszaru.</div>
</li>
<li style={{ padding: '1.2rem', background: 'rgba(239, 68, 68, 0.1)', borderRadius: '12px', borderLeft: '4px solid #EF4444' }}>
<strong style={{ color: '#fff', fontSize: '1.05rem', letterSpacing: '0.5px' }}>Niewystarczaj膮cy opis algorytmu AI.</strong>
<div style={{ fontSize: '0.95rem', color: '#fff', opacity: 0.9, marginTop: '0.6rem', lineHeight: '1.5', fontWeight: 500 }}>Critic zaleca <span style={{ color: '#F87171', fontWeight: 800 }}>szczeg贸艂owe rozpisanie architektury sieci</span> w sekcji technicznej przed wygenerowaniem rewizji.</div>
</li>
</ul>
</motion.div>
<motion.div variants={itemVariants} className="glass-card">
<h3 className="display-font" style={{ display: 'flex', alignItems: 'center', gap: '0.6rem', marginBottom: '1.5rem', color: 'var(--text-primary)', fontSize: '1.1rem' }}>
<ShieldCheck size={20} color="var(--accent-green)"/> Mocne Strony Aplikacji
</h3>
<ul style={{ display: 'flex', flexDirection: 'column', gap: '1rem', listStyle: 'none', padding: 0 }}>
<li style={{ padding: '1.2rem', background: 'rgba(16,185,129,0.08)', borderRadius: '12px', borderLeft: '4px solid var(--accent-green)' }}>
<strong style={{fontSize: '1.05rem', color: '#fff', letterSpacing: '0.5px'}}>Zgodno艣膰 z Przemys艂em 4.0.</strong>
<div style={{ fontSize: '0.95rem', color: '#fff', opacity: 0.9, marginTop: '0.6rem', lineHeight: '1.5', fontWeight: 500 }}>System CNC w pe艂ni asymiluje wytyczne dla robotyzacji, co znacz膮co <span style={{ color: '#34D399', fontWeight: 800 }}>podwy偶sza bazowy scorning</span> innowacyjno艣ci.</div>
</li>
<li style={{ padding: '1.2rem', background: 'rgba(16,185,129,0.08)', borderRadius: '12px', borderLeft: '4px solid var(--accent-green)' }}>
<strong style={{fontSize: '1.05rem', color: '#fff', letterSpacing: '0.5px'}}>Przewidywana Mierzalna Skalowalno艣膰.</strong>
<div style={{ fontSize: '0.95rem', color: '#fff', opacity: 0.9, marginTop: '0.6rem', lineHeight: '1.5', fontWeight: 500 }}>Projekt gotowy do komercjalizacji na innych liniach produkcyjnych (zbadany rynek zbytu).</div>
</li>
</ul>
</motion.div>
</div>
</motion.div>
);
};
export default DashboardHome;