@burdenoff/microfe-adaptercloud 2026.625.2 → 2026.628.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/adaptercloud/AdapterCloudRoot.js +65 -121
  2. package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -1
  3. package/dist/adaptercloud/AdapterCloudRoutes.js +70 -182
  4. package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
  5. package/dist/adaptercloud/components/DataState.js +42 -0
  6. package/dist/adaptercloud/components/DataState.js.map +1 -0
  7. package/dist/adaptercloud/components/SeverityBadge.js +12 -0
  8. package/dist/adaptercloud/components/SeverityBadge.js.map +1 -0
  9. package/dist/adaptercloud/components/StatusBadge.js +43 -44
  10. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  11. package/dist/adaptercloud/context/AdapterCloudContext.js +22 -30
  12. package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -1
  13. package/dist/adaptercloud/hooks/useAdapterCloudApi.js +397 -194
  14. package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
  15. package/dist/adaptercloud/index.js +1 -0
  16. package/dist/adaptercloud/pages/OverviewPage.js +334 -0
  17. package/dist/adaptercloud/pages/OverviewPage.js.map +1 -0
  18. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +187 -0
  19. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -0
  20. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +278 -0
  21. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -0
  22. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +172 -0
  23. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -0
  24. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +247 -0
  25. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -0
  26. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +271 -0
  27. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -0
  28. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +167 -0
  29. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -0
  30. package/dist/adaptercloud/pages/costs/CostsPage.js +169 -0
  31. package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -0
  32. package/dist/adaptercloud/pages/drift/DriftListPage.js +132 -0
  33. package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -0
  34. package/dist/adaptercloud/pages/policies/PoliciesListPage.js +171 -0
  35. package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -0
  36. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +185 -0
  37. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -0
  38. package/dist/adaptercloud/pages/policies/PolicyFormPage.js +215 -0
  39. package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -0
  40. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +207 -0
  41. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -0
  42. package/dist/adaptercloud/pages/resources/ResourcesListPage.js +182 -0
  43. package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -0
  44. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +196 -0
  45. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -0
  46. package/dist/adaptercloud/pages/violations/ViolationsListPage.js +258 -0
  47. package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -0
  48. package/dist/adaptercloud/store/adaptercloudStore.js +1 -7
  49. package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -1
  50. package/dist/adaptercloud/utils/domain.js +105 -0
  51. package/dist/adaptercloud/utils/domain.js.map +1 -0
  52. package/dist/adaptercloud/utils/formatters.js +1 -12
  53. package/dist/adaptercloud/utils/formatters.js.map +1 -1
  54. package/dist/index.js +5 -4
  55. package/package.json +1 -1
  56. package/dist/adaptercloud/components/InvestmentCard.js +0 -98
  57. package/dist/adaptercloud/components/InvestmentCard.js.map +0 -1
  58. package/dist/adaptercloud/components/RatingDisplay.js +0 -35
  59. package/dist/adaptercloud/components/RatingDisplay.js.map +0 -1
  60. package/dist/adaptercloud/mocks/data.js +0 -1517
  61. package/dist/adaptercloud/mocks/data.js.map +0 -1
  62. package/dist/adaptercloud/mocks/users.js +0 -34
  63. package/dist/adaptercloud/mocks/users.js.map +0 -1
  64. package/dist/adaptercloud/pages/HomePage.js +0 -934
  65. package/dist/adaptercloud/pages/HomePage.js.map +0 -1
  66. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +0 -653
  67. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +0 -1
  68. package/dist/adaptercloud/pages/admin/AdminDashboard.js +0 -665
  69. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +0 -1
  70. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +0 -426
  71. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +0 -1
  72. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +0 -665
  73. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +0 -1
  74. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +0 -261
  75. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +0 -1
  76. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +0 -663
  77. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +0 -1
  78. package/dist/adaptercloud/pages/admin/CartManagementPage.js +0 -874
  79. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +0 -1
  80. package/dist/adaptercloud/pages/admin/UserManagementPage.js +0 -898
  81. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +0 -1
  82. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +0 -840
  83. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  84. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +0 -714
  85. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  86. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +0 -788
  87. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  88. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +0 -888
  89. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  90. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +0 -634
  91. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  92. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +0 -907
  93. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  94. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +0 -875
  95. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +0 -1
  96. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +0 -827
  97. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +0 -1
  98. package/dist/adaptercloud/pages/common/HelpSupportPage.js +0 -1329
  99. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +0 -1
  100. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +0 -671
  101. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +0 -1
  102. package/dist/adaptercloud/pages/common/SettingsPage.js +0 -982
  103. package/dist/adaptercloud/pages/common/SettingsPage.js.map +0 -1
  104. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +0 -596
  105. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +0 -1
  106. package/dist/adaptercloud/pages/customer/CartDetailPage.js +0 -623
  107. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +0 -1
  108. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +0 -552
  109. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +0 -1
  110. package/dist/adaptercloud/pages/customer/CheckoutPage.js +0 -534
  111. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +0 -1
  112. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +0 -525
  113. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +0 -1
  114. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +0 -623
  115. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +0 -1
  116. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +0 -629
  117. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +0 -1
  118. package/dist/adaptercloud/pages/customer/FavoritesPage.js +0 -480
  119. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +0 -1
  120. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +0 -444
  121. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +0 -1
  122. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +0 -391
  123. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +0 -1
  124. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +0 -504
  125. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +0 -1
  126. package/dist/adaptercloud/pages/customer/ReviewsPage.js +0 -609
  127. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +0 -1
  128. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +0 -459
  129. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +0 -1
  130. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +0 -851
  131. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +0 -1
  132. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +0 -942
  133. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  134. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +0 -683
  135. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  136. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +0 -452
  137. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +0 -1
  138. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +0 -402
  139. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  140. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +0 -571
  141. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +0 -1
  142. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +0 -1067
  143. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +0 -1
  144. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +0 -526
  145. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +0 -1
  146. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +0 -659
  147. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +0 -1
  148. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +0 -678
  149. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +0 -1
  150. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +0 -689
  151. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +0 -1
  152. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +0 -582
  153. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"BusinessSettingsPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/cart-owner/BusinessSettingsPage.tsx"],"sourcesContent":["/**\n * Business Settings Page\n *\n * Tabbed interface (general/contact/location/operating/policies/notifications/integrations),\n * all form fields per tab including social media, coordinates, delivery charges,\n * payment methods, policy textareas, notification toggles, payment gateway config.\n *\n * @module adaptercloud/pages/cart-owner\n */\n\nimport { useState } from'react';\nimport {\n Store,\n FileText,\n CreditCard,\n Building2,\n Save,\n AlertCircle,\n MapPin,\n Clock,\n Shield,\n Bell,\n Link2,\n CheckCircle2,\n Globe,\n Phone,\n Mail,\n Instagram,\n Twitter,\n} from'lucide-react';\nimport { EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from'../../components/PageLayout';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { cn } from'../../utils/cn';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype TabId =\n | 'general'\n | 'contact'\n | 'location'\n | 'operating'\n | 'policies'\n | 'notifications'\n | 'integration';\n\ninterface Tab {\n id: TabId;\n label: string;\n icon: typeof Store;\n}\n\ninterface GeneralSettings {\n businessName: string;\n description: string;\n category: string;\n gstNumber: string;\n panNumber: string;\n fssaiLicense: string;\n establishedYear: string;\n}\n\ninterface ContactSettings {\n phone: string;\n email: string;\n website: string;\n whatsapp: string;\n instagram: string;\n twitter: string;\n facebook: string;\n}\n\ninterface LocationSettings {\n address: string;\n city: string;\n state: string;\n pincode: string;\n latitude: string;\n longitude: string;\n deliveryRadius: number;\n deliveryCharge: number;\n freeDeliveryAbove: number;\n}\n\ninterface OperatingSettings {\n autoAcceptOrders: boolean;\n preparationTime: number;\n maxConcurrentOrders: number;\n advanceBookingDays: number;\n}\n\ninterface PolicySettings {\n returnPolicy: string;\n cancellationPolicy: string;\n privacyPolicy: string;\n termsOfService: string;\n}\n\ninterface NotificationSettings {\n newOrderEmail: boolean;\n newOrderSms: boolean;\n newOrderPush: boolean;\n orderUpdateEmail: boolean;\n orderUpdatePush: boolean;\n dailySummaryEmail: boolean;\n weeklySummaryEmail: boolean;\n lowStockAlert: boolean;\n reviewNotification: boolean;\n marketingEmails: boolean;\n}\n\ninterface IntegrationSettings {\n paymentGateway: string;\n paymentGatewayKey: string;\n smsProvider: string;\n smsApiKey: string;\n analyticsId: string;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst tabs: Tab[] = [\n { id: 'general', label: 'General', icon: Store },\n { id: 'contact', label: 'Contact', icon: Phone },\n { id: 'location', label: 'Location', icon: MapPin },\n { id: 'operating', label: 'Operating', icon: Clock },\n { id: 'policies', label: 'Policies', icon: Shield },\n { id: 'notifications', label: 'Notifications', icon: Bell },\n { id: 'integration', label: 'Integrations', icon: Link2 },\n];\n\nconst categories = [\n 'Food & Beverage',\n 'Personal Care & Beauty',\n 'Repair & Maintenance',\n 'Home Services',\n 'Clothing & Fashion',\n 'Health & Wellness',\n 'Education & Skills',\n 'Retail & Merchandise',\n 'Grocery & Essentials',\n];\n\n// ============================================================================\n// Form Field Component\n// ============================================================================\n\ninterface FormFieldProps {\n label: string;\n value: string | number;\n onChange: (value: string) => void;\n type?: 'text' | 'email' | 'tel' | 'url' | 'number' | 'textarea' | 'select';\n options?: string[];\n placeholder?: string;\n hint?: string;\n rows?: number;\n}\n\nconst FormField = ({\n label,\n value,\n onChange,\n type = 'text',\n options,\n placeholder,\n hint,\n rows = 3,\n}: FormFieldProps) => {\n const id = label.toLowerCase().replace(/\\s+/g, '-');\n return (\n <div>\n <label htmlFor={id} className=\"block text-sm font-medium text-text-primary mb-1.5\">\n {label}\n </label>\n {type === 'textarea' ? (\n <textarea\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n rows={rows}\n placeholder={placeholder}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] resize-none\"\n />\n ) : type === 'select' ? (\n <select\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n {options?.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n ) : (\n <input\n id={id}\n type={type}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n )}\n {hint && <p className=\"mt-1 text-xs text-text-secondary\">{hint}</p>}\n </div>\n );\n};\n\n// ============================================================================\n// Toggle Component\n// ============================================================================\n\nconst Toggle = ({\n label,\n description,\n checked,\n onChange,\n}: {\n label: string;\n description?: string;\n checked: boolean;\n onChange: (v: boolean) => void;\n}) => (\n <div className=\"flex items-center justify-between py-3\">\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{label}</p>\n {description && <p className=\"text-xs text-text-secondary mt-0.5\">{description}</p>}\n </div>\n <button\n type=\"button\"\n onClick={() => onChange(!checked)}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n checked ? 'bg-accent-blue-subtle' : '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 checked ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n </div>\n);\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const BusinessSettingsPage = () => {\n const { navigateTo } = useAdapterCloud();\n const [activeTab, setActiveTab] = useState<TabId>('general');\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n\n // Form state\n const [general, setGeneral] = useState<GeneralSettings>({\n businessName: 'Dosa Express',\n description:\n 'Authentic South Indian street food with a modern twist. Serving crispy dosas, filter coffee, and more since 2020.',\n category: 'Food & Beverage',\n gstNumber: '29ABCDE1234F1Z5',\n panNumber: 'ABCDE1234F',\n fssaiLicense: '12345678',\n establishedYear: '2020',\n });\n\n const [contact, setContact] = useState<ContactSettings>({\n phone: '+91-9876543210',\n email: 'ravi@dosaexpress.in',\n website: 'https://dosaexpress.in',\n whatsapp: '+91-9876543210',\n instagram: '@dosaexpress',\n twitter: '@dosaexpress',\n facebook: 'dosaexpress',\n });\n\n const [location, setLocation] = useState<LocationSettings>({\n address: 'Koramangala 5th Block',\n city: 'Bangalore',\n state: 'Karnataka',\n pincode: '560034',\n latitude: '12.9352',\n longitude: '77.6245',\n deliveryRadius: 5,\n deliveryCharge: 30,\n freeDeliveryAbove: 300,\n });\n\n const [operating, setOperating] = useState<OperatingSettings>({\n autoAcceptOrders: true,\n preparationTime: 15,\n maxConcurrentOrders: 10,\n advanceBookingDays: 3,\n });\n\n const [policies, setPolicies] = useState<PolicySettings>({\n returnPolicy:\n 'Items can be returned within 30 minutes of delivery if there are quality issues. Refund will be processed within 2-3 business days.',\n cancellationPolicy:\n 'Orders can be cancelled within 2 minutes of placing. After preparation starts, cancellation is not allowed.',\n privacyPolicy:\n 'We collect and process your data in accordance with applicable privacy laws. Your data is never shared with third parties without consent.',\n termsOfService:\n 'By using our services, you agree to our terms. All prices are inclusive of taxes unless stated otherwise.',\n });\n\n const [notifications, setNotifications] = useState<NotificationSettings>({\n newOrderEmail: true,\n newOrderSms: true,\n newOrderPush: true,\n orderUpdateEmail: true,\n orderUpdatePush: true,\n dailySummaryEmail: true,\n weeklySummaryEmail: false,\n lowStockAlert: true,\n reviewNotification: true,\n marketingEmails: false,\n });\n\n const [integration, setIntegration] = useState<IntegrationSettings>({\n paymentGateway: 'razorpay',\n paymentGatewayKey: 'rzp_live_xxxxxxxx',\n smsProvider: 'twilio',\n smsApiKey: '',\n analyticsId: '',\n });\n\n const handleSave = () => {\n setSaving(true);\n setTimeout(() => {\n setSaving(false);\n setSaved(true);\n setTimeout(() => setSaved(false), 3000);\n }, 1000);\n };\n\n const updateGeneral = (field: keyof GeneralSettings) => (value: string) =>\n setGeneral((p) => ({ ...p, [field]: value }));\n const updateContact = (field: keyof ContactSettings) => (value: string) =>\n setContact((p) => ({ ...p, [field]: value }));\n const updateLocation = (field: keyof LocationSettings) => (value: string) =>\n setLocation((p) => ({\n ...p,\n [field]:\n field === 'deliveryRadius' || field === 'deliveryCharge' || field === 'freeDeliveryAbove'\n ? parseInt(value) || 0\n : value,\n }));\n const updatePolicies = (field: keyof PolicySettings) => (value: string) =>\n setPolicies((p) => ({ ...p, [field]: value }));\n const updateNotification = (field: keyof NotificationSettings) => (value: boolean) =>\n setNotifications((p) => ({ ...p, [field]: value }));\n const updateIntegration = (field: keyof IntegrationSettings) => (value: string) =>\n setIntegration((p) => ({ ...p, [field]: value }));\n\n // ---- Tab content renderers ----\n\n const renderGeneralTab = () => (\n <div className=\"space-y-5\">\n <FormField\n label=\"Business Name\"\n value={general.businessName}\n onChange={updateGeneral('businessName')}\n />\n <FormField\n label=\"Description\"\n value={general.description}\n onChange={updateGeneral('description')}\n type=\"textarea\"\n />\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <FormField\n label=\"Category\"\n value={general.category}\n onChange={updateGeneral('category')}\n type=\"select\"\n options={categories}\n />\n <FormField\n label=\"Established Year\"\n value={general.establishedYear}\n onChange={updateGeneral('establishedYear')}\n />\n </div>\n <div className=\"flex items-start gap-3 rounded-md bg-accent-blue-subtle/5 border border-accent-blue-subtle/20 p-3\">\n <AlertCircle className=\"h-4 w-4 text-accent-blue shrink-0 mt-0.5\" />\n <p className=\"text-xs text-accent-blue\">\n GST, PAN, and FSSAI details are used for invoicing and compliance. Changes require\n verification.\n </p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <FormField\n label=\"GST Number\"\n value={general.gstNumber}\n onChange={updateGeneral('gstNumber')}\n hint=\"15-digit GST ID\"\n />\n <FormField\n label=\"PAN Number\"\n value={general.panNumber}\n onChange={updateGeneral('panNumber')}\n hint=\"10-digit PAN\"\n />\n <FormField\n label=\"FSSAI License\"\n value={general.fssaiLicense}\n onChange={updateGeneral('fssaiLicense')}\n hint=\"FSSAI license number\"\n />\n </div>\n </div>\n );\n\n const renderContactTab = () => (\n <div className=\"space-y-5\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <FormField\n label=\"Phone\"\n value={contact.phone}\n onChange={updateContact('phone')}\n type=\"tel\"\n />\n <FormField\n label=\"Email\"\n value={contact.email}\n onChange={updateContact('email')}\n type=\"email\"\n />\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <FormField\n label=\"Website\"\n value={contact.website}\n onChange={updateContact('website')}\n type=\"url\"\n placeholder=\"https://\"\n />\n <FormField\n label=\"WhatsApp\"\n value={contact.whatsapp}\n onChange={updateContact('whatsapp')}\n type=\"tel\"\n />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary pt-2\">Social Media</h3>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <FormField\n label=\"Instagram\"\n value={contact.instagram}\n onChange={updateContact('instagram')}\n placeholder=\"@handle\"\n />\n <FormField\n label=\"Twitter / X\"\n value={contact.twitter}\n onChange={updateContact('twitter')}\n placeholder=\"@handle\"\n />\n <FormField\n label=\"Facebook\"\n value={contact.facebook}\n onChange={updateContact('facebook')}\n placeholder=\"Page name\"\n />\n </div>\n </div>\n );\n\n const renderLocationTab = () => (\n <div className=\"space-y-5\">\n <FormField\n label=\"Address\"\n value={location.address}\n onChange={updateLocation('address')}\n type=\"textarea\"\n rows={2}\n />\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <FormField label=\"City\" value={location.city} onChange={updateLocation('city')} />\n <FormField label=\"State\" value={location.state} onChange={updateLocation('state')} />\n <FormField label=\"Pincode\" value={location.pincode} onChange={updateLocation('pincode')} />\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n <FormField\n label=\"Latitude\"\n value={location.latitude}\n onChange={updateLocation('latitude')}\n hint=\"e.g., 12.9352\"\n />\n <FormField\n label=\"Longitude\"\n value={location.longitude}\n onChange={updateLocation('longitude')}\n hint=\"e.g., 77.6245\"\n />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary pt-2\">Delivery Settings</h3>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <FormField\n label=\"Delivery Radius (km)\"\n value={location.deliveryRadius}\n onChange={updateLocation('deliveryRadius')}\n type=\"number\"\n />\n <FormField\n label=\"Delivery Charge (₹)\"\n value={location.deliveryCharge}\n onChange={updateLocation('deliveryCharge')}\n type=\"number\"\n />\n <FormField\n label=\"Free Delivery Above (₹)\"\n value={location.freeDeliveryAbove}\n onChange={updateLocation('freeDeliveryAbove')}\n type=\"number\"\n />\n </div>\n </div>\n );\n\n const renderOperatingTab = () => (\n <div className=\"space-y-5\">\n <Toggle\n label=\"Auto-Accept Orders\"\n description=\"Automatically accept incoming orders without manual confirmation\"\n checked={operating.autoAcceptOrders}\n onChange={(v) => setOperating((p) => ({ ...p, autoAcceptOrders: v }))}\n />\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-5\">\n <FormField\n label=\"Default Preparation Time (min)\"\n value={operating.preparationTime}\n onChange={(v) => setOperating((p) => ({ ...p, preparationTime: parseInt(v) || 0 }))}\n type=\"number\"\n />\n <FormField\n label=\"Max Concurrent Orders\"\n value={operating.maxConcurrentOrders}\n onChange={(v) => setOperating((p) => ({ ...p, maxConcurrentOrders: parseInt(v) || 0 }))}\n type=\"number\"\n />\n <FormField\n label=\"Advance Booking (days)\"\n value={operating.advanceBookingDays}\n onChange={(v) => setOperating((p) => ({ ...p, advanceBookingDays: parseInt(v) || 0 }))}\n type=\"number\"\n />\n </div>\n </div>\n );\n\n const renderPoliciesTab = () => (\n <div className=\"space-y-5\">\n <FormField\n label=\"Return Policy\"\n value={policies.returnPolicy}\n onChange={updatePolicies('returnPolicy')}\n type=\"textarea\"\n rows={4}\n />\n <FormField\n label=\"Cancellation Policy\"\n value={policies.cancellationPolicy}\n onChange={updatePolicies('cancellationPolicy')}\n type=\"textarea\"\n rows={4}\n />\n <FormField\n label=\"Privacy Policy\"\n value={policies.privacyPolicy}\n onChange={updatePolicies('privacyPolicy')}\n type=\"textarea\"\n rows={4}\n />\n <FormField\n label=\"Terms of Service\"\n value={policies.termsOfService}\n onChange={updatePolicies('termsOfService')}\n type=\"textarea\"\n rows={4}\n />\n </div>\n );\n\n const renderNotificationsTab = () => (\n <div className=\"space-y-1 divide-y divide-border\">\n <h3 className=\"text-sm font-semibold text-text-primary pb-2\">New Orders</h3>\n <Toggle\n label=\"Email Notification\"\n description=\"Receive email for new orders\"\n checked={notifications.newOrderEmail}\n onChange={updateNotification('newOrderEmail')}\n />\n <Toggle\n label=\"SMS Notification\"\n description=\"Receive SMS for new orders\"\n checked={notifications.newOrderSms}\n onChange={updateNotification('newOrderSms')}\n />\n <Toggle\n label=\"Push Notification\"\n description=\"Receive push notifications for new orders\"\n checked={notifications.newOrderPush}\n onChange={updateNotification('newOrderPush')}\n />\n <h3 className=\"text-sm font-semibold text-text-primary pt-4 pb-2\">Order Updates</h3>\n <Toggle\n label=\"Email Updates\"\n description=\"Get email when order status changes\"\n checked={notifications.orderUpdateEmail}\n onChange={updateNotification('orderUpdateEmail')}\n />\n <Toggle\n label=\"Push Updates\"\n description=\"Get push notifications for order updates\"\n checked={notifications.orderUpdatePush}\n onChange={updateNotification('orderUpdatePush')}\n />\n <h3 className=\"text-sm font-semibold text-text-primary pt-4 pb-2\">Reports & Alerts</h3>\n <Toggle\n label=\"Daily Summary\"\n description=\"Receive daily business summary email\"\n checked={notifications.dailySummaryEmail}\n onChange={updateNotification('dailySummaryEmail')}\n />\n <Toggle\n label=\"Weekly Summary\"\n description=\"Receive weekly performance report\"\n checked={notifications.weeklySummaryEmail}\n onChange={updateNotification('weeklySummaryEmail')}\n />\n <Toggle\n label=\"Low Stock Alert\"\n description=\"Get alerted when items are low on stock\"\n checked={notifications.lowStockAlert}\n onChange={updateNotification('lowStockAlert')}\n />\n <Toggle\n label=\"Review Notifications\"\n description=\"Get notified for new customer reviews\"\n checked={notifications.reviewNotification}\n onChange={updateNotification('reviewNotification')}\n />\n <Toggle\n label=\"Marketing Emails\"\n description=\"Receive tips and promotional content\"\n checked={notifications.marketingEmails}\n onChange={updateNotification('marketingEmails')}\n />\n </div>\n );\n\n const renderIntegrationTab = () => (\n <div className=\"space-y-5\">\n <h3 className=\"text-sm font-semibold text-text-primary\">Payment Gateway</h3>\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.5\">Provider</label>\n <select\n value={integration.paymentGateway}\n onChange={(e) => updateIntegration('paymentGateway')(e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"razorpay\">Razorpay</option>\n <option value=\"paytm\">Paytm</option>\n <option value=\"stripe\">Stripe</option>\n <option value=\"phonepe\">PhonePe</option>\n </select>\n </div>\n <FormField\n label=\"API Key\"\n value={integration.paymentGatewayKey}\n onChange={updateIntegration('paymentGatewayKey')}\n placeholder=\"Enter API key\"\n hint=\"Keep this secret\"\n />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary pt-2\">SMS Provider</h3>\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.5\">Provider</label>\n <select\n value={integration.smsProvider}\n onChange={(e) => updateIntegration('smsProvider')(e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"twilio\">Twilio</option>\n <option value=\"msg91\">MSG91</option>\n <option value=\"textlocal\">Textlocal</option>\n </select>\n </div>\n <FormField\n label=\"SMS API Key\"\n value={integration.smsApiKey}\n onChange={updateIntegration('smsApiKey')}\n placeholder=\"Enter SMS API key\"\n />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary pt-2\">Analytics</h3>\n <FormField\n label=\"Google Analytics ID\"\n value={integration.analyticsId}\n onChange={updateIntegration('analyticsId')}\n placeholder=\"GA-XXXXXXXXX\"\n />\n </div>\n );\n\n const ActiveIcon = tabs.find((t) => t.id === activeTab)?.icon || Store;\n\n return (\n <PageLayout\n title=\"Business Settings\"\n description=\"Manage your business profile and configuration\"\n purpose=\"Control how your cart works behind the scenes — business details, operating preferences, payment and payout setup, and whether orders are accepted automatically. Get these right once and your day-to-day runs on autopilot.\"\n actions={\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors',\n saved\n ? 'bg-status-success-bg-subtle/10 text-status-success-text'\n : saving\n ? 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-accent text-text-primary hover:bg-accent/80'\n )}\n >\n {saving ? (\n <>\n <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Saving...\n </>\n ) : saved ? (\n <>\n <CheckCircle2 className=\"h-4 w-4\" />\n Saved!\n </>\n ) : (\n <>\n <Save className=\"h-4 w-4\" />\n Save Settings\n </>\n )}\n </button>\n }\n >\n {/* Setup callout (emphasis zone) */}\n <EmphasisPanel className=\"mb-6 flex items-start gap-3 p-4\">\n <Store className=\"h-5 w-5 shrink-0 text-text-secondary\" aria-hidden=\"true\" />\n <div>\n <h2 className=\"text-sm font-semibold text-text-primary\">Set this up once, run on autopilot</h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n Your business details, payment and payout setup, and order preferences live across these\n tabs. Getting them right means smoother orders and faster payouts every day.\n </p>\n </div>\n </EmphasisPanel>\n\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Mobile Tab Navigation */}\n <div className=\"lg:hidden\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-3 shadow-sm\">\n <div className=\"grid grid-cols-4 gap-2\">\n {tabs.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 <span className=\"hidden sm:inline\">{tab.label}</span>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n\n {/* Desktop Sidebar */}\n <div className=\"hidden lg:block lg:w-56 shrink-0\">\n <div className=\"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\">Settings</h2>\n </div>\n <nav className=\"p-2\">\n {tabs.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-seam bg-bg-surface p-5 sm:p-6 bg-gloss-card shadow-pop\">\n {activeTab === 'general' && renderGeneralTab()}\n {activeTab === 'contact' && renderContactTab()}\n {activeTab === 'location' && renderLocationTab()}\n {activeTab === 'operating' && renderOperatingTab()}\n {activeTab === 'policies' && renderPoliciesTab()}\n {activeTab === 'notifications' && renderNotificationsTab()}\n {activeTab === 'integration' && renderIntegrationTab()}\n\n {/* Save Button (bottom) */}\n <div className=\"flex justify-end mt-8 pt-6 border-t border-border-subtle\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md px-6 py-2 text-sm font-medium transition-colors',\n saved\n ? 'bg-status-success-bg-subtle/10 text-status-success-text'\n : saving\n ? 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-accent text-text-primary hover:bg-accent/80'\n )}\n >\n {saving ? (\n <>\n <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Saving...\n </>\n ) : saved ? (\n <>\n <CheckCircle2 className=\"h-4 w-4\" />\n Saved!\n </>\n ) : (\n <>\n <Save className=\"h-4 w-4\" />\n Save Settings\n </>\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}