import React, { useState, useEffect } from 'react';
import {
Play,
MonitorPlay,
Clapperboard,
Megaphone,
CheckCircle2,
ArrowRight,
Instagram,
Mail,
Smartphone,
ShieldCheck,
Menu,
X,
Sparkles,
Video,
Layers,
Zap,
Cpu,
Sun,
Moon,
Rocket,
TrendingUp,
Crown,
Image as ImageIcon,
Settings,
Lock,
LogOut,
Save,
Edit3,
Plus,
Trash2,
BellRing
} from 'lucide-react';
// Custom SVG Icons
const AdobeIcon = ({ bg, text, label }) => (
{label}
);
const CapCutIcon = () => (
);
const AIcon = () => (
);
// Initial Database State
const initialData = {
settings: {
siteName: "SRI VISUAL",
logoUrl: "/logo.png",
announcementText: "NEW AGENCY LAUNCH OFFER 🔥",
announcementActive: true,
popupActive: false,
popupTitle: "🔥 Launch Offer Extended!",
popupText: "Due to high demand, we have extended our launch pricing for 7 more days. Book your package now before prices increase!",
},
retainerPackages: {
basic: {
id: "basic",
name: "Basic",
desc: "Perfect for beginners & budget creators",
colorText: "text-emerald-600 dark:text-emerald-400",
colorBg: "bg-emerald-600",
colorBorder: "border-emerald-500",
features: ["Basic Editing", "Cuts & Transitions", "Simple Text", "Music Sync"],
tiers: [
{ name: 'Starter', reels: '6 REELS', old: '₹1,699', price: '₹1,169', per: '~₹195/reel', icon: 'Rocket' },
{ name: 'Growth', reels: '12 REELS', old: '₹3,199', price: '₹2,279', per: '~₹190/reel', icon: 'TrendingUp' },
{ name: 'Pro', reels: '20 REELS', old: '₹5,499', price: '₹3,699', per: '~₹185/reel', icon: 'Crown' }
]
},
standard: {
id: "standard",
name: "Standard",
desc: "Perfect for growing creators & businesses",
colorText: "text-fuchsia-600 dark:text-fuchsia-400",
colorBg: "bg-fuchsia-600",
colorBorder: "border-fuchsia-500",
features: ["Everything in Basic", "Advanced Transitions", "Styled Subtitles", "Sound Effects", "Better Engagement Editing"],
tiers: [
{ name: 'Starter', reels: '6 REELS', old: '₹2,850', price: '₹1,999', per: '~₹333/reel', icon: 'Rocket' },
{ name: 'Growth', reels: '12 REELS', old: '₹5,499', price: '₹3,899', per: '~₹325/reel', icon: 'TrendingUp', popular: true },
{ name: 'Pro', reels: '20 REELS', old: '₹8,499', price: '₹6,199', per: '~₹310/reel', icon: 'Crown' }
]
},
premium: {
id: "premium",
name: "Premium",
desc: "High-end editing for serious creators & brands",
colorText: "text-cyan-600 dark:text-cyan-400",
colorBg: "bg-cyan-600",
colorBorder: "border-cyan-500",
features: ["Everything in Standard", "Cinematic editing", "Advanced color grading", "Hook-based viral editing", "AI Thumbnails", "Smart beat sync"],
tiers: [
{ name: 'Starter', reels: '6 REELS', old: '₹4,499', price: '₹2,799', per: '~₹465/reel', icon: 'Rocket' },
{ name: 'Growth', reels: '12 REELS', old: '₹8,499', price: '₹5,199', per: '~₹433/reel', icon: 'TrendingUp' },
{ name: 'Pro', reels: '20 REELS', old: '₹13,499', price: '₹7,999', per: '~₹400/reel', icon: 'Crown', popular: true }
]
}
}
};
const IconMap = {
Rocket: Rocket,
TrendingUp: TrendingUp,
Crown: Crown,
Zap: Zap,
Star: Sparkles
};
export default function AgencyWebsite() {
// Global State
const [currentPage, setCurrentPage] = useState('home');
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const [theme, setTheme] = useState('dark');
const [pricingTab, setPricingTab] = useState('standard');
const [popupDismissed, setPopupDismissed] = useState(false);
// Database State
const [db, setDb] = useState(initialData);
// Admin State
const [isAdminAuth, setIsAdminAuth] = useState(false);
const [loginUsername, setLoginUsername] = useState('');
const [loginPassword, setLoginPassword] = useState('');
const [loginError, setLoginError] = useState('');
const [adminTab, setAdminTab] = useState('settings');
const [saveMessage, setSaveMessage] = useState('');
// Scroll to top when page changes
useEffect(() => {
window.scrollTo({ top: 0, behavior: 'smooth' });
}, [currentPage]);
// Ensure selected pricing tab exists, fallback to first available
useEffect(() => {
if (!db.retainerPackages[pricingTab]) {
const availableKeys = Object.keys(db.retainerPackages);
if (availableKeys.length > 0) {
setPricingTab(availableKeys[0]);
}
}
}, [db.retainerPackages, pricingTab]);
const navigateTo = (page) => {
setCurrentPage(page);
setIsMobileMenuOpen(false);
};
const toggleTheme = () => {
setTheme(prev => prev === 'dark' ? 'light' : 'dark');
};
const handleAdminLogin = (e) => {
e.preventDefault();
if (loginUsername === 'admin' && loginPassword === 'admin123') {
setIsAdminAuth(true);
setLoginUsername('');
setLoginPassword('');
setLoginError('');
} else {
setLoginError("Invalid username or password.");
}
};
const handleAdminLogout = () => {
setIsAdminAuth(false);
setCurrentPage('home');
};
const showSaveMessage = () => {
setSaveMessage('Changes Saved Successfully!');
setTimeout(() => setSaveMessage(''), 3000);
};
const handleAddCategory = () => {
const newId = `cat_${Date.now()}`;
setDb(prev => ({
...prev,
retainerPackages: {
...prev.retainerPackages,
[newId]: {
id: newId,
name: "New Category",
desc: "Description of the new category",
colorText: "text-blue-500",
colorBg: "bg-blue-600",
colorBorder: "border-blue-500",
features: ["Feature 1", "Feature 2"],
tiers: [
{ name: 'Starter', reels: '0 REELS', old: '₹0', price: '₹0', per: '~₹0/reel', icon: 'Rocket' }
]
}
}
}));
showSaveMessage();
};
const handleDeleteCategory = (pkgKey) => {
if (Object.keys(db.retainerPackages).length <= 1) {
alert("You must have at least one category.");
return;
}
if (confirm("Are you sure you want to delete this entire category?")) {
setDb(prev => {
const newPackages = { ...prev.retainerPackages };
delete newPackages[pkgKey];
return { ...prev, retainerPackages: newPackages };
});
showSaveMessage();
}
};
const handleAddTier = (pkgKey) => {
setDb(prev => {
const newPkg = { ...prev.retainerPackages[pkgKey] };
newPkg.tiers = [
...newPkg.tiers,
{ name: 'New Plan', reels: '0 REELS', old: '₹0', price: '₹0', per: '~₹0/unit', icon: 'Zap' }
];
return { ...prev, retainerPackages: { ...prev.retainerPackages, [pkgKey]: newPkg } };
});
showSaveMessage();
};
const handleDeleteTier = (pkgKey, tIdx) => {
setDb(prev => {
const newPkg = { ...prev.retainerPackages[pkgKey] };
newPkg.tiers = newPkg.tiers.filter((_, idx) => idx !== tIdx);
return { ...prev, retainerPackages: { ...prev.retainerPackages, [pkgKey]: newPkg } };
});
showSaveMessage();
};
const NavLinks = () => (
<>
{['home', 'services', 'portfolio', 'pricing'].map((page) => (
navigateTo(page)}
className={`capitalize font-medium transition-all duration-300 ${
currentPage === page
? 'text-fuchsia-600 dark:text-fuchsia-400 border-b-2 border-fuchsia-600 dark:border-fuchsia-400 pb-1'
: 'text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white'
}`}
>
{page}
))}
{isAdminAuth && (
navigateTo('admin')}
className={`capitalize font-bold flex items-center gap-1 transition-all duration-300 ${
currentPage === 'admin'
? 'text-amber-500 border-b-2 border-amber-500 pb-1'
: 'text-amber-600/70 hover:text-amber-500'
}`}
>
Admin
)}
>
);
// === ADMIN PANEL COMPONENT ===
const AdminDashboard = () => {
if (!isAdminAuth) {
return (
);
}
return (
Agency Dashboard
Manage your brand, content, offers, and pricing instantly.
Sign Out
{/* Sidebar */}
{[
{ id: 'settings', label: 'Brand & Global', icon: Megaphone },
{ id: 'packages', label: 'Manage Packages', icon: Layers }
].map(tab => (
setAdminTab(tab.id)}
className={`flex items-center gap-3 w-full text-left px-5 py-4 rounded-2xl font-bold transition-all ${
adminTab === tab.id
? 'bg-fuchsia-50 dark:bg-fuchsia-500/10 text-fuchsia-600 dark:text-fuchsia-400'
: 'text-slate-600 dark:text-slate-400 hover:bg-slate-50 dark:hover:bg-slate-800'
}`}
>
{tab.label}
))}
{/* Content Area */}
{saveMessage && (
{saveMessage}
)}
{/* Settings Tab */}
{adminTab === 'settings' && (
Brand & Settings
{/* Brand Section */}
{/* Top Banner Section */}
{/* Popup Modal Section */}
Global Popup Announcement
Enable Popup Modal on Website Load
setDb({...db, settings: {...db.settings, popupActive: !db.settings.popupActive}})}
className={`w-12 h-6 rounded-full flex items-center transition-colors p-1 ${db.settings.popupActive ? 'bg-fuchsia-500' : 'bg-slate-300 dark:bg-slate-700'}`}
>
Save Brand & Settings
)}
{/* Packages Tab */}
{adminTab === 'packages' && (
Package Categories & Plans
Add Category
{Object.keys(db.retainerPackages).map((pkgKey) => {
const pkg = db.retainerPackages[pkgKey];
return (
{/* Category Header Editor */}
handleDeleteCategory(pkgKey)} className="p-2 text-red-500 hover:bg-red-50 dark:hover:bg-red-500/10 rounded-lg transition-colors" title="Delete Category">
{/* Category Tiers */}
{pkg.tiers.map((tier, tIdx) => (
handleDeleteTier(pkgKey, tIdx)} className="absolute top-3 right-3 text-slate-400 hover:text-red-500 transition-colors opacity-0 group-hover:opacity-100">
))}
{/* Add Tier Button */}
handleAddTier(pkgKey)}
className="bg-transparent border-2 border-dashed border-slate-300 dark:border-slate-700 rounded-xl flex flex-col items-center justify-center p-8 text-slate-500 hover:text-slate-700 hover:border-slate-400 dark:hover:text-slate-300 dark:hover:border-slate-500 transition-colors min-h-[250px]"
>
Add New Plan
Save Plans
)
})}
)}
);
};
return (
{/* Global Popup Announcement */}
{db.settings.popupActive && !popupDismissed && !isAdminAuth && (
setPopupDismissed(true)}
className="absolute top-4 right-4 p-2 bg-slate-100 dark:bg-slate-800 rounded-full text-slate-500 hover:text-slate-800 dark:hover:text-white transition-colors"
>
{db.settings.popupTitle}
{db.settings.popupText}
{ setPopupDismissed(true); navigateTo('pricing'); }}
className="w-full py-4 bg-gradient-to-r from-fuchsia-500 to-violet-600 text-white font-bold rounded-xl hover:scale-105 transition-all duration-300 shadow-lg"
>
View Packages Now
)}
{/* Ambient Colorful Background Glows */}
{/* Navigation */}
navigateTo('home')} className="flex items-center gap-3 group relative z-10">
{ e.target.onerror = null; e.target.src = "https://via.placeholder.com/150/000000/FFFFFF?text=SV"; }}
/>
{db.settings.siteName}
{/* Desktop Nav */}
{/* Theme Toggle Button */}
{theme === 'dark' ? : }
navigateTo('pricing')}
className="px-6 py-2.5 rounded-full bg-gradient-to-r from-fuchsia-500 to-violet-600 text-white font-semibold hover:scale-105 hover:shadow-lg hover:shadow-fuchsia-500/25 transition-all duration-300"
>
Start Project
{/* Mobile Menu & Theme Toggle */}
{theme === 'dark' ? : }
setIsMobileMenuOpen(!isMobileMenuOpen)}
>
{isMobileMenuOpen ? : }
{/* Mobile Nav Overlay */}
{isMobileMenuOpen && (
navigateTo('pricing')}
className="mt-4 px-6 py-3 rounded-xl bg-gradient-to-r from-fuchsia-500 to-violet-600 text-white font-semibold text-center shadow-md"
>
Start Project
)}
{/* Main Content Area */}
{currentPage === 'admin' ? (
) : (
<>
{/* === HOME PAGE === */}
{currentPage === 'home' && (
<>
{db.settings.announcementActive && (
{db.settings.announcementText}
)}
We Edit Videos That
Go Viral
Capture • Create • Inspire
Transforming raw footage into cinematic masterpieces. Get high-retention edits, advanced color grading, and viral hooks for the lowest price guaranteed.
navigateTo('pricing')}
className="group flex items-center gap-2 px-8 py-4 rounded-full bg-gradient-to-r from-amber-500 to-orange-600 text-white font-black hover:scale-105 transition-all duration-300 shadow-[0_10px_30px_-10px_rgba(245,158,11,0.5)]"
>
Claim Launch Offer
navigateTo('portfolio')}
className="px-8 py-4 rounded-full border-2 border-slate-300 dark:border-white/20 bg-white/50 dark:bg-white/5 backdrop-blur-md hover:bg-slate-100 dark:hover:bg-white/10 text-slate-900 dark:text-white font-bold transition-all duration-300"
>
Explore Gallery
{/* Dynamic Floating Editor Dashboard */}
{ e.target.onerror = null; e.target.src = "https://images.unsplash.com/photo-1574717024653-61fd2cf4d44d?q=80&w=1600&auto=format&fit=crop"; e.target.className = "w-full h-full object-cover opacity-90 dark:opacity-80 animate-[slowZoom_20s_ease-in-out_infinite_alternate]"; }}
/>
{/* Floating Card 1: Retention Rate */}
{/* Floating Card 2: Quality Badge */}
{/* Main Rendering Card (Bottom) */}
Adobe Premiere Pro
Rendering Final Cut... 84%
{/* === SOFTWARE STACK SECTION === */}
Powered By Industry-Leading Tools
{[
{ name: 'Premiere Pro', Component: () =>
},
{ name: 'After Effects', Component: () =>
},
{ name: 'Photoshop', Component: () =>
},
{ name: 'CapCut', Component: CapCutIcon },
{ name: 'AI Generation', Component: AIcon }
].map((tool, idx) => (
))}
>
)}
{/* === SERVICES PAGE === */}
{currentPage === 'services' && (
Our Capabilities
End-to-end post-production engineered to capture attention, hold retention, and drive massive engagement.
{[
{ icon: Smartphone, color: 'text-pink-500 dark:text-pink-400', bg: 'bg-pink-100 dark:bg-pink-400/10', title: 'Reel Editing', desc: 'Short-form, high-retention edits optimized for Instagram & TikTok.' },
{ icon: MonitorPlay, color: 'text-cyan-600 dark:text-cyan-400', bg: 'bg-cyan-100 dark:bg-cyan-400/10', title: 'YouTube Videos', desc: 'Professional long-form cuts with dynamic pacing and viewer strategies.' },
{ icon: Layers, color: 'text-violet-600 dark:text-violet-400', bg: 'bg-violet-100 dark:bg-violet-400/10', title: 'Motion Graphics', desc: 'Custom kinetic typography, VFX, and cinematic brand animations.' },
{ icon: Zap, color: 'text-amber-500 dark:text-amber-400', bg: 'bg-amber-100 dark:bg-amber-400/10', title: 'Brand Adverts', desc: 'High-converting promotional material designed for paid media.' }
].map((service, index) => (
{service.title}
{service.desc}
))}
{db.settings.announcementActive && (
{db.settings.announcementText}
)}
Individual Services
Special pricing! Best quality at the lowest price.
Reels Editing
Basic
₹300
₹199 / reel
Standard
₹500
₹349 / reel
Premium
₹800
₹499 / reel
YouTube Editing
Basic
₹800
₹499 / video
Standard
₹1200
₹799 / video
Advanced
₹2000
₹1,299 / video
)}
{/* === PORTFOLIO PAGE === */}
{currentPage === 'portfolio' && (
Our Premium Work
A curated gallery of our recent cinematic edits, motion graphics, and viral social media campaigns.
{[
{ id: 1, title: 'Tech Review Series', category: 'YouTube Edit', color: 'from-cyan-500', img: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?q=80&w=800&auto=format&fit=crop' },
{ id: 2, title: 'Fitness Apparel Ad', category: 'Commercial', color: 'from-fuchsia-500', img: 'https://images.unsplash.com/photo-1526506114869-c646fa01c349?q=80&w=800&auto=format&fit=crop' },
{ id: 3, title: 'Lifestyle Vlogs', category: 'Social Media', color: 'from-violet-500', img: 'https://images.unsplash.com/photo-1616423640778-28d1b53229bd?q=80&w=800&auto=format&fit=crop' },
{ id: 4, title: 'Music Video Cut', category: 'Cinematic', color: 'from-pink-500', img: 'https://images.unsplash.com/photo-1598488035139-bdbb2231ce04?q=80&w=800&auto=format&fit=crop' },
{ id: 5, title: 'Podcast Highlights', category: 'Shorts/Reels', color: 'from-amber-500', img: 'https://images.unsplash.com/photo-1590602847861-f357a9332bbc?q=80&w=800&auto=format&fit=crop' },
{ id: 6, title: 'Real Estate Tour', category: 'Promo Video', color: 'from-emerald-500', img: 'https://images.unsplash.com/photo-1512917774080-9991f1c4c750?q=80&w=800&auto=format&fit=crop' }
].map((work) => (
{work.category}
{work.title}
))}
)}
{/* === PRICING PAGE (WITH DYNAMIC DATA) === */}
{currentPage === 'pricing' && (
{db.settings.announcementActive && (
{db.settings.announcementText}
)}
Package Plans
Structured monthly deliverables for consistent growth. Pick a tier that fits your needs.
{/* Package Tabs */}
{Object.keys(db.retainerPackages).map(tab => (
setPricingTab(tab)}
className={`px-8 py-3 rounded-full text-sm md:text-base font-bold uppercase tracking-wider transition-all duration-300 ${
pricingTab === tab
? 'bg-white dark:bg-slate-800 text-slate-900 dark:text-white shadow-lg border border-slate-200 dark:border-white/10'
: 'text-slate-500 hover:text-slate-800 dark:text-slate-400 dark:hover:text-white hover:bg-slate-100 dark:hover:bg-slate-800/50'
}`}
>
{db.retainerPackages[tab].name}
))}
{db.retainerPackages[pricingTab]?.name} Package
{db.retainerPackages[pricingTab]?.desc}
{/* Cards for selected package using dynamic DB state */}
{db.retainerPackages[pricingTab]?.tiers.map((plan, index) => {
const IconComponent = IconMap[plan.icon] || Rocket;
return (
{plan.popular && (
Best Value
)}
{plan.old}
{plan.price}
/ mo
{plan.per}
{db.retainerPackages[pricingTab].features.map((feature, idx) => (
{feature}
))}
Select Package
)
})}
{/* Payment Widget */}
100% Secure Transaction
Instant UPI Payment
Scan the QR or copy the VPA to start your project immediately. We support all major Indian payment apps.
UPI ID (VPA)
srivisual@slc
Copy ID
Supported Apps:
GPay
PhonePe
Paytm
)}
>
)}
{/* Footer */}
{/* Global CSS for custom animations */}
);
}