@burdenoff/microfe-proserviceworld 2026.624.1 → 2026.626.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/proserviceworld/pages/AdminReportsPage.js +396 -329
- package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
- package/dist/proserviceworld/pages/AdminUsersPage.js +261 -237
- package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
- package/dist/proserviceworld/pages/AnalyticsPage.js +373 -315
- package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
- package/dist/proserviceworld/pages/BookingsPage.js +221 -200
- package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
- package/dist/proserviceworld/pages/DashboardPage.js +474 -405
- package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.js +386 -317
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/MessagesPage.js +201 -192
- package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
- package/dist/proserviceworld/pages/PaymentsPage.js +398 -340
- package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProjectsPage.js +543 -463
- package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProviderDetailPage.js +420 -346
- package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProvidersPage.js +249 -244
- package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
- package/dist/proserviceworld/pages/ReviewsPage.js +93 -76
- package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServiceDetailsPage.js +377 -309
- package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServicesPage.js +116 -109
- package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
- package/dist/proserviceworld/pages/VerificationPage.js +264 -251
- package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/proserviceworld/pages/DashboardPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Badge } from '@burdenoff/fe-libs/ui';\nimport {\n Calendar,\n Star,\n DollarSign,\n TrendingUp,\n Users,\n CheckCircle,\n AlertCircle,\n Clock,\n BookOpen,\n BarChart3,\n Bell,\n Plus,\n Eye,\n MessageSquare,\n} from 'lucide-react';\nimport { useProServiceWorldStore } from '../store/proserviceworldStore';\nimport { tWithFallback } from '../utils/i18n';\n\ntype DashboardView = 'client' | 'provider' | 'admin' | 'team';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const tr = (key: string, fallback: string, params?: Record<string, string | number>): string =>\n tWithFallback(t, key, fallback, params);\n const { bookings, providers, services, reviews, notifications } = useProServiceWorldStore();\n const [activeView, setActiveView] = useState<DashboardView>('client');\n\n const activeBookings = bookings.filter((b) => b.status === 'in_progress');\n const completedBookings = bookings.filter((b) => b.status === 'completed');\n const pendingBookings = bookings.filter((b) => b.status === 'pending');\n const totalSpent = bookings\n .filter((b) => b.paymentStatus === 'completed')\n .reduce((sum, b) => sum + b.budget, 0);\n const unreadNotifications = notifications.filter((n) => !n.read).length;\n\n const viewTabs: { id: DashboardView; label: string }[] = [\n { id: 'client', label: tr('proserviceworld.dashboard.views.client', 'Client') },\n { id: 'provider', label: tr('proserviceworld.dashboard.views.provider', 'Provider') },\n { id: 'admin', label: tr('proserviceworld.dashboard.views.admin', 'Admin') },\n { id: 'team', label: tr('proserviceworld.dashboard.views.team', 'Team') },\n ];\n const bookingStatusLabel = (status: string): string => {\n if (status === 'completed')\n return tr('proserviceworld.shared.bookingStatus.completed', 'completed');\n if (status === 'in_progress')\n return tr('proserviceworld.shared.bookingStatus.inProgress', 'in progress');\n if (status === 'pending') return tr('proserviceworld.shared.bookingStatus.pending', 'pending');\n return tr('proserviceworld.shared.bookingStatus.cancelled', 'cancelled');\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* View Selector */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {tr('proserviceworld.dashboard.title', 'Dashboard')}\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.subtitle',\n 'Welcome back! Here is your activity overview.'\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex bg-bg-sunken rounded-lg p-1\">\n {viewTabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveView(tab.id)}\n className={`px-3 py-1.5 rounded text-sm font-medium transition-colors ${\n activeView === tab.id\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-secondary hover:text-text-primary'\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {unreadNotifications > 0 && (\n <Button variant=\"outline\" size=\"sm\">\n <Bell className=\"h-4 w-4 mr-1\" />\n {unreadNotifications}\n </Button>\n )}\n </div>\n </div>\n\n {/* Client Dashboard */}\n {activeView === 'client' && (\n <div className=\"space-y-6\">\n {/* Welcome Card */}\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-bold\">\n {tr('proserviceworld.dashboard.client.welcomeTitle', 'Welcome back, Alex!')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.client.welcomeSubtitle',\n 'Manage your services, bookings, and find new providers'\n )}\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.client.actions.findServices', 'Find Services')}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Quick Stats */}\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.client.metrics.activeBookings',\n 'Active Bookings'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-yellow-500\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">4.8</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.client.metrics.avgRatingGiven',\n 'Avg. Rating Given'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <CheckCircle className=\"h-8 w-8 text-green-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{completedBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.client.metrics.completedProjects',\n 'Completed Projects'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">${totalSpent.toLocaleString()}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.metrics.totalSpent', 'Total Spent')}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Recent Bookings */}\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>\n {tr(\n 'proserviceworld.dashboard.client.sections.recentBookings',\n 'Recent Bookings'\n )}\n </CardTitle>\n <Button variant=\"outline\" size=\"sm\">\n {tr('proserviceworld.shared.actions.viewAll', 'View All')}\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {bookings.slice(0, 5).map((booking) => (\n <div\n key={booking.id}\n className=\"flex items-center justify-between p-4 border rounded-lg\"\n >\n <div className=\"flex items-center space-x-4\">\n <div className=\"h-10 w-10 rounded-full bg-action-primary-bg/10 flex items-center justify-center\">\n <BookOpen className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">{booking.title}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.client.booking.provider',\n 'Provider: {{name}}',\n {\n name: booking.providerName,\n }\n )}\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"font-medium text-sm\">${booking.budget.toLocaleString()}</p>\n <Badge\n variant={\n booking.status === 'completed'\n ? 'default'\n : booking.status === 'in_progress'\n ? 'secondary'\n : 'outline'\n }\n >\n {bookingStatusLabel(booking.status)}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Provider Dashboard */}\n {activeView === 'provider' && (\n <div className=\"space-y-6\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-bold\">\n {tr(\n 'proserviceworld.dashboard.provider.welcomeTitle',\n 'Welcome back, Provider!'\n )}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.provider.welcomeSubtitle',\n 'Manage your services, bookings, and grow your business'\n )}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Plus className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.provider.actions.addService', 'Add Service')}\n </Button>\n <Button size=\"sm\">\n <Eye className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.provider.actions.editProfile', 'Edit Profile')}\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-yellow-500\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">4.9</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.provider.metrics.rating',\n 'Rating ({{count}} reviews)',\n {\n count: reviews.length,\n }\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.provider.metrics.activeProjects',\n 'Active Projects'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <TrendingUp className=\"h-8 w-8 text-green-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">98%</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.provider.metrics.completionRate',\n 'Completion Rate'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">$12,850</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.provider.metrics.thisMonth', 'This Month')}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>\n {tr('proserviceworld.dashboard.provider.sections.yourServices', 'Your Services')}\n </CardTitle>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Eye className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.shared.actions.viewAll', 'View All')}\n </Button>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.provider.actions.addService', 'Add Service')}\n </Button>\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"grid gap-4 md:grid-cols-3\">\n {services.slice(0, 3).map((service) => (\n <div key={service.id} className=\"border rounded-lg p-4\">\n <h4 className=\"font-medium mb-1\">{service.title}</h4>\n <p className=\"text-sm text-text-secondary mb-2 line-clamp-2\">\n {service.description}\n </p>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">\n {tr('proserviceworld.services.card.pricing.from', 'From ${{amount}}', {\n amount: service.pricing.basePrice.toLocaleString(),\n })}\n </span>\n <Badge variant=\"secondary\">\n {tr(\n 'proserviceworld.dashboard.provider.service.bookings',\n '{{count}} bookings',\n {\n count: service.totalBookings,\n }\n )}\n </Badge>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Admin Dashboard */}\n {activeView === 'admin' && (\n <div className=\"space-y-6\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-bold\">\n {tr('proserviceworld.dashboard.admin.title', 'Admin Dashboard')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.admin.subtitle',\n 'Monitor platform activity and manage users'\n )}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Users className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.admin.actions.manageUsers', 'Manage Users')}\n </Button>\n <Button size=\"sm\">\n <BarChart3 className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.admin.actions.viewReports', 'View Reports')}\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Users className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{providers.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.metrics.totalProviders',\n 'Total Providers'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <BookOpen className=\"h-8 w-8 text-green-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{services.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.metrics.totalServices',\n 'Total Services'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{bookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.metrics.totalBookings',\n 'Total Bookings'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-yellow-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">$45,670</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.admin.metrics.totalRevenue', 'Total Revenue')}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle>\n {tr(\n 'proserviceworld.dashboard.admin.sections.recentProviders',\n 'Recent Providers'\n )}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {providers.slice(0, 3).map((provider) => (\n <div key={provider.id} className=\"flex items-center space-x-4\">\n <div className=\"h-10 w-10 rounded-full bg-action-primary-bg/10 flex items-center justify-center\">\n <span className=\"text-primary font-medium\">{provider.name.charAt(0)}</span>\n </div>\n <div className=\"flex-1\">\n <p className=\"font-medium\">{provider.businessName}</p>\n <p className=\"text-sm text-text-secondary\">{provider.specializations[0]}</p>\n </div>\n <div className=\"flex items-center text-sm\">\n <Star className=\"h-4 w-4 text-yellow-400 mr-1\" />\n {provider.rating.toFixed(1)}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('proserviceworld.dashboard.admin.sections.platformAlerts', 'Platform Alerts')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-start space-x-3\">\n <AlertCircle className=\"h-5 w-5 text-yellow-500 mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.pendingVerifications.title',\n 'Pending Verifications'\n )}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.pendingVerifications.description',\n '3 providers awaiting verification'\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3\">\n <CheckCircle className=\"h-5 w-5 text-green-500 mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.systemStatus.title',\n 'System Status'\n )}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.systemStatus.description',\n 'All systems operational'\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3\">\n <Bell className=\"h-5 w-5 text-blue-500 mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr('proserviceworld.dashboard.admin.alerts.newReviews.title', 'New Reviews')}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.newReviews.description',\n '12 new reviews this week'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n )}\n\n {/* Team Member Dashboard */}\n {activeView === 'team' && (\n <div className=\"space-y-6\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-bold\">\n {tr('proserviceworld.dashboard.team.title', 'Welcome, Team Member!')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.team.subtitle',\n 'Manage assigned tasks and projects'\n )}\n </p>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <Calendar className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.team.actions.myTasks', 'My Tasks')}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <CheckCircle className=\"h-8 w-8 text-green-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">8</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.team.metrics.tasksCompleted',\n 'Tasks Completed'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Clock className=\"h-8 w-8 text-yellow-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{pendingBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.team.metrics.pendingTasks', 'Pending Tasks')}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">4.9</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.team.metrics.performanceScore',\n 'Performance Score'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center\">\n <Users className=\"h-8 w-8 text-blue-600\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.team.metrics.activeProjects',\n 'Active Projects'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('proserviceworld.dashboard.team.sections.recentActivity', 'Recent Activity')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"text-center py-8\">\n <MessageSquare className=\"h-12 w-12 mx-auto text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.team.sections.comingSoon',\n 'Team member features coming soon'\n )}\n </p>\n </CardContent>\n </Card>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/proserviceworld/pages/DashboardPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Button,\n Badge,\n GlassCard,\n EmphasisPanel,\n AuroraBackground,\n GradientText,\n CTAOverflowMenu,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Calendar,\n Star,\n DollarSign,\n TrendingUp,\n Users,\n CheckCircle,\n AlertCircle,\n Clock,\n BookOpen,\n BarChart3,\n Bell,\n Plus,\n Eye,\n} from 'lucide-react';\nimport { useProServiceWorldStore } from '../store/proserviceworldStore';\nimport { tWithFallback } from '../utils/i18n';\n\ntype DashboardView = 'client' | 'provider' | 'admin' | 'team';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const tr = (key: string, fallback: string, params?: Record<string, string | number>): string =>\n tWithFallback(t, key, fallback, params);\n const { bookings, providers, services, reviews, notifications } = useProServiceWorldStore();\n const [activeView, setActiveView] = useState<DashboardView>('client');\n\n const activeBookings = bookings.filter((b) => b.status === 'in_progress');\n const completedBookings = bookings.filter((b) => b.status === 'completed');\n const pendingBookings = bookings.filter((b) => b.status === 'pending');\n const totalSpent = bookings\n .filter((b) => b.paymentStatus === 'completed')\n .reduce((sum, b) => sum + b.budget, 0);\n const unreadNotifications = notifications.filter((n) => !n.read).length;\n\n const viewTabs: { id: DashboardView; label: string }[] = [\n { id: 'client', label: tr('proserviceworld.dashboard.views.client', 'Client') },\n { id: 'provider', label: tr('proserviceworld.dashboard.views.provider', 'Provider') },\n { id: 'admin', label: tr('proserviceworld.dashboard.views.admin', 'Admin') },\n { id: 'team', label: tr('proserviceworld.dashboard.views.team', 'Team') },\n ];\n const bookingStatusLabel = (status: string): string => {\n if (status === 'completed')\n return tr('proserviceworld.shared.bookingStatus.completed', 'completed');\n if (status === 'in_progress')\n return tr('proserviceworld.shared.bookingStatus.inProgress', 'in progress');\n if (status === 'pending') return tr('proserviceworld.shared.bookingStatus.pending', 'pending');\n return tr('proserviceworld.shared.bookingStatus.cancelled', 'cancelled');\n };\n\n return (\n <div className=\"space-y-6 p-6 bg-bg-canvas min-h-screen\">\n {/* Hero header — the ONE aurora backdrop for this MFE. Sits at -z-10 behind\n the header; never moves content; static under reduced motion. */}\n <div className=\"relative overflow-hidden rounded-card -mx-2 px-2 pt-1\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n <GradientText>{tr('proserviceworld.dashboard.title', 'Dashboard')}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.subtitle',\n 'Welcome back! Here is your activity overview.'\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex bg-bg-sunken rounded-lg p-1\">\n {viewTabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveView(tab.id)}\n aria-pressed={activeView === tab.id}\n className={`px-3 py-1.5 rounded text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${\n activeView === tab.id\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-secondary hover:text-text-primary'\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {unreadNotifications > 0 && (\n <Button variant=\"outline\" size=\"sm\" aria-label={`${unreadNotifications} unread`}>\n <Bell className=\"h-4 w-4 mr-1\" />\n <span className=\"tabular-nums\">{unreadNotifications}</span>\n </Button>\n )}\n </div>\n </div>\n </div>\n\n <PagePurpose icon={<BarChart3 className=\"h-4 w-4\" />}>\n {tr(\n 'proserviceworld.dashboard.purpose',\n 'Your command center for ProServiceWorld. Switch between Client, Provider, Admin, and Team views to track bookings, monitor earnings and ratings, watch platform activity, and jump straight to the actions that matter to your role.'\n )}\n </PagePurpose>\n\n <NextSteps\n storageKey=\"proserviceworld-dashboard\"\n steps={[\n {\n id: 'find-services',\n label: tr('proserviceworld.dashboard.nextSteps.findServices', 'Find a service to book'),\n description: tr(\n 'proserviceworld.dashboard.nextSteps.findServicesDesc',\n 'Browse verified providers and book the help you need.'\n ),\n icon: <BookOpen className=\"h-4 w-4\" />,\n onClick: () => setActiveView('client'),\n },\n {\n id: 'review-bookings',\n label: tr('proserviceworld.dashboard.nextSteps.reviewBookings', 'Review active bookings'),\n description: tr(\n 'proserviceworld.dashboard.nextSteps.reviewBookingsDesc',\n 'Check progress and status on work in flight.'\n ),\n icon: <Calendar className=\"h-4 w-4\" />,\n onClick: () => setActiveView('client'),\n done: activeBookings.length > 0,\n },\n {\n id: 'provider-view',\n label: tr('proserviceworld.dashboard.nextSteps.providerView', 'Grow your provider business'),\n description: tr(\n 'proserviceworld.dashboard.nextSteps.providerViewDesc',\n 'Switch to the Provider view to manage services and earnings.'\n ),\n icon: <TrendingUp className=\"h-4 w-4\" />,\n onClick: () => setActiveView('provider'),\n },\n ]}\n />\n\n {/* Client Dashboard */}\n {activeView === 'client' && (\n <div className=\"space-y-6\">\n {/* Welcome Card — the single emphasised insight zone for this view */}\n <EmphasisPanel>\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-xl font-bold tracking-tight\">\n {tr('proserviceworld.dashboard.client.welcomeTitle', 'Welcome back, Alex!')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.client.welcomeSubtitle',\n 'Manage your services, bookings, and find new providers'\n )}\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.client.actions.findServices', 'Find Services')}\n </Button>\n </div>\n </EmphasisPanel>\n\n {/* Quick Stats */}\n <div className=\"grid gap-4 md:grid-cols-4\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.metrics.activeBookings', 'Active Bookings')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-status-warning-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">4.8</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.metrics.avgRatingGiven', 'Avg. Rating Given')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <CheckCircle className=\"h-8 w-8 text-status-success-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{completedBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.metrics.completedProjects', 'Completed Projects')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">${totalSpent.toLocaleString()}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.metrics.totalSpent', 'Total Spent')}\n </p>\n </div>\n </div>\n </GlassCard>\n </div>\n\n {/* Recent Bookings */}\n <Card className=\"border-border-seam\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>\n {tr('proserviceworld.dashboard.client.sections.recentBookings', 'Recent Bookings')}\n </CardTitle>\n <Button variant=\"outline\" size=\"sm\">\n {tr('proserviceworld.shared.actions.viewAll', 'View All')}\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {bookings.slice(0, 5).map((booking) => (\n <div\n key={booking.id}\n className=\"flex items-center justify-between p-4 border border-border-seam rounded-lg transition-shadow hover:shadow-pop\"\n >\n <div className=\"flex items-center space-x-4\">\n <div className=\"h-10 w-10 rounded-full bg-accent-soft flex items-center justify-center\">\n <BookOpen className=\"h-5 w-5 text-text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">{booking.title}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.client.booking.provider', 'Provider: {{name}}', {\n name: booking.providerName,\n })}\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"font-medium text-sm tabular-nums\">\n ${booking.budget.toLocaleString()}\n </p>\n <Badge\n variant={\n booking.status === 'completed'\n ? 'default'\n : booking.status === 'in_progress'\n ? 'secondary'\n : 'outline'\n }\n >\n {bookingStatusLabel(booking.status)}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Provider Dashboard */}\n {activeView === 'provider' && (\n <div className=\"space-y-6\">\n <EmphasisPanel>\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-xl font-bold tracking-tight\">\n {tr('proserviceworld.dashboard.provider.welcomeTitle', 'Welcome back, Provider!')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.provider.welcomeSubtitle',\n 'Manage your services, bookings, and grow your business'\n )}\n </p>\n </div>\n <CTAOverflowMenu\n primary={{\n label: tr('proserviceworld.dashboard.provider.actions.editProfile', 'Edit Profile'),\n onSelect: () => {},\n icon: <Eye className=\"h-4 w-4\" />,\n }}\n actions={[\n {\n label: tr('proserviceworld.dashboard.provider.actions.addService', 'Add Service'),\n onSelect: () => {},\n icon: <Plus className=\"h-4 w-4\" />,\n },\n ]}\n />\n </div>\n </EmphasisPanel>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-status-warning-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">4.9</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.provider.metrics.rating', 'Rating ({{count}} reviews)', {\n count: reviews.length,\n })}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.provider.metrics.activeProjects', 'Active Projects')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <TrendingUp className=\"h-8 w-8 text-status-success-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">98%</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.provider.metrics.completionRate', 'Completion Rate')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">$12,850</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.provider.metrics.thisMonth', 'This Month')}\n </p>\n </div>\n </div>\n </GlassCard>\n </div>\n\n <Card className=\"border-border-seam\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>\n {tr('proserviceworld.dashboard.provider.sections.yourServices', 'Your Services')}\n </CardTitle>\n <CTAOverflowMenu\n primary={{\n label: tr('proserviceworld.dashboard.provider.actions.addService', 'Add Service'),\n onSelect: () => {},\n icon: <Plus className=\"h-4 w-4\" />,\n }}\n actions={[\n {\n label: tr('proserviceworld.shared.actions.viewAll', 'View All'),\n onSelect: () => {},\n icon: <Eye className=\"h-4 w-4\" />,\n },\n ]}\n />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"grid gap-4 md:grid-cols-3\">\n {services.slice(0, 3).map((service) => (\n <div\n key={service.id}\n className=\"border border-border-seam rounded-lg p-4 transition-shadow hover:shadow-pop\"\n >\n <h4 className=\"font-medium mb-1\">{service.title}</h4>\n <p className=\"text-sm text-text-secondary mb-2 line-clamp-2\">\n {service.description}\n </p>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium tabular-nums\">\n {tr('proserviceworld.services.card.pricing.from', 'From ${{amount}}', {\n amount: service.pricing.basePrice.toLocaleString(),\n })}\n </span>\n <Badge variant=\"secondary\">\n {tr('proserviceworld.dashboard.provider.service.bookings', '{{count}} bookings', {\n count: service.totalBookings,\n })}\n </Badge>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Admin Dashboard */}\n {activeView === 'admin' && (\n <div className=\"space-y-6\">\n <EmphasisPanel>\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-xl font-bold tracking-tight\">\n {tr('proserviceworld.dashboard.admin.title', 'Admin Dashboard')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n 'proserviceworld.dashboard.admin.subtitle',\n 'Monitor platform activity and manage users'\n )}\n </p>\n </div>\n <CTAOverflowMenu\n primary={{\n label: tr('proserviceworld.dashboard.admin.actions.viewReports', 'View Reports'),\n onSelect: () => {},\n icon: <BarChart3 className=\"h-4 w-4\" />,\n }}\n actions={[\n {\n label: tr('proserviceworld.dashboard.admin.actions.manageUsers', 'Manage Users'),\n onSelect: () => {},\n icon: <Users className=\"h-4 w-4\" />,\n },\n ]}\n />\n </div>\n </EmphasisPanel>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Users className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{providers.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.admin.metrics.totalProviders', 'Total Providers')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <BookOpen className=\"h-8 w-8 text-status-success-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{services.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.admin.metrics.totalServices', 'Total Services')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Calendar className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{bookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.admin.metrics.totalBookings', 'Total Bookings')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <DollarSign className=\"h-8 w-8 text-status-warning-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">$45,670</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.admin.metrics.totalRevenue', 'Total Revenue')}\n </p>\n </div>\n </div>\n </GlassCard>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card className=\"border-border-seam\">\n <CardHeader>\n <CardTitle>\n {tr('proserviceworld.dashboard.admin.sections.recentProviders', 'Recent Providers')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {providers.slice(0, 3).map((provider) => (\n <div key={provider.id} className=\"flex items-center space-x-4\">\n <div className=\"h-10 w-10 rounded-full bg-accent-soft flex items-center justify-center\">\n <span className=\"text-text-primary font-medium\">\n {provider.name.charAt(0)}\n </span>\n </div>\n <div className=\"flex-1\">\n <p className=\"font-medium\">{provider.businessName}</p>\n <p className=\"text-sm text-text-secondary\">{provider.specializations[0]}</p>\n </div>\n <div className=\"flex items-center text-sm\">\n <Star className=\"h-4 w-4 text-status-warning-text mr-1\" />\n <span className=\"tabular-nums\">{provider.rating.toFixed(1)}</span>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card className=\"border-border-seam\">\n <CardHeader>\n <CardTitle>\n {tr('proserviceworld.dashboard.admin.sections.platformAlerts', 'Platform Alerts')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-start space-x-3\">\n <AlertCircle className=\"h-5 w-5 text-status-warning-text mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.pendingVerifications.title',\n 'Pending Verifications'\n )}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.pendingVerifications.description',\n '3 providers awaiting verification'\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3\">\n <CheckCircle className=\"h-5 w-5 text-status-success-text mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr('proserviceworld.dashboard.admin.alerts.systemStatus.title', 'System Status')}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.systemStatus.description',\n 'All systems operational'\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3\">\n <Bell className=\"h-5 w-5 text-accent-blue mt-0.5\" />\n <div>\n <p className=\"font-medium text-sm\">\n {tr('proserviceworld.dashboard.admin.alerts.newReviews.title', 'New Reviews')}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'proserviceworld.dashboard.admin.alerts.newReviews.description',\n '12 new reviews this week'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n )}\n\n {/* Team Member Dashboard */}\n {activeView === 'team' && (\n <div className=\"space-y-6\">\n <EmphasisPanel>\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-xl font-bold tracking-tight\">\n {tr('proserviceworld.dashboard.team.title', 'Welcome, Team Member!')}\n </h2>\n <p className=\"text-text-secondary mt-1\">\n {tr('proserviceworld.dashboard.team.subtitle', 'Manage assigned tasks and projects')}\n </p>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <Calendar className=\"h-4 w-4 mr-2\" />\n {tr('proserviceworld.dashboard.team.actions.myTasks', 'My Tasks')}\n </Button>\n </div>\n </EmphasisPanel>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <CheckCircle className=\"h-8 w-8 text-status-success-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">8</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.team.metrics.tasksCompleted', 'Tasks Completed')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Clock className=\"h-8 w-8 text-status-warning-text\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{pendingBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.team.metrics.pendingTasks', 'Pending Tasks')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Star className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">4.9</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.team.metrics.performanceScore', 'Performance Score')}\n </p>\n </div>\n </div>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <div className=\"flex items-center\">\n <Users className=\"h-8 w-8 text-accent-blue\" />\n <div className=\"ml-4\">\n <p className=\"text-2xl font-bold tabular-nums\">{activeBookings.length}</p>\n <p className=\"text-sm text-text-secondary\">\n {tr('proserviceworld.dashboard.team.metrics.activeProjects', 'Active Projects')}\n </p>\n </div>\n </div>\n </GlassCard>\n </div>\n\n <Card className=\"border-border-seam\">\n <CardHeader>\n <CardTitle>\n {tr('proserviceworld.dashboard.team.sections.recentActivity', 'Recent Activity')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"py-4\">\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title={tr(\n 'proserviceworld.dashboard.team.sections.comingSoonTitle',\n 'No recent activity yet'\n )}\n description={tr(\n 'proserviceworld.dashboard.team.sections.comingSoon',\n 'Team member features are on the way — assigned tasks and project updates will show up here.'\n )}\n />\n </CardContent>\n </Card>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|