@burdenoff/microfe-kadaikodi 2026.626.2 → 2026.704.2

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.
Files changed (96) hide show
  1. package/dist/kadaikodi/hooks/useKadaikodiApi.js +260 -105
  2. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  3. package/dist/kadaikodi/pages/HomePage.js +4 -4
  4. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  5. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +341 -461
  6. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  7. package/dist/kadaikodi/pages/admin/AdminDashboard.js +115 -399
  8. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  9. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +140 -283
  10. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  11. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +282 -453
  12. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  13. package/dist/kadaikodi/pages/admin/AdminProfilePage.js +115 -242
  14. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  15. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +2 -2
  16. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  17. package/dist/kadaikodi/pages/admin/CartManagementPage.js +279 -333
  18. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  19. package/dist/kadaikodi/pages/admin/UserManagementPage.js +299 -372
  20. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  21. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +503 -627
  22. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  23. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +339 -282
  24. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  25. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +329 -432
  26. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  27. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +374 -384
  28. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  29. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +249 -208
  30. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  31. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +276 -279
  32. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  33. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +229 -447
  34. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  35. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +171 -627
  36. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/common/HelpSupportPage.js +331 -415
  38. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  39. package/dist/kadaikodi/pages/common/NotificationCenterPage.js +18 -670
  40. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  41. package/dist/kadaikodi/pages/common/SettingsPage.js +34 -46
  42. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  43. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +193 -447
  44. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  45. package/dist/kadaikodi/pages/customer/CartDetailPage.js +6 -6
  46. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  47. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
  48. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  49. package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -2
  50. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  51. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +191 -369
  52. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  53. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +233 -389
  54. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  55. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +255 -215
  56. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  57. package/dist/kadaikodi/pages/customer/FavoritesPage.js +141 -178
  58. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  59. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  60. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +155 -161
  61. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +76 -118
  63. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/customer/ReviewsPage.js +14 -140
  65. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  66. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +135 -213
  67. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  68. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +272 -774
  69. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  70. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +258 -523
  71. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  72. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +112 -600
  73. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  74. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +128 -295
  75. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  76. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +205 -291
  77. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  78. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +159 -500
  79. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  80. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +426 -514
  81. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  82. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +231 -225
  83. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  84. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +197 -301
  85. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  86. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +247 -399
  87. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  88. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +294 -327
  89. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  90. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +179 -397
  91. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/kadaikodi/mocks/data.js +0 -1517
  94. package/dist/kadaikodi/mocks/data.js.map +0 -1
  95. package/dist/kadaikodi/mocks/users.js +0 -34
  96. package/dist/kadaikodi/mocks/users.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CartOwnerProfilePage.js","names":[],"sources":["../../../../src/kadaikodi/pages/cart-owner/CartOwnerProfilePage.tsx"],"sourcesContent":["/**\n * Cart Owner Profile Page\n *\n * Tabbed sidebar (personal/business/operations/banking/security/notifications),\n * profile image upload placeholder, edit mode toggle, all form fields,\n * working days checkboxes, bank details with security note,\n * password/2FA sections, notification toggles.\n *\n * @module kadaikodi/pages/cart-owner\n */\n\nimport { useState } from 'react';\nimport {\n User,\n Mail,\n Phone,\n MapPin,\n Shield,\n CheckCircle2,\n XCircle,\n FileText,\n CreditCard,\n Calendar,\n Star,\n BadgeCheck,\n Upload,\n Edit2,\n Save,\n Lock,\n Bell,\n Building2,\n Clock,\n Camera,\n Key,\n AlertCircle,\n} from 'lucide-react';\nimport { EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport { mockCartOwner } from '../../mocks/users';\nimport { cn } from '../../utils/cn';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype ProfileTab = 'personal' | 'business' | 'operations' | 'banking' | 'security' | 'notifications';\n\ninterface Tab {\n id: ProfileTab;\n label: string;\n icon: typeof User;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst profileTabs: Tab[] = [\n { id: 'personal', label: 'Personal Info', icon: User },\n { id: 'business', label: 'Business Details', icon: Building2 },\n { id: 'operations', label: 'Operations', icon: Clock },\n { id: 'banking', label: 'Banking', icon: CreditCard },\n { id: 'security', label: 'Security', icon: Lock },\n { id: 'notifications', label: 'Notifications', icon: Bell },\n];\n\nconst DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const CartOwnerProfilePage = () => {\n const { navigateTo } = useKadaikodi();\n const [activeTab, setActiveTab] = useState<ProfileTab>('personal');\n const [isEditing, setIsEditing] = useState(false);\n const [saved, setSaved] = useState(false);\n\n // Personal Info\n const [personal, setPersonal] = useState({\n firstName: mockCartOwner.firstName,\n lastName: mockCartOwner.lastName,\n email: mockCartOwner.email,\n phone: mockCartOwner.phone,\n dateOfBirth: '1990-05-15',\n gender: 'Male',\n address: 'Koramangala 5th Block, Bangalore - 560034',\n bio: 'Passionate about South Indian cuisine. Running Dosa Express since 2020.',\n });\n\n // Business Details\n const [business, setBusiness] = useState({\n businessName: 'Dosa Express',\n category: 'Food & Beverage',\n description: 'Authentic South Indian street food with a modern twist.',\n gstNumber: '29ABCDE1234F1Z5',\n panNumber: 'ABCDE1234F',\n fssaiLicense: '12345678',\n businessAddress: 'Koramangala 5th Block, Bangalore - 560034',\n businessPhone: '+91-9876543210',\n businessEmail: 'ravi@dosaexpress.in',\n });\n\n // Operations\n const [operations, setOperations] = useState({\n workingDays: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n openTime: '09:00',\n closeTime: '21:00',\n preparationTime: 15,\n deliveryRadius: 5,\n maxOrdersPerDay: 100,\n });\n\n // Banking\n const [banking, setBanking] = useState({\n bankName: 'State Bank of India',\n accountHolder: 'Ravi Kumar',\n accountNumber: '1234567890123456',\n ifscCode: 'SBIN0001234',\n upiId: 'ravikumar@sbi',\n payoutSchedule: 'weekly',\n });\n\n // Security\n const [security, setSecurity] = useState({\n twoFactorEnabled: true,\n lastPasswordChange: '2024-01-01',\n });\n\n // Notifications\n const [notificationPrefs, setNotificationPrefs] = useState({\n orderAlerts: true,\n paymentAlerts: true,\n reviewAlerts: true,\n promotionalEmails: false,\n smsAlerts: true,\n weeklyReport: true,\n });\n\n // Profile stats\n const ownerStats = {\n rating: 4.5,\n totalOrders: 1247,\n memberSince: '2023-03-01',\n verificationPercentage: 86,\n };\n\n const handleSave = () => {\n setSaved(true);\n setIsEditing(false);\n setTimeout(() => setSaved(false), 3000);\n };\n\n const toggleWorkingDay = (day: string) => {\n setOperations((p) => ({\n ...p,\n workingDays: p.workingDays.includes(day)\n ? p.workingDays.filter((d) => d !== day)\n : [...p.workingDays, day],\n }));\n };\n\n // ---- Tab Renderers ----\n\n const renderPersonalTab = () => (\n <div className=\"space-y-5\">\n {/* Profile Image */}\n <div className=\"flex items-center gap-5\">\n <div className=\"relative\">\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-bg-sunken text-2xl font-bold text-text-primary\">\n {personal.firstName[0]}\n {personal.lastName[0]}\n </div>\n {isEditing && (\n <button\n type=\"button\"\n onClick={() => alert('Image upload coming soon!')}\n className=\"absolute -bottom-1 -right-1 flex h-7 w-7 items-center justify-center rounded-full bg-accent text-text-primary border-2 border-card hover:bg-accent/80\"\n >\n <Camera className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n <div>\n <p className=\"text-lg font-semibold text-text-primary\">\n {personal.firstName} {personal.lastName}\n </p>\n <p className=\"text-sm text-text-secondary\">Cart Owner</p>\n <div className=\"flex items-center gap-2 mt-1\">\n <span className=\"inline-flex items-center gap-1 rounded-full bg-[var(--color-accent-soft)] px-2.5 py-0.5 text-xs font-medium text-text-primary\">\n <BadgeCheck className=\"h-3 w-3\" />\n Verified\n </span>\n <span className=\"flex items-center gap-0.5 text-xs text-status-warning-text\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n {ownerStats.rating}\n </span>\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">First Name</label>\n <input\n type=\"text\"\n value={personal.firstName}\n onChange={(e) => setPersonal((p) => ({ ...p, firstName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Last Name</label>\n <input\n type=\"text\"\n value={personal.lastName}\n onChange={(e) => setPersonal((p) => ({ ...p, lastName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Email</label>\n <input\n type=\"email\"\n value={personal.email}\n onChange={(e) => setPersonal((p) => ({ ...p, email: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Phone</label>\n <input\n type=\"tel\"\n value={personal.phone}\n onChange={(e) => setPersonal((p) => ({ ...p, phone: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Date of Birth</label>\n <input\n type=\"date\"\n value={personal.dateOfBirth}\n onChange={(e) => setPersonal((p) => ({ ...p, dateOfBirth: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Gender</label>\n <select\n value={personal.gender}\n onChange={(e) => setPersonal((p) => ({ ...p, gender: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n <option value=\"Male\">Male</option>\n <option value=\"Female\">Female</option>\n <option value=\"Other\">Other</option>\n </select>\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Address</label>\n <input\n type=\"text\"\n value={personal.address}\n onChange={(e) => setPersonal((p) => ({ ...p, address: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Bio</label>\n <textarea\n value={personal.bio}\n onChange={(e) => setPersonal((p) => ({ ...p, bio: e.target.value }))}\n disabled={!isEditing}\n rows={3}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary resize-none',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n );\n\n const renderBusinessTab = () => (\n <div className=\"space-y-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Name</label>\n <input\n type=\"text\"\n value={business.businessName}\n onChange={(e) => setBusiness((p) => ({ ...p, businessName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Category</label>\n <select\n value={business.category}\n onChange={(e) => setBusiness((p) => ({ ...p, category: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n {[\n 'Food & Beverage',\n 'Personal Care & Beauty',\n 'Repair & Maintenance',\n 'Home Services',\n 'Retail & Merchandise',\n ].map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Description</label>\n <textarea\n value={business.description}\n onChange={(e) => setBusiness((p) => ({ ...p, description: e.target.value }))}\n disabled={!isEditing}\n rows={3}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary resize-none',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">GST Number</label>\n <input\n type=\"text\"\n value={business.gstNumber}\n onChange={(e) => setBusiness((p) => ({ ...p, gstNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">PAN Number</label>\n <input\n type=\"text\"\n value={business.panNumber}\n onChange={(e) => setBusiness((p) => ({ ...p, panNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">FSSAI License</label>\n <input\n type=\"text\"\n value={business.fssaiLicense}\n onChange={(e) => setBusiness((p) => ({ ...p, fssaiLicense: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Phone</label>\n <input\n type=\"tel\"\n value={business.businessPhone}\n onChange={(e) => setBusiness((p) => ({ ...p, businessPhone: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Email</label>\n <input\n type=\"email\"\n value={business.businessEmail}\n onChange={(e) => setBusiness((p) => ({ ...p, businessEmail: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n </div>\n );\n\n const renderOperationsTab = () => (\n <div className=\"space-y-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-2\">Working Days</label>\n <div className=\"flex flex-wrap gap-2\">\n {DAYS.map((day) => (\n <button\n key={day}\n type=\"button\"\n onClick={() => isEditing && toggleWorkingDay(day)}\n disabled={!isEditing}\n className={cn(\n 'px-3 py-1.5 rounded-full text-xs font-medium transition-colors',\n operations.workingDays.includes(day)\n ? 'bg-action-primary-bg text-white'\n : 'bg-bg-sunken text-text-secondary',\n !isEditing && 'cursor-not-allowed opacity-70'\n )}\n >\n {day.slice(0, 3)}\n </button>\n ))}\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Opening Time</label>\n <input\n type=\"time\"\n value={operations.openTime}\n onChange={(e) => setOperations((p) => ({ ...p, openTime: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Closing Time</label>\n <input\n type=\"time\"\n value={operations.closeTime}\n onChange={(e) => setOperations((p) => ({ ...p, closeTime: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Prep Time (min)\n </label>\n <input\n type=\"number\"\n value={operations.preparationTime}\n onChange={(e) =>\n setOperations((p) => ({ ...p, preparationTime: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Delivery Radius (km)\n </label>\n <input\n type=\"number\"\n value={operations.deliveryRadius}\n onChange={(e) =>\n setOperations((p) => ({ ...p, deliveryRadius: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Max Orders/Day</label>\n <input\n type=\"number\"\n value={operations.maxOrdersPerDay}\n onChange={(e) =>\n setOperations((p) => ({ ...p, maxOrdersPerDay: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n </div>\n );\n\n const renderBankingTab = () => (\n <div className=\"space-y-5\">\n <div className=\"flex items-start gap-3 rounded-md bg-[var(--color-accent-soft)] border border-border-focus/20 p-3\">\n <AlertCircle className=\"h-4 w-4 text-text-primary shrink-0 mt-0.5\" />\n <p className=\"text-xs text-text-primary\">\n Bank details are used for payouts. Changes require verification and may take 2-3 business\n days to process.\n </p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Bank Name</label>\n <input\n type=\"text\"\n value={banking.bankName}\n onChange={(e) => setBanking((p) => ({ ...p, bankName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Account Holder</label>\n <input\n type=\"text\"\n value={banking.accountHolder}\n onChange={(e) => setBanking((p) => ({ ...p, accountHolder: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Account Number</label>\n <input\n type=\"text\"\n value={isEditing ? banking.accountNumber : `****${banking.accountNumber.slice(-4)}`}\n onChange={(e) => setBanking((p) => ({ ...p, accountNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">IFSC Code</label>\n <input\n type=\"text\"\n value={banking.ifscCode}\n onChange={(e) => setBanking((p) => ({ ...p, ifscCode: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">UPI ID</label>\n <input\n type=\"text\"\n value={banking.upiId}\n onChange={(e) => setBanking((p) => ({ ...p, upiId: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Payout Schedule\n </label>\n <select\n value={banking.payoutSchedule}\n onChange={(e) => setBanking((p) => ({ ...p, payoutSchedule: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n <option value=\"daily\">Daily</option>\n <option value=\"weekly\">Weekly</option>\n <option value=\"biweekly\">Bi-Weekly</option>\n <option value=\"monthly\">Monthly</option>\n </select>\n </div>\n </div>\n </div>\n );\n\n const renderSecurityTab = () => (\n <div className=\"space-y-6\">\n {/* Password Section */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <h3 className=\"text-sm font-semibold text-text-primary flex items-center gap-2 mb-3\">\n <Key className=\"h-4 w-4 text-text-secondary\" />\n Password\n </h3>\n <p className=\"text-xs text-text-secondary mb-3\">\n Last changed:{' '}\n {new Date(security.lastPasswordChange).toLocaleDateString('en-IN', {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n })}\n </p>\n <button\n type=\"button\"\n onClick={() => alert('Password change coming soon!')}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n Change Password\n </button>\n </div>\n\n {/* 2FA Section */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary flex items-center gap-2\">\n <Shield className=\"h-4 w-4 text-text-secondary\" />\n Two-Factor Authentication\n </h3>\n <p className=\"text-xs text-text-secondary mt-1\">\n Add an extra layer of security to your account\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => setSecurity((p) => ({ ...p, twoFactorEnabled: !p.twoFactorEnabled }))}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n security.twoFactorEnabled ? 'bg-status-success-text' : 'bg-muted-foreground/30'\n )}\n >\n <div\n className={cn(\n 'absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform',\n security.twoFactorEnabled ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n </div>\n {security.twoFactorEnabled && (\n <div className=\"mt-3 flex items-center gap-2\">\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-xs text-status-success-text font-medium\">2FA is enabled</span>\n </div>\n )}\n </div>\n\n {/* Active Sessions */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <h3 className=\"text-sm font-semibold text-text-primary mb-3\">Active Sessions</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between text-sm\">\n <div>\n <p className=\"font-medium text-text-primary\">Current Device</p>\n <p className=\"text-xs text-text-secondary\">Chrome on Linux | Bangalore, IN</p>\n </div>\n <span className=\"text-xs text-status-success-text font-medium\">Active now</span>\n </div>\n <div className=\"flex items-center justify-between text-sm\">\n <div>\n <p className=\"font-medium text-text-primary\">Mobile App</p>\n <p className=\"text-xs text-text-secondary\">Android | Bangalore, IN</p>\n </div>\n <span className=\"text-xs text-text-secondary\">2 hours ago</span>\n </div>\n </div>\n </div>\n </div>\n );\n\n const renderNotificationsTab = () => {\n const toggleItems: {\n key: keyof typeof notificationPrefs;\n label: string;\n description: string;\n }[] = [\n {\n key: 'orderAlerts',\n label: 'Order Alerts',\n description: 'New orders, updates, and cancellations',\n },\n {\n key: 'paymentAlerts',\n label: 'Payment Alerts',\n description: 'Payouts, refunds, and transaction updates',\n },\n {\n key: 'reviewAlerts',\n label: 'Review Notifications',\n description: 'New customer reviews and ratings',\n },\n { key: 'smsAlerts', label: 'SMS Alerts', description: 'Receive important alerts via SMS' },\n {\n key: 'weeklyReport',\n label: 'Weekly Report',\n description: 'Weekly business performance summary',\n },\n {\n key: 'promotionalEmails',\n label: 'Promotional Emails',\n description: 'Tips, news, and promotional content',\n },\n ];\n\n return (\n <div className=\"space-y-1 divide-y divide-border\">\n {toggleItems.map((item) => (\n <div key={item.key} className=\"flex items-center justify-between py-3\">\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{item.label}</p>\n <p className=\"text-xs text-text-secondary mt-0.5\">{item.description}</p>\n </div>\n <button\n type=\"button\"\n onClick={() => setNotificationPrefs((p) => ({ ...p, [item.key]: !p[item.key] }))}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n notificationPrefs[item.key] ? 'bg-action-primary-bg' : 'bg-muted-foreground/30'\n )}\n >\n <div\n className={cn(\n 'absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform',\n notificationPrefs[item.key] ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <PageLayout\n title=\"Profile\"\n description=\"Your business profile and settings\"\n actions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <button\n type=\"button\"\n onClick={() => setIsEditing(false)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Save className=\"h-4 w-4\" />\n Save\n </button>\n </>\n ) : (\n <button\n type=\"button\"\n onClick={() => setIsEditing(true)}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Edit2 className=\"h-4 w-4\" />\n Edit Profile\n </button>\n )}\n </div>\n }\n >\n <PagePurpose className=\"mb-6\">\n How you and your business show up on Kadaikodi. Use this page to keep your owner details,\n business identity and notification preferences current — and to see your reputation at a\n glance (rating, total orders, verification and how long you&apos;ve been on the platform). A\n complete, verified profile builds customer trust. Use Edit Profile to update anything.\n </PagePurpose>\n\n <div className=\"space-y-4\">\n {/* Saved Message */}\n {saved && (\n <div className=\"flex items-center gap-2 rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-3\">\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-sm font-medium text-status-success-text\">\n Profile saved successfully!\n </span>\n </div>\n )}\n\n {/* Quick Stats — the one emphasis zone for this page */}\n <EmphasisPanel>\n <h2 className=\"mb-4 text-base font-semibold text-text-primary\">Your Reputation</h2>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary flex items-center justify-center gap-1\">\n <Star className=\"h-5 w-5 fill-status-warning-text text-status-warning-text\" />\n {ownerStats.rating}\n </p>\n <p className=\"text-xs text-text-secondary\">Rating</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary\">\n {ownerStats.totalOrders.toLocaleString()}\n </p>\n <p className=\"text-xs text-text-secondary\">Total Orders</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary\">\n {ownerStats.verificationPercentage}%\n </p>\n <p className=\"text-xs text-text-secondary\">Verified</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-sm font-bold text-text-primary\">\n {new Date(ownerStats.memberSince).toLocaleDateString('en-IN', {\n month: 'short',\n year: 'numeric',\n })}\n </p>\n <p className=\"text-xs text-text-secondary\">Member Since</p>\n </div>\n </div>\n </EmphasisPanel>\n\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Sidebar */}\n <div className=\"lg:w-56 shrink-0\">\n {/* Mobile */}\n <div className=\"lg:hidden rounded-lg border border-border-subtle bg-bg-surface p-3 shadow-sm\">\n <div className=\"grid grid-cols-3 gap-2\">\n {profileTabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex flex-col items-center gap-1 rounded-md px-2 py-2 text-xs font-medium transition-colors',\n activeTab === tab.id\n ? 'bg-accent text-text-primary'\n : 'text-text-secondary hover:bg-bg-sunken'\n )}\n >\n <Icon className=\"h-4 w-4\" />\n {tab.label.split(' ')[0]}\n </button>\n );\n })}\n </div>\n </div>\n {/* Desktop */}\n <div className=\"hidden lg:block rounded-lg border border-border-subtle bg-bg-surface shadow-sm sticky top-24\">\n <div className=\"p-4 border-b border-border-subtle\">\n <h2 className=\"font-semibold text-text-primary text-sm\">Profile Settings</h2>\n </div>\n <nav className=\"p-2\">\n {profileTabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'w-full text-left px-3 py-2 rounded-md mb-1 flex items-center gap-3 text-sm transition-colors',\n activeTab === tab.id\n ? 'bg-accent text-text-primary font-medium'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n )}\n >\n <Icon className=\"h-4 w-4\" />\n {tab.label}\n </button>\n );\n })}\n </nav>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 sm:p-6 shadow-sm\">\n {activeTab === 'personal' && renderPersonalTab()}\n {activeTab === 'business' && renderBusinessTab()}\n {activeTab === 'operations' && renderOperationsTab()}\n {activeTab === 'banking' && renderBankingTab()}\n {activeTab === 'security' && renderSecurityTab()}\n {activeTab === 'notifications' && renderNotificationsTab()}\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"CartOwnerProfilePage.js","names":[],"sources":["../../../../src/kadaikodi/pages/cart-owner/CartOwnerProfilePage.tsx"],"sourcesContent":["/**\n * Cart Owner Profile Page\n *\n * Tabbed sidebar (personal/business/operations/banking/security/notifications),\n * profile image upload placeholder, edit mode toggle, all form fields,\n * working days checkboxes, bank details with security note,\n * password/2FA sections, notification toggles.\n *\n * @module kadaikodi/pages/cart-owner\n */\n\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n User,\n Shield,\n CheckCircle2,\n CreditCard,\n Star,\n BadgeCheck,\n Edit2,\n Save,\n Lock,\n Bell,\n Building2,\n Clock,\n Camera,\n Key,\n AlertCircle,\n} from 'lucide-react';\nimport { EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport { useProviders, useOrders } from '../../hooks/useKadaikodiApi';\nimport { cn } from '../../utils/cn';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype ProfileTab = 'personal' | 'business' | 'operations' | 'banking' | 'security' | 'notifications';\n\ninterface Tab {\n id: ProfileTab;\n label: string;\n icon: typeof User;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst profileTabs: Tab[] = [\n { id: 'personal', label: 'Personal Info', icon: User },\n { id: 'business', label: 'Business Details', icon: Building2 },\n { id: 'operations', label: 'Operations', icon: Clock },\n { id: 'banking', label: 'Banking', icon: CreditCard },\n { id: 'security', label: 'Security', icon: Lock },\n { id: 'notifications', label: 'Notifications', icon: Bell },\n];\n\nconst DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n\nconst BUSINESS_CATEGORIES = [\n 'Food & Beverage',\n 'Personal Care & Beauty',\n 'Repair & Maintenance',\n 'Home Services',\n 'Retail & Merchandise',\n];\n\nconst BUSINESS_CATEGORY_LABELS: Record<string, string> = {\n FOOD_BEVERAGE: 'Food & Beverage',\n PERSONAL_CARE_BEAUTY: 'Personal Care & Beauty',\n CLOTHING_FASHION: 'Clothing & Fashion',\n REPAIR_MAINTENANCE: 'Repair & Maintenance',\n HOME_SERVICES: 'Home Services',\n HEALTH_WELLNESS: 'Health & Wellness',\n EDUCATION_SKILLS: 'Education & Skills',\n RETAIL_MERCHANDISE: 'Retail & Merchandise',\n GROCERY_ESSENTIALS: 'Grocery & Essentials',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const CartOwnerProfilePage = () => {\n const { navigateTo, currentUser } = useKadaikodi();\n const [activeTab, setActiveTab] = useState<ProfileTab>('personal');\n const [isEditing, setIsEditing] = useState(false);\n const [saved, setSaved] = useState(false);\n\n // Resolve the signed-in owner's provider (\"my cart\") for real business + stats.\n const { data: providers = [] } = useProviders();\n const myProvider = useMemo(\n () => providers.find((p) => p.ownerId === currentUser?.id) ?? providers[0],\n [providers, currentUser?.id]\n );\n const { data: orders = [] } = useOrders({ providerId: myProvider?.id });\n\n // Personal Info — seeded from the signed-in user (no fabricated identity).\n // Fields with no backend source stay empty (placeholders only).\n const [personal, setPersonal] = useState({\n firstName: currentUser?.firstName ?? currentUser?.name?.split(' ')[0] ?? '',\n lastName: currentUser?.lastName ?? currentUser?.name?.split(' ').slice(1).join(' ') ?? '',\n email: currentUser?.email ?? '',\n phone: currentUser?.phone ?? '',\n dateOfBirth: '',\n gender: '',\n address: '',\n bio: '',\n });\n\n // Business Details — business name / category / address seeded from the real\n // provider; compliance and contact fields stay empty until entered.\n const [business, setBusiness] = useState({\n businessName: '',\n category: 'Food & Beverage',\n description: '',\n gstNumber: '',\n panNumber: '',\n fssaiLicense: '',\n businessAddress: '',\n businessPhone: '',\n businessEmail: '',\n });\n\n // Operations — editable configuration defaults (no fabricated records).\n const [operations, setOperations] = useState({\n workingDays: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n openTime: '09:00',\n closeTime: '21:00',\n preparationTime: 15,\n deliveryRadius: 5,\n maxOrdersPerDay: 100,\n });\n\n // Banking — no backend source; fields stay empty (placeholders only).\n const [banking, setBanking] = useState({\n bankName: '',\n accountHolder: '',\n accountNumber: '',\n ifscCode: '',\n upiId: '',\n payoutSchedule: 'weekly',\n });\n\n // Security — local UI state only.\n const [security, setSecurity] = useState({\n twoFactorEnabled: false,\n });\n\n // Notifications\n const [notificationPrefs, setNotificationPrefs] = useState({\n orderAlerts: true,\n paymentAlerts: true,\n reviewAlerts: true,\n promotionalEmails: false,\n smsAlerts: true,\n weeklyReport: true,\n });\n\n // Seed business name / category / address from the provider once loaded.\n const [seeded, setSeeded] = useState(false);\n useEffect(() => {\n if (!myProvider || seeded) return;\n const categoryLabel = BUSINESS_CATEGORY_LABELS[myProvider.category] ?? myProvider.category;\n setBusiness((p) => ({\n ...p,\n businessName: myProvider.name,\n category: BUSINESS_CATEGORIES.includes(categoryLabel) ? categoryLabel : p.category,\n businessAddress: myProvider.location?.address ?? '',\n }));\n setSeeded(true);\n }, [myProvider, seeded]);\n\n // Profile stats — all real (from the provider + live orders).\n const ownerStats = {\n rating: myProvider?.rating ?? 0,\n totalOrders: orders.length,\n reviews: myProvider?.totalRatings ?? 0,\n memberSince: myProvider?.createdAt ?? null,\n };\n const isVerified = Boolean(myProvider?.isVerified);\n\n const handleSave = () => {\n setSaved(true);\n setIsEditing(false);\n setTimeout(() => setSaved(false), 3000);\n };\n\n const toggleWorkingDay = (day: string) => {\n setOperations((p) => ({\n ...p,\n workingDays: p.workingDays.includes(day)\n ? p.workingDays.filter((d) => d !== day)\n : [...p.workingDays, day],\n }));\n };\n\n // ---- Tab Renderers ----\n\n const renderPersonalTab = () => (\n <div className=\"space-y-5\">\n {/* Profile Image */}\n <div className=\"flex items-center gap-5\">\n <div className=\"relative\">\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-bg-sunken text-2xl font-bold text-text-primary\">\n {personal.firstName[0]}\n {personal.lastName[0]}\n </div>\n {isEditing && (\n <button\n type=\"button\"\n onClick={() => alert('Image upload coming soon!')}\n className=\"absolute -bottom-1 -right-1 flex h-7 w-7 items-center justify-center rounded-full bg-accent text-text-primary border-2 border-card hover:bg-accent/80\"\n >\n <Camera className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n <div>\n <p className=\"text-lg font-semibold text-text-primary\">\n {personal.firstName} {personal.lastName}\n </p>\n <p className=\"text-sm text-text-secondary\">Cart Owner</p>\n <div className=\"flex items-center gap-2 mt-1\">\n {isVerified && (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-[var(--color-accent-soft)] px-2.5 py-0.5 text-xs font-medium text-text-primary\">\n <BadgeCheck className=\"h-3 w-3\" />\n Verified\n </span>\n )}\n {ownerStats.reviews > 0 && (\n <span className=\"flex items-center gap-0.5 text-xs text-status-warning-text\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n {ownerStats.rating.toFixed(1)}\n </span>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">First Name</label>\n <input\n type=\"text\"\n value={personal.firstName}\n onChange={(e) => setPersonal((p) => ({ ...p, firstName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Last Name</label>\n <input\n type=\"text\"\n value={personal.lastName}\n onChange={(e) => setPersonal((p) => ({ ...p, lastName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Email</label>\n <input\n type=\"email\"\n value={personal.email}\n onChange={(e) => setPersonal((p) => ({ ...p, email: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Phone</label>\n <input\n type=\"tel\"\n value={personal.phone}\n onChange={(e) => setPersonal((p) => ({ ...p, phone: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Date of Birth</label>\n <input\n type=\"date\"\n value={personal.dateOfBirth}\n onChange={(e) => setPersonal((p) => ({ ...p, dateOfBirth: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Gender</label>\n <select\n value={personal.gender}\n onChange={(e) => setPersonal((p) => ({ ...p, gender: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n <option value=\"\">Prefer not to say</option>\n <option value=\"Male\">Male</option>\n <option value=\"Female\">Female</option>\n <option value=\"Other\">Other</option>\n </select>\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Address</label>\n <input\n type=\"text\"\n value={personal.address}\n onChange={(e) => setPersonal((p) => ({ ...p, address: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Bio</label>\n <textarea\n value={personal.bio}\n onChange={(e) => setPersonal((p) => ({ ...p, bio: e.target.value }))}\n disabled={!isEditing}\n rows={3}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary resize-none',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n );\n\n const renderBusinessTab = () => (\n <div className=\"space-y-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Name</label>\n <input\n type=\"text\"\n value={business.businessName}\n onChange={(e) => setBusiness((p) => ({ ...p, businessName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Category</label>\n <select\n value={business.category}\n onChange={(e) => setBusiness((p) => ({ ...p, category: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n {BUSINESS_CATEGORIES.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Description</label>\n <textarea\n value={business.description}\n onChange={(e) => setBusiness((p) => ({ ...p, description: e.target.value }))}\n disabled={!isEditing}\n rows={3}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary resize-none',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">GST Number</label>\n <input\n type=\"text\"\n value={business.gstNumber}\n onChange={(e) => setBusiness((p) => ({ ...p, gstNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">PAN Number</label>\n <input\n type=\"text\"\n value={business.panNumber}\n onChange={(e) => setBusiness((p) => ({ ...p, panNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">FSSAI License</label>\n <input\n type=\"text\"\n value={business.fssaiLicense}\n onChange={(e) => setBusiness((p) => ({ ...p, fssaiLicense: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Phone</label>\n <input\n type=\"tel\"\n value={business.businessPhone}\n onChange={(e) => setBusiness((p) => ({ ...p, businessPhone: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Business Email</label>\n <input\n type=\"email\"\n value={business.businessEmail}\n onChange={(e) => setBusiness((p) => ({ ...p, businessEmail: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n </div>\n );\n\n const renderOperationsTab = () => (\n <div className=\"space-y-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-2\">Working Days</label>\n <div className=\"flex flex-wrap gap-2\">\n {DAYS.map((day) => (\n <button\n key={day}\n type=\"button\"\n onClick={() => isEditing && toggleWorkingDay(day)}\n disabled={!isEditing}\n className={cn(\n 'px-3 py-1.5 rounded-full text-xs font-medium transition-colors',\n operations.workingDays.includes(day)\n ? 'bg-action-primary-bg text-white'\n : 'bg-bg-sunken text-text-secondary',\n !isEditing && 'cursor-not-allowed opacity-70'\n )}\n >\n {day.slice(0, 3)}\n </button>\n ))}\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Opening Time</label>\n <input\n type=\"time\"\n value={operations.openTime}\n onChange={(e) => setOperations((p) => ({ ...p, openTime: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Closing Time</label>\n <input\n type=\"time\"\n value={operations.closeTime}\n onChange={(e) => setOperations((p) => ({ ...p, closeTime: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Prep Time (min)\n </label>\n <input\n type=\"number\"\n value={operations.preparationTime}\n onChange={(e) =>\n setOperations((p) => ({ ...p, preparationTime: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Delivery Radius (km)\n </label>\n <input\n type=\"number\"\n value={operations.deliveryRadius}\n onChange={(e) =>\n setOperations((p) => ({ ...p, deliveryRadius: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Max Orders/Day</label>\n <input\n type=\"number\"\n value={operations.maxOrdersPerDay}\n onChange={(e) =>\n setOperations((p) => ({ ...p, maxOrdersPerDay: parseInt(e.target.value) || 0 }))\n }\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n </div>\n );\n\n const renderBankingTab = () => (\n <div className=\"space-y-5\">\n <div className=\"flex items-start gap-3 rounded-md bg-[var(--color-accent-soft)] border border-border-focus/20 p-3\">\n <AlertCircle className=\"h-4 w-4 text-text-primary shrink-0 mt-0.5\" />\n <p className=\"text-xs text-text-primary\">\n Bank details are used for payouts. Changes require verification and may take 2-3 business\n days to process.\n </p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Bank Name</label>\n <input\n type=\"text\"\n value={banking.bankName}\n onChange={(e) => setBanking((p) => ({ ...p, bankName: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Account Holder</label>\n <input\n type=\"text\"\n value={banking.accountHolder}\n onChange={(e) => setBanking((p) => ({ ...p, accountHolder: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Account Number</label>\n <input\n type=\"text\"\n value={isEditing ? banking.accountNumber : `****${banking.accountNumber.slice(-4)}`}\n onChange={(e) => setBanking((p) => ({ ...p, accountNumber: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">IFSC Code</label>\n <input\n type=\"text\"\n value={banking.ifscCode}\n onChange={(e) => setBanking((p) => ({ ...p, ifscCode: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">UPI ID</label>\n <input\n type=\"text\"\n value={banking.upiId}\n onChange={(e) => setBanking((p) => ({ ...p, upiId: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Payout Schedule\n </label>\n <select\n value={banking.payoutSchedule}\n onChange={(e) => setBanking((p) => ({ ...p, payoutSchedule: e.target.value }))}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary',\n !isEditing && 'bg-bg-sunken/50 cursor-not-allowed'\n )}\n >\n <option value=\"daily\">Daily</option>\n <option value=\"weekly\">Weekly</option>\n <option value=\"biweekly\">Bi-Weekly</option>\n <option value=\"monthly\">Monthly</option>\n </select>\n </div>\n </div>\n </div>\n );\n\n const renderSecurityTab = () => (\n <div className=\"space-y-6\">\n {/* Password Section */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <h3 className=\"text-sm font-semibold text-text-primary flex items-center gap-2 mb-3\">\n <Key className=\"h-4 w-4 text-text-secondary\" />\n Password\n </h3>\n <p className=\"text-xs text-text-secondary mb-3\">\n Keep your account secure by using a strong, unique password.\n </p>\n <button\n type=\"button\"\n onClick={() => alert('Password change coming soon!')}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n Change Password\n </button>\n </div>\n\n {/* 2FA Section */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary flex items-center gap-2\">\n <Shield className=\"h-4 w-4 text-text-secondary\" />\n Two-Factor Authentication\n </h3>\n <p className=\"text-xs text-text-secondary mt-1\">\n Add an extra layer of security to your account\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => setSecurity((p) => ({ ...p, twoFactorEnabled: !p.twoFactorEnabled }))}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n security.twoFactorEnabled ? 'bg-status-success-text' : 'bg-muted-foreground/30'\n )}\n >\n <div\n className={cn(\n 'absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform',\n security.twoFactorEnabled ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n </div>\n {security.twoFactorEnabled && (\n <div className=\"mt-3 flex items-center gap-2\">\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-xs text-status-success-text font-medium\">2FA is enabled</span>\n </div>\n )}\n </div>\n\n {/* Active Sessions */}\n <div className=\"rounded-lg border border-border-subtle p-5\">\n <h3 className=\"text-sm font-semibold text-text-primary mb-3\">Active Sessions</h3>\n <p className=\"text-xs text-text-secondary\">\n Session management is coming soon. You&apos;ll be able to review and sign out of devices\n connected to your account here.\n </p>\n </div>\n </div>\n );\n\n const renderNotificationsTab = () => {\n const toggleItems: {\n key: keyof typeof notificationPrefs;\n label: string;\n description: string;\n }[] = [\n {\n key: 'orderAlerts',\n label: 'Order Alerts',\n description: 'New orders, updates, and cancellations',\n },\n {\n key: 'paymentAlerts',\n label: 'Payment Alerts',\n description: 'Payouts, refunds, and transaction updates',\n },\n {\n key: 'reviewAlerts',\n label: 'Review Notifications',\n description: 'New customer reviews and ratings',\n },\n { key: 'smsAlerts', label: 'SMS Alerts', description: 'Receive important alerts via SMS' },\n {\n key: 'weeklyReport',\n label: 'Weekly Report',\n description: 'Weekly business performance summary',\n },\n {\n key: 'promotionalEmails',\n label: 'Promotional Emails',\n description: 'Tips, news, and promotional content',\n },\n ];\n\n return (\n <div className=\"space-y-1 divide-y divide-border\">\n {toggleItems.map((item) => (\n <div key={item.key} className=\"flex items-center justify-between py-3\">\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{item.label}</p>\n <p className=\"text-xs text-text-secondary mt-0.5\">{item.description}</p>\n </div>\n <button\n type=\"button\"\n onClick={() => setNotificationPrefs((p) => ({ ...p, [item.key]: !p[item.key] }))}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n notificationPrefs[item.key] ? 'bg-action-primary-bg' : 'bg-muted-foreground/30'\n )}\n >\n <div\n className={cn(\n 'absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform',\n notificationPrefs[item.key] ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <PageLayout\n title=\"Profile\"\n description=\"Your business profile and settings\"\n actions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <button\n type=\"button\"\n onClick={() => setIsEditing(false)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Save className=\"h-4 w-4\" />\n Save\n </button>\n </>\n ) : (\n <button\n type=\"button\"\n onClick={() => setIsEditing(true)}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Edit2 className=\"h-4 w-4\" />\n Edit Profile\n </button>\n )}\n </div>\n }\n >\n <PagePurpose className=\"mb-6\">\n How you and your business show up on Kadaikodi. Use this page to keep your owner details,\n business identity and notification preferences current — and to see your reputation at a\n glance (rating, total orders, verification and how long you&apos;ve been on the platform). A\n complete, verified profile builds customer trust. Use Edit Profile to update anything.\n </PagePurpose>\n\n <div className=\"space-y-4\">\n {/* Saved Message */}\n {saved && (\n <div className=\"flex items-center gap-2 rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-3\">\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-sm font-medium text-status-success-text\">\n Profile saved successfully!\n </span>\n </div>\n )}\n\n {/* Quick Stats — the one emphasis zone for this page */}\n <EmphasisPanel>\n <h2 className=\"mb-4 text-base font-semibold text-text-primary\">Your Reputation</h2>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary flex items-center justify-center gap-1\">\n <Star className=\"h-5 w-5 fill-status-warning-text text-status-warning-text\" />\n {ownerStats.reviews > 0 ? ownerStats.rating.toFixed(1) : '—'}\n </p>\n <p className=\"text-xs text-text-secondary\">Rating</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary\">\n {ownerStats.totalOrders.toLocaleString()}\n </p>\n <p className=\"text-xs text-text-secondary\">Total Orders</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-2xl font-bold text-text-primary\">{ownerStats.reviews}</p>\n <p className=\"text-xs text-text-secondary\">Reviews</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm text-center\">\n <p className=\"text-sm font-bold text-text-primary\">\n {ownerStats.memberSince\n ? new Date(ownerStats.memberSince).toLocaleDateString('en-IN', {\n month: 'short',\n year: 'numeric',\n })\n : '—'}\n </p>\n <p className=\"text-xs text-text-secondary\">Member Since</p>\n </div>\n </div>\n </EmphasisPanel>\n\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Sidebar */}\n <div className=\"lg:w-56 shrink-0\">\n {/* Mobile */}\n <div className=\"lg:hidden rounded-lg border border-border-subtle bg-bg-surface p-3 shadow-sm\">\n <div className=\"grid grid-cols-3 gap-2\">\n {profileTabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex flex-col items-center gap-1 rounded-md px-2 py-2 text-xs font-medium transition-colors',\n activeTab === tab.id\n ? 'bg-accent text-text-primary'\n : 'text-text-secondary hover:bg-bg-sunken'\n )}\n >\n <Icon className=\"h-4 w-4\" />\n {tab.label.split(' ')[0]}\n </button>\n );\n })}\n </div>\n </div>\n {/* Desktop */}\n <div className=\"hidden lg:block rounded-lg border border-border-subtle bg-bg-surface shadow-sm sticky top-24\">\n <div className=\"p-4 border-b border-border-subtle\">\n <h2 className=\"font-semibold text-text-primary text-sm\">Profile Settings</h2>\n </div>\n <nav className=\"p-2\">\n {profileTabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'w-full text-left px-3 py-2 rounded-md mb-1 flex items-center gap-3 text-sm transition-colors',\n activeTab === tab.id\n ? 'bg-accent text-text-primary font-medium'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n )}\n >\n <Icon className=\"h-4 w-4\" />\n {tab.label}\n </button>\n );\n })}\n </nav>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 sm:p-6 shadow-sm\">\n {activeTab === 'personal' && renderPersonalTab()}\n {activeTab === 'business' && renderBusinessTab()}\n {activeTab === 'operations' && renderOperationsTab()}\n {activeTab === 'banking' && renderBankingTab()}\n {activeTab === 'security' && renderSecurityTab()}\n {activeTab === 'notifications' && renderNotificationsTab()}\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}