-
-
-
๐ฎ
+
+
+
-
Password Recovery
+
Password Recovery
- Pennyzo Web - Multiagent Business Solutions
+ Multiagent Business Solutions
-
@@ -167,7 +89,7 @@ const ForgotPasswordPage: React.FC = () => {
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
- className="w-full px-4 py-3 bg-deep-forest/60 border-2 border-luxury-gold/30 rounded-xl text-cream placeholder-cream/50 focus:border-luxury-gold focus:outline-none focus:ring-2 focus:ring-luxury-gold/20 transition-all duration-300"
+ className="w-full px-4 py-3 rounded-2xl bg-white/15 border border-white/25 text-cream placeholder-cream/60 focus:outline-none focus:ring-4 focus:ring-luxury-gold/25 focus:border-luxury-gold/50 focus:ring-offset-2 focus:ring-offset-white/5 backdrop-blur-md shadow-[inset_0_1px_0_rgba(255,255,255,0.25)]"
placeholder="Enter your email address"
required
/>
@@ -177,7 +99,7 @@ const ForgotPasswordPage: React.FC = () => {
{isLoading ? (
@@ -199,7 +121,7 @@ const ForgotPasswordPage: React.FC = () => {
-
โ๏ธ Return to Login Portal
+
Return to Login
>
@@ -230,9 +152,9 @@ const ForgotPasswordPage: React.FC = () => {
- โก Return to Login Portal
+ Return to Login
)}
@@ -250,7 +172,7 @@ const ForgotPasswordPage: React.FC = () => {
to="/home"
className="inline-block mt-3 text-luxury-gold hover:text-brass text-sm underline transition-colors duration-300"
>
- ๐ Return to Pennyzo Web Homepage
+ Return to Pennyzo Web Homepage
)}
diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx
index 7a480e3..6bee43a 100644
--- a/src/pages/LandingPage.tsx
+++ b/src/pages/LandingPage.tsx
@@ -1,263 +1,99 @@
-import React from 'react';
-import { Link } from 'react-router-dom';
-import Header from '../components/Header';
-import Footer from '../components/Footer';
-import LiveCounter from '../components/LiveCounter';
+import React, { useMemo, useState, useEffect } from 'react';
+import TopBar from '../components/TopBar';
+import SidebarNav from '../components/SidebarNav';
+import AgentPanel from '../components/AgentPanel';
+import type { Agent } from '../components/AgentPanel';
+import DisplayPanel from '../components/DisplayPanel';
+import ChatDock from '../components/ChatDock';
+import type { ChatMessage } from '../components/ChatDock';
+import CreditsScreen from '../components/CreditsModal';
const LandingPage: React.FC = () => {
- const agents = [
- {
- id: 'hr',
- name: 'HR Command',
- icon: '๐ฅ',
- description: 'Intelligent Human Resources management with automated recruitment, performance tracking, and employee analytics.',
- features: ['Smart Recruitment', 'Performance Analytics', 'Payroll Automation', 'Employee Engagement'],
- color: 'from-luxury-gold to-brass'
- },
- {
- id: 'finance',
- name: 'Finance Sage',
- icon: '๐ฐ',
- description: 'Advanced financial management with real-time reporting, budget optimization, and predictive analytics.',
- features: ['Real-time Reports', 'Budget Planning', 'Risk Analysis', 'Automated Invoicing'],
- color: 'from-bronze to-luxury-gold'
- },
- {
- id: 'project',
- name: 'Project Sensei',
- icon: '๐',
- description: 'Comprehensive project management with intelligent task allocation and deadline optimization.',
- features: ['Smart Planning', 'Resource Allocation', 'Timeline Optimization', 'Team Collaboration'],
- color: 'from-brass to-bronze'
- },
- {
- id: 'crm',
- name: 'CRM Ninja',
- icon: '๐ค',
- description: 'Customer relationship mastery with automated lead scoring and personalized engagement strategies.',
- features: ['Lead Scoring', 'Sales Pipeline', 'Customer Analytics', 'Automated Outreach'],
- color: 'from-luxury-gold to-champagne'
- },
- {
- id: 'ops',
- name: 'Operations Dojo',
- icon: 'โ๏ธ',
- description: 'Operational excellence through intelligent workflow automation and process optimization.',
- features: ['Workflow Automation', 'Process Mining', 'Quality Control', 'Supply Chain'],
- color: 'from-bronze to-rich-brown'
- },
- {
- id: 'analytics',
- name: 'Analytics Oracle',
- icon: '๐',
- description: 'Business intelligence powered by AI-driven insights and predictive modeling capabilities.',
- features: ['Predictive Models', 'Data Visualization', 'Custom Dashboards', 'Trend Analysis'],
- color: 'from-brass to-luxury-gold'
- }
- ];
+ // Companies for top dropdown
+ const companies = ['Pennyzo Labs', 'Pennyzo Retail', 'Pennyzo Finance'];
+ const [company, setCompany] = useState(companies[0]);
- const stats = [
- { value: '500K+', label: 'Active Users' },
- { value: '2.5M+', label: 'Tasks Automated' },
- { value: '150+', label: 'Countries' },
- { value: '99.9%', label: 'Uptime' }
+ // Sidebar
+ const sidebarItems = [
+ { id: 'dashboard', label: 'Dashboard', icon:
๐ },
+ { id: 'agents', label: 'Agents', icon:
๐ค },
+ { id: 'projects', label: 'Projects', icon:
๐ },
+ { id: 'reports', label: 'Reports', icon:
๐ },
+ { id: 'settings', label: 'Settings', icon:
โ๏ธ },
];
+ const [activeNav, setActiveNav] = useState('dashboard');
+
+ // Agents
+ const agents: Agent[] = useMemo(() => ([
+ { id: 'hr', name: 'HR Command', color: 'from-luxury-gold/30 to-brass/30', emoji: '๐ฅ' },
+ { id: 'finance', name: 'Finance Sage', color: 'from-bronze/30 to-luxury-gold/30', emoji: '๐ฐ' },
+ { id: 'project', name: 'Project Sensei', color: 'from-brass/30 to-bronze/30', emoji: '๐' },
+ { id: 'marketing', name: 'Marketing Genius', color: 'from-luxury-gold/30 to-cream/30', emoji: '๐ฏ' },
+ { id: 'analytics', name: 'Data Wizard', color: 'from-bronze/30 to-brass/30', emoji: '๐' },
+ { id: 'security', name: 'Security Guard', color: 'from-deep-forest/40 to-luxury-gold/30', emoji: '๐ก๏ธ' },
+ { id: 'support', name: 'Support Hero', color: 'from-brass/30 to-rich-brown/30', emoji: '๐ง' },
+ { id: 'research', name: 'Research Bot', color: 'from-luxury-gold/30 to-bronze/30', emoji: '๐' }
+ ]), []);
+ const [activeAgent, setActiveAgent] = useState(agents[0].id);
+
+ // Chat
+ const [messages, setMessages] = useState
([
+ { id: 'm1', role: 'assistant', content: 'Hello! Choose an agent and tell me what to do.' },
+ ]);
+
+ // Credits Modal
+ const [showCredits, setShowCredits] = useState(false);
+
+ // Listen for credits modal trigger from TopBar
+ useEffect(() => {
+ const handleOpenCredits = () => {
+ setShowCredits(true);
+ };
+
+ window.addEventListener('openCredits', handleOpenCredits);
+ return () => window.removeEventListener('openCredits', handleOpenCredits);
+ }, []);
+
+ const handleSend = (text: string) => {
+ const userMsg: ChatMessage = { id: crypto.randomUUID(), role: 'user', content: text };
+ const assistantMsg: ChatMessage = { id: crypto.randomUUID(), role: 'assistant', content: `Got it! The ${agents.find(a=>a.id===activeAgent)?.name} will process: "${text}"` };
+ setMessages((prev) => [...prev, userMsg, assistantMsg]);
+ };
return (
-
-
-
- {/* Hero Section */}
-
-
-
-
- ๐ Pennyzo Web - Next-Gen Business Solutions
-
-
+
+ {/* Top bar */}
+
-
- Multiagent
- Mastery
-
-
-
- Harness the power of specialized AI agents to transform your business operations.
- From HR management to financial analytics - unlock unprecedented efficiency and growth.
-
-
-
-
- โก Enter the Pennyzo Realm
-
-
- ๐ฏ Watch Demo
-
-
-
- {/* Stats */}
-
- {stats.map((stat) => (
-
-
- {stat.value}
-
-
- {stat.label}
-
-
- ))}
-
+ {/* Main area with sidebar + two panels */}
+
- {/* Agents Showcase */}
-
-
-
-
- ๐ค AI-Powered Agent Arsenal
-
-
-
- Your Business
-
- Dream Team
-
-
-
-
- Meet your specialized AI agents, each trained to excel in specific business domains.
- Together, they form an unstoppable force for digital transformation.
-
-
+ {/* Chat dock at bottom (aligned to right of sidebar) */}
+
-
- {agents.map((agent) => (
-
- {/* Agent Icon */}
-
- {agent.icon}
-
-
-
- {agent.name}
-
-
-
- {agent.description}
-
-
- {/* Features */}
-
- {agent.features.map((feature, featureIndex) => (
-
- ))}
-
-
- {/* Action Button */}
-
- Deploy {agent.name}
-
-
- ))}
-
-
-
-
- {/* Why Choose Pennyzo */}
-
-
-
-
- Why Choose
-
- Pennyzo Web?
-
-
-
-
-
-
- {[
- {
- title: 'Unified Intelligence',
- description: 'All agents work together seamlessly, sharing insights and optimizing cross-functional operations.',
- icon: '๐ง '
- },
- {
- title: 'Enterprise-Grade Security',
- description: 'Bank-level encryption and compliance standards protect your sensitive business data.',
- icon: '๐'
- },
- {
- title: 'Scalable Architecture',
- description: 'From startups to enterprises, our platform grows with your business needs.',
- icon: '๐'
- },
- {
- title: '24/7 AI Support',
- description: 'Our agents never sleep, providing round-the-clock optimization and monitoring.',
- icon: '๐'
- }
- ].map((benefit, index) => (
-
-
- {benefit.icon}
-
-
-
- {benefit.title}
-
-
- {benefit.description}
-
-
-
- ))}
-
-
-
-
- Ready to Transform Your Business?
-
-
- Join thousands of businesses already leveraging the power of multiagent AI solutions.
-
-
-
-
- ๐ Start Free Trial
-
-
-
- ๐ Schedule Demo
-
-
-
-
-
-
-
-
-
+ {/* Credits Screen */}
+
setShowCredits(false)}
+ />
);
};
diff --git a/src/pages/LoginPage.tsx b/src/pages/LoginPage.tsx
index b073dcf..ffde8f1 100644
--- a/src/pages/LoginPage.tsx
+++ b/src/pages/LoginPage.tsx
@@ -1,21 +1,12 @@
-import React, { useState, useEffect } from 'react';
+import React, { useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
const LoginPage: React.FC = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [isLoading, setIsLoading] = useState(false);
- const [characterFrame, setCharacterFrame] = useState(0);
const navigate = useNavigate();
- // Animate character sprite
- useEffect(() => {
- const interval = setInterval(() => {
- setCharacterFrame(prev => (prev + 1) % 4);
- }, 800);
- return () => clearInterval(interval);
- }, []);
-
const handleDemoLogin = () => {
setEmail('demo@pennyzo.com');
setPassword('demo123');
@@ -64,78 +55,39 @@ const LoginPage: React.FC = () => {
))}
-
- {/* Character Side */}
-
- {/* Animated Character */}
+ {/* Ambient Gradient Glows */}
+
+
+
+
+ {/* outer soft glow */}
+
+ {/* inner highlight border */}
+
+ {/* top-left sheen */}
+
+ {/* subtle texture (dot pattern) */}
+
-
- {/* Character Container */}
-
- {/* Character Base (Samurai/Ninja style) */}
-
- {/* Body */}
-
-
- {/* Head */}
-
-
- {/* Hat/Helmet */}
-
-
- {/* Eyes */}
-
-
- {/* Arms */}
-
-
-
- {/* Sword */}
-
-
-
- {/* Action Lines */}
- {characterFrame === 1 && (
-
- )}
-
-
- {/* Power Aura */}
-
-
- {/* Floating Orbs */}
-
-
-
-
-
-
- {/* Character Speech Bubble */}
-
-
-
- "Welcome. Sign in with your credentials to continue."
-
-
-
-
- {/* Login Form Side */}
-
-
{/* Header */}
-
-
-
P
+
+
+
-
Pennyzo Web
Multiagent Business Solutions
@@ -150,7 +102,7 @@ const LoginPage: React.FC = () => {
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
- className="w-full px-4 py-3 bg-deep-forest/60 border-2 border-luxury-gold/30 rounded-xl text-cream placeholder-cream/50 focus:border-luxury-gold focus:outline-none focus:ring-2 focus:ring-luxury-gold/20 transition-all duration-300"
+ className="w-full px-4 py-3 rounded-2xl bg-white/15 border border-white/25 text-cream placeholder-cream/60 focus:outline-none focus:ring-4 focus:ring-luxury-gold/25 focus:border-luxury-gold/50 focus:ring-offset-2 focus:ring-offset-white/5 backdrop-blur-md shadow-[inset_0_1px_0_rgba(255,255,255,0.25)]"
placeholder="Enter your email"
required
/>
@@ -164,7 +116,7 @@ const LoginPage: React.FC = () => {
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
- className="w-full px-4 py-3 bg-deep-forest/60 border-2 border-luxury-gold/30 rounded-xl text-cream placeholder-cream/50 focus:border-luxury-gold focus:outline-none focus:ring-2 focus:ring-luxury-gold/20 transition-all duration-300"
+ className="w-full px-4 py-3 rounded-2xl bg-white/15 border border-white/25 text-cream placeholder-cream/60 focus:outline-none focus:ring-4 focus:ring-luxury-gold/25 focus:border-luxury-gold/50 focus:ring-offset-2 focus:ring-offset-white/5 backdrop-blur-md shadow-[inset_0_1px_0_rgba(255,255,255,0.25)]"
placeholder="Enter your password"
required
/>
@@ -175,7 +127,7 @@ const LoginPage: React.FC = () => {
{isLoading ? (
@@ -190,7 +142,7 @@ const LoginPage: React.FC = () => {
Demo Login
@@ -206,17 +158,6 @@ const LoginPage: React.FC = () => {
-
- {/*
- Demo Credentials Info (commented out per request)
-
-
Demo Credentials
-
-
Email: demo@pennyzo.com
-
Password: demo123
-
-
- */}
diff --git a/src/pages/ProfilePage.tsx b/src/pages/ProfilePage.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/RegisterPage.tsx b/src/pages/RegisterPage.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/ResetPasswordOtpPage.tsx b/src/pages/ResetPasswordOtpPage.tsx
new file mode 100644
index 0000000..3d2dd08
--- /dev/null
+++ b/src/pages/ResetPasswordOtpPage.tsx
@@ -0,0 +1,83 @@
+import React, { useState } from 'react';
+import { Link, useNavigate } from 'react-router-dom';
+
+const ResetPasswordOtpPage: React.FC = () => {
+ const [otp, setOtp] = useState(['', '', '', '', '', '']);
+ const [isLoading, setIsLoading] = useState(false);
+ const navigate = useNavigate();
+
+ const setDigit = (index: number, value: string) => {
+ const next = [...otp];
+ next[index] = value.replace(/\D/g, '').slice(0, 1);
+ setOtp(next);
+ };
+
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ setIsLoading(true);
+ setTimeout(() => {
+ setIsLoading(false);
+ navigate('/reset-password-token');
+ }, 1200);
+ };
+
+ return (
+
+ {/* Ambient Gradient Glows */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Verify OTP
+
Enter the 6-digit code sent to your email
+
+
+
+
+
+
+
+ );
+};
+
+export default ResetPasswordOtpPage;
diff --git a/src/pages/ResetPasswordTokenPage.tsx b/src/pages/ResetPasswordTokenPage.tsx
new file mode 100644
index 0000000..fc59449
--- /dev/null
+++ b/src/pages/ResetPasswordTokenPage.tsx
@@ -0,0 +1,88 @@
+import React, { useState } from 'react';
+import { Link, useNavigate } from 'react-router-dom';
+
+const ResetPasswordTokenPage: React.FC = () => {
+ const [password, setPassword] = useState('');
+ const [confirm, setConfirm] = useState('');
+ const [isLoading, setIsLoading] = useState(false);
+ const navigate = useNavigate();
+
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ setIsLoading(true);
+ setTimeout(() => {
+ setIsLoading(false);
+ navigate('/login');
+ }, 1200);
+ };
+
+ return (
+
+ {/* Ambient Gradient Glows */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Set New Password
+
Choose a strong password for your account
+
+
+
+
+
+
+
+ );
+};
+
+export default ResetPasswordTokenPage;
diff --git a/src/pages/VerifyEmailPage.tsx b/src/pages/VerifyEmailPage.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/services/auth.ts b/src/services/auth.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/services/registration.ts b/src/services/registration.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/services/system.ts b/src/services/system.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/services/users.ts b/src/services/users.ts
new file mode 100644
index 0000000..e69de29