@burdenoff/microfe-coolandlovely 2026.614.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/README.md +12 -0
- package/dist/coolandlovely/CoolAndLovelyRoot.d.ts +5 -0
- package/dist/coolandlovely/CoolAndLovelyRoot.d.ts.map +1 -0
- package/dist/coolandlovely/CoolAndLovelyRoot.js +177 -0
- package/dist/coolandlovely/CoolAndLovelyRoot.js.map +1 -0
- package/dist/coolandlovely/CoolAndLovelyRoutes.d.ts +4 -0
- package/dist/coolandlovely/CoolAndLovelyRoutes.d.ts.map +1 -0
- package/dist/coolandlovely/CoolAndLovelyRoutes.js +215 -0
- package/dist/coolandlovely/CoolAndLovelyRoutes.js.map +1 -0
- package/dist/coolandlovely/components/CartCard.d.ts +18 -0
- package/dist/coolandlovely/components/CartCard.d.ts.map +1 -0
- package/dist/coolandlovely/components/EmptyState.d.ts +12 -0
- package/dist/coolandlovely/components/EmptyState.d.ts.map +1 -0
- package/dist/coolandlovely/components/EmptyState.js +28 -0
- package/dist/coolandlovely/components/EmptyState.js.map +1 -0
- package/dist/coolandlovely/components/InvestmentCard.d.ts +18 -0
- package/dist/coolandlovely/components/InvestmentCard.d.ts.map +1 -0
- package/dist/coolandlovely/components/InvestmentCard.js +96 -0
- package/dist/coolandlovely/components/InvestmentCard.js.map +1 -0
- package/dist/coolandlovely/components/MetricsCard.d.ts +14 -0
- package/dist/coolandlovely/components/MetricsCard.d.ts.map +1 -0
- package/dist/coolandlovely/components/MetricsCard.js +46 -0
- package/dist/coolandlovely/components/MetricsCard.js.map +1 -0
- package/dist/coolandlovely/components/OrderCard.d.ts +18 -0
- package/dist/coolandlovely/components/OrderCard.d.ts.map +1 -0
- package/dist/coolandlovely/components/PageLayout.d.ts +12 -0
- package/dist/coolandlovely/components/PageLayout.d.ts.map +1 -0
- package/dist/coolandlovely/components/PageLayout.js +26 -0
- package/dist/coolandlovely/components/PageLayout.js.map +1 -0
- package/dist/coolandlovely/components/RatingDisplay.d.ts +12 -0
- package/dist/coolandlovely/components/RatingDisplay.d.ts.map +1 -0
- package/dist/coolandlovely/components/RatingDisplay.js +35 -0
- package/dist/coolandlovely/components/RatingDisplay.js.map +1 -0
- package/dist/coolandlovely/components/StatusBadge.d.ts +9 -0
- package/dist/coolandlovely/components/StatusBadge.d.ts.map +1 -0
- package/dist/coolandlovely/components/StatusBadge.js +45 -0
- package/dist/coolandlovely/components/StatusBadge.js.map +1 -0
- package/dist/coolandlovely/components/index.d.ts +13 -0
- package/dist/coolandlovely/components/index.d.ts.map +1 -0
- package/dist/coolandlovely/context/CoolAndLovelyContext.d.ts +16 -0
- package/dist/coolandlovely/context/CoolAndLovelyContext.d.ts.map +1 -0
- package/dist/coolandlovely/context/CoolAndLovelyContext.js +93 -0
- package/dist/coolandlovely/context/CoolAndLovelyContext.js.map +1 -0
- package/dist/coolandlovely/context/index.d.ts +6 -0
- package/dist/coolandlovely/context/index.d.ts.map +1 -0
- package/dist/coolandlovely/context/index.js +1 -0
- package/dist/coolandlovely/hooks/index.d.ts +2 -0
- package/dist/coolandlovely/hooks/index.d.ts.map +1 -0
- package/dist/coolandlovely/hooks/useCoolAndLovelyApi.d.ts +44 -0
- package/dist/coolandlovely/hooks/useCoolAndLovelyApi.d.ts.map +1 -0
- package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js +223 -0
- package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js.map +1 -0
- package/dist/coolandlovely/index.d.ts +11 -0
- package/dist/coolandlovely/index.d.ts.map +1 -0
- package/dist/coolandlovely/index.js +7 -0
- package/dist/coolandlovely/mocks/data.d.ts +61 -0
- package/dist/coolandlovely/mocks/data.d.ts.map +1 -0
- package/dist/coolandlovely/mocks/data.js +1517 -0
- package/dist/coolandlovely/mocks/data.js.map +1 -0
- package/dist/coolandlovely/mocks/index.d.ts +7 -0
- package/dist/coolandlovely/mocks/index.d.ts.map +1 -0
- package/dist/coolandlovely/mocks/users.d.ts +18 -0
- package/dist/coolandlovely/mocks/users.d.ts.map +1 -0
- package/dist/coolandlovely/mocks/users.js +34 -0
- package/dist/coolandlovely/mocks/users.js.map +1 -0
- package/dist/coolandlovely/pages/HomePage.d.ts +10 -0
- package/dist/coolandlovely/pages/HomePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/HomePage.js +921 -0
- package/dist/coolandlovely/pages/HomePage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.d.ts +11 -0
- package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js +645 -0
- package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminDashboard.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/AdminDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminDashboard.js +639 -0
- package/dist/coolandlovely/pages/admin/AdminDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminFinancialPage.d.ts +11 -0
- package/dist/coolandlovely/pages/admin/AdminFinancialPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminFinancialPage.js +421 -0
- package/dist/coolandlovely/pages/admin/AdminFinancialPage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminOrdersPage.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/AdminOrdersPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminOrdersPage.js +660 -0
- package/dist/coolandlovely/pages/admin/AdminOrdersPage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminProfilePage.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/AdminProfilePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminProfilePage.js +259 -0
- package/dist/coolandlovely/pages/admin/AdminProfilePage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminSettingsPage.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/AdminSettingsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/AdminSettingsPage.js +649 -0
- package/dist/coolandlovely/pages/admin/AdminSettingsPage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/CartManagementPage.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/CartManagementPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/CartManagementPage.js +869 -0
- package/dist/coolandlovely/pages/admin/CartManagementPage.js.map +1 -0
- package/dist/coolandlovely/pages/admin/UserManagementPage.d.ts +10 -0
- package/dist/coolandlovely/pages/admin/UserManagementPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/admin/UserManagementPage.js +893 -0
- package/dist/coolandlovely/pages/admin/UserManagementPage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.d.ts +12 -0
- package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js +834 -0
- package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.d.ts +11 -0
- package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js +700 -0
- package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.d.ts +11 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js +760 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.d.ts +12 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js +886 -0
- package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.d.ts +11 -0
- package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js +631 -0
- package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.d.ts +11 -0
- package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js +913 -0
- package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.d.ts +10 -0
- package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js +881 -0
- package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.d.ts +11 -0
- package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js +833 -0
- package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js.map +1 -0
- package/dist/coolandlovely/pages/common/HelpSupportPage.d.ts +11 -0
- package/dist/coolandlovely/pages/common/HelpSupportPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/common/HelpSupportPage.js +1325 -0
- package/dist/coolandlovely/pages/common/HelpSupportPage.js.map +1 -0
- package/dist/coolandlovely/pages/common/NotificationCenterPage.d.ts +11 -0
- package/dist/coolandlovely/pages/common/NotificationCenterPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/common/NotificationCenterPage.js +665 -0
- package/dist/coolandlovely/pages/common/NotificationCenterPage.js.map +1 -0
- package/dist/coolandlovely/pages/common/SettingsPage.d.ts +9 -0
- package/dist/coolandlovely/pages/common/SettingsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/common/SettingsPage.js +964 -0
- package/dist/coolandlovely/pages/common/SettingsPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/BookingDetailsPage.d.ts +12 -0
- package/dist/coolandlovely/pages/customer/BookingDetailsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/BookingDetailsPage.js +593 -0
- package/dist/coolandlovely/pages/customer/BookingDetailsPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/CartDetailPage.d.ts +13 -0
- package/dist/coolandlovely/pages/customer/CartDetailPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/CartDetailPage.js +620 -0
- package/dist/coolandlovely/pages/customer/CartDetailPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/CartDiscoveryPage.d.ts +11 -0
- package/dist/coolandlovely/pages/customer/CartDiscoveryPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js +547 -0
- package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/CheckoutPage.d.ts +9 -0
- package/dist/coolandlovely/pages/customer/CheckoutPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/CheckoutPage.js +532 -0
- package/dist/coolandlovely/pages/customer/CheckoutPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/CustomerDashboard.d.ts +10 -0
- package/dist/coolandlovely/pages/customer/CustomerDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/CustomerDashboard.js +496 -0
- package/dist/coolandlovely/pages/customer/CustomerDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/customer/CustomerProfilePage.d.ts +10 -0
- package/dist/coolandlovely/pages/customer/CustomerProfilePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/CustomerProfilePage.js +621 -0
- package/dist/coolandlovely/pages/customer/CustomerProfilePage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.d.ts +12 -0
- package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js +623 -0
- package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/FavoritesPage.d.ts +11 -0
- package/dist/coolandlovely/pages/customer/FavoritesPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/FavoritesPage.js +477 -0
- package/dist/coolandlovely/pages/customer/FavoritesPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/OrderHistoryPage.d.ts +9 -0
- package/dist/coolandlovely/pages/customer/OrderHistoryPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/OrderHistoryPage.js +438 -0
- package/dist/coolandlovely/pages/customer/OrderHistoryPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/OrderTrackingPage.d.ts +9 -0
- package/dist/coolandlovely/pages/customer/OrderTrackingPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/OrderTrackingPage.js +388 -0
- package/dist/coolandlovely/pages/customer/OrderTrackingPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/PaymentMethodsPage.d.ts +11 -0
- package/dist/coolandlovely/pages/customer/PaymentMethodsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js +488 -0
- package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/ReviewsPage.d.ts +11 -0
- package/dist/coolandlovely/pages/customer/ReviewsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/ReviewsPage.js +606 -0
- package/dist/coolandlovely/pages/customer/ReviewsPage.js.map +1 -0
- package/dist/coolandlovely/pages/customer/SavedAddressesPage.d.ts +10 -0
- package/dist/coolandlovely/pages/customer/SavedAddressesPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/customer/SavedAddressesPage.js +443 -0
- package/dist/coolandlovely/pages/customer/SavedAddressesPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.d.ts +10 -0
- package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js +849 -0
- package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.d.ts +10 -0
- package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js +939 -0
- package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.d.ts +11 -0
- package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js +681 -0
- package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorDashboard.d.ts +9 -0
- package/dist/coolandlovely/pages/investor/InvestorDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorDashboard.js +419 -0
- package/dist/coolandlovely/pages/investor/InvestorDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.d.ts +10 -0
- package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js +399 -0
- package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.d.ts +10 -0
- package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js +569 -0
- package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorProfilePage.d.ts +12 -0
- package/dist/coolandlovely/pages/investor/InvestorProfilePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/investor/InvestorProfilePage.js +1065 -0
- package/dist/coolandlovely/pages/investor/InvestorProfilePage.js.map +1 -0
- package/dist/coolandlovely/pages/worker/TaskDetailsPage.d.ts +22 -0
- package/dist/coolandlovely/pages/worker/TaskDetailsPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/worker/TaskDetailsPage.js +496 -0
- package/dist/coolandlovely/pages/worker/TaskDetailsPage.js.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerDashboard.d.ts +18 -0
- package/dist/coolandlovely/pages/worker/WorkerDashboard.d.ts.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerDashboard.js +634 -0
- package/dist/coolandlovely/pages/worker/WorkerDashboard.js.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerOrdersPage.d.ts +18 -0
- package/dist/coolandlovely/pages/worker/WorkerOrdersPage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js +675 -0
- package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerProfilePage.d.ts +18 -0
- package/dist/coolandlovely/pages/worker/WorkerProfilePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerProfilePage.js +687 -0
- package/dist/coolandlovely/pages/worker/WorkerProfilePage.js.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerSchedulePage.d.ts +17 -0
- package/dist/coolandlovely/pages/worker/WorkerSchedulePage.d.ts.map +1 -0
- package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js +578 -0
- package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js.map +1 -0
- package/dist/coolandlovely/store/coolandlovelyStore.d.ts +60 -0
- package/dist/coolandlovely/store/coolandlovelyStore.d.ts.map +1 -0
- package/dist/coolandlovely/store/coolandlovelyStore.js +38 -0
- package/dist/coolandlovely/store/coolandlovelyStore.js.map +1 -0
- package/dist/coolandlovely/store/index.d.ts +6 -0
- package/dist/coolandlovely/store/index.d.ts.map +1 -0
- package/dist/coolandlovely/store/index.js +1 -0
- package/dist/coolandlovely/types/index.d.ts +458 -0
- package/dist/coolandlovely/types/index.d.ts.map +1 -0
- package/dist/coolandlovely/utils/cn.d.ts +4 -0
- package/dist/coolandlovely/utils/cn.d.ts.map +1 -0
- package/dist/coolandlovely/utils/cn.js +10 -0
- package/dist/coolandlovely/utils/cn.js.map +1 -0
- package/dist/coolandlovely/utils/formatters.d.ts +78 -0
- package/dist/coolandlovely/utils/formatters.d.ts.map +1 -0
- package/dist/coolandlovely/utils/formatters.js +51 -0
- package/dist/coolandlovely/utils/formatters.js.map +1 -0
- package/dist/coolandlovely/utils/index.d.ts +8 -0
- package/dist/coolandlovely/utils/index.d.ts.map +1 -0
- package/dist/coolandlovely/utils/navigation.d.ts +20 -0
- package/dist/coolandlovely/utils/navigation.d.ts.map +1 -0
- package/dist/coolandlovely/utils/navigation.js +9 -0
- package/dist/coolandlovely/utils/navigation.js.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +23527 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +57851 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js +1674 -0
- package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
import { useCoolAndLovely as e } from "../../context/CoolAndLovelyContext.js";
|
|
2
|
+
import { cn as t } from "../../utils/cn.js";
|
|
3
|
+
import { PageLayout as n } from "../../components/PageLayout.js";
|
|
4
|
+
import { useDashboardStats as r, useOrders as i, useProviders as a } from "../../hooks/useCoolAndLovelyApi.js";
|
|
5
|
+
import { formatCurrency as o } from "../../utils/formatters.js";
|
|
6
|
+
import { useCallback as s } from "react";
|
|
7
|
+
import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { ArrowRight as l, Clock as u, CreditCard as d, Heart as f, Lightbulb as p, MapPin as m, Navigation as h, Package as g, Search as _, ShoppingBag as v, Star as y, TrendingUp as b, User as x, Zap as S } from "lucide-react";
|
|
9
|
+
import { jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
10
|
+
//#region src/coolandlovely/pages/customer/CustomerDashboard.tsx
|
|
11
|
+
function T() {
|
|
12
|
+
let e = (/* @__PURE__ */ new Date()).getHours();
|
|
13
|
+
return e < 12 ? "Good morning" : e < 17 ? "Good afternoon" : "Good evening";
|
|
14
|
+
}
|
|
15
|
+
function E() {
|
|
16
|
+
let { navigateTo: E, currentUser: D } = e(), { t: O } = c(), { data: k = [], isLoading: A } = i({ customerId: D?.id }), { data: j = [], isLoading: M } = a(), { data: N, isLoading: P } = r(), F = A || M || P, I = s((e, t) => {
|
|
17
|
+
let n = O(e);
|
|
18
|
+
return n === e ? t : n;
|
|
19
|
+
}, [O]), L = D?.firstName ?? D?.name ?? "Customer", R = [
|
|
20
|
+
{
|
|
21
|
+
id: "1",
|
|
22
|
+
type: "suggestion",
|
|
23
|
+
title: "New Cart Nearby",
|
|
24
|
+
description: "Healthy Bowls cart just opened 0.2km from your location. They specialize in acai bowls and smoothies.",
|
|
25
|
+
confidence: 92,
|
|
26
|
+
action: "Explore Cart"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "2",
|
|
30
|
+
type: "opportunity",
|
|
31
|
+
title: "Special Offer Available",
|
|
32
|
+
description: "Your favorite Dosa Express is offering 20% off on orders above ₹300. Valid until tonight.",
|
|
33
|
+
confidence: 95,
|
|
34
|
+
action: "Order Now"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: "3",
|
|
38
|
+
type: "trend",
|
|
39
|
+
title: "Peak Hours Alert",
|
|
40
|
+
description: "Order now to avoid lunch rush. Delivery times typically increase by 15-20 minutes after 12 PM.",
|
|
41
|
+
confidence: 88,
|
|
42
|
+
action: "View Carts"
|
|
43
|
+
}
|
|
44
|
+
], z = k.slice(0, 3), B = j.slice(0, 3), V = {
|
|
45
|
+
totalOrders: k.length,
|
|
46
|
+
totalSpent: k.reduce((e, t) => e + t.total, 0),
|
|
47
|
+
favoriteCount: 6,
|
|
48
|
+
avgRating: 4.5
|
|
49
|
+
}, H = (e) => {
|
|
50
|
+
switch (e) {
|
|
51
|
+
case "delivered": return "bg-green-500/20 text-green-600 dark:text-green-400";
|
|
52
|
+
case "preparing": return "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400";
|
|
53
|
+
case "out_for_delivery": return "bg-blue-500/20 text-blue-600 dark:text-blue-400";
|
|
54
|
+
case "confirmed": return "bg-blue-500/20 text-blue-600 dark:text-blue-400";
|
|
55
|
+
case "cancelled": return "bg-red-500/20 text-red-600 dark:text-red-400";
|
|
56
|
+
default: return "bg-muted text-muted-foreground";
|
|
57
|
+
}
|
|
58
|
+
}, U = (e) => {
|
|
59
|
+
switch (e) {
|
|
60
|
+
case "suggestion": return /* @__PURE__ */ C(p, { className: "h-4 w-4" });
|
|
61
|
+
case "opportunity": return /* @__PURE__ */ C(b, { className: "h-4 w-4" });
|
|
62
|
+
case "trend": return /* @__PURE__ */ C(S, { className: "h-4 w-4" });
|
|
63
|
+
default: return /* @__PURE__ */ C(p, { className: "h-4 w-4" });
|
|
64
|
+
}
|
|
65
|
+
}, W = (e) => {
|
|
66
|
+
switch (e) {
|
|
67
|
+
case "suggestion": return "bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/20";
|
|
68
|
+
case "opportunity": return "bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/20";
|
|
69
|
+
case "trend": return "bg-amber-500/10 text-amber-600 dark:text-amber-400 border-amber-500/20";
|
|
70
|
+
default: return "bg-muted text-muted-foreground border-border";
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return F ? /* @__PURE__ */ C(n, {
|
|
74
|
+
title: I("coolandlovely.customerDashboard.title", "Dashboard"),
|
|
75
|
+
children: /* @__PURE__ */ C("div", {
|
|
76
|
+
className: "flex items-center justify-center py-20",
|
|
77
|
+
children: /* @__PURE__ */ w("div", {
|
|
78
|
+
className: "text-center",
|
|
79
|
+
children: [/* @__PURE__ */ C("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-foreground" }), /* @__PURE__ */ C("p", {
|
|
80
|
+
className: "text-sm text-muted-foreground",
|
|
81
|
+
children: I("coolandlovely.customerDashboard.loading", "Loading your dashboard...")
|
|
82
|
+
})]
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
}) : /* @__PURE__ */ w(n, {
|
|
86
|
+
title: I("coolandlovely.customerDashboard.welcomeBack", "Welcome Back!"),
|
|
87
|
+
description: `${T()}, ${L}`,
|
|
88
|
+
children: [V && /* @__PURE__ */ w("div", {
|
|
89
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
90
|
+
children: [
|
|
91
|
+
/* @__PURE__ */ C("div", {
|
|
92
|
+
className: "rounded-lg border border-border bg-card p-4",
|
|
93
|
+
children: /* @__PURE__ */ w("div", {
|
|
94
|
+
className: "flex items-center gap-3",
|
|
95
|
+
children: [/* @__PURE__ */ C("div", {
|
|
96
|
+
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-muted",
|
|
97
|
+
children: /* @__PURE__ */ C(g, { className: "h-5 w-5 text-muted-foreground" })
|
|
98
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
99
|
+
className: "text-2xl font-bold text-foreground",
|
|
100
|
+
children: V.totalOrders
|
|
101
|
+
}), /* @__PURE__ */ C("p", {
|
|
102
|
+
className: "text-xs text-muted-foreground",
|
|
103
|
+
children: I("coolandlovely.customerDashboard.totalOrders", "Total Orders")
|
|
104
|
+
})] })]
|
|
105
|
+
})
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ C("div", {
|
|
108
|
+
className: "rounded-lg border border-border bg-card p-4",
|
|
109
|
+
children: /* @__PURE__ */ w("div", {
|
|
110
|
+
className: "flex items-center gap-3",
|
|
111
|
+
children: [/* @__PURE__ */ C("div", {
|
|
112
|
+
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-muted",
|
|
113
|
+
children: /* @__PURE__ */ C(d, { className: "h-5 w-5 text-muted-foreground" })
|
|
114
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
115
|
+
className: "text-2xl font-bold text-foreground",
|
|
116
|
+
children: o(V.totalSpent, { minimumFractionDigits: 0 })
|
|
117
|
+
}), /* @__PURE__ */ C("p", {
|
|
118
|
+
className: "text-xs text-muted-foreground",
|
|
119
|
+
children: I("coolandlovely.customerDashboard.totalSpent", "Total Spent")
|
|
120
|
+
})] })]
|
|
121
|
+
})
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ C("div", {
|
|
124
|
+
className: "rounded-lg border border-border bg-card p-4",
|
|
125
|
+
children: /* @__PURE__ */ w("div", {
|
|
126
|
+
className: "flex items-center gap-3",
|
|
127
|
+
children: [/* @__PURE__ */ C("div", {
|
|
128
|
+
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-muted",
|
|
129
|
+
children: /* @__PURE__ */ C(f, { className: "h-5 w-5 text-muted-foreground" })
|
|
130
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
131
|
+
className: "text-2xl font-bold text-foreground",
|
|
132
|
+
children: V.favoriteCount
|
|
133
|
+
}), /* @__PURE__ */ C("p", {
|
|
134
|
+
className: "text-xs text-muted-foreground",
|
|
135
|
+
children: I("coolandlovely.customerDashboard.favoriteCarts", "Favorite Carts")
|
|
136
|
+
})] })]
|
|
137
|
+
})
|
|
138
|
+
}),
|
|
139
|
+
/* @__PURE__ */ C("div", {
|
|
140
|
+
className: "rounded-lg border border-border bg-card p-4",
|
|
141
|
+
children: /* @__PURE__ */ w("div", {
|
|
142
|
+
className: "flex items-center gap-3",
|
|
143
|
+
children: [/* @__PURE__ */ C("div", {
|
|
144
|
+
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-muted",
|
|
145
|
+
children: /* @__PURE__ */ C(y, { className: "h-5 w-5 text-muted-foreground" })
|
|
146
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
147
|
+
className: "text-2xl font-bold text-foreground",
|
|
148
|
+
children: V.avgRating.toFixed(1)
|
|
149
|
+
}), /* @__PURE__ */ C("p", {
|
|
150
|
+
className: "text-xs text-muted-foreground",
|
|
151
|
+
children: I("coolandlovely.customerDashboard.avgRatingGiven", "Avg Rating Given")
|
|
152
|
+
})] })]
|
|
153
|
+
})
|
|
154
|
+
})
|
|
155
|
+
]
|
|
156
|
+
}), /* @__PURE__ */ w("div", {
|
|
157
|
+
className: "mt-8 grid grid-cols-1 gap-8 lg:grid-cols-3",
|
|
158
|
+
children: [/* @__PURE__ */ w("div", {
|
|
159
|
+
className: "lg:col-span-2 space-y-8",
|
|
160
|
+
children: [
|
|
161
|
+
/* @__PURE__ */ w("section", { children: [/* @__PURE__ */ C("h2", {
|
|
162
|
+
className: "text-lg font-semibold text-foreground mb-4",
|
|
163
|
+
children: I("coolandlovely.customerDashboard.quickActions", "Quick Actions")
|
|
164
|
+
}), /* @__PURE__ */ w("div", {
|
|
165
|
+
className: "grid grid-cols-1 gap-3 sm:grid-cols-3",
|
|
166
|
+
children: [
|
|
167
|
+
/* @__PURE__ */ w("button", {
|
|
168
|
+
type: "button",
|
|
169
|
+
onClick: () => E("/customer/carts"),
|
|
170
|
+
className: t("flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left", "hover:bg-accent hover:shadow-md"),
|
|
171
|
+
children: [/* @__PURE__ */ C("div", {
|
|
172
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-blue-500/10",
|
|
173
|
+
children: /* @__PURE__ */ C(_, { className: "h-5 w-5 text-blue-600 dark:text-blue-400" })
|
|
174
|
+
}), /* @__PURE__ */ w("div", {
|
|
175
|
+
className: "min-w-0",
|
|
176
|
+
children: [/* @__PURE__ */ C("p", {
|
|
177
|
+
className: "text-sm font-semibold text-foreground",
|
|
178
|
+
children: I("coolandlovely.customerDashboard.discoverCarts", "Discover Carts")
|
|
179
|
+
}), /* @__PURE__ */ C("p", {
|
|
180
|
+
className: "text-xs text-muted-foreground",
|
|
181
|
+
children: I("coolandlovely.customerDashboard.findNearbyCarts", "Find nearby carts")
|
|
182
|
+
})]
|
|
183
|
+
})]
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ w("button", {
|
|
186
|
+
type: "button",
|
|
187
|
+
onClick: () => E("/customer/orders"),
|
|
188
|
+
className: t("flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left", "hover:bg-accent hover:shadow-md"),
|
|
189
|
+
children: [/* @__PURE__ */ C("div", {
|
|
190
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-green-500/10",
|
|
191
|
+
children: /* @__PURE__ */ C(u, { className: "h-5 w-5 text-green-600 dark:text-green-400" })
|
|
192
|
+
}), /* @__PURE__ */ w("div", {
|
|
193
|
+
className: "min-w-0",
|
|
194
|
+
children: [/* @__PURE__ */ C("p", {
|
|
195
|
+
className: "text-sm font-semibold text-foreground",
|
|
196
|
+
children: I("coolandlovely.customerDashboard.orderHistory", "Order History")
|
|
197
|
+
}), /* @__PURE__ */ C("p", {
|
|
198
|
+
className: "text-xs text-muted-foreground",
|
|
199
|
+
children: I("coolandlovely.customerDashboard.viewPastOrders", "View past orders")
|
|
200
|
+
})]
|
|
201
|
+
})]
|
|
202
|
+
}),
|
|
203
|
+
/* @__PURE__ */ w("button", {
|
|
204
|
+
type: "button",
|
|
205
|
+
onClick: () => E("/customer/favorites"),
|
|
206
|
+
className: t("flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left", "hover:bg-accent hover:shadow-md"),
|
|
207
|
+
children: [/* @__PURE__ */ C("div", {
|
|
208
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-red-500/10",
|
|
209
|
+
children: /* @__PURE__ */ C(f, { className: "h-5 w-5 text-red-600 dark:text-red-400" })
|
|
210
|
+
}), /* @__PURE__ */ w("div", {
|
|
211
|
+
className: "min-w-0",
|
|
212
|
+
children: [/* @__PURE__ */ C("p", {
|
|
213
|
+
className: "text-sm font-semibold text-foreground",
|
|
214
|
+
children: I("coolandlovely.customerDashboard.favorites", "Favorites")
|
|
215
|
+
}), /* @__PURE__ */ C("p", {
|
|
216
|
+
className: "text-xs text-muted-foreground",
|
|
217
|
+
children: I("coolandlovely.customerDashboard.savedCarts", "Saved carts")
|
|
218
|
+
})]
|
|
219
|
+
})]
|
|
220
|
+
})
|
|
221
|
+
]
|
|
222
|
+
})] }),
|
|
223
|
+
/* @__PURE__ */ w("section", { children: [/* @__PURE__ */ w("div", {
|
|
224
|
+
className: "flex items-center justify-between mb-4",
|
|
225
|
+
children: [/* @__PURE__ */ C("h2", {
|
|
226
|
+
className: "text-lg font-semibold text-foreground",
|
|
227
|
+
children: I("coolandlovely.customerDashboard.recentOrders", "Recent Orders")
|
|
228
|
+
}), /* @__PURE__ */ w("button", {
|
|
229
|
+
type: "button",
|
|
230
|
+
onClick: () => E("/customer/orders"),
|
|
231
|
+
className: "flex items-center gap-1 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",
|
|
232
|
+
children: [I("coolandlovely.common.viewAll", "View All"), /* @__PURE__ */ C(l, { className: "h-4 w-4" })]
|
|
233
|
+
})]
|
|
234
|
+
}), z.length > 0 ? /* @__PURE__ */ C("div", {
|
|
235
|
+
className: "space-y-3",
|
|
236
|
+
children: z.map((e) => /* @__PURE__ */ C("div", {
|
|
237
|
+
className: "rounded-lg border border-border bg-card p-4",
|
|
238
|
+
children: /* @__PURE__ */ w("div", {
|
|
239
|
+
className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3",
|
|
240
|
+
children: [/* @__PURE__ */ w("div", {
|
|
241
|
+
className: "flex-1 min-w-0",
|
|
242
|
+
children: [
|
|
243
|
+
/* @__PURE__ */ w("div", {
|
|
244
|
+
className: "flex flex-wrap items-center gap-2 mb-1",
|
|
245
|
+
children: [/* @__PURE__ */ C("h3", {
|
|
246
|
+
className: "text-sm font-semibold text-foreground",
|
|
247
|
+
children: e.cartName
|
|
248
|
+
}), /* @__PURE__ */ C("span", {
|
|
249
|
+
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize", H(e.status)),
|
|
250
|
+
children: e.status.replace(/_/g, " ")
|
|
251
|
+
})]
|
|
252
|
+
}),
|
|
253
|
+
/* @__PURE__ */ C("p", {
|
|
254
|
+
className: "text-xs text-muted-foreground mb-2 leading-relaxed",
|
|
255
|
+
children: e.items.map((e) => `${e.name} (${e.quantity})`).join(", ")
|
|
256
|
+
}),
|
|
257
|
+
/* @__PURE__ */ w("div", {
|
|
258
|
+
className: "flex flex-wrap items-center gap-3 text-xs text-muted-foreground",
|
|
259
|
+
children: [
|
|
260
|
+
/* @__PURE__ */ C("span", {
|
|
261
|
+
className: "font-medium text-foreground",
|
|
262
|
+
children: o(e.total, { minimumFractionDigits: 0 })
|
|
263
|
+
}),
|
|
264
|
+
/* @__PURE__ */ C("span", { children: new Date(e.orderDate).toLocaleDateString() }),
|
|
265
|
+
e.rating && /* @__PURE__ */ w("span", {
|
|
266
|
+
className: "flex items-center gap-1",
|
|
267
|
+
children: [/* @__PURE__ */ C(y, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), e.rating]
|
|
268
|
+
})
|
|
269
|
+
]
|
|
270
|
+
})
|
|
271
|
+
]
|
|
272
|
+
}), /* @__PURE__ */ C("button", {
|
|
273
|
+
type: "button",
|
|
274
|
+
onClick: () => E(`/customer/orders/${e.id}`),
|
|
275
|
+
className: "rounded-lg border border-border px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent transition-colors",
|
|
276
|
+
children: I("coolandlovely.customerDashboard.viewDetails", "View Details")
|
|
277
|
+
})]
|
|
278
|
+
})
|
|
279
|
+
}, e.id))
|
|
280
|
+
}) : /* @__PURE__ */ w("div", {
|
|
281
|
+
className: "rounded-lg border border-border bg-card p-8 text-center",
|
|
282
|
+
children: [/* @__PURE__ */ C(v, { className: "mx-auto h-10 w-10 text-muted-foreground/50" }), /* @__PURE__ */ C("p", {
|
|
283
|
+
className: "mt-3 text-sm text-muted-foreground",
|
|
284
|
+
children: I("coolandlovely.customerDashboard.noRecentOrders", "No recent orders")
|
|
285
|
+
})]
|
|
286
|
+
})] }),
|
|
287
|
+
/* @__PURE__ */ w("section", { children: [/* @__PURE__ */ C("h2", {
|
|
288
|
+
className: "text-lg font-semibold text-foreground mb-4",
|
|
289
|
+
children: I("coolandlovely.customerDashboard.recommendedForYou", "Recommended for You")
|
|
290
|
+
}), /* @__PURE__ */ C("div", {
|
|
291
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2",
|
|
292
|
+
children: B.map((e) => /* @__PURE__ */ w("div", {
|
|
293
|
+
className: "rounded-lg border border-border bg-card overflow-hidden shadow-sm hover:shadow-md transition-shadow",
|
|
294
|
+
children: [/* @__PURE__ */ w("div", {
|
|
295
|
+
className: "relative h-40",
|
|
296
|
+
children: [/* @__PURE__ */ C("img", {
|
|
297
|
+
src: e.image,
|
|
298
|
+
alt: e.name,
|
|
299
|
+
className: "h-full w-full object-cover"
|
|
300
|
+
}), /* @__PURE__ */ C("div", {
|
|
301
|
+
className: "absolute top-2 right-2",
|
|
302
|
+
children: /* @__PURE__ */ C("span", {
|
|
303
|
+
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium", e.isOpen ? "bg-green-500/20 text-green-600 dark:text-green-400" : "bg-red-500/20 text-red-600 dark:text-red-400"),
|
|
304
|
+
children: e.isOpen ? I("coolandlovely.customerDashboard.open", "Open") : I("coolandlovely.customerDashboard.closed", "Closed")
|
|
305
|
+
})
|
|
306
|
+
})]
|
|
307
|
+
}), /* @__PURE__ */ w("div", {
|
|
308
|
+
className: "p-4",
|
|
309
|
+
children: [
|
|
310
|
+
/* @__PURE__ */ w("div", {
|
|
311
|
+
className: "flex items-start justify-between mb-2",
|
|
312
|
+
children: [/* @__PURE__ */ w("div", {
|
|
313
|
+
className: "min-w-0 flex-1",
|
|
314
|
+
children: [/* @__PURE__ */ C("h3", {
|
|
315
|
+
className: "text-sm font-semibold text-foreground",
|
|
316
|
+
children: e.name
|
|
317
|
+
}), /* @__PURE__ */ C("p", {
|
|
318
|
+
className: "text-xs text-muted-foreground",
|
|
319
|
+
children: e.category
|
|
320
|
+
})]
|
|
321
|
+
}), /* @__PURE__ */ w("div", {
|
|
322
|
+
className: "flex items-center gap-1 text-xs",
|
|
323
|
+
children: [/* @__PURE__ */ C(y, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), /* @__PURE__ */ C("span", {
|
|
324
|
+
className: "font-medium text-foreground",
|
|
325
|
+
children: e.rating
|
|
326
|
+
})]
|
|
327
|
+
})]
|
|
328
|
+
}),
|
|
329
|
+
/* @__PURE__ */ w("div", {
|
|
330
|
+
className: "flex items-center gap-3 text-xs text-muted-foreground mb-3",
|
|
331
|
+
children: [/* @__PURE__ */ w("span", {
|
|
332
|
+
className: "flex items-center gap-1",
|
|
333
|
+
children: [
|
|
334
|
+
/* @__PURE__ */ C(m, { className: "h-3 w-3" }),
|
|
335
|
+
e.distance,
|
|
336
|
+
"km away"
|
|
337
|
+
]
|
|
338
|
+
}), /* @__PURE__ */ w("span", {
|
|
339
|
+
className: "flex items-center gap-1",
|
|
340
|
+
children: [
|
|
341
|
+
/* @__PURE__ */ C(u, { className: "h-3 w-3" }),
|
|
342
|
+
e.estimatedTime,
|
|
343
|
+
" mins"
|
|
344
|
+
]
|
|
345
|
+
})]
|
|
346
|
+
}),
|
|
347
|
+
/* @__PURE__ */ C("button", {
|
|
348
|
+
type: "button",
|
|
349
|
+
disabled: !e.isOpen,
|
|
350
|
+
onClick: () => e.isOpen && E(`/customer/carts/${e.id}`),
|
|
351
|
+
className: t("w-full rounded-lg py-2 text-sm font-medium transition-opacity", e.isOpen ? "bg-foreground text-background hover:opacity-90" : "bg-muted text-muted-foreground cursor-not-allowed"),
|
|
352
|
+
children: e.isOpen ? I("coolandlovely.customerDashboard.viewMenu", "View Menu") : I("coolandlovely.customerDashboard.currentlyClosed", "Currently Closed")
|
|
353
|
+
})
|
|
354
|
+
]
|
|
355
|
+
})]
|
|
356
|
+
}, e.id))
|
|
357
|
+
})] })
|
|
358
|
+
]
|
|
359
|
+
}), /* @__PURE__ */ w("div", {
|
|
360
|
+
className: "space-y-6",
|
|
361
|
+
children: [
|
|
362
|
+
/* @__PURE__ */ w("div", {
|
|
363
|
+
className: "rounded-lg border border-border bg-card p-5",
|
|
364
|
+
children: [/* @__PURE__ */ C("h3", {
|
|
365
|
+
className: "text-base font-semibold text-foreground mb-4",
|
|
366
|
+
children: I("coolandlovely.customerDashboard.personalizedRecommendations", "Personalized Recommendations")
|
|
367
|
+
}), /* @__PURE__ */ C("div", {
|
|
368
|
+
className: "space-y-3",
|
|
369
|
+
children: R.map((e) => /* @__PURE__ */ C("div", {
|
|
370
|
+
className: t("rounded-lg border p-3", W(e.type)),
|
|
371
|
+
children: /* @__PURE__ */ w("div", {
|
|
372
|
+
className: "flex items-start gap-2",
|
|
373
|
+
children: [/* @__PURE__ */ C("div", {
|
|
374
|
+
className: "mt-0.5 shrink-0",
|
|
375
|
+
children: U(e.type)
|
|
376
|
+
}), /* @__PURE__ */ w("div", {
|
|
377
|
+
className: "flex-1 min-w-0",
|
|
378
|
+
children: [
|
|
379
|
+
/* @__PURE__ */ w("div", {
|
|
380
|
+
className: "flex items-center justify-between gap-2",
|
|
381
|
+
children: [/* @__PURE__ */ C("p", {
|
|
382
|
+
className: "text-xs font-semibold",
|
|
383
|
+
children: e.title
|
|
384
|
+
}), /* @__PURE__ */ w("span", {
|
|
385
|
+
className: "text-[10px] opacity-70",
|
|
386
|
+
children: [e.confidence, "%"]
|
|
387
|
+
})]
|
|
388
|
+
}),
|
|
389
|
+
/* @__PURE__ */ C("p", {
|
|
390
|
+
className: "mt-1 text-xs opacity-80 leading-relaxed",
|
|
391
|
+
children: e.description
|
|
392
|
+
}),
|
|
393
|
+
/* @__PURE__ */ C("button", {
|
|
394
|
+
type: "button",
|
|
395
|
+
onClick: () => E("/customer/carts"),
|
|
396
|
+
className: "mt-2 text-[10px] font-semibold underline underline-offset-2",
|
|
397
|
+
children: e.action
|
|
398
|
+
})
|
|
399
|
+
]
|
|
400
|
+
})]
|
|
401
|
+
})
|
|
402
|
+
}, e.id))
|
|
403
|
+
})]
|
|
404
|
+
}),
|
|
405
|
+
/* @__PURE__ */ w("div", {
|
|
406
|
+
className: "rounded-lg border border-border bg-card p-5",
|
|
407
|
+
children: [/* @__PURE__ */ C("h3", {
|
|
408
|
+
className: "text-base font-semibold text-foreground mb-3",
|
|
409
|
+
children: I("coolandlovely.customerDashboard.quickLinks", "Quick Links")
|
|
410
|
+
}), /* @__PURE__ */ w("div", {
|
|
411
|
+
className: "space-y-2",
|
|
412
|
+
children: [
|
|
413
|
+
/* @__PURE__ */ w("button", {
|
|
414
|
+
type: "button",
|
|
415
|
+
onClick: () => E("/customer/profile"),
|
|
416
|
+
className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left",
|
|
417
|
+
children: [/* @__PURE__ */ C(x, { className: "h-4 w-4 text-muted-foreground" }), I("coolandlovely.customerDashboard.profileSettings", "Profile Settings")]
|
|
418
|
+
}),
|
|
419
|
+
/* @__PURE__ */ w("button", {
|
|
420
|
+
type: "button",
|
|
421
|
+
onClick: () => E("/customer/addresses"),
|
|
422
|
+
className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left",
|
|
423
|
+
children: [/* @__PURE__ */ C(m, { className: "h-4 w-4 text-muted-foreground" }), I("coolandlovely.customerDashboard.savedAddresses", "Saved Addresses")]
|
|
424
|
+
}),
|
|
425
|
+
/* @__PURE__ */ w("button", {
|
|
426
|
+
type: "button",
|
|
427
|
+
onClick: () => E("/customer/payment-methods"),
|
|
428
|
+
className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left",
|
|
429
|
+
children: [/* @__PURE__ */ C(d, { className: "h-4 w-4 text-muted-foreground" }), I("coolandlovely.customerDashboard.paymentMethods", "Payment Methods")]
|
|
430
|
+
})
|
|
431
|
+
]
|
|
432
|
+
})]
|
|
433
|
+
}),
|
|
434
|
+
/* @__PURE__ */ w("div", {
|
|
435
|
+
className: "rounded-lg border border-border bg-card p-5",
|
|
436
|
+
children: [
|
|
437
|
+
/* @__PURE__ */ C("h3", {
|
|
438
|
+
className: "text-base font-semibold text-foreground mb-3",
|
|
439
|
+
children: I("coolandlovely.customerDashboard.currentLocation", "Current Location")
|
|
440
|
+
}),
|
|
441
|
+
/* @__PURE__ */ w("div", {
|
|
442
|
+
className: "flex items-start gap-3",
|
|
443
|
+
children: [/* @__PURE__ */ C(h, { className: "h-4 w-4 text-blue-500 mt-0.5 shrink-0" }), /* @__PURE__ */ w("div", {
|
|
444
|
+
className: "flex-1 min-w-0",
|
|
445
|
+
children: [
|
|
446
|
+
/* @__PURE__ */ C("p", {
|
|
447
|
+
className: "text-sm font-medium text-foreground",
|
|
448
|
+
children: "Koramangala"
|
|
449
|
+
}),
|
|
450
|
+
/* @__PURE__ */ C("p", {
|
|
451
|
+
className: "text-xs text-muted-foreground",
|
|
452
|
+
children: "80 Feet Road, 6th Block"
|
|
453
|
+
}),
|
|
454
|
+
/* @__PURE__ */ C("p", {
|
|
455
|
+
className: "text-xs text-muted-foreground",
|
|
456
|
+
children: "Bangalore, Karnataka"
|
|
457
|
+
})
|
|
458
|
+
]
|
|
459
|
+
})]
|
|
460
|
+
}),
|
|
461
|
+
/* @__PURE__ */ C("button", {
|
|
462
|
+
type: "button",
|
|
463
|
+
onClick: () => E("/customer/addresses"),
|
|
464
|
+
className: "mt-3 w-full rounded-lg border border-border px-3 py-2 text-xs font-medium text-foreground hover:bg-accent transition-colors",
|
|
465
|
+
children: I("coolandlovely.customerDashboard.updateLocation", "Update Location")
|
|
466
|
+
})
|
|
467
|
+
]
|
|
468
|
+
}),
|
|
469
|
+
/* @__PURE__ */ w("div", {
|
|
470
|
+
className: "rounded-lg bg-gradient-to-r from-blue-500/10 to-purple-500/10 border border-blue-500/20 p-5",
|
|
471
|
+
children: [
|
|
472
|
+
/* @__PURE__ */ C("h3", {
|
|
473
|
+
className: "text-base font-semibold text-foreground mb-2",
|
|
474
|
+
children: I("coolandlovely.customerDashboard.specialOffers", "Special Offers")
|
|
475
|
+
}),
|
|
476
|
+
/* @__PURE__ */ C("p", {
|
|
477
|
+
className: "text-xs text-muted-foreground mb-3 leading-relaxed",
|
|
478
|
+
children: I("coolandlovely.customerDashboard.specialOffersDescription", "Get 25% off on your next order from featured carts")
|
|
479
|
+
}),
|
|
480
|
+
/* @__PURE__ */ C("button", {
|
|
481
|
+
type: "button",
|
|
482
|
+
onClick: () => E("/customer/carts"),
|
|
483
|
+
className: "w-full rounded-lg bg-foreground px-3 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
|
|
484
|
+
children: I("coolandlovely.customerDashboard.viewOffers", "View Offers")
|
|
485
|
+
})
|
|
486
|
+
]
|
|
487
|
+
})
|
|
488
|
+
]
|
|
489
|
+
})]
|
|
490
|
+
})]
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
//#endregion
|
|
494
|
+
export { E as CustomerDashboard };
|
|
495
|
+
|
|
496
|
+
//# sourceMappingURL=CustomerDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerDashboard.js","names":[],"sources":["../../../../src/coolandlovely/pages/customer/CustomerDashboard.tsx"],"sourcesContent":["/**\n * Customer Dashboard Page\n * @module coolandlovely/pages/customer\n *\n * Welcome dashboard with time-of-day greeting, AI insights panel,\n * stats grid, recent orders with per-item display, recommended carts,\n * quick links sidebar, current location card, and special offers.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n ShoppingBag,\n Heart,\n Star,\n CreditCard,\n ArrowRight,\n Search,\n Clock,\n MapPin,\n Package,\n User,\n Navigation,\n Lightbulb,\n TrendingUp,\n Zap,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useCoolAndLovely } from '../../context/CoolAndLovelyContext';\nimport { useOrders, useProviders, useDashboardStats } from '../../hooks/useCoolAndLovelyApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\ninterface RecommendedCart {\n id: string;\n name: string;\n category: string;\n rating: number;\n distance: number;\n estimatedTime: number;\n image: string;\n isOpen: boolean;\n}\n\ninterface CustomerStats {\n totalOrders: number;\n totalSpent: number;\n favoriteCount: number;\n avgRating: number;\n}\n\ninterface AIInsight {\n id: string;\n type: 'suggestion' | 'opportunity' | 'trend';\n title: string;\n description: string;\n confidence: number;\n action: string;\n}\n\nfunction getTimeOfDayGreeting(): string {\n const hour = new Date().getHours();\n if (hour < 12) return 'Good morning';\n if (hour < 17) return 'Good afternoon';\n return 'Good evening';\n}\n\nexport function CustomerDashboard() {\n const { navigateTo, currentUser } = useCoolAndLovely();\n const { t: translate } = useI18n();\n\n const { data: orders = [], isLoading: isLoadingOrders } = useOrders({\n customerId: currentUser?.id,\n });\n const { data: providers = [], isLoading: isLoadingProviders } = useProviders();\n const { data: statsData, isLoading: isLoadingStats } = useDashboardStats();\n\n const isLoading = isLoadingOrders || isLoadingProviders || isLoadingStats;\n\n const t = useCallback(\n (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n },\n [translate]\n );\n\n const firstName = currentUser?.firstName ?? currentUser?.name ?? 'Customer';\n\n const aiInsights: AIInsight[] = [\n {\n id: '1',\n type: 'suggestion',\n title: 'New Cart Nearby',\n description:\n 'Healthy Bowls cart just opened 0.2km from your location. They specialize in acai bowls and smoothies.',\n confidence: 92,\n action: 'Explore Cart',\n },\n {\n id: '2',\n type: 'opportunity',\n title: 'Special Offer Available',\n description:\n 'Your favorite Dosa Express is offering 20% off on orders above ₹300. Valid until tonight.',\n confidence: 95,\n action: 'Order Now',\n },\n {\n id: '3',\n type: 'trend',\n title: 'Peak Hours Alert',\n description:\n 'Order now to avoid lunch rush. Delivery times typically increase by 15-20 minutes after 12 PM.',\n confidence: 88,\n action: 'View Carts',\n },\n ];\n\n const recentOrders = orders.slice(0, 3);\n const recommendedCarts = providers.slice(0, 3);\n\n const stats: CustomerStats = {\n totalOrders: orders.length,\n totalSpent: orders.reduce((acc, order) => acc + order.total, 0),\n favoriteCount: 6, // Still mock as we don't have favorite hooks yet\n avgRating: 4.5, // Still mock\n };\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case 'delivered':\n return 'bg-green-500/20 text-green-600 dark:text-green-400';\n case 'preparing':\n return 'bg-yellow-500/20 text-yellow-600 dark:text-yellow-400';\n case 'out_for_delivery':\n return 'bg-blue-500/20 text-blue-600 dark:text-blue-400';\n case 'confirmed':\n return 'bg-blue-500/20 text-blue-600 dark:text-blue-400';\n case 'cancelled':\n return 'bg-red-500/20 text-red-600 dark:text-red-400';\n default:\n return 'bg-muted text-muted-foreground';\n }\n };\n\n const getInsightIcon = (type: string) => {\n switch (type) {\n case 'suggestion':\n return <Lightbulb className=\"h-4 w-4\" />;\n case 'opportunity':\n return <TrendingUp className=\"h-4 w-4\" />;\n case 'trend':\n return <Zap className=\"h-4 w-4\" />;\n default:\n return <Lightbulb className=\"h-4 w-4\" />;\n }\n };\n\n const getInsightColor = (type: string) => {\n switch (type) {\n case 'suggestion':\n return 'bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/20';\n case 'opportunity':\n return 'bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/20';\n case 'trend':\n return 'bg-amber-500/10 text-amber-600 dark:text-amber-400 border-amber-500/20';\n default:\n return 'bg-muted text-muted-foreground border-border';\n }\n };\n\n if (isLoading) {\n return (\n <PageLayout title={t('coolandlovely.customerDashboard.title', 'Dashboard')}>\n <div className=\"flex items-center justify-center py-20\">\n <div className=\"text-center\">\n <div className=\"mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-foreground\" />\n <p className=\"text-sm text-muted-foreground\">\n {t('coolandlovely.customerDashboard.loading', 'Loading your dashboard...')}\n </p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title={t('coolandlovely.customerDashboard.welcomeBack', 'Welcome Back!')}\n description={`${getTimeOfDayGreeting()}, ${firstName}`}\n >\n {/* Stats Overview */}\n {stats && (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <div className=\"rounded-lg border border-border bg-card p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted\">\n <Package className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold text-foreground\">{stats.totalOrders}</p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.totalOrders', 'Total Orders')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted\">\n <CreditCard className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold text-foreground\">\n {formatCurrency(stats.totalSpent, { minimumFractionDigits: 0 })}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.totalSpent', 'Total Spent')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted\">\n <Heart className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold text-foreground\">{stats.favoriteCount}</p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.favoriteCarts', 'Favorite Carts')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted\">\n <Star className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold text-foreground\">{stats.avgRating.toFixed(1)}</p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.avgRatingGiven', 'Avg Rating Given')}\n </p>\n </div>\n </div>\n </div>\n </div>\n )}\n\n <div className=\"mt-8 grid grid-cols-1 gap-8 lg:grid-cols-3\">\n {/* Main Content */}\n <div className=\"lg:col-span-2 space-y-8\">\n {/* Quick Actions */}\n <section>\n <h2 className=\"text-lg font-semibold text-foreground mb-4\">\n {t('coolandlovely.customerDashboard.quickActions', 'Quick Actions')}\n </h2>\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/carts')}\n className={cn(\n 'flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left',\n 'hover:bg-accent hover:shadow-md'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-blue-500/10\">\n <Search className=\"h-5 w-5 text-blue-600 dark:text-blue-400\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-semibold text-foreground\">\n {t('coolandlovely.customerDashboard.discoverCarts', 'Discover Carts')}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.findNearbyCarts', 'Find nearby carts')}\n </p>\n </div>\n </button>\n\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className={cn(\n 'flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left',\n 'hover:bg-accent hover:shadow-md'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-green-500/10\">\n <Clock className=\"h-5 w-5 text-green-600 dark:text-green-400\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-semibold text-foreground\">\n {t('coolandlovely.customerDashboard.orderHistory', 'Order History')}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.viewPastOrders', 'View past orders')}\n </p>\n </div>\n </button>\n\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/favorites')}\n className={cn(\n 'flex items-center gap-3 rounded-lg border border-border bg-card p-4 shadow-sm transition-colors text-left',\n 'hover:bg-accent hover:shadow-md'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-red-500/10\">\n <Heart className=\"h-5 w-5 text-red-600 dark:text-red-400\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-semibold text-foreground\">\n {t('coolandlovely.customerDashboard.favorites', 'Favorites')}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {t('coolandlovely.customerDashboard.savedCarts', 'Saved carts')}\n </p>\n </div>\n </button>\n </div>\n </section>\n\n {/* Recent Orders */}\n <section>\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">\n {t('coolandlovely.customerDashboard.recentOrders', 'Recent Orders')}\n </h2>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className=\"flex items-center gap-1 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n {t('coolandlovely.common.viewAll', 'View All')}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n\n {recentOrders.length > 0 ? (\n <div className=\"space-y-3\">\n {recentOrders.map((order) => (\n <div key={order.id} className=\"rounded-lg border border-border bg-card p-4\">\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 mb-1\">\n <h3 className=\"text-sm font-semibold text-foreground\">\n {order.cartName}\n </h3>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize',\n getStatusColor(order.status)\n )}\n >\n {order.status.replace(/_/g, ' ')}\n </span>\n </div>\n <p className=\"text-xs text-muted-foreground mb-2 leading-relaxed\">\n {order.items.map((item) => `${item.name} (${item.quantity})`).join(', ')}\n </p>\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-muted-foreground\">\n <span className=\"font-medium text-foreground\">\n {formatCurrency(order.total, { minimumFractionDigits: 0 })}\n </span>\n <span>{new Date(order.orderDate).toLocaleDateString()}</span>\n {order.rating && (\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n {order.rating}\n </span>\n )}\n </div>\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo(`/customer/orders/${order.id}`)}\n className=\"rounded-lg border border-border px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent transition-colors\"\n >\n {t('coolandlovely.customerDashboard.viewDetails', 'View Details')}\n </button>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"rounded-lg border border-border bg-card p-8 text-center\">\n <ShoppingBag className=\"mx-auto h-10 w-10 text-muted-foreground/50\" />\n <p className=\"mt-3 text-sm text-muted-foreground\">\n {t('coolandlovely.customerDashboard.noRecentOrders', 'No recent orders')}\n </p>\n </div>\n )}\n </section>\n\n {/* Recommended Carts */}\n <section>\n <h2 className=\"text-lg font-semibold text-foreground mb-4\">\n {t('coolandlovely.customerDashboard.recommendedForYou', 'Recommended for You')}\n </h2>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n {recommendedCarts.map((cart) => (\n <div\n key={cart.id}\n className=\"rounded-lg border border-border bg-card overflow-hidden shadow-sm hover:shadow-md transition-shadow\"\n >\n <div className=\"relative h-40\">\n <img src={cart.image} alt={cart.name} className=\"h-full w-full object-cover\" />\n <div className=\"absolute top-2 right-2\">\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium',\n cart.isOpen\n ? 'bg-green-500/20 text-green-600 dark:text-green-400'\n : 'bg-red-500/20 text-red-600 dark:text-red-400'\n )}\n >\n {cart.isOpen\n ? t('coolandlovely.customerDashboard.open', 'Open')\n : t('coolandlovely.customerDashboard.closed', 'Closed')}\n </span>\n </div>\n </div>\n <div className=\"p-4\">\n <div className=\"flex items-start justify-between mb-2\">\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"text-sm font-semibold text-foreground\">{cart.name}</h3>\n <p className=\"text-xs text-muted-foreground\">{cart.category}</p>\n </div>\n <div className=\"flex items-center gap-1 text-xs\">\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n <span className=\"font-medium text-foreground\">{cart.rating}</span>\n </div>\n </div>\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground mb-3\">\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {cart.distance}km away\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {cart.estimatedTime} mins\n </span>\n </div>\n <button\n type=\"button\"\n disabled={!cart.isOpen}\n onClick={() => cart.isOpen && navigateTo(`/customer/carts/${cart.id}`)}\n className={cn(\n 'w-full rounded-lg py-2 text-sm font-medium transition-opacity',\n cart.isOpen\n ? 'bg-foreground text-background hover:opacity-90'\n : 'bg-muted text-muted-foreground cursor-not-allowed'\n )}\n >\n {cart.isOpen\n ? t('coolandlovely.customerDashboard.viewMenu', 'View Menu')\n : t('coolandlovely.customerDashboard.currentlyClosed', 'Currently Closed')}\n </button>\n </div>\n </div>\n ))}\n </div>\n </section>\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n {/* AI Insights Panel */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-4\">\n {t(\n 'coolandlovely.customerDashboard.personalizedRecommendations',\n 'Personalized Recommendations'\n )}\n </h3>\n <div className=\"space-y-3\">\n {aiInsights.map((insight) => (\n <div\n key={insight.id}\n className={cn('rounded-lg border p-3', getInsightColor(insight.type))}\n >\n <div className=\"flex items-start gap-2\">\n <div className=\"mt-0.5 shrink-0\">{getInsightIcon(insight.type)}</div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className=\"text-xs font-semibold\">{insight.title}</p>\n <span className=\"text-[10px] opacity-70\">{insight.confidence}%</span>\n </div>\n <p className=\"mt-1 text-xs opacity-80 leading-relaxed\">\n {insight.description}\n </p>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/carts')}\n className=\"mt-2 text-[10px] font-semibold underline underline-offset-2\"\n >\n {insight.action}\n </button>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Quick Links */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">\n {t('coolandlovely.customerDashboard.quickLinks', 'Quick Links')}\n </h3>\n <div className=\"space-y-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/profile')}\n className=\"flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left\"\n >\n <User className=\"h-4 w-4 text-muted-foreground\" />\n {t('coolandlovely.customerDashboard.profileSettings', 'Profile Settings')}\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/addresses')}\n className=\"flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left\"\n >\n <MapPin className=\"h-4 w-4 text-muted-foreground\" />\n {t('coolandlovely.customerDashboard.savedAddresses', 'Saved Addresses')}\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/payment-methods')}\n className=\"flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm text-foreground hover:bg-accent transition-colors text-left\"\n >\n <CreditCard className=\"h-4 w-4 text-muted-foreground\" />\n {t('coolandlovely.customerDashboard.paymentMethods', 'Payment Methods')}\n </button>\n </div>\n </div>\n\n {/* Current Location */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">\n {t('coolandlovely.customerDashboard.currentLocation', 'Current Location')}\n </h3>\n <div className=\"flex items-start gap-3\">\n <Navigation className=\"h-4 w-4 text-blue-500 mt-0.5 shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-foreground\">Koramangala</p>\n <p className=\"text-xs text-muted-foreground\">80 Feet Road, 6th Block</p>\n <p className=\"text-xs text-muted-foreground\">Bangalore, Karnataka</p>\n </div>\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/addresses')}\n className=\"mt-3 w-full rounded-lg border border-border px-3 py-2 text-xs font-medium text-foreground hover:bg-accent transition-colors\"\n >\n {t('coolandlovely.customerDashboard.updateLocation', 'Update Location')}\n </button>\n </div>\n\n {/* Special Offers */}\n <div className=\"rounded-lg bg-gradient-to-r from-blue-500/10 to-purple-500/10 border border-blue-500/20 p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-2\">\n {t('coolandlovely.customerDashboard.specialOffers', 'Special Offers')}\n </h3>\n <p className=\"text-xs text-muted-foreground mb-3 leading-relaxed\">\n {t(\n 'coolandlovely.customerDashboard.specialOffersDescription',\n 'Get 25% off on your next order from featured carts'\n )}\n </p>\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/carts')}\n className=\"w-full rounded-lg bg-foreground px-3 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n {t('coolandlovely.customerDashboard.viewOffers', 'View Offers')}\n </button>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Customer Profile Page
|
|
3
|
+
* @module coolandlovely/pages/customer
|
|
4
|
+
*
|
|
5
|
+
* Full profile management with 3-tab interface (Profile Info, Preferences, My Stats),
|
|
6
|
+
* edit mode toggle, inline editable fields, emergency contact, dietary preferences,
|
|
7
|
+
* food allergies, and stats/loyalty display.
|
|
8
|
+
*/
|
|
9
|
+
export declare function CustomerProfilePage(): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=CustomerProfilePage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerProfilePage.d.ts","sourceRoot":"","sources":["../../../../src/coolandlovely/pages/customer/CustomerProfilePage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmFH,wBAAgB,mBAAmB,4CAooBlC"}
|