@burdenoff/microfe-kadaikodi 2026.704.1 → 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 (76) hide show
  1. package/dist/kadaikodi/hooks/useKadaikodiApi.js +77 -26
  2. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  3. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +341 -461
  4. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  5. package/dist/kadaikodi/pages/admin/AdminDashboard.js +115 -399
  6. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  7. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +140 -283
  8. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  9. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +282 -453
  10. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  11. package/dist/kadaikodi/pages/admin/AdminProfilePage.js +115 -242
  12. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  13. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +2 -2
  14. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  15. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  16. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  17. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +503 -627
  18. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  19. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +339 -282
  20. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  21. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +323 -422
  22. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  23. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +374 -383
  24. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  25. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +249 -208
  26. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  27. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +1 -1
  28. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  29. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +1 -1
  30. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  31. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +171 -627
  32. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  33. package/dist/kadaikodi/pages/common/HelpSupportPage.js +331 -415
  34. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  35. package/dist/kadaikodi/pages/common/NotificationCenterPage.js +18 -670
  36. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  38. package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -2
  39. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  40. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +191 -369
  41. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  42. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +233 -389
  43. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  44. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  45. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  46. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  47. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +76 -118
  48. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
  49. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  50. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +135 -213
  51. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  52. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +272 -774
  53. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  54. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +232 -343
  55. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  56. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +112 -600
  57. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +127 -294
  59. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +204 -290
  61. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +159 -500
  63. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +399 -487
  65. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  66. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +13 -13
  67. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  68. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +192 -296
  69. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  70. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +245 -397
  71. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  72. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +85 -117
  73. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  74. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +177 -395
  75. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  76. package/package.json +1 -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 { 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, currentUser } = useKadaikodi();\n const [activeTab, setActiveTab] = useState<ProfileTab>('personal');\n const [isEditing, setIsEditing] = useState(false);\n const [saved, setSaved] = useState(false);\n\n // Personal Info — seeded from the signed-in user (no fabricated identity).\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: '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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"}