Skip to content

Commit ddffa50

Browse files
committed
feat: massive landing page overhaul - enhanced navbar, demo modal, INR pricing, feature pages, legal docs, footer
1 parent 3e5d7c0 commit ddffa50

File tree

8 files changed

+1013
-276
lines changed

8 files changed

+1013
-276
lines changed

Frontend/src/App.jsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@ import AdminAnalytics from "./admin/pages/AdminAnalytics";
5454
import AdminProfile from "./admin/pages/AdminProfile";
5555
import AdminSettings from "./admin/pages/AdminSettings";
5656
import MasterBugReports from "./master-admin/pages/MasterBugReports";
57+
58+
// Feature Pages
59+
import AutoCategorizationFeature from "./pages/features/AutoCategorizationFeature";
60+
import PriorityDetectionFeature from "./pages/features/PriorityDetectionFeature";
61+
import SmartResolutionFeature from "./pages/features/SmartResolutionFeature";
62+
63+
// Legal Pages
64+
import TermsOfService from "./pages/legal/TermsOfService";
65+
import PrivacyPolicy from "./pages/legal/PrivacyPolicy";
66+
import Security from "./pages/legal/Security";
5767
import AdminProtectedRoute from "./components/shared/AdminProtectedRoute";
5868
import MasterAdminProtectedRoute from "./components/shared/MasterAdminProtectedRoute";
5969
import ProtectedRoute from "./components/shared/ProtectedRoute";
@@ -201,6 +211,16 @@ function App() {
201211
<Route path="/user-lobby" element={<UserLobby />} />
202212
<Route path="/not-approved" element={<NotApproved />} />
203213

214+
{/* Feature Pages */}
215+
<Route path="/features/categorization" element={<AutoCategorizationFeature />} />
216+
<Route path="/features/priority" element={<PriorityDetectionFeature />} />
217+
<Route path="/features/resolution" element={<SmartResolutionFeature />} />
218+
219+
{/* Legal Pages */}
220+
<Route path="/terms" element={<TermsOfService />} />
221+
<Route path="/privacy" element={<PrivacyPolicy />} />
222+
<Route path="/security" element={<Security />} />
223+
204224
{/* ── Master Admin Portal (hidden, standalone) ── */}
205225
<Route path="/master-admin-login" element={<MasterAdminLogin />} />
206226

Frontend/src/pages/LandingPage.jsx

Lines changed: 390 additions & 276 deletions
Large diffs are not rendered by default.
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import React from 'react';
2+
import { useNavigate } from 'react-router-dom';
3+
import { ArrowLeft, ArrowRight, Folder, Network, Cpu, HardDrive, Wifi, Lock, CheckCircle, Zap, Bot } from 'lucide-react';
4+
5+
const categories = [
6+
{ icon: Wifi, name: 'Network', color: 'bg-blue-100 text-blue-600', desc: 'VPN, internet, DNS, routing issues' },
7+
{ icon: HardDrive, name: 'Hardware', color: 'bg-orange-100 text-orange-600', desc: 'Printers, monitors, peripherals' },
8+
{ icon: Cpu, name: 'Software', color: 'bg-purple-100 text-purple-600', desc: 'Crashes, installs, license errors' },
9+
{ icon: Lock, name: 'Access', color: 'bg-emerald-100 text-emerald-600', desc: 'Passwords, SSO, permissions' },
10+
];
11+
12+
const examples = [
13+
{ input: '"My laptop won\'t connect to the office WiFi after the Windows update"', output: { category: 'Network', subcategory: 'WiFi Connectivity', confidence: '97%', team: 'NetOps Team' } },
14+
{ input: '"I can\'t log in to Jira with my SSO credentials since yesterday"', output: { category: 'Access', subcategory: 'SSO / Identity', confidence: '95%', team: 'IAM Team' } },
15+
{ input: '"The projector in Conference Room B keeps disconnecting mid-call"', output: { category: 'Hardware', subcategory: 'AV Equipment', confidence: '92%', team: 'Hardware Support' } },
16+
];
17+
18+
export default function AutoCategorizationFeature() {
19+
const navigate = useNavigate();
20+
return (
21+
<div className="min-h-screen bg-white font-sans">
22+
{/* Nav */}
23+
<nav className="sticky top-0 z-50 bg-white/90 backdrop-blur-md border-b border-gray-100 px-6 py-4 flex items-center justify-between">
24+
<button onClick={() => navigate('/')} className="flex items-center gap-2 text-sm font-bold text-gray-600 hover:text-emerald-700 transition-colors">
25+
<ArrowLeft className="w-4 h-4" /> Back to Home
26+
</button>
27+
<span className="font-black text-emerald-900 italic uppercase text-lg">HelpDesk.ai</span>
28+
<button onClick={() => navigate('/admin-signup')} className="bg-emerald-900 text-white px-5 py-2 rounded-lg text-sm font-semibold hover:bg-emerald-800 transition-all">
29+
Get Started Free
30+
</button>
31+
</nav>
32+
33+
{/* Hero */}
34+
<section className="bg-gradient-to-br from-blue-50 via-white to-emerald-50 py-24 px-6 text-center">
35+
<div className="max-w-4xl mx-auto">
36+
<div className="inline-flex items-center gap-2 px-4 py-2 bg-blue-100 text-blue-700 rounded-full text-sm font-bold mb-6">
37+
<Folder className="w-4 h-4" /> Auto-Categorization
38+
</div>
39+
<h1 className="text-5xl md:text-6xl font-extrabold text-gray-900 tracking-tight mb-6">
40+
Zero-Touch <span className="text-emerald-700">Ticket Sorting</span>
41+
</h1>
42+
<p className="text-xl text-gray-500 max-w-2xl mx-auto leading-relaxed">
43+
Our AI reads the intent of every ticket and tags it with the right category, subcategory, and team — in under 200ms.
44+
</p>
45+
</div>
46+
</section>
47+
48+
{/* Categories Grid */}
49+
<section className="py-20 px-6 max-w-6xl mx-auto">
50+
<h2 className="text-3xl font-bold text-center text-gray-900 mb-4">Four Core Categories</h2>
51+
<p className="text-center text-gray-500 mb-12">Every ticket is mapped to one of these intelligent domains.</p>
52+
<div className="grid grid-cols-2 md:grid-cols-4 gap-6">
53+
{categories.map(({ icon: Icon, name, color, desc }) => (
54+
<div key={name} className="p-6 rounded-2xl border border-gray-100 bg-gray-50 hover:bg-white hover:shadow-lg hover:-translate-y-1 transition-all text-center">
55+
<div className={`w-14 h-14 rounded-2xl mx-auto flex items-center justify-center mb-4 ${color}`}>
56+
<Icon className="w-7 h-7" />
57+
</div>
58+
<h3 className="font-bold text-gray-900 text-lg mb-1">{name}</h3>
59+
<p className="text-xs text-gray-500">{desc}</p>
60+
</div>
61+
))}
62+
</div>
63+
</section>
64+
65+
{/* Live Examples */}
66+
<section className="bg-gray-950 py-24 px-6">
67+
<div className="max-w-4xl mx-auto">
68+
<h2 className="text-3xl font-bold text-white text-center mb-3">See It in Action</h2>
69+
<p className="text-gray-400 text-center mb-12">Real user messages → instant AI categorization.</p>
70+
<div className="space-y-6">
71+
{examples.map((ex, i) => (
72+
<div key={i} className="rounded-2xl bg-gray-900 border border-gray-800 overflow-hidden">
73+
<div className="p-5 border-b border-gray-800">
74+
<p className="text-xs text-gray-500 mb-2 uppercase tracking-widest font-bold">User Input</p>
75+
<p className="text-white font-medium italic">{ex.input}</p>
76+
</div>
77+
<div className="p-5 grid grid-cols-2 md:grid-cols-4 gap-4 bg-emerald-950/30">
78+
{Object.entries(ex.output).map(([key, val]) => (
79+
<div key={key}>
80+
<p className="text-[10px] text-emerald-500 uppercase tracking-widest font-bold mb-1">{key}</p>
81+
<p className="text-white font-bold text-sm">{val}</p>
82+
</div>
83+
))}
84+
</div>
85+
</div>
86+
))}
87+
</div>
88+
</div>
89+
</section>
90+
91+
{/* CTA */}
92+
<section className="py-24 px-6 text-center bg-white">
93+
<h2 className="text-4xl font-extrabold text-gray-900 mb-4">Ready to automate?</h2>
94+
<p className="text-gray-500 mb-8">Start routing tickets smarter today.</p>
95+
<button onClick={() => navigate('/admin-signup')} className="inline-flex items-center gap-2 bg-emerald-900 text-white px-8 py-4 rounded-xl font-bold text-lg hover:bg-emerald-800 transition-all shadow-xl shadow-emerald-900/20">
96+
Get Started Free <ArrowRight className="w-5 h-5" />
97+
</button>
98+
</section>
99+
</div>
100+
);
101+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import React from 'react';
2+
import { useNavigate } from 'react-router-dom';
3+
import { ArrowLeft, ArrowRight, AlertCircle, CheckCircle } from 'lucide-react';
4+
5+
const priorities = [
6+
{ level: 'Critical', color: 'bg-red-500', text: 'text-red-700', bg: 'bg-red-50 border-red-200', desc: 'System outages, data breaches, total blockers. Responded to immediately.', examples: ['Server completely down', 'Security breach detected', 'All users locked out'] },
7+
{ level: 'High', color: 'bg-orange-500', text: 'text-orange-700', bg: 'bg-orange-50 border-orange-200', desc: 'Major feature broken, deadline-sensitive. Responded to within 1 hour.', examples: ['Production deploy failing', 'VPN down for team', 'Payment system error'] },
8+
{ level: 'Medium', color: 'bg-yellow-500', text: 'text-yellow-700', bg: 'bg-yellow-50 border-yellow-200', desc: 'Partial functionality impacted. Responded to within 4 hours.', examples: ['Printer not working', 'Email delays', 'Slow performance'] },
9+
{ level: 'Low', color: 'bg-green-500', text: 'text-green-700', bg: 'bg-green-50 border-green-200', desc: 'Minor inconvenience, cosmetic issues. Responded to within 24 hours.', examples: ['Wrong timezone on dashboard', 'Typo in email', 'Dark mode request'] },
10+
];
11+
12+
const signals = [
13+
{ signal: '"ASAP"', priority: 'Critical', weight: '↑↑↑' },
14+
{ signal: '"urgent"', priority: 'High', weight: '↑↑' },
15+
{ signal: '"all users affected"', priority: 'Critical', weight: '↑↑↑' },
16+
{ signal: '"minor issue"', priority: 'Low', weight: '↓' },
17+
{ signal: '"when you can"', priority: 'Low', weight: '↓↓' },
18+
{ signal: '"class starts in 20 mins"', priority: 'High', weight: '↑↑' },
19+
];
20+
21+
export default function PriorityDetectionFeature() {
22+
const navigate = useNavigate();
23+
return (
24+
<div className="min-h-screen bg-white font-sans">
25+
<nav className="sticky top-0 z-50 bg-white/90 backdrop-blur-md border-b border-gray-100 px-6 py-4 flex items-center justify-between">
26+
<button onClick={() => navigate('/')} className="flex items-center gap-2 text-sm font-bold text-gray-600 hover:text-emerald-700 transition-colors">
27+
<ArrowLeft className="w-4 h-4" /> Back to Home
28+
</button>
29+
<span className="font-black text-emerald-900 italic uppercase text-lg">HelpDesk.ai</span>
30+
<button onClick={() => navigate('/admin-signup')} className="bg-emerald-900 text-white px-5 py-2 rounded-lg text-sm font-semibold hover:bg-emerald-800 transition-all">
31+
Get Started Free
32+
</button>
33+
</nav>
34+
35+
<section className="bg-gradient-to-br from-red-50 via-white to-orange-50 py-24 px-6 text-center">
36+
<div className="max-w-4xl mx-auto">
37+
<div className="inline-flex items-center gap-2 px-4 py-2 bg-red-100 text-red-700 rounded-full text-sm font-bold mb-6">
38+
<AlertCircle className="w-4 h-4" /> Priority Detection
39+
</div>
40+
<h1 className="text-5xl md:text-6xl font-extrabold text-gray-900 tracking-tight mb-6">
41+
No More <span className="text-red-600">Missed Urgencies</span>
42+
</h1>
43+
<p className="text-xl text-gray-500 max-w-2xl mx-auto leading-relaxed">
44+
Our AI reads emotional context, keywords, and impact signals to automatically assign the right priority — before any human sees it.
45+
</p>
46+
</div>
47+
</section>
48+
49+
<section className="py-20 px-6 max-w-6xl mx-auto">
50+
<h2 className="text-3xl font-bold text-center text-gray-900 mb-12">The Four Priority Levels</h2>
51+
<div className="space-y-4">
52+
{priorities.map(({ level, color, text, bg, desc, examples }) => (
53+
<div key={level} className={`rounded-2xl border p-6 ${bg} flex flex-col md:flex-row md:items-center gap-6`}>
54+
<div className="flex items-center gap-4 min-w-[160px]">
55+
<div className={`w-3 h-3 rounded-full ${color} animate-pulse`} />
56+
<span className={`text-lg font-black uppercase tracking-wider ${text}`}>{level}</span>
57+
</div>
58+
<div className="flex-1">
59+
<p className="text-gray-700 font-medium mb-2">{desc}</p>
60+
<div className="flex flex-wrap gap-2">
61+
{examples.map(ex => (
62+
<span key={ex} className="text-xs bg-white/80 border border-gray-200 text-gray-600 px-3 py-1 rounded-full font-medium">{ex}</span>
63+
))}
64+
</div>
65+
</div>
66+
</div>
67+
))}
68+
</div>
69+
</section>
70+
71+
<section className="bg-gray-950 py-24 px-6">
72+
<div className="max-w-4xl mx-auto">
73+
<h2 className="text-3xl font-bold text-white text-center mb-3">Urgency Signals the AI Detects</h2>
74+
<p className="text-gray-400 text-center mb-12">Phrases that influence priority scoring in real-time.</p>
75+
<div className="grid grid-cols-2 md:grid-cols-3 gap-4">
76+
{signals.map(({ signal, priority, weight }) => (
77+
<div key={signal} className="bg-gray-900 border border-gray-800 rounded-xl p-4">
78+
<p className="text-emerald-400 font-mono font-bold mb-2">{signal}</p>
79+
<div className="flex items-center justify-between">
80+
<span className="text-xs text-gray-400 uppercase tracking-widest">{priority}</span>
81+
<span className="text-xs font-black text-red-400">{weight}</span>
82+
</div>
83+
</div>
84+
))}
85+
</div>
86+
</div>
87+
</section>
88+
89+
<section className="py-24 px-6 text-center bg-white">
90+
<h2 className="text-4xl font-extrabold text-gray-900 mb-4">Stop firefighting. Start triaging.</h2>
91+
<p className="text-gray-500 mb-8">Let AI handle the urgency so your team focuses on the fix.</p>
92+
<button onClick={() => navigate('/admin-signup')} className="inline-flex items-center gap-2 bg-emerald-900 text-white px-8 py-4 rounded-xl font-bold text-lg hover:bg-emerald-800 transition-all shadow-xl shadow-emerald-900/20">
93+
Get Started Free <ArrowRight className="w-5 h-5" />
94+
</button>
95+
</section>
96+
</div>
97+
);
98+
}

0 commit comments

Comments
 (0)