@burdenoff/microfe-movethewheels 2026.719.3 → 2026.725.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MoveTheWheelsRoot.js +45 -35
- package/dist/hooks/useOrders.js +119 -100
- package/dist/movethewheels/types/index.d.ts +1 -3
- package/dist/pages/CreateOrderPage.js +53 -79
- package/dist/pages/MarketplacePage.js +143 -124
- package/dist/pages/OrderDetailsPage.js +19 -20
- package/dist/pages/OrdersListPage.js +82 -113
- package/package.json +2 -1
- package/src/movethewheels/MoveTheWheelsRoot.tsx +57 -29
- package/src/movethewheels/hooks/useOrders.ts +83 -208
- package/src/movethewheels/pages/CreateOrderPage.tsx +1 -19
- package/src/movethewheels/pages/MarketplacePage.tsx +34 -1
- package/src/movethewheels/pages/OrderDetailsPage.tsx +1 -7
- package/src/movethewheels/pages/OrdersListPage.tsx +3 -31
- package/src/movethewheels/types/index.ts +1 -3
|
@@ -11,13 +11,14 @@ import { Store as i } from "../node_modules/lucide-react/dist/esm/icons/store.js
|
|
|
11
11
|
import { useMoveTheWheels as ae } from "../providers/MoveTheWheelsProvider.js";
|
|
12
12
|
import { executeGraphQL as a } from "../utils/graphqlClient.js";
|
|
13
13
|
import { Badge as o, Button as s, Card as c, CardContent as l, CardHeader as oe, CardTitle as se, Input as ce, Select as u, SelectContent as d, SelectItem as f, SelectTrigger as p, SelectValue as m, Skeleton as le } from "../components/ui.js";
|
|
14
|
-
import { PageLayout as
|
|
15
|
-
import { formatCurrency as
|
|
16
|
-
import { useCallback as
|
|
17
|
-
import { Fragment as
|
|
18
|
-
import {
|
|
14
|
+
import { PageLayout as h } from "../components/PageLayout.js";
|
|
15
|
+
import { formatCurrency as g } from "../utils/formatters.js";
|
|
16
|
+
import { useCallback as _, useEffect as ue, useMemo as v, useState as y } from "react";
|
|
17
|
+
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
18
|
+
import { useFeatureFlag as de } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
19
|
+
import { EmphasisPanel as fe, IllustratedEmptyState as C, PagePurpose as pe } from "@burdenoff/fe-libs/ui";
|
|
19
20
|
//#region src/movethewheels/pages/MarketplacePage.tsx
|
|
20
|
-
var
|
|
21
|
+
var me = "movethewheels.marketplace", he = "\n query ListServiceProviders($filter: ServiceProviderFilterInput, $pagination: PaginationInput) {\n serviceProviders(filter: $filter, pagination: $pagination) {\n id\n name\n type\n description\n rating\n isVerified\n isActive\n services\n contactInfo\n }\n }\n", ge = "\n query ListServiceOfferings($filter: ServiceOfferingFilterInput, $pagination: PaginationInput) {\n serviceOfferings(filter: $filter, pagination: $pagination) {\n id\n providerId\n name\n description\n category\n price\n currency\n availability\n provider {\n id\n name\n type\n rating\n }\n }\n }\n", w = 12, _e = [
|
|
21
22
|
{
|
|
22
23
|
value: "0",
|
|
23
24
|
label: "Any rating"
|
|
@@ -35,8 +36,8 @@ var pe = "\n query ListServiceProviders($filter: ServiceProviderFilterInput, $p
|
|
|
35
36
|
label: "4.5+"
|
|
36
37
|
}
|
|
37
38
|
];
|
|
38
|
-
function
|
|
39
|
-
let { apiGatewayUrl: E, authToken: D, workspaceToken: O, workspaceId: k, tenantId: A, currentUser: j } = ae(), [M,
|
|
39
|
+
function T() {
|
|
40
|
+
let T = de(me, !1), { apiGatewayUrl: E, authToken: D, workspaceToken: O, workspaceId: k, tenantId: A, currentUser: j } = ae(), [M, ve] = y([]), [N, ye] = y([]), [P, be] = y(""), [F, I] = y(!1), [L, R] = y(null), [z, B] = y(0), [xe, Se] = y(!1), [V, Ce] = y(!1), [H, U] = y("all"), [W, G] = y(!1), [K, q] = y("0"), [we, J] = y(null), Y = v(() => ({
|
|
40
41
|
apiGatewayUrl: E,
|
|
41
42
|
authToken: D,
|
|
42
43
|
workspaceToken: O,
|
|
@@ -50,30 +51,36 @@ function E() {
|
|
|
50
51
|
k,
|
|
51
52
|
A,
|
|
52
53
|
j?.id
|
|
53
|
-
]), X =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
54
|
+
]), X = _(async () => {
|
|
55
|
+
if (T) {
|
|
56
|
+
I(!0), R(null);
|
|
57
|
+
try {
|
|
58
|
+
let [e, t] = await Promise.all([a(Y, he, { pagination: {
|
|
59
|
+
limit: w,
|
|
60
|
+
offset: z * w
|
|
61
|
+
} }), a(Y, ge, { pagination: {
|
|
62
|
+
limit: 200,
|
|
63
|
+
offset: 0
|
|
64
|
+
} })]);
|
|
65
|
+
ve(e.serviceProviders), Se(e.serviceProviders.length === w), ye(t.serviceOfferings);
|
|
66
|
+
} catch (e) {
|
|
67
|
+
R(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load marketplace"));
|
|
68
|
+
} finally {
|
|
69
|
+
I(!1);
|
|
70
|
+
}
|
|
68
71
|
}
|
|
69
|
-
}, [
|
|
70
|
-
|
|
72
|
+
}, [
|
|
73
|
+
Y,
|
|
74
|
+
z,
|
|
75
|
+
T
|
|
76
|
+
]);
|
|
77
|
+
ue(() => {
|
|
71
78
|
X();
|
|
72
79
|
}, [X]);
|
|
73
|
-
let
|
|
80
|
+
let Te = v(() => {
|
|
74
81
|
let e = /* @__PURE__ */ new Set();
|
|
75
82
|
return M.forEach((t) => e.add(t.type)), Array.from(e).sort();
|
|
76
|
-
}, [M]), Z =
|
|
83
|
+
}, [M]), Z = v(() => {
|
|
77
84
|
let e = P.trim().toLowerCase(), t = Number(K);
|
|
78
85
|
return M.filter((n) => !(e && !(n.name.toLowerCase().includes(e) || (n.description ?? "").toLowerCase().includes(e) || n.type.toLowerCase().includes(e)) || H !== "all" && n.type !== H || W && !n.isVerified || t > 0 && (n.rating ?? 0) < t));
|
|
79
86
|
}, [
|
|
@@ -82,84 +89,84 @@ function E() {
|
|
|
82
89
|
H,
|
|
83
90
|
W,
|
|
84
91
|
K
|
|
85
|
-
]), Q =
|
|
92
|
+
]), Q = v(() => {
|
|
86
93
|
let e = P.trim().toLowerCase();
|
|
87
94
|
return e ? N.filter((t) => t.name.toLowerCase().includes(e) || (t.description ?? "").toLowerCase().includes(e) || (t.category ?? "").toLowerCase().includes(e)) : N;
|
|
88
|
-
}, [N, P]),
|
|
89
|
-
return /* @__PURE__ */
|
|
95
|
+
}, [N, P]), Ee = _((e) => N.filter((t) => t.providerId === e), [N]), $ = H !== "all" || W || K !== "0";
|
|
96
|
+
return T ? /* @__PURE__ */ S(h, {
|
|
90
97
|
title: "Marketplace",
|
|
91
98
|
subtitle: "Find logistics service providers",
|
|
92
|
-
icon: /* @__PURE__ */
|
|
93
|
-
headerActions: /* @__PURE__ */
|
|
99
|
+
icon: /* @__PURE__ */ x(i, { size: 24 }),
|
|
100
|
+
headerActions: /* @__PURE__ */ S(s, {
|
|
94
101
|
variant: V || $ ? "default" : "outline",
|
|
95
|
-
onClick: () =>
|
|
96
|
-
children: [/* @__PURE__ */
|
|
102
|
+
onClick: () => Ce((e) => !e),
|
|
103
|
+
children: [/* @__PURE__ */ x(r, { size: 16 }), " Filters"]
|
|
97
104
|
}),
|
|
98
105
|
children: [
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
icon: /* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ x(pe, {
|
|
107
|
+
icon: /* @__PURE__ */ x(i, { size: 18 }),
|
|
101
108
|
children: "Don't own every leg of the journey? Find vetted third-party logistics providers and service offerings here — compare ratings, verification status and pricing, then engage a partner to cover routes, warehousing or specialised handling you can't do in-house."
|
|
102
109
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ x(c, { children: /* @__PURE__ */ S(l, {
|
|
104
111
|
className: "p-4 space-y-4",
|
|
105
|
-
children: [/* @__PURE__ */
|
|
112
|
+
children: [/* @__PURE__ */ S("div", {
|
|
106
113
|
className: "relative",
|
|
107
|
-
children: [/* @__PURE__ */
|
|
114
|
+
children: [/* @__PURE__ */ x(re, {
|
|
108
115
|
className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary",
|
|
109
116
|
size: 20
|
|
110
|
-
}), /* @__PURE__ */
|
|
117
|
+
}), /* @__PURE__ */ x(ce, {
|
|
111
118
|
placeholder: "Search services, providers, locations...",
|
|
112
119
|
className: "pl-10",
|
|
113
120
|
value: P,
|
|
114
|
-
onChange: (e) =>
|
|
121
|
+
onChange: (e) => be(e.target.value)
|
|
115
122
|
})]
|
|
116
|
-
}), V && /* @__PURE__ */
|
|
123
|
+
}), V && /* @__PURE__ */ S("div", {
|
|
117
124
|
className: "flex flex-wrap items-center gap-3 border-t border-border-seam pt-4",
|
|
118
125
|
children: [
|
|
119
|
-
/* @__PURE__ */
|
|
126
|
+
/* @__PURE__ */ S("div", {
|
|
120
127
|
className: "flex items-center gap-2",
|
|
121
|
-
children: [/* @__PURE__ */
|
|
128
|
+
children: [/* @__PURE__ */ x("span", {
|
|
122
129
|
className: "text-sm font-medium text-text-secondary",
|
|
123
130
|
children: "Type"
|
|
124
|
-
}), /* @__PURE__ */
|
|
131
|
+
}), /* @__PURE__ */ S(u, {
|
|
125
132
|
value: H,
|
|
126
133
|
onValueChange: U,
|
|
127
|
-
children: [/* @__PURE__ */
|
|
134
|
+
children: [/* @__PURE__ */ x(p, {
|
|
128
135
|
className: "w-[160px]",
|
|
129
|
-
children: /* @__PURE__ */
|
|
130
|
-
}), /* @__PURE__ */
|
|
136
|
+
children: /* @__PURE__ */ x(m, { placeholder: "All types" })
|
|
137
|
+
}), /* @__PURE__ */ S(d, { children: [/* @__PURE__ */ x(f, {
|
|
131
138
|
value: "all",
|
|
132
139
|
children: "All types"
|
|
133
|
-
}),
|
|
140
|
+
}), Te.map((e) => /* @__PURE__ */ x(f, {
|
|
134
141
|
value: e,
|
|
135
142
|
children: e
|
|
136
143
|
}, e))] })]
|
|
137
144
|
})]
|
|
138
145
|
}),
|
|
139
|
-
/* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ S("div", {
|
|
140
147
|
className: "flex items-center gap-2",
|
|
141
|
-
children: [/* @__PURE__ */
|
|
148
|
+
children: [/* @__PURE__ */ x("span", {
|
|
142
149
|
className: "text-sm font-medium text-text-secondary",
|
|
143
150
|
children: "Min rating"
|
|
144
|
-
}), /* @__PURE__ */
|
|
151
|
+
}), /* @__PURE__ */ S(u, {
|
|
145
152
|
value: K,
|
|
146
153
|
onValueChange: q,
|
|
147
|
-
children: [/* @__PURE__ */
|
|
154
|
+
children: [/* @__PURE__ */ x(p, {
|
|
148
155
|
className: "w-[130px]",
|
|
149
|
-
children: /* @__PURE__ */
|
|
150
|
-
}), /* @__PURE__ */
|
|
156
|
+
children: /* @__PURE__ */ x(m, {})
|
|
157
|
+
}), /* @__PURE__ */ x(d, { children: _e.map((e) => /* @__PURE__ */ x(f, {
|
|
151
158
|
value: e.value,
|
|
152
159
|
children: e.label
|
|
153
160
|
}, e.value)) })]
|
|
154
161
|
})]
|
|
155
162
|
}),
|
|
156
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ x(s, {
|
|
157
164
|
variant: W ? "default" : "outline",
|
|
158
165
|
size: "sm",
|
|
159
166
|
onClick: () => G((e) => !e),
|
|
160
167
|
children: "Verified only"
|
|
161
168
|
}),
|
|
162
|
-
$ && /* @__PURE__ */
|
|
169
|
+
$ && /* @__PURE__ */ x(s, {
|
|
163
170
|
variant: "ghost",
|
|
164
171
|
size: "sm",
|
|
165
172
|
onClick: () => {
|
|
@@ -170,12 +177,12 @@ function E() {
|
|
|
170
177
|
]
|
|
171
178
|
})]
|
|
172
179
|
}) }),
|
|
173
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ S("div", {
|
|
174
181
|
className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
|
|
175
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ S("div", {
|
|
176
183
|
className: "lg:col-span-2 space-y-4",
|
|
177
184
|
children: [
|
|
178
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ S("h3", {
|
|
179
186
|
className: "font-semibold",
|
|
180
187
|
children: [
|
|
181
188
|
"Service Providers (",
|
|
@@ -183,20 +190,20 @@ function E() {
|
|
|
183
190
|
")"
|
|
184
191
|
]
|
|
185
192
|
}),
|
|
186
|
-
L && !F && /* @__PURE__ */
|
|
193
|
+
L && !F && /* @__PURE__ */ x(c, {
|
|
187
194
|
className: "border-status-error-border",
|
|
188
|
-
children: /* @__PURE__ */
|
|
195
|
+
children: /* @__PURE__ */ S(l, {
|
|
189
196
|
className: "p-6 text-center space-y-3",
|
|
190
197
|
children: [
|
|
191
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ x("p", {
|
|
192
199
|
className: "text-status-error-text font-medium",
|
|
193
200
|
children: "Couldn't load providers"
|
|
194
201
|
}),
|
|
195
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ x("p", {
|
|
196
203
|
className: "text-sm text-text-secondary",
|
|
197
204
|
children: L.message
|
|
198
205
|
}),
|
|
199
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ x(s, {
|
|
200
207
|
variant: "outline",
|
|
201
208
|
onClick: () => void X(),
|
|
202
209
|
children: "Retry"
|
|
@@ -204,57 +211,57 @@ function E() {
|
|
|
204
211
|
]
|
|
205
212
|
})
|
|
206
213
|
}),
|
|
207
|
-
F && Array.from({ length: 3 }).map((e, t) => /* @__PURE__ */
|
|
208
|
-
!F && !L && Z.length === 0 && /* @__PURE__ */
|
|
214
|
+
F && Array.from({ length: 3 }).map((e, t) => /* @__PURE__ */ x(le, { className: "h-32 w-full rounded-lg" }, t)),
|
|
215
|
+
!F && !L && Z.length === 0 && /* @__PURE__ */ x(c, { children: /* @__PURE__ */ x(l, {
|
|
209
216
|
className: "p-0",
|
|
210
|
-
children: /* @__PURE__ */
|
|
217
|
+
children: /* @__PURE__ */ x(C, {
|
|
211
218
|
illustration: P.trim() || $ ? "empty-search" : "empty-people",
|
|
212
219
|
title: P.trim() || $ ? "No providers match your filters" : "No providers yet",
|
|
213
220
|
description: P.trim() || $ ? "Adjust your search or filters to find logistics partners." : "Verified logistics service providers will appear here as they join the marketplace."
|
|
214
221
|
})
|
|
215
222
|
}) }),
|
|
216
223
|
!F && !L && Z.map((t) => {
|
|
217
|
-
let n =
|
|
218
|
-
return /* @__PURE__ */
|
|
224
|
+
let n = we === t.id, r = Ee(t.id);
|
|
225
|
+
return /* @__PURE__ */ S(c, { children: [/* @__PURE__ */ x("button", {
|
|
219
226
|
type: "button",
|
|
220
227
|
"aria-expanded": n,
|
|
221
228
|
className: "w-full text-left",
|
|
222
229
|
onClick: () => J(n ? null : t.id),
|
|
223
|
-
children: /* @__PURE__ */
|
|
230
|
+
children: /* @__PURE__ */ x(l, {
|
|
224
231
|
className: "p-6",
|
|
225
|
-
children: /* @__PURE__ */
|
|
232
|
+
children: /* @__PURE__ */ S("div", {
|
|
226
233
|
className: "flex items-start justify-between gap-3",
|
|
227
|
-
children: [/* @__PURE__ */
|
|
234
|
+
children: [/* @__PURE__ */ S("div", {
|
|
228
235
|
className: "min-w-0",
|
|
229
236
|
children: [
|
|
230
|
-
/* @__PURE__ */
|
|
237
|
+
/* @__PURE__ */ S("div", {
|
|
231
238
|
className: "flex items-center gap-2 flex-wrap",
|
|
232
239
|
children: [
|
|
233
|
-
/* @__PURE__ */
|
|
240
|
+
/* @__PURE__ */ x("h4", {
|
|
234
241
|
className: "font-semibold text-lg",
|
|
235
242
|
children: t.name
|
|
236
243
|
}),
|
|
237
|
-
t.isVerified && /* @__PURE__ */
|
|
244
|
+
t.isVerified && /* @__PURE__ */ x(o, {
|
|
238
245
|
variant: "default",
|
|
239
246
|
children: "Verified"
|
|
240
247
|
}),
|
|
241
|
-
/* @__PURE__ */
|
|
248
|
+
/* @__PURE__ */ x(o, {
|
|
242
249
|
variant: t.isActive ? "default" : "secondary",
|
|
243
250
|
children: t.isActive ? "active" : "inactive"
|
|
244
251
|
})
|
|
245
252
|
]
|
|
246
253
|
}),
|
|
247
|
-
/* @__PURE__ */
|
|
254
|
+
/* @__PURE__ */ x("p", {
|
|
248
255
|
className: "text-text-secondary mt-1",
|
|
249
256
|
children: t.description
|
|
250
257
|
}),
|
|
251
|
-
/* @__PURE__ */
|
|
258
|
+
/* @__PURE__ */ S("div", {
|
|
252
259
|
className: "flex items-center gap-4 mt-3 text-sm text-text-secondary",
|
|
253
260
|
children: [
|
|
254
|
-
/* @__PURE__ */
|
|
261
|
+
/* @__PURE__ */ S("span", {
|
|
255
262
|
className: "flex items-center gap-1",
|
|
256
263
|
children: [
|
|
257
|
-
/* @__PURE__ */
|
|
264
|
+
/* @__PURE__ */ x(ie, {
|
|
258
265
|
size: 14,
|
|
259
266
|
className: "text-status-warning-text fill-current"
|
|
260
267
|
}),
|
|
@@ -262,65 +269,65 @@ function E() {
|
|
|
262
269
|
t.rating ?? 0
|
|
263
270
|
]
|
|
264
271
|
}),
|
|
265
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ S("span", {
|
|
266
273
|
className: "flex items-center gap-1",
|
|
267
274
|
children: [
|
|
268
|
-
/* @__PURE__ */
|
|
275
|
+
/* @__PURE__ */ x(ne, { size: 14 }),
|
|
269
276
|
" ",
|
|
270
277
|
t.type
|
|
271
278
|
]
|
|
272
279
|
}),
|
|
273
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ S("span", {
|
|
274
281
|
className: "flex items-center gap-1",
|
|
275
|
-
children: [/* @__PURE__ */
|
|
282
|
+
children: [/* @__PURE__ */ x(te, { size: 14 }), " Listed"]
|
|
276
283
|
})
|
|
277
284
|
]
|
|
278
285
|
})
|
|
279
286
|
]
|
|
280
|
-
}), /* @__PURE__ */
|
|
287
|
+
}), /* @__PURE__ */ S("div", {
|
|
281
288
|
className: "text-right shrink-0",
|
|
282
289
|
children: [
|
|
283
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ x("p", {
|
|
284
291
|
className: "text-sm text-text-secondary",
|
|
285
292
|
children: "Services"
|
|
286
293
|
}),
|
|
287
|
-
/* @__PURE__ */
|
|
294
|
+
/* @__PURE__ */ x("p", {
|
|
288
295
|
className: "text-lg font-bold",
|
|
289
296
|
children: r.length
|
|
290
297
|
}),
|
|
291
|
-
/* @__PURE__ */
|
|
298
|
+
/* @__PURE__ */ x("span", {
|
|
292
299
|
className: "mt-1 inline-flex items-center gap-1 text-xs text-primary",
|
|
293
|
-
children: n ? /* @__PURE__ */
|
|
300
|
+
children: n ? /* @__PURE__ */ S(b, { children: ["Hide ", /* @__PURE__ */ x(ee, { size: 14 })] }) : /* @__PURE__ */ S(b, { children: ["View ", /* @__PURE__ */ x(e, { size: 14 })] })
|
|
294
301
|
})
|
|
295
302
|
]
|
|
296
303
|
})]
|
|
297
304
|
})
|
|
298
305
|
})
|
|
299
|
-
}), n && /* @__PURE__ */
|
|
306
|
+
}), n && /* @__PURE__ */ S("div", {
|
|
300
307
|
className: "border-t border-border-seam px-6 py-4 space-y-3",
|
|
301
|
-
children: [/* @__PURE__ */
|
|
308
|
+
children: [/* @__PURE__ */ S("p", {
|
|
302
309
|
className: "text-sm font-medium text-text-secondary",
|
|
303
310
|
children: ["Offerings from ", t.name]
|
|
304
|
-
}), r.length === 0 ? /* @__PURE__ */
|
|
311
|
+
}), r.length === 0 ? /* @__PURE__ */ x("p", {
|
|
305
312
|
className: "text-sm text-text-secondary",
|
|
306
313
|
children: "This provider hasn't listed any offerings yet."
|
|
307
|
-
}) : r.map((e) => /* @__PURE__ */
|
|
314
|
+
}) : r.map((e) => /* @__PURE__ */ S("div", {
|
|
308
315
|
className: "flex items-center justify-between gap-3 rounded-lg border border-border-seam p-3",
|
|
309
|
-
children: [/* @__PURE__ */
|
|
316
|
+
children: [/* @__PURE__ */ S("div", {
|
|
310
317
|
className: "min-w-0",
|
|
311
|
-
children: [/* @__PURE__ */
|
|
318
|
+
children: [/* @__PURE__ */ x("p", {
|
|
312
319
|
className: "font-medium truncate",
|
|
313
320
|
children: e.name
|
|
314
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ x("p", {
|
|
315
322
|
className: "text-sm text-text-secondary truncate",
|
|
316
323
|
children: e.category ?? "general"
|
|
317
324
|
})]
|
|
318
|
-
}), /* @__PURE__ */
|
|
325
|
+
}), /* @__PURE__ */ S("div", {
|
|
319
326
|
className: "text-right shrink-0",
|
|
320
|
-
children: [/* @__PURE__ */
|
|
327
|
+
children: [/* @__PURE__ */ x("p", {
|
|
321
328
|
className: "font-bold",
|
|
322
|
-
children:
|
|
323
|
-
}), /* @__PURE__ */
|
|
329
|
+
children: g(e.price)
|
|
330
|
+
}), /* @__PURE__ */ x("p", {
|
|
324
331
|
className: "text-xs text-text-secondary",
|
|
325
332
|
children: e.currency
|
|
326
333
|
})]
|
|
@@ -328,9 +335,9 @@ function E() {
|
|
|
328
335
|
}, e.id))]
|
|
329
336
|
})] }, t.id);
|
|
330
337
|
}),
|
|
331
|
-
!F && !L && (M.length > 0 || z > 0) && /* @__PURE__ */
|
|
338
|
+
!F && !L && (M.length > 0 || z > 0) && /* @__PURE__ */ S("div", {
|
|
332
339
|
className: "flex flex-wrap items-center justify-between gap-3 pt-1",
|
|
333
|
-
children: [/* @__PURE__ */
|
|
340
|
+
children: [/* @__PURE__ */ S("span", {
|
|
334
341
|
className: "text-sm text-text-secondary",
|
|
335
342
|
children: [
|
|
336
343
|
"Showing ",
|
|
@@ -339,10 +346,10 @@ function E() {
|
|
|
339
346
|
" ",
|
|
340
347
|
z * w + M.length
|
|
341
348
|
]
|
|
342
|
-
}), /* @__PURE__ */
|
|
349
|
+
}), /* @__PURE__ */ S("div", {
|
|
343
350
|
className: "flex items-center gap-1",
|
|
344
351
|
children: [
|
|
345
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ x(s, {
|
|
346
353
|
variant: "outline",
|
|
347
354
|
size: "icon",
|
|
348
355
|
className: "h-8 w-8",
|
|
@@ -351,13 +358,13 @@ function E() {
|
|
|
351
358
|
J(null), B((e) => Math.max(0, e - 1));
|
|
352
359
|
},
|
|
353
360
|
disabled: z === 0,
|
|
354
|
-
children: /* @__PURE__ */
|
|
361
|
+
children: /* @__PURE__ */ x(t, { className: "h-4 w-4" })
|
|
355
362
|
}),
|
|
356
|
-
/* @__PURE__ */
|
|
363
|
+
/* @__PURE__ */ S("span", {
|
|
357
364
|
className: "px-3 text-sm",
|
|
358
365
|
children: ["Page ", z + 1]
|
|
359
366
|
}),
|
|
360
|
-
/* @__PURE__ */
|
|
367
|
+
/* @__PURE__ */ x(s, {
|
|
361
368
|
variant: "outline",
|
|
362
369
|
size: "icon",
|
|
363
370
|
className: "h-8 w-8",
|
|
@@ -365,51 +372,51 @@ function E() {
|
|
|
365
372
|
onClick: () => {
|
|
366
373
|
J(null), B((e) => e + 1);
|
|
367
374
|
},
|
|
368
|
-
disabled: !
|
|
369
|
-
children: /* @__PURE__ */
|
|
375
|
+
disabled: !xe,
|
|
376
|
+
children: /* @__PURE__ */ x(n, { className: "h-4 w-4" })
|
|
370
377
|
})
|
|
371
378
|
]
|
|
372
379
|
})]
|
|
373
380
|
})
|
|
374
381
|
]
|
|
375
|
-
}), /* @__PURE__ */
|
|
382
|
+
}), /* @__PURE__ */ S(fe, {
|
|
376
383
|
className: "space-y-4",
|
|
377
384
|
children: [
|
|
378
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ x("h3", {
|
|
379
386
|
className: "text-base font-semibold text-text-primary",
|
|
380
387
|
children: "Popular Services"
|
|
381
388
|
}),
|
|
382
|
-
Q.length === 0 && /* @__PURE__ */
|
|
389
|
+
Q.length === 0 && /* @__PURE__ */ x(C, {
|
|
383
390
|
illustration: P.trim() ? "empty-search" : "empty-generic",
|
|
384
391
|
title: P.trim() ? "No matching services" : "No services listed yet",
|
|
385
392
|
description: P.trim() ? "Adjust your search to discover service offerings." : "Service offerings from providers will be listed here."
|
|
386
393
|
}),
|
|
387
|
-
Q.map((e) => /* @__PURE__ */
|
|
394
|
+
Q.map((e) => /* @__PURE__ */ S(c, { children: [/* @__PURE__ */ x(oe, { children: /* @__PURE__ */ x(se, {
|
|
388
395
|
className: "text-base",
|
|
389
396
|
children: e.name
|
|
390
|
-
}) }), /* @__PURE__ */
|
|
391
|
-
/* @__PURE__ */
|
|
397
|
+
}) }), /* @__PURE__ */ S(l, { children: [
|
|
398
|
+
/* @__PURE__ */ x("p", {
|
|
392
399
|
className: "text-sm text-text-secondary mb-3",
|
|
393
400
|
children: e.description
|
|
394
401
|
}),
|
|
395
|
-
/* @__PURE__ */
|
|
402
|
+
/* @__PURE__ */ S("div", {
|
|
396
403
|
className: "flex flex-wrap gap-1 mb-3",
|
|
397
|
-
children: [/* @__PURE__ */
|
|
404
|
+
children: [/* @__PURE__ */ x(o, {
|
|
398
405
|
variant: "outline",
|
|
399
406
|
className: "text-xs",
|
|
400
407
|
children: e.category ?? "general"
|
|
401
|
-
}), /* @__PURE__ */
|
|
408
|
+
}), /* @__PURE__ */ x(o, {
|
|
402
409
|
variant: "outline",
|
|
403
410
|
className: "text-xs",
|
|
404
411
|
children: e.provider?.name ?? "provider"
|
|
405
412
|
})]
|
|
406
413
|
}),
|
|
407
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ S("div", {
|
|
408
415
|
className: "flex items-center justify-between",
|
|
409
|
-
children: [/* @__PURE__ */
|
|
416
|
+
children: [/* @__PURE__ */ x("span", {
|
|
410
417
|
className: "font-bold",
|
|
411
|
-
children:
|
|
412
|
-
}), /* @__PURE__ */
|
|
418
|
+
children: g(e.price)
|
|
419
|
+
}), /* @__PURE__ */ x("span", {
|
|
413
420
|
className: "text-sm text-text-secondary",
|
|
414
421
|
children: e.currency
|
|
415
422
|
})]
|
|
@@ -419,7 +426,19 @@ function E() {
|
|
|
419
426
|
})]
|
|
420
427
|
})
|
|
421
428
|
]
|
|
429
|
+
}) : /* @__PURE__ */ x(h, {
|
|
430
|
+
title: "Marketplace",
|
|
431
|
+
subtitle: "Find logistics service providers",
|
|
432
|
+
icon: /* @__PURE__ */ x(i, { size: 24 }),
|
|
433
|
+
children: /* @__PURE__ */ x(c, { children: /* @__PURE__ */ x(l, {
|
|
434
|
+
className: "p-0",
|
|
435
|
+
children: /* @__PURE__ */ x(C, {
|
|
436
|
+
illustration: "empty-people",
|
|
437
|
+
title: "Marketplace is coming soon",
|
|
438
|
+
description: "The collaborative logistics marketplace is not open yet. Check back after it launches to browse verified third-party service providers."
|
|
439
|
+
})
|
|
440
|
+
}) })
|
|
422
441
|
});
|
|
423
442
|
}
|
|
424
443
|
//#endregion
|
|
425
|
-
export {
|
|
444
|
+
export { T as default };
|