@burdenoff/microfe-kadaikodi 2026.704.3 → 2026.704.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +76 -6
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +278 -283
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +105 -111
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +84 -70
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +202 -139
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +232 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +84 -79
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +243 -143
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +4 -4
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -4
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +6 -4
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +6 -6
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +4 -4
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +409 -304
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +209 -162
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +207 -186
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +340 -272
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +122 -75
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvestmentListingPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/cart-owner/InvestmentListingPage.tsx"],"sourcesContent":["/**\n * InvestmentListingPage — cart-owner lists their business for investment.\n *\n * Publishes a real KadaikodiInvestmentOpportunity (target, minimum, expected\n * returns, lock-in, risk) that then appears in the Investor section. Wired to\n * the live kadaikodiCreateInvestmentOpportunity mutation.\n */\nimport { useMemo, useState } from 'react';\nimport { TrendingUp, CheckCircle2, IndianRupee } from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport { useProviders, useCreateInvestmentOpportunity } from '../../hooks/useKadaikodiApi';\n\nconst RISKS = ['LOW', 'MEDIUM', 'HIGH'] as const;\n\nexport function InvestmentListingPage() {\n const { navigateTo, currentUser } = useKadaikodi();\n const { data: providers = [], isLoading } = useProviders();\n const myProvider = useMemo(\n () => providers.find((p) => p.ownerId === currentUser?.id) ?? providers[0],\n [providers, currentUser?.id]\n );\n const createOpportunity = useCreateInvestmentOpportunity();\n\n const [form, setForm] = useState({\n title: '',\n description: '',\n targetAmount: '',\n minimumInvestment: '',\n expectedReturnsPct: '',\n lockInMonths: '',\n riskLevel: 'MEDIUM' as (typeof RISKS)[number],\n });\n const [error, setError] = useState('');\n const [created, setCreated] = useState<{ title: string } | null>(null);\n\n const set = (k: keyof typeof form, v: string) => setForm((f) => ({ ...f, [k]: v }));\n\n const inputCls =\n 'w-full rounded-lg border border-border-subtle bg-bg-canvas px-3 py-2 text-sm text-text-primary outline-none focus:border-border-strong';\n\n const submit = () => {\n setError('');\n if (!myProvider) return;\n const target = Number(form.targetAmount);\n const minimum = Number(form.minimumInvestment);\n const returns = Number(form.expectedReturnsPct);\n const lock = Number(form.lockInMonths);\n if (!form.title.trim()) return setError('Give your opportunity a title.');\n if (!(target > 0)) return setError('Enter a valid target amount.');\n if (!(minimum > 0) || minimum > target) return setError('Minimum investment must be positive and ≤ target.');\n if (!(returns >= 0)) return setError('Enter a valid expected return %.');\n if (!(lock > 0)) return setError('Enter a lock-in period in months.');\n createOpportunity.mutate(\n {\n providerId: myProvider.id,\n title: form.title.trim(),\n description: form.description.trim() || undefined,\n targetAmount: target,\n minimumInvestment: minimum,\n expectedReturnsPct: returns,\n lockInMonths: lock,\n riskLevel: form.riskLevel,\n },\n {\n onSuccess: (opp) => {\n setCreated({ title: opp.title });\n setForm((f) => ({ ...f, title: '', description: '', targetAmount: '', minimumInvestment: '', expectedReturnsPct: '', lockInMonths: '' }));\n },\n onError: (e) => setError(e instanceof Error ? e.message : 'Could not publish the opportunity.'),\n }\n );\n };\n\n if (isLoading) {\n return (\n <PageLayout title=\"List for Investment\" description=\"Raise growth capital from the marketplace\">\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-10 rounded-lg bg-bg-sunken\" />\n <div className=\"h-10 rounded-lg bg-bg-sunken\" />\n <div className=\"h-10 rounded-lg bg-bg-sunken\" />\n </div>\n </PageLayout>\n );\n }\n\n if (!myProvider) {\n return (\n <PageLayout title=\"List for Investment\" description=\"Raise growth capital from the marketplace\">\n <EmptyState\n icon={<TrendingUp className=\"h-8 w-8\" />}\n title=\"Set up your cart first\"\n description=\"Create and configure your service provider before listing it for investment.\"\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/dashboard')}\n className=\"inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover\"\n >\n Go to Dashboard\n </button>\n }\n />\n </PageLayout>\n );\n }\n\n return (\n <PageLayout title=\"List for Investment\" description={`Raise growth capital for ${myProvider.name}`}>\n <div className=\"mx-auto max-w-2xl space-y-6\">\n {created && (\n <div className=\"flex items-center gap-2 rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-4\">\n <CheckCircle2 className=\"h-5 w-5 text-status-success-text\" />\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium text-text-primary\">Opportunity published</p>\n <p className=\"text-xs text-text-secondary\">\n “{created.title}” is now live in the Investor section for backers to fund.\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/opportunities')}\n className=\"rounded-lg border border-border-default bg-bg-surface px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-bg-sunken\"\n >\n View in Investor\n </button>\n </div>\n )}\n\n <div className=\"rounded-2xl border border-border-subtle bg-bg-surface p-6\">\n <div className=\"mb-4 flex items-center gap-2\">\n <IndianRupee className=\"h-5 w-5 text-accent-primary\" />\n <h3 className=\"text-base font-semibold text-text-primary\">Opportunity details</h3>\n </div>\n <div className=\"space-y-4\">\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Title</label>\n <input className={inputCls} value={form.title} onChange={(e) => set('title', e.target.value)} placeholder=\"Expand to 3 locations\" />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Description</label>\n <textarea className={inputCls} rows={3} value={form.description} onChange={(e) => set('description', e.target.value)} placeholder=\"How the capital will be used and why backers should fund it.\" />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Target amount (₹)</label>\n <input type=\"number\" min=\"0\" className={inputCls} value={form.targetAmount} onChange={(e) => set('targetAmount', e.target.value)} placeholder=\"500000\" />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Minimum investment (₹)</label>\n <input type=\"number\" min=\"0\" className={inputCls} value={form.minimumInvestment} onChange={(e) => set('minimumInvestment', e.target.value)} placeholder=\"5000\" />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Expected returns (% p.a.)</label>\n <input type=\"number\" min=\"0\" className={inputCls} value={form.expectedReturnsPct} onChange={(e) => set('expectedReturnsPct', e.target.value)} placeholder=\"18\" />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Lock-in (months)</label>\n <input type=\"number\" min=\"0\" className={inputCls} value={form.lockInMonths} onChange={(e) => set('lockInMonths', e.target.value)} placeholder=\"12\" />\n </div>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Risk level</label>\n <div className=\"flex gap-2\">\n {RISKS.map((r) => (\n <button\n key={r}\n type=\"button\"\n onClick={() => set('riskLevel', r)}\n className={\n 'rounded-lg border px-4 py-2 text-sm font-medium transition ' +\n (form.riskLevel === r\n ? 'border-accent-primary bg-accent-primary/10 text-accent-primary'\n : 'border-border-subtle bg-bg-canvas text-text-secondary hover:bg-bg-sunken')\n }\n >\n {r.charAt(0) + r.slice(1).toLowerCase()}\n </button>\n ))}\n </div>\n </div>\n\n {error && <p className=\"text-sm text-status-error-text\">{error}</p>}\n\n <div className=\"flex items-center justify-end gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/dashboard')}\n className=\"rounded-lg border border-border-default bg-bg-surface px-5 py-2.5 text-sm font-medium text-text-secondary hover:bg-bg-sunken\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={submit}\n disabled={createOpportunity.isPending}\n className=\"inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text transition hover:bg-action-primary-bg-hover disabled:opacity-60\"\n >\n <TrendingUp className=\"h-4 w-4\" />\n {createOpportunity.isPending ? 'Publishing…' : 'Publish opportunity'}\n </button>\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAcA,IAAM,IAAQ;CAAC;CAAO;CAAU;CAAO;AAEvC,SAAgB,IAAwB;CACtC,IAAM,EAAE,eAAY,mBAAgB,GAAc,EAC5C,EAAE,MAAM,IAAY,EAAE,EAAE,iBAAc,GAAc,EACpD,IAAa,QACX,EAAU,MAAM,MAAM,EAAE,YAAY,GAAa,GAAG,IAAI,EAAU,IACxE,CAAC,GAAW,GAAa,GAAG,CAC7B,EACK,IAAoB,GAAgC,EAEpD,CAAC,GAAM,KAAW,EAAS;EAC/B,OAAO;EACP,aAAa;EACb,cAAc;EACd,mBAAmB;EACnB,oBAAoB;EACpB,cAAc;EACd,WAAW;EACZ,CAAC,EACI,CAAC,GAAO,KAAY,EAAS,GAAG,EAChC,CAAC,GAAS,KAAc,EAAmC,KAAK,EAEhE,KAAO,GAAsB,MAAc,GAAS,OAAO;EAAE,GAAG;GAAI,IAAI;EAAG,EAAE,EAE7E,IACJ;AAoEF,QAjCI,IAEA,kBAAC,GAAD;EAAY,OAAM;EAAsB,aAAY;YAClD,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD,EAAK,WAAU,gCAAiC,CAAA;IAChD,kBAAC,OAAD,EAAK,WAAU,gCAAiC,CAAA;IAChD,kBAAC,OAAD,EAAK,WAAU,gCAAiC,CAAA;IAC5C;;EACK,CAAA,GAIZ,IAsBH,kBAAC,GAAD;EAAY,OAAM;EAAsB,aAAa,4BAA4B,EAAW;YAC1F,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,KACC,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAc,WAAU,oCAAqC,CAAA;KAC7D,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAwC;OAAyB,CAAA,EAC9E,kBAAC,KAAD;OAAG,WAAU;iBAAb;QAA2C;QACvC,EAAQ;QAAM;QACd;SACA;;KACN,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAW,0BAA0B;MACpD,WAAU;gBACX;MAEQ,CAAA;KACL;OAGR,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAa,WAAU,+BAAgC,CAAA,EACvD,kBAAC,MAAD;MAAI,WAAU;gBAA4C;MAAwB,CAAA,CAC9E;QACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAqD;OAAa,CAAA,EACnF,kBAAC,SAAD;OAAO,WAAW;OAAU,OAAO,EAAK;OAAO,WAAW,MAAM,EAAI,SAAS,EAAE,OAAO,MAAM;OAAE,aAAY;OAA0B,CAAA,CAChI,EAAA,CAAA;MACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAqD;OAAmB,CAAA,EACzF,kBAAC,YAAD;OAAU,WAAW;OAAU,MAAM;OAAG,OAAO,EAAK;OAAa,WAAW,MAAM,EAAI,eAAe,EAAE,OAAO,MAAM;OAAE,aAAY;OAAiE,CAAA,CAC/L,EAAA,CAAA;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAqD;SAAyB,CAAA,EAC/F,kBAAC,SAAD;SAAO,MAAK;SAAS,KAAI;SAAI,WAAW;SAAU,OAAO,EAAK;SAAc,WAAW,MAAM,EAAI,gBAAgB,EAAE,OAAO,MAAM;SAAE,aAAY;SAAW,CAAA,CACrJ,EAAA,CAAA;QACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAqD;SAA8B,CAAA,EACpG,kBAAC,SAAD;SAAO,MAAK;SAAS,KAAI;SAAI,WAAW;SAAU,OAAO,EAAK;SAAmB,WAAW,MAAM,EAAI,qBAAqB,EAAE,OAAO,MAAM;SAAE,aAAY;SAAS,CAAA,CAC7J,EAAA,CAAA;QACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAqD;SAAiC,CAAA,EACvG,kBAAC,SAAD;SAAO,MAAK;SAAS,KAAI;SAAI,WAAW;SAAU,OAAO,EAAK;SAAoB,WAAW,MAAM,EAAI,sBAAsB,EAAE,OAAO,MAAM;SAAE,aAAY;SAAO,CAAA,CAC7J,EAAA,CAAA;QACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAqD;SAAwB,CAAA,EAC9F,kBAAC,SAAD;SAAO,MAAK;SAAS,KAAI;SAAI,WAAW;SAAU,OAAO,EAAK;SAAc,WAAW,MAAM,EAAI,gBAAgB,EAAE,OAAO,MAAM;SAAE,aAAY;SAAO,CAAA,CACjJ,EAAA,CAAA;QACF;;MACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAqD;OAAkB,CAAA,EACxF,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAM,KAAK,MACV,kBAAC,UAAD;QAEE,MAAK;QACL,eAAe,EAAI,aAAa,EAAE;QAClC,WACE,iEACC,EAAK,cAAc,IAChB,mEACA;kBAGL,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,aAAa;QAChC,EAXF,EAWE,CACT;OACE,CAAA,CACF,EAAA,CAAA;MAEL,KAAS,kBAAC,KAAD;OAAG,WAAU;iBAAkC;OAAU,CAAA;MAEnE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,UAAD;QACE,MAAK;QACL,eAAe,EAAW,wBAAwB;QAClD,WAAU;kBACX;QAEQ,CAAA,EACT,kBAAC,UAAD;QACE,MAAK;QACL,eAzJO;AAEnB,aADA,EAAS,GAAG,EACR,CAAC,EAAY;SACjB,IAAM,IAAS,OAAO,EAAK,aAAa,EAClC,IAAU,OAAO,EAAK,kBAAkB,EACxC,IAAU,OAAO,EAAK,mBAAmB,EACzC,IAAO,OAAO,EAAK,aAAa;AACtC,aAAI,CAAC,EAAK,MAAM,MAAM,CAAE,QAAO,EAAS,iCAAiC;AACzE,aAAI,EAAE,IAAS,GAAI,QAAO,EAAS,+BAA+B;AAClE,aAAI,EAAE,IAAU,MAAM,IAAU,EAAQ,QAAO,EAAS,oDAAoD;AAC5G,aAAI,EAAE,KAAW,GAAI,QAAO,EAAS,mCAAmC;AACxE,aAAI,EAAE,IAAO,GAAI,QAAO,EAAS,oCAAoC;AACrE,WAAkB,OAChB;UACE,YAAY,EAAW;UACvB,OAAO,EAAK,MAAM,MAAM;UACxB,aAAa,EAAK,YAAY,MAAM,IAAI,KAAA;UACxC,cAAc;UACd,mBAAmB;UACnB,oBAAoB;UACpB,cAAc;UACd,WAAW,EAAK;UACjB,EACD;UACE,YAAY,MAAQ;AAElB,WADA,EAAW,EAAE,OAAO,EAAI,OAAO,CAAC,EAChC,GAAS,OAAO;YAAE,GAAG;YAAG,OAAO;YAAI,aAAa;YAAI,cAAc;YAAI,mBAAmB;YAAI,oBAAoB;YAAI,cAAc;YAAI,EAAE;;UAE3I,UAAU,MAAM,EAAS,aAAa,QAAQ,EAAE,UAAU,qCAAqC;UAChG,CACF;;QA4HW,UAAU,EAAkB;QAC5B,WAAU;kBAJZ,CAME,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA,EACjC,EAAkB,YAAY,gBAAgB,sBACxC;UACL;;MACF;OACF;MACF;;EACK,CAAA,GArHX,kBAAC,GAAD;EAAY,OAAM;EAAsB,aAAY;YAClD,kBAAC,GAAD;GACE,MAAM,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;GACxC,OAAM;GACN,aAAY;GACZ,QACE,kBAAC,UAAD;IACE,MAAK;IACL,eAAe,EAAW,wBAAwB;IAClD,WAAU;cACX;IAEQ,CAAA;GAEX,CAAA;EACS,CAAA"}
|
|
@@ -68,28 +68,28 @@ var O = {
|
|
|
68
68
|
let t = ((/* @__PURE__ */ new Date()).getTime() - new Date(e.orderDate).getTime()) / (1e3 * 60);
|
|
69
69
|
return e.status === "pending" && t > 10 ? "border-status-error-text/50 bg-status-error-bg-subtle" : e.status === "preparing" && t > 30 ? "border-status-warning-text/50 bg-status-warning-bg-subtle" : "border-border-subtle";
|
|
70
70
|
}, N = () => {
|
|
71
|
-
let { navigateTo: y, currentUser: b } = e(), { data: N = [] } = a(), { data: P = [], isLoading: F } = i({ providerId: l(() => N.find((e) => e.ownerId === b?.id) ?? N[0], [N, b?.id])?.id }),
|
|
71
|
+
let { navigateTo: y, currentUser: b } = e(), { data: N = [] } = a(), { data: P = [], isLoading: F, refetch: I, isFetching: L } = i({ providerId: l(() => N.find((e) => e.ownerId === b?.id) ?? N[0], [N, b?.id])?.id }), R = o(), [z, B] = u([]);
|
|
72
72
|
c(() => {
|
|
73
|
-
|
|
73
|
+
B(P);
|
|
74
74
|
}, [P]);
|
|
75
|
-
let [
|
|
75
|
+
let [V, H] = u({
|
|
76
76
|
status: "",
|
|
77
77
|
dateRange: "all",
|
|
78
78
|
searchQuery: "",
|
|
79
79
|
sortBy: "recent",
|
|
80
80
|
fulfillmentType: ""
|
|
81
|
-
}), [
|
|
82
|
-
|
|
81
|
+
}), [U, W] = u(null), [G, K] = u(!1), [q, J] = u(null), Y = (e, t) => {
|
|
82
|
+
J({
|
|
83
83
|
text: e,
|
|
84
84
|
type: t
|
|
85
|
-
}), setTimeout(() =>
|
|
86
|
-
},
|
|
87
|
-
let e =
|
|
85
|
+
}), setTimeout(() => J(null), 3e3);
|
|
86
|
+
}, X = l(() => {
|
|
87
|
+
let e = z.length, t = z.filter((e) => e.status === "pending").length, n = z.filter((e) => [
|
|
88
88
|
"confirmed",
|
|
89
89
|
"preparing",
|
|
90
90
|
"ready",
|
|
91
91
|
"out_for_delivery"
|
|
92
|
-
].includes(e.status)).length, r =
|
|
92
|
+
].includes(e.status)).length, r = z.filter((e) => e.status === "delivered").length, i = z.filter((e) => e.status === "delivered").reduce((e, t) => e + t.total, 0);
|
|
93
93
|
return {
|
|
94
94
|
total: e,
|
|
95
95
|
pending: t,
|
|
@@ -98,17 +98,17 @@ var O = {
|
|
|
98
98
|
totalRevenue: i,
|
|
99
99
|
avgOrder: r > 0 ? Math.round(i / r) : 0
|
|
100
100
|
};
|
|
101
|
-
}, [
|
|
102
|
-
let e = [...
|
|
103
|
-
if (
|
|
104
|
-
let t =
|
|
101
|
+
}, [z]), Z = l(() => {
|
|
102
|
+
let e = [...z];
|
|
103
|
+
if (V.status && (e = e.filter((e) => e.status === V.status)), V.fulfillmentType && (e = e.filter((e) => e.fulfillmentType === V.fulfillmentType)), V.searchQuery) {
|
|
104
|
+
let t = V.searchQuery.toLowerCase();
|
|
105
105
|
e = e.filter((e) => e.id.toLowerCase().includes(t) || (e.customerName || "").toLowerCase().includes(t) || e.items.some((e) => e.name.toLowerCase().includes(t)));
|
|
106
106
|
}
|
|
107
|
-
if (
|
|
107
|
+
if (V.dateRange !== "all") {
|
|
108
108
|
let t = /* @__PURE__ */ new Date(), n = /* @__PURE__ */ new Date();
|
|
109
|
-
|
|
109
|
+
V.dateRange === "today" ? n.setHours(0, 0, 0, 0) : V.dateRange === "7days" ? n.setDate(t.getDate() - 7) : V.dateRange === "30days" && n.setDate(t.getDate() - 30), e = e.filter((e) => new Date(e.orderDate) >= n);
|
|
110
110
|
}
|
|
111
|
-
switch (
|
|
111
|
+
switch (V.sortBy) {
|
|
112
112
|
case "recent":
|
|
113
113
|
e.sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime());
|
|
114
114
|
break;
|
|
@@ -123,39 +123,45 @@ var O = {
|
|
|
123
123
|
break;
|
|
124
124
|
}
|
|
125
125
|
return e;
|
|
126
|
-
}, [
|
|
126
|
+
}, [z, V]), Q = async () => {
|
|
127
|
+
await I(), Y("Orders refreshed", "success");
|
|
128
|
+
}, $ = (e, t) => {
|
|
127
129
|
let n = {
|
|
128
130
|
accept: "confirmed",
|
|
129
131
|
reject: "cancelled",
|
|
132
|
+
prepare: "preparing",
|
|
130
133
|
ready: "ready",
|
|
131
134
|
complete: "delivered"
|
|
132
135
|
};
|
|
133
|
-
|
|
136
|
+
B((r) => r.map((r) => r.id === e ? {
|
|
134
137
|
...r,
|
|
135
138
|
status: n[t]
|
|
136
|
-
} : r)),
|
|
139
|
+
} : r)), R.mutate({
|
|
137
140
|
id: e,
|
|
138
141
|
status: {
|
|
139
142
|
accept: "CONFIRMED",
|
|
140
143
|
reject: "CANCELLED",
|
|
144
|
+
prepare: "PREPARING",
|
|
141
145
|
ready: "READY",
|
|
142
146
|
complete: "DELIVERED"
|
|
143
147
|
}[t]
|
|
144
|
-
}, { onError: () =>
|
|
148
|
+
}, { onError: () => Y("Could not update the order on the server", "error") }), Y({
|
|
145
149
|
accept: "Order accepted",
|
|
146
150
|
reject: "Order rejected",
|
|
151
|
+
prepare: "Order moved to preparing",
|
|
147
152
|
ready: "Order marked as ready",
|
|
148
153
|
complete: "Order completed"
|
|
149
|
-
}[t], "success"),
|
|
154
|
+
}[t], "success"), G && U?.id === e && K(!1);
|
|
150
155
|
};
|
|
151
156
|
return /* @__PURE__ */ T(n, {
|
|
152
157
|
title: "Order Management",
|
|
153
158
|
description: "Manage incoming and active orders",
|
|
154
159
|
actions: /* @__PURE__ */ T("button", {
|
|
155
160
|
type: "button",
|
|
156
|
-
onClick:
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
onClick: Q,
|
|
162
|
+
disabled: L,
|
|
163
|
+
className: "inline-flex items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
164
|
+
children: [/* @__PURE__ */ w(_, { className: t("h-4 w-4", L && "animate-spin") }), "Refresh"]
|
|
159
165
|
}),
|
|
160
166
|
children: [
|
|
161
167
|
/* @__PURE__ */ w(D, {
|
|
@@ -165,11 +171,11 @@ var O = {
|
|
|
165
171
|
/* @__PURE__ */ T("div", {
|
|
166
172
|
className: "space-y-4",
|
|
167
173
|
children: [
|
|
168
|
-
|
|
169
|
-
className: t("flex items-center gap-2 rounded-lg border p-3",
|
|
170
|
-
children: [
|
|
171
|
-
className: t("text-sm font-medium",
|
|
172
|
-
children:
|
|
174
|
+
q && /* @__PURE__ */ T("div", {
|
|
175
|
+
className: t("flex items-center gap-2 rounded-lg border p-3", q.type === "success" ? "border-status-success-text/30 bg-status-success-bg-subtle" : "border-status-error-text/30 bg-status-error-bg-subtle"),
|
|
176
|
+
children: [q.type === "success" ? /* @__PURE__ */ w(f, { className: "h-4 w-4 text-status-success-text" }) : /* @__PURE__ */ w(d, { className: "h-4 w-4 text-status-error-text" }), /* @__PURE__ */ w("span", {
|
|
177
|
+
className: t("text-sm font-medium", q.type === "success" ? "text-status-success-text" : "text-status-error-text"),
|
|
178
|
+
children: q.text
|
|
173
179
|
})]
|
|
174
180
|
}),
|
|
175
181
|
/* @__PURE__ */ T(E, { children: [/* @__PURE__ */ w("h2", {
|
|
@@ -185,7 +191,7 @@ var O = {
|
|
|
185
191
|
children: "Total Orders"
|
|
186
192
|
}), /* @__PURE__ */ w("p", {
|
|
187
193
|
className: "text-2xl font-bold text-text-primary",
|
|
188
|
-
children:
|
|
194
|
+
children: X.total
|
|
189
195
|
})]
|
|
190
196
|
}),
|
|
191
197
|
/* @__PURE__ */ T("div", {
|
|
@@ -195,7 +201,7 @@ var O = {
|
|
|
195
201
|
children: "Pending"
|
|
196
202
|
}), /* @__PURE__ */ w("p", {
|
|
197
203
|
className: "text-2xl font-bold text-status-warning-text",
|
|
198
|
-
children:
|
|
204
|
+
children: X.pending
|
|
199
205
|
})]
|
|
200
206
|
}),
|
|
201
207
|
/* @__PURE__ */ T("div", {
|
|
@@ -205,7 +211,7 @@ var O = {
|
|
|
205
211
|
children: "Active"
|
|
206
212
|
}), /* @__PURE__ */ w("p", {
|
|
207
213
|
className: "text-2xl font-bold text-text-primary",
|
|
208
|
-
children:
|
|
214
|
+
children: X.active
|
|
209
215
|
})]
|
|
210
216
|
}),
|
|
211
217
|
/* @__PURE__ */ T("div", {
|
|
@@ -215,7 +221,7 @@ var O = {
|
|
|
215
221
|
children: "Completed"
|
|
216
222
|
}), /* @__PURE__ */ w("p", {
|
|
217
223
|
className: "text-2xl font-bold text-status-success-text",
|
|
218
|
-
children:
|
|
224
|
+
children: X.completed
|
|
219
225
|
})]
|
|
220
226
|
}),
|
|
221
227
|
/* @__PURE__ */ T("div", {
|
|
@@ -225,7 +231,7 @@ var O = {
|
|
|
225
231
|
children: "Total Revenue"
|
|
226
232
|
}), /* @__PURE__ */ w("p", {
|
|
227
233
|
className: "text-2xl font-bold text-text-primary",
|
|
228
|
-
children: s(
|
|
234
|
+
children: s(X.totalRevenue, { minimumFractionDigits: 0 })
|
|
229
235
|
})]
|
|
230
236
|
}),
|
|
231
237
|
/* @__PURE__ */ T("div", {
|
|
@@ -235,7 +241,7 @@ var O = {
|
|
|
235
241
|
children: "Avg Order"
|
|
236
242
|
}), /* @__PURE__ */ w("p", {
|
|
237
243
|
className: "text-2xl font-bold text-text-primary",
|
|
238
|
-
children: s(
|
|
244
|
+
children: s(X.avgOrder, { minimumFractionDigits: 0 })
|
|
239
245
|
})]
|
|
240
246
|
})
|
|
241
247
|
]
|
|
@@ -250,8 +256,8 @@ var O = {
|
|
|
250
256
|
children: [/* @__PURE__ */ w(v, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ w("input", {
|
|
251
257
|
type: "text",
|
|
252
258
|
placeholder: "Search orders...",
|
|
253
|
-
value:
|
|
254
|
-
onChange: (e) =>
|
|
259
|
+
value: V.searchQuery,
|
|
260
|
+
onChange: (e) => H((t) => ({
|
|
255
261
|
...t,
|
|
256
262
|
searchQuery: e.target.value
|
|
257
263
|
})),
|
|
@@ -259,8 +265,8 @@ var O = {
|
|
|
259
265
|
})]
|
|
260
266
|
}),
|
|
261
267
|
/* @__PURE__ */ T("select", {
|
|
262
|
-
value:
|
|
263
|
-
onChange: (e) =>
|
|
268
|
+
value: V.status,
|
|
269
|
+
onChange: (e) => H((t) => ({
|
|
264
270
|
...t,
|
|
265
271
|
status: e.target.value
|
|
266
272
|
})),
|
|
@@ -297,8 +303,8 @@ var O = {
|
|
|
297
303
|
]
|
|
298
304
|
}),
|
|
299
305
|
/* @__PURE__ */ T("select", {
|
|
300
|
-
value:
|
|
301
|
-
onChange: (e) =>
|
|
306
|
+
value: V.fulfillmentType,
|
|
307
|
+
onChange: (e) => H((t) => ({
|
|
302
308
|
...t,
|
|
303
309
|
fulfillmentType: e.target.value
|
|
304
310
|
})),
|
|
@@ -323,8 +329,8 @@ var O = {
|
|
|
323
329
|
]
|
|
324
330
|
}),
|
|
325
331
|
/* @__PURE__ */ T("select", {
|
|
326
|
-
value:
|
|
327
|
-
onChange: (e) =>
|
|
332
|
+
value: V.dateRange,
|
|
333
|
+
onChange: (e) => H((t) => ({
|
|
328
334
|
...t,
|
|
329
335
|
dateRange: e.target.value
|
|
330
336
|
})),
|
|
@@ -349,8 +355,8 @@ var O = {
|
|
|
349
355
|
]
|
|
350
356
|
}),
|
|
351
357
|
/* @__PURE__ */ T("select", {
|
|
352
|
-
value:
|
|
353
|
-
onChange: (e) =>
|
|
358
|
+
value: V.sortBy,
|
|
359
|
+
onChange: (e) => H((t) => ({
|
|
354
360
|
...t,
|
|
355
361
|
sortBy: e.target.value
|
|
356
362
|
})),
|
|
@@ -380,13 +386,13 @@ var O = {
|
|
|
380
386
|
F ? /* @__PURE__ */ w("div", {
|
|
381
387
|
className: "flex items-center justify-center py-16",
|
|
382
388
|
children: /* @__PURE__ */ w("div", { className: "h-10 w-10 animate-spin rounded-full border-b-2 border-foreground" })
|
|
383
|
-
}) :
|
|
384
|
-
illustration:
|
|
389
|
+
}) : Z.length === 0 ? /* @__PURE__ */ w(r, {
|
|
390
|
+
illustration: V.searchQuery || V.status ? "empty-search" : "empty-data",
|
|
385
391
|
title: "No orders found",
|
|
386
|
-
description:
|
|
392
|
+
description: V.searchQuery || V.status ? "No orders match your current filters. Try adjusting the status, type or date range." : "New orders from customers will appear here in real time. Make sure your cart is open and accepting orders."
|
|
387
393
|
}) : /* @__PURE__ */ w("div", {
|
|
388
394
|
className: "space-y-4",
|
|
389
|
-
children:
|
|
395
|
+
children: Z.map((e) => {
|
|
390
396
|
let n = O[e.status] || {
|
|
391
397
|
color: "bg-bg-sunken text-text-secondary",
|
|
392
398
|
label: e.status
|
|
@@ -432,7 +438,7 @@ var O = {
|
|
|
432
438
|
}), /* @__PURE__ */ w("button", {
|
|
433
439
|
type: "button",
|
|
434
440
|
onClick: () => {
|
|
435
|
-
|
|
441
|
+
W(e), K(!0);
|
|
436
442
|
},
|
|
437
443
|
className: "rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
438
444
|
children: "View Details"
|
|
@@ -458,30 +464,30 @@ var O = {
|
|
|
458
464
|
children: [
|
|
459
465
|
e.status === "pending" && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T("button", {
|
|
460
466
|
type: "button",
|
|
461
|
-
onClick: () =>
|
|
467
|
+
onClick: () => $(e.id, "accept"),
|
|
462
468
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
463
469
|
children: [/* @__PURE__ */ w(f, { className: "h-3.5 w-3.5" }), "Accept Order"]
|
|
464
470
|
}), /* @__PURE__ */ T("button", {
|
|
465
471
|
type: "button",
|
|
466
|
-
onClick: () =>
|
|
472
|
+
onClick: () => $(e.id, "reject"),
|
|
467
473
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-error-bg-subtle px-3 py-2 text-xs font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
468
474
|
children: [/* @__PURE__ */ w(S, { className: "h-3.5 w-3.5" }), "Reject"]
|
|
469
475
|
})] }),
|
|
470
476
|
e.status === "confirmed" && /* @__PURE__ */ T("button", {
|
|
471
477
|
type: "button",
|
|
472
|
-
onClick: () =>
|
|
478
|
+
onClick: () => $(e.id, "prepare"),
|
|
473
479
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-warning-bg-subtle px-3 py-2 text-xs font-medium text-status-warning-text hover:bg-status-warning-bg-subtle transition-colors",
|
|
474
480
|
children: [/* @__PURE__ */ w(p, { className: "h-3.5 w-3.5" }), "Start Preparing"]
|
|
475
481
|
}),
|
|
476
482
|
e.status === "preparing" && /* @__PURE__ */ T("button", {
|
|
477
483
|
type: "button",
|
|
478
|
-
onClick: () =>
|
|
484
|
+
onClick: () => $(e.id, "ready"),
|
|
479
485
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
480
486
|
children: [/* @__PURE__ */ w(h, { className: "h-3.5 w-3.5" }), "Mark as Ready"]
|
|
481
487
|
}),
|
|
482
488
|
e.status === "ready" && e.fulfillmentType === "pickup" && /* @__PURE__ */ T("button", {
|
|
483
489
|
type: "button",
|
|
484
|
-
onClick: () =>
|
|
490
|
+
onClick: () => $(e.id, "complete"),
|
|
485
491
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
486
492
|
children: [/* @__PURE__ */ w(f, { className: "h-3.5 w-3.5" }), "Complete Order"]
|
|
487
493
|
}),
|
|
@@ -489,9 +495,8 @@ var O = {
|
|
|
489
495
|
"confirmed",
|
|
490
496
|
"preparing",
|
|
491
497
|
"ready"
|
|
492
|
-
].includes(e.status) && /* @__PURE__ */ T("
|
|
493
|
-
|
|
494
|
-
onClick: () => alert("Contact feature coming soon!"),
|
|
498
|
+
].includes(e.status) && e.customerPhone && /* @__PURE__ */ T("a", {
|
|
499
|
+
href: `tel:${e.customerPhone}`,
|
|
495
500
|
className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
496
501
|
children: [/* @__PURE__ */ w(g, { className: "h-3.5 w-3.5" }), "Contact Customer"]
|
|
497
502
|
})
|
|
@@ -514,7 +519,7 @@ var O = {
|
|
|
514
519
|
})
|
|
515
520
|
]
|
|
516
521
|
}),
|
|
517
|
-
|
|
522
|
+
G && U && /* @__PURE__ */ w("div", {
|
|
518
523
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
519
524
|
children: /* @__PURE__ */ w("div", {
|
|
520
525
|
className: "w-full max-w-2xl max-h-[90vh] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface shadow-xl",
|
|
@@ -527,7 +532,7 @@ var O = {
|
|
|
527
532
|
children: "Order Details"
|
|
528
533
|
}), /* @__PURE__ */ w("button", {
|
|
529
534
|
type: "button",
|
|
530
|
-
onClick: () =>
|
|
535
|
+
onClick: () => K(!1),
|
|
531
536
|
className: "rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
532
537
|
children: /* @__PURE__ */ w(x, { className: "h-5 w-5" })
|
|
533
538
|
})]
|
|
@@ -542,28 +547,28 @@ var O = {
|
|
|
542
547
|
children: "Order ID"
|
|
543
548
|
}), /* @__PURE__ */ T("p", {
|
|
544
549
|
className: "text-sm font-medium text-text-primary",
|
|
545
|
-
children: ["#",
|
|
550
|
+
children: ["#", U.id]
|
|
546
551
|
})] }),
|
|
547
552
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
548
553
|
className: "text-xs text-text-secondary",
|
|
549
554
|
children: "Status"
|
|
550
555
|
}), /* @__PURE__ */ w("span", {
|
|
551
|
-
className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium mt-0.5", (O[
|
|
552
|
-
children: (O[
|
|
556
|
+
className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium mt-0.5", (O[U.status] || O.pending).color),
|
|
557
|
+
children: (O[U.status] || O.pending).label
|
|
553
558
|
})] }),
|
|
554
559
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
555
560
|
className: "text-xs text-text-secondary",
|
|
556
561
|
children: "Customer"
|
|
557
562
|
}), /* @__PURE__ */ w("p", {
|
|
558
563
|
className: "text-sm font-medium text-text-primary",
|
|
559
|
-
children:
|
|
564
|
+
children: U.customerName || "N/A"
|
|
560
565
|
})] }),
|
|
561
566
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
562
567
|
className: "text-xs text-text-secondary",
|
|
563
568
|
children: "Order Time"
|
|
564
569
|
}), /* @__PURE__ */ w("p", {
|
|
565
570
|
className: "text-sm font-medium text-text-primary",
|
|
566
|
-
children: j(
|
|
571
|
+
children: j(U.orderDate)
|
|
567
572
|
})] })
|
|
568
573
|
]
|
|
569
574
|
}),
|
|
@@ -574,7 +579,7 @@ var O = {
|
|
|
574
579
|
children: "Order Items"
|
|
575
580
|
}), /* @__PURE__ */ w("div", {
|
|
576
581
|
className: "space-y-2",
|
|
577
|
-
children:
|
|
582
|
+
children: U.items.map((e, t) => /* @__PURE__ */ T("div", {
|
|
578
583
|
className: "flex justify-between items-start",
|
|
579
584
|
children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
580
585
|
className: "text-sm font-medium text-text-primary",
|
|
@@ -599,23 +604,23 @@ var O = {
|
|
|
599
604
|
children: [
|
|
600
605
|
/* @__PURE__ */ T("div", {
|
|
601
606
|
className: "flex justify-between text-sm text-text-secondary",
|
|
602
|
-
children: [/* @__PURE__ */ w("span", { children: "Subtotal" }), /* @__PURE__ */ w("span", { children: s(
|
|
607
|
+
children: [/* @__PURE__ */ w("span", { children: "Subtotal" }), /* @__PURE__ */ w("span", { children: s(U.subtotal, { minimumFractionDigits: 0 }) })]
|
|
603
608
|
}),
|
|
604
609
|
/* @__PURE__ */ T("div", {
|
|
605
610
|
className: "flex justify-between text-sm text-text-secondary",
|
|
606
|
-
children: [/* @__PURE__ */ w("span", { children: "Delivery Fee" }), /* @__PURE__ */ w("span", { children: s(
|
|
611
|
+
children: [/* @__PURE__ */ w("span", { children: "Delivery Fee" }), /* @__PURE__ */ w("span", { children: s(U.deliveryFee, { minimumFractionDigits: 0 }) })]
|
|
607
612
|
}),
|
|
608
613
|
/* @__PURE__ */ T("div", {
|
|
609
614
|
className: "flex justify-between text-sm text-text-secondary",
|
|
610
|
-
children: [/* @__PURE__ */ w("span", { children: "Tax" }), /* @__PURE__ */ w("span", { children: s(
|
|
615
|
+
children: [/* @__PURE__ */ w("span", { children: "Tax" }), /* @__PURE__ */ w("span", { children: s(U.taxes, { minimumFractionDigits: 0 }) })]
|
|
611
616
|
}),
|
|
612
617
|
/* @__PURE__ */ T("div", {
|
|
613
618
|
className: "flex justify-between font-semibold text-text-primary pt-2 border-t border-border-subtle",
|
|
614
|
-
children: [/* @__PURE__ */ w("span", { children: "Total" }), /* @__PURE__ */ w("span", { children: s(
|
|
619
|
+
children: [/* @__PURE__ */ w("span", { children: "Total" }), /* @__PURE__ */ w("span", { children: s(U.total, { minimumFractionDigits: 0 }) })]
|
|
615
620
|
})
|
|
616
621
|
]
|
|
617
622
|
}),
|
|
618
|
-
|
|
623
|
+
U.fulfillmentType === "delivery" && U.deliveryAddress && /* @__PURE__ */ T("div", {
|
|
619
624
|
className: "border-t border-border-subtle pt-4",
|
|
620
625
|
children: [/* @__PURE__ */ T("h4", {
|
|
621
626
|
className: "text-sm font-medium text-text-primary mb-2 flex items-center gap-1.5",
|
|
@@ -623,13 +628,13 @@ var O = {
|
|
|
623
628
|
}), /* @__PURE__ */ T("p", {
|
|
624
629
|
className: "text-sm text-text-secondary",
|
|
625
630
|
children: [
|
|
626
|
-
|
|
631
|
+
U.deliveryAddress.street,
|
|
627
632
|
", ",
|
|
628
|
-
|
|
633
|
+
U.deliveryAddress.area,
|
|
629
634
|
/* @__PURE__ */ w("br", {}),
|
|
630
|
-
|
|
635
|
+
U.deliveryAddress.city,
|
|
631
636
|
" - ",
|
|
632
|
-
|
|
637
|
+
U.deliveryAddress.pincode
|
|
633
638
|
]
|
|
634
639
|
})]
|
|
635
640
|
}),
|
|
@@ -637,17 +642,17 @@ var O = {
|
|
|
637
642
|
className: "flex gap-3 mt-6",
|
|
638
643
|
children: [/* @__PURE__ */ w("button", {
|
|
639
644
|
type: "button",
|
|
640
|
-
onClick: () =>
|
|
645
|
+
onClick: () => K(!1),
|
|
641
646
|
className: "flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
642
647
|
children: "Close"
|
|
643
|
-
}),
|
|
648
|
+
}), U.status === "pending" && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w("button", {
|
|
644
649
|
type: "button",
|
|
645
|
-
onClick: () =>
|
|
650
|
+
onClick: () => $(U.id, "accept"),
|
|
646
651
|
className: "flex-1 rounded-md bg-status-success-bg-subtle px-4 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
647
652
|
children: "Accept Order"
|
|
648
653
|
}), /* @__PURE__ */ w("button", {
|
|
649
654
|
type: "button",
|
|
650
|
-
onClick: () =>
|
|
655
|
+
onClick: () => $(U.id, "reject"),
|
|
651
656
|
className: "flex-1 rounded-md bg-status-error-bg-subtle px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
652
657
|
children: "Reject Order"
|
|
653
658
|
})] })]
|