diff --git a/client/pages/staff/StaffInternalMarketplace.tsx b/client/pages/staff/StaffInternalMarketplace.tsx new file mode 100644 index 00000000..6320a2cd --- /dev/null +++ b/client/pages/staff/StaffInternalMarketplace.tsx @@ -0,0 +1,283 @@ +import { useState } from "react"; +import Layout from "@/components/Layout"; +import SEO from "@/components/SEO"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { + ShoppingCart, + Search, + Users, + Clock, + AlertCircle, + CheckCircle, +} from "lucide-react"; +import { Input } from "@/components/ui/input"; + +interface Service { + id: string; + name: string; + provider: string; + category: string; + description: string; + availability: "Available" | "Booked" | "Coming Soon"; + turnaround: string; + requests: number; +} + +const services: Service[] = [ + { + id: "1", + name: "Design Consultation", + provider: "Design Team", + category: "Design", + description: "1-on-1 design review and UX guidance for your project", + availability: "Available", + turnaround: "2 days", + requests: 8, + }, + { + id: "2", + name: "Code Review", + provider: "Engineering", + category: "Development", + description: "Thorough code review with architectural feedback", + availability: "Available", + turnaround: "1 day", + requests: 15, + }, + { + id: "3", + name: "Security Audit", + provider: "Security Team", + category: "Security", + description: "Comprehensive security review of your application", + availability: "Booked", + turnaround: "5 days", + requests: 4, + }, + { + id: "4", + name: "Performance Optimization", + provider: "DevOps", + category: "Infrastructure", + description: "Optimize your application performance and scalability", + availability: "Available", + turnaround: "3 days", + requests: 6, + }, + { + id: "5", + name: "Product Strategy Session", + provider: "Product Team", + category: "Product", + description: "Alignment session on product roadmap and features", + availability: "Coming Soon", + turnaround: "4 days", + requests: 12, + }, + { + id: "6", + name: "API Integration Support", + provider: "Backend Team", + category: "Development", + description: "Help integrating with AeThex APIs and services", + availability: "Available", + turnaround: "2 days", + requests: 10, + }, +]; + +const getAvailabilityColor = (availability: string) => { + switch (availability) { + case "Available": + return "bg-green-500/20 text-green-300 border-green-500/30"; + case "Booked": + return "bg-amber-500/20 text-amber-300 border-amber-500/30"; + case "Coming Soon": + return "bg-blue-500/20 text-blue-300 border-blue-500/30"; + default: + return "bg-slate-500/20 text-slate-300"; + } +}; + +export default function StaffInternalMarketplace() { + const [searchQuery, setSearchQuery] = useState(""); + const [selectedCategory, setSelectedCategory] = useState("All"); + + const categories = [ + "All", + "Design", + "Development", + "Security", + "Infrastructure", + "Product", + ]; + + const filtered = services.filter((service) => { + const matchesSearch = + service.name.toLowerCase().includes(searchQuery.toLowerCase()) || + service.provider.toLowerCase().includes(searchQuery.toLowerCase()); + const matchesCategory = + selectedCategory === "All" || service.category === selectedCategory; + return matchesSearch && matchesCategory; + }); + + return ( + + + +
+ {/* Background effects */} +
+
+
+
+ +
+ {/* Header */} +
+
+
+ +
+
+

+ Internal Marketplace +

+

+ Request services and resources from other teams +

+
+
+ + {/* Summary */} +
+ + +

+ {services.length} +

+

Available Services

+
+
+ + +

+ {services.filter((s) => s.availability === "Available").length} +

+

Ready to Book

+
+
+ + +

+ {services.reduce((sum, s) => sum + s.requests, 0)} +

+

Total Requests

+
+
+
+ + {/* Search and Filter */} +
+
+ + setSearchQuery(e.target.value)} + className="pl-10 bg-slate-800 border-slate-700 text-slate-100" + /> +
+
+ {categories.map((category) => ( + + ))} +
+
+ + {/* Services Grid */} +
+ {filtered.map((service) => ( + + +
+
+ + {service.name} + + + {service.provider} + +
+ + {service.availability} + +
+
+ +

+ {service.description} +

+
+
+ + {service.turnaround} +
+
+ + {service.requests} requests +
+
+ +
+
+ ))} +
+ + {filtered.length === 0 && ( +
+

No services found

+
+ )} +
+
+
+ + ); +}