FairRelay / landing /src /components /Features.tsx
MouleeswaranM's picture
Upload folder using huggingface_hub
fcf8749 verified
raw
history blame
4.75 kB
import './Features.css'
const features = [
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M12 3L4 7.5V16.5L12 21L20 16.5V7.5L12 3Z" stroke="currentColor" strokeWidth="1.5"/>
<path d="M7 10.5L10.5 14L17 9" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
</svg>
),
color: '#f97316',
colorBg: 'rgba(249,115,22,0.1)',
title: 'Fair Allocation Engine',
desc: 'Gini coefficient–based scoring ensures no driver is systematically overloaded or underutilized. Every allocation is measurably fair.',
badge: 'Gini ≤ 0.15 guaranteed',
},
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" stroke="currentColor" strokeWidth="1.5"/>
</svg>
),
color: '#10b981',
colorBg: 'rgba(16,185,129,0.1)',
title: 'Driver Wellness Engine',
desc: 'Real-time wellness scores track hours worked, rest since last break, illness flags, and max difficulty tolerance. Prevent burnout before it happens.',
badge: 'Burnout prevention',
},
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z" stroke="currentColor" strokeWidth="1.5"/>
<path d="M8 12h8M12 8v8" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
</svg>
),
color: '#3b82f6',
colorBg: 'rgba(59,130,246,0.1)',
title: 'Carbon Estimation',
desc: 'Per-route CO₂ estimates included in every allocation response. Track fleet carbon footprint and surface eco-routing options.',
badge: 'CO₂ per km',
},
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M9 3H5a2 2 0 00-2 2v4m6-6h10a2 2 0 012 2v4M9 3v18m0 0h10a2 2 0 002-2V9M9 21H5a2 2 0 01-2-2V9m0 0h18" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
</svg>
),
color: '#f59e0b',
colorBg: 'rgba(245,158,11,0.1)',
title: 'Explainable Decisions',
desc: 'Every allocation comes with a human-readable explanation. Dispatchers can understand, appeal, or override any AI decision — full transparency.',
badge: '100% explained',
},
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<circle cx="12" cy="12" r="3" stroke="currentColor" strokeWidth="1.5"/>
<path d="M12 5v2M12 17v2M5 12H3M21 12h-2M7.05 7.05l-1.41-1.41M17.37 17.37l-1.41-1.41M7.05 16.95l-1.41 1.41M17.37 6.63l-1.41 1.41" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
</svg>
),
color: '#ec4899',
colorBg: 'rgba(236,72,153,0.1)',
title: 'Night Safety Routing',
desc: 'Flag routes as night-safety sensitive and automatically filter assignments based on driver preferences and safety policies.',
badge: 'Driver-first',
},
{
icon: (
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
</svg>
),
color: '#06b6d4',
colorBg: 'rgba(6,182,212,0.1)',
title: 'Drop-in Integration',
desc: 'One API key, one endpoint, consistent JSON response envelope. No SDKs required — works with any language or logistics stack in minutes.',
badge: 'REST · JSON',
},
]
export default function Features() {
return (
<section className="features" id="features">
<div className="container">
<div className="section-header">
<div className="tag">Features</div>
<h2 className="section-title">Everything your routing brain needs</h2>
<p className="section-sub">
Built for logistics teams that want fairness, transparency, and driver wellbeing —
without the ML team.
</p>
</div>
<div className="features__grid">
{features.map(f => (
<div key={f.title} className="feature-card">
<div className="feature-card__icon" style={{ color: f.color, background: f.colorBg }}>
{f.icon}
</div>
<div className="feature-card__badge" style={{ color: f.color, borderColor: f.color + '33', background: f.color + '11' }}>
{f.badge}
</div>
<h3 className="feature-card__title">{f.title}</h3>
<p className="feature-card__desc">{f.desc}</p>
</div>
))}
</div>
</div>
</section>
)
}