@burdenoff/microfe-movethewheels 2026.1031.3 → 2026.1031.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.
Files changed (58) hide show
  1. package/dist/MoveTheWheelsRoot.js +136 -127
  2. package/dist/MoveTheWheelsRoutes.js +140 -135
  3. package/dist/components/DocumentsCard.js +11 -11
  4. package/dist/components/ProofOfDeliveryCard.js +13 -13
  5. package/dist/components/ShipmentRiskDialog.js +24 -24
  6. package/dist/components/ShippingQuoteResults.js +46 -46
  7. package/dist/components/TrackingAlertList.js +17 -17
  8. package/dist/generated/tracking-quality-operations.d.ts +56 -0
  9. package/dist/hooks/useOrderDispatch.js +17 -17
  10. package/dist/movethewheels/pages/SettingsPage.d.ts +1 -0
  11. package/dist/movethewheels/providers/ModuleSettingsProvider.d.ts +17 -0
  12. package/dist/movethewheels/utils/formatters.d.ts +23 -3
  13. package/dist/movethewheels/utils/moduleSettings.d.ts +52 -0
  14. package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +11 -0
  15. package/dist/node_modules/lucide-react/dist/esm/icons/key-round.js +14 -0
  16. package/dist/node_modules/lucide-react/dist/esm/icons/plug.js +22 -0
  17. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +11 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +13 -0
  19. package/dist/pages/AnalyticsPage.js +27 -27
  20. package/dist/pages/CreateOrderPage.js +340 -317
  21. package/dist/pages/CustomerDetailsPage.js +246 -246
  22. package/dist/pages/CustomersPage.js +19 -19
  23. package/dist/pages/DashboardPage.js +24 -24
  24. package/dist/pages/DeliveryCapturePage.js +74 -74
  25. package/dist/pages/DriverDetailsPage.js +337 -337
  26. package/dist/pages/DriversPage.js +26 -26
  27. package/dist/pages/FinancePage.js +26 -26
  28. package/dist/pages/InventoryPage.js +28 -28
  29. package/dist/pages/LiveTrackingPage.js +108 -108
  30. package/dist/pages/MarketplacePage.js +44 -44
  31. package/dist/pages/OrderDetailsPage.js +306 -306
  32. package/dist/pages/OrdersListPage.js +27 -27
  33. package/dist/pages/ProductDetailsPage.js +89 -89
  34. package/dist/pages/ProductsPage.js +73 -73
  35. package/dist/pages/RouteDetailsPage.js +282 -285
  36. package/dist/pages/RoutesPage.js +78 -78
  37. package/dist/pages/SettingsPage.js +459 -0
  38. package/dist/pages/TrackingPage.js +41 -41
  39. package/dist/pages/VehicleDetailsPage.js +207 -207
  40. package/dist/pages/VehiclesPage.js +17 -16
  41. package/dist/pages/WarehouseDetailsPage.js +132 -132
  42. package/dist/providers/ModuleSettingsProvider.js +74 -0
  43. package/dist/utils/formatters.js +53 -26
  44. package/dist/utils/moduleSettings.js +132 -0
  45. package/package.json +3 -2
  46. package/src/generated/tracking-quality-operations.ts +62 -0
  47. package/src/movethewheels/MoveTheWheelsRoot.tsx +14 -3
  48. package/src/movethewheels/MoveTheWheelsRoutes.tsx +9 -0
  49. package/src/movethewheels/pages/CreateOrderPage.tsx +38 -6
  50. package/src/movethewheels/pages/ProductsPage.tsx +2 -2
  51. package/src/movethewheels/pages/RouteDetailsPage.tsx +3 -6
  52. package/src/movethewheels/pages/RoutesPage.tsx +2 -2
  53. package/src/movethewheels/pages/SettingsPage.tsx +516 -0
  54. package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -2
  55. package/src/movethewheels/pages/VehiclesPage.tsx +2 -1
  56. package/src/movethewheels/providers/ModuleSettingsProvider.tsx +133 -0
  57. package/src/movethewheels/utils/formatters.ts +69 -10
  58. package/src/movethewheels/utils/moduleSettings.ts +224 -0
@@ -0,0 +1,459 @@
1
+ import { Bell as e } from "../node_modules/lucide-react/dist/esm/icons/bell.js";
2
+ import { Building2 as t } from "../node_modules/lucide-react/dist/esm/icons/building-2.js";
3
+ import { ExternalLink as n } from "../node_modules/lucide-react/dist/esm/icons/external-link.js";
4
+ import { KeyRound as r } from "../node_modules/lucide-react/dist/esm/icons/key-round.js";
5
+ import { LoaderCircle as ee } from "../node_modules/lucide-react/dist/esm/icons/loader-circle.js";
6
+ import { Plug as i } from "../node_modules/lucide-react/dist/esm/icons/plug.js";
7
+ import { RotateCcw as a } from "../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js";
8
+ import { Save as te } from "../node_modules/lucide-react/dist/esm/icons/save.js";
9
+ import { Settings as o } from "../node_modules/lucide-react/dist/esm/icons/settings.js";
10
+ import { useMoveTheWheels as s } from "../providers/MoveTheWheelsProvider.js";
11
+ import { formatCurrency as c, formatDateTime as l, formatDistance as ne, formatWeight as re } from "../utils/formatters.js";
12
+ import { DISTANCE_UNIT_OPTIONS as u, ORDER_PRIORITY_OPTIONS as d, WEIGHT_UNIT_OPTIONS as f, browserTimeZone as p, changedSettings as m, currencyLabel as h, currencyOptions as ie, deliveryWindowError as ae, timeZoneOptions as oe } from "../utils/moduleSettings.js";
13
+ import { useModuleSettings as se } from "../providers/ModuleSettingsProvider.js";
14
+ import { Badge as ce, Button as g, Card as _, CardContent as v, CardDescription as y, CardHeader as b, CardTitle as x, Input as le, Label as S, Select as C, SelectContent as w, SelectItem as T, SelectTrigger as E, SelectValue as D, Skeleton as O } from "../components/ui.js";
15
+ import { PageLayout as ue } from "../components/PageLayout.js";
16
+ import { FormError as k } from "../components/FormError.js";
17
+ import { Notice as de, useNotice as fe } from "../components/Notice.js";
18
+ import { useEffect as pe, useMemo as A, useState as j } from "react";
19
+ import { jsx as M, jsxs as N } from "react/jsx-runtime";
20
+ import { EmphasisPanel as P, PagePurpose as F } from "@burdenoff/fe-libs/ui";
21
+ import { PermissionProvider as I, usePermissions as L } from "@burdenoff/fe-libs/shared/providers/shell";
22
+ //#region src/movethewheels/pages/SettingsPage.tsx
23
+ var R = "__viewer_local__";
24
+ function z(e) {
25
+ return {
26
+ defaultCurrency: e.defaultCurrency,
27
+ distanceUnit: e.distanceUnit,
28
+ weightUnit: e.weightUnit,
29
+ timezone: e.timezone ?? R,
30
+ defaultOrderPriority: e.defaultOrderPriority,
31
+ defaultDeliveryWindowHours: String(e.defaultDeliveryWindowHours)
32
+ };
33
+ }
34
+ var me = [
35
+ {
36
+ id: "company",
37
+ title: "Company profile",
38
+ description: "Organization name, address and workspace details",
39
+ path: "/organizations",
40
+ icon: t
41
+ },
42
+ {
43
+ id: "notifications",
44
+ title: "Notification preferences",
45
+ description: "Which alerts you receive and where",
46
+ path: "/notifications/preferences",
47
+ icon: e
48
+ },
49
+ {
50
+ id: "mfa",
51
+ title: "Two-factor authentication",
52
+ description: "Protect your sign-in with a second factor",
53
+ path: "/auth/mfa",
54
+ icon: r
55
+ },
56
+ {
57
+ id: "integrations",
58
+ title: "Integrations",
59
+ description: "Carrier, ERP and telematics connections",
60
+ path: "/integrations/overview",
61
+ icon: i
62
+ }
63
+ ];
64
+ function B() {
65
+ let { workspaceId: e } = s();
66
+ return /* @__PURE__ */ M(I, {
67
+ scopeId: e ?? null,
68
+ gateway: "workspace",
69
+ children: /* @__PURE__ */ M(V, {})
70
+ });
71
+ }
72
+ function V() {
73
+ let { navigate: e, workspaceId: t, currentUser: r } = s(), { settings: i, isLoaded: I, error: B, save: V, reload: he } = se(), H = L(), [U, W] = j(() => z(i)), [G, K] = j(!1), [ge, q] = j(null), { message: _e, notify: ve } = fe();
74
+ pe(() => {
75
+ W(z(i));
76
+ }, [i]);
77
+ let J = !!(t && r?.id && H.scopeId === t && !H.isLoading && !H.error) && !H.isSuperAdmin && !H.hasPermission("mtw-settings:update"), Y = ae(U.defaultDeliveryWindowHours), X = A(() => m(i, {
78
+ defaultCurrency: U.defaultCurrency,
79
+ distanceUnit: U.distanceUnit,
80
+ weightUnit: U.weightUnit,
81
+ timezone: U.timezone === R ? null : U.timezone,
82
+ defaultOrderPriority: U.defaultOrderPriority,
83
+ defaultDeliveryWindowHours: Y ? void 0 : Number(U.defaultDeliveryWindowHours)
84
+ }), [
85
+ i,
86
+ U,
87
+ Y
88
+ ]), Z = Object.keys(X).length > 0, Q = I && !J && !G && Z && !Y, ye = A(() => ie(U.defaultCurrency), [U.defaultCurrency]), be = A(() => oe(i.timezone), [i.timezone]), xe = A(() => p(), []), $ = (e, t) => {
89
+ q(null), W((n) => ({
90
+ ...n,
91
+ [e]: t
92
+ }));
93
+ }, Se = async (e) => {
94
+ if (e.preventDefault(), Q) {
95
+ K(!0), q(null);
96
+ try {
97
+ await V(X), ve("Settings saved. MoveTheWheels now uses these defaults everywhere.");
98
+ } catch (e) {
99
+ q(e instanceof Error ? e.message : "Could not save the settings");
100
+ } finally {
101
+ K(!1);
102
+ }
103
+ }
104
+ }, Ce = /* @__PURE__ */ new Date("2026-03-14T15:30:00Z");
105
+ return /* @__PURE__ */ N(ue, {
106
+ title: "Settings",
107
+ subtitle: "Workspace defaults for currency, units, time zone and new orders",
108
+ icon: /* @__PURE__ */ M(o, { size: 24 }),
109
+ maxWidth: "xl",
110
+ children: [
111
+ /* @__PURE__ */ M(F, {
112
+ icon: /* @__PURE__ */ M(o, { size: 18 }),
113
+ children: "Set how MoveTheWheels shows money, distances, weights and times for everyone in this workspace, and what new orders start with. Changes apply to every MoveTheWheels screen as soon as you save."
114
+ }),
115
+ B && /* @__PURE__ */ M(k, { message: `Could not load this workspace's settings (${B.message}). Showing the platform defaults.` }),
116
+ /* @__PURE__ */ M(de, { message: _e }),
117
+ /* @__PURE__ */ N("div", {
118
+ className: "grid grid-cols-1 gap-6 xl:grid-cols-3",
119
+ children: [/* @__PURE__ */ N(P, {
120
+ className: "space-y-6 xl:col-span-2",
121
+ children: [/* @__PURE__ */ N("div", {
122
+ className: "flex flex-wrap items-center justify-between gap-3",
123
+ children: [/* @__PURE__ */ M("h2", {
124
+ className: "text-base font-semibold text-text-primary",
125
+ children: "Operational defaults"
126
+ }), I && /* @__PURE__ */ M(ce, {
127
+ variant: i.isCustomized ? "default" : "outline",
128
+ children: i.isCustomized ? "Customized for this workspace" : "Platform defaults"
129
+ })]
130
+ }), I ? /* @__PURE__ */ N("form", {
131
+ className: "space-y-6",
132
+ onSubmit: (e) => void Se(e),
133
+ "aria-label": "MoveTheWheels settings",
134
+ children: [
135
+ J && /* @__PURE__ */ M("p", {
136
+ className: "rounded-lg border border-border-default bg-surface-secondary px-4 py-3 text-sm text-text-secondary",
137
+ children: "You can view these settings. Ask a workspace admin or the Logistics Director to change them."
138
+ }),
139
+ /* @__PURE__ */ N("fieldset", {
140
+ className: "space-y-4",
141
+ disabled: J || G,
142
+ children: [/* @__PURE__ */ M("legend", {
143
+ className: "text-sm font-semibold text-text-primary",
144
+ children: "Display"
145
+ }), /* @__PURE__ */ N("div", {
146
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2",
147
+ children: [
148
+ /* @__PURE__ */ N("div", {
149
+ className: "min-w-0 space-y-2",
150
+ children: [
151
+ /* @__PURE__ */ M(S, {
152
+ htmlFor: "mtw-settings-currency",
153
+ children: "Default currency"
154
+ }),
155
+ /* @__PURE__ */ N(C, {
156
+ value: U.defaultCurrency,
157
+ onValueChange: (e) => $("defaultCurrency", e),
158
+ disabled: J || G,
159
+ children: [/* @__PURE__ */ M(E, {
160
+ id: "mtw-settings-currency",
161
+ "aria-label": "Default currency",
162
+ children: /* @__PURE__ */ M(D, {})
163
+ }), /* @__PURE__ */ M(w, {
164
+ className: "max-h-72",
165
+ children: ye.map((e) => /* @__PURE__ */ M(T, {
166
+ value: e,
167
+ children: h(e)
168
+ }, e))
169
+ })]
170
+ }),
171
+ /* @__PURE__ */ M("p", {
172
+ className: "text-xs text-text-secondary",
173
+ children: "Used for order totals, revenue and costs that have no currency of their own."
174
+ })
175
+ ]
176
+ }),
177
+ /* @__PURE__ */ N("div", {
178
+ className: "min-w-0 space-y-2",
179
+ children: [
180
+ /* @__PURE__ */ M(S, {
181
+ htmlFor: "mtw-settings-timezone",
182
+ children: "Time zone"
183
+ }),
184
+ /* @__PURE__ */ N(C, {
185
+ value: U.timezone,
186
+ onValueChange: (e) => $("timezone", e),
187
+ disabled: J || G,
188
+ children: [/* @__PURE__ */ M(E, {
189
+ id: "mtw-settings-timezone",
190
+ "aria-label": "Time zone",
191
+ children: /* @__PURE__ */ M(D, {})
192
+ }), /* @__PURE__ */ N(w, {
193
+ className: "max-h-72",
194
+ children: [/* @__PURE__ */ M(T, {
195
+ value: R,
196
+ children: `Each viewer's local time (yours: ${xe})`
197
+ }), be.map((e) => /* @__PURE__ */ M(T, {
198
+ value: e,
199
+ children: e.replace(/_/g, " ")
200
+ }, e))]
201
+ })]
202
+ }),
203
+ /* @__PURE__ */ M("p", {
204
+ className: "text-xs text-text-secondary",
205
+ children: "Dates and times on every MoveTheWheels screen are shown in this zone."
206
+ })
207
+ ]
208
+ }),
209
+ /* @__PURE__ */ N("div", {
210
+ className: "min-w-0 space-y-2",
211
+ children: [/* @__PURE__ */ M(S, {
212
+ htmlFor: "mtw-settings-distance",
213
+ children: "Distance unit"
214
+ }), /* @__PURE__ */ N(C, {
215
+ value: U.distanceUnit,
216
+ onValueChange: (e) => {
217
+ let t = u.find((t) => t.value === e);
218
+ t && $("distanceUnit", t.value);
219
+ },
220
+ disabled: J || G,
221
+ children: [/* @__PURE__ */ M(E, {
222
+ id: "mtw-settings-distance",
223
+ "aria-label": "Distance unit",
224
+ children: /* @__PURE__ */ M(D, {})
225
+ }), /* @__PURE__ */ M(w, { children: u.map((e) => /* @__PURE__ */ M(T, {
226
+ value: e.value,
227
+ children: e.label
228
+ }, e.value)) })]
229
+ })]
230
+ }),
231
+ /* @__PURE__ */ N("div", {
232
+ className: "min-w-0 space-y-2",
233
+ children: [/* @__PURE__ */ M(S, {
234
+ htmlFor: "mtw-settings-weight",
235
+ children: "Weight unit"
236
+ }), /* @__PURE__ */ N(C, {
237
+ value: U.weightUnit,
238
+ onValueChange: (e) => {
239
+ let t = f.find((t) => t.value === e);
240
+ t && $("weightUnit", t.value);
241
+ },
242
+ disabled: J || G,
243
+ children: [/* @__PURE__ */ M(E, {
244
+ id: "mtw-settings-weight",
245
+ "aria-label": "Weight unit",
246
+ children: /* @__PURE__ */ M(D, {})
247
+ }), /* @__PURE__ */ M(w, { children: f.map((e) => /* @__PURE__ */ M(T, {
248
+ value: e.value,
249
+ children: e.label
250
+ }, e.value)) })]
251
+ })]
252
+ })
253
+ ]
254
+ })]
255
+ }),
256
+ /* @__PURE__ */ N("fieldset", {
257
+ className: "space-y-4",
258
+ disabled: J || G,
259
+ children: [/* @__PURE__ */ M("legend", {
260
+ className: "text-sm font-semibold text-text-primary",
261
+ children: "New orders"
262
+ }), /* @__PURE__ */ N("div", {
263
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2",
264
+ children: [/* @__PURE__ */ N("div", {
265
+ className: "min-w-0 space-y-2",
266
+ children: [
267
+ /* @__PURE__ */ M(S, {
268
+ htmlFor: "mtw-settings-priority",
269
+ children: "Default priority"
270
+ }),
271
+ /* @__PURE__ */ N(C, {
272
+ value: U.defaultOrderPriority,
273
+ onValueChange: (e) => {
274
+ let t = d.find((t) => t.value === e);
275
+ t && $("defaultOrderPriority", t.value);
276
+ },
277
+ disabled: J || G,
278
+ children: [/* @__PURE__ */ M(E, {
279
+ id: "mtw-settings-priority",
280
+ "aria-label": "Default priority",
281
+ children: /* @__PURE__ */ M(D, {})
282
+ }), /* @__PURE__ */ M(w, { children: d.map((e) => /* @__PURE__ */ M(T, {
283
+ value: e.value,
284
+ children: e.label
285
+ }, e.value)) })]
286
+ }),
287
+ /* @__PURE__ */ M("p", {
288
+ className: "text-xs text-text-secondary",
289
+ children: "New orders start with this priority."
290
+ })
291
+ ]
292
+ }), /* @__PURE__ */ N("div", {
293
+ className: "min-w-0 space-y-2",
294
+ children: [
295
+ /* @__PURE__ */ M(S, {
296
+ htmlFor: "mtw-settings-window",
297
+ children: "Default delivery window (hours)"
298
+ }),
299
+ /* @__PURE__ */ M(le, {
300
+ id: "mtw-settings-window",
301
+ type: "number",
302
+ inputMode: "numeric",
303
+ min: 1,
304
+ max: 720,
305
+ step: 1,
306
+ value: U.defaultDeliveryWindowHours,
307
+ "aria-invalid": Y ? !0 : void 0,
308
+ "aria-describedby": "mtw-settings-window-help",
309
+ onChange: (e) => $("defaultDeliveryWindowHours", e.target.value)
310
+ }),
311
+ /* @__PURE__ */ M("p", {
312
+ id: "mtw-settings-window-help",
313
+ className: Y ? "text-xs text-status-error-text" : "text-xs text-text-secondary",
314
+ children: Y ?? "The order form suggests a scheduled delivery this many hours ahead."
315
+ })
316
+ ]
317
+ })]
318
+ })]
319
+ }),
320
+ /* @__PURE__ */ M(k, { message: ge }),
321
+ /* @__PURE__ */ N("div", {
322
+ className: "flex flex-wrap items-center justify-end gap-3",
323
+ children: [/* @__PURE__ */ N(g, {
324
+ type: "button",
325
+ variant: "outline",
326
+ disabled: !Z || G,
327
+ onClick: () => {
328
+ q(null), W(z(i));
329
+ },
330
+ children: [/* @__PURE__ */ M(a, {
331
+ size: 16,
332
+ className: "mr-2"
333
+ }), " Discard changes"]
334
+ }), /* @__PURE__ */ N(g, {
335
+ type: "submit",
336
+ disabled: !Q,
337
+ children: [G ? /* @__PURE__ */ M(ee, {
338
+ size: 16,
339
+ className: "mr-2 animate-spin"
340
+ }) : /* @__PURE__ */ M(te, {
341
+ size: 16,
342
+ className: "mr-2"
343
+ }), "Save settings"]
344
+ })]
345
+ })
346
+ ]
347
+ }) : /* @__PURE__ */ N("div", {
348
+ className: "space-y-4",
349
+ "aria-busy": "true",
350
+ children: [
351
+ /* @__PURE__ */ M(O, { className: "h-10 w-full" }),
352
+ /* @__PURE__ */ M(O, { className: "h-10 w-full" }),
353
+ /* @__PURE__ */ M(O, { className: "h-10 w-full" })
354
+ ]
355
+ })]
356
+ }), /* @__PURE__ */ N("div", {
357
+ className: "space-y-6",
358
+ children: [/* @__PURE__ */ N(_, { children: [/* @__PURE__ */ N(b, { children: [/* @__PURE__ */ M(x, {
359
+ className: "text-base",
360
+ children: "How it looks now"
361
+ }), /* @__PURE__ */ M(y, { children: "Examples using the saved settings." })] }), /* @__PURE__ */ N(v, { children: [
362
+ /* @__PURE__ */ N("dl", {
363
+ className: "space-y-2 text-sm",
364
+ "data-testid": "mtw-settings-preview",
365
+ children: [
366
+ /* @__PURE__ */ N("div", {
367
+ className: "flex justify-between gap-4",
368
+ children: [/* @__PURE__ */ M("dt", {
369
+ className: "text-text-secondary",
370
+ children: "Amount"
371
+ }), /* @__PURE__ */ M("dd", {
372
+ className: "font-medium text-text-primary",
373
+ children: c(1234.5)
374
+ })]
375
+ }),
376
+ /* @__PURE__ */ N("div", {
377
+ className: "flex justify-between gap-4",
378
+ children: [/* @__PURE__ */ M("dt", {
379
+ className: "text-text-secondary",
380
+ children: "Distance"
381
+ }), /* @__PURE__ */ M("dd", {
382
+ className: "font-medium text-text-primary",
383
+ children: ne(42.2)
384
+ })]
385
+ }),
386
+ /* @__PURE__ */ N("div", {
387
+ className: "flex justify-between gap-4",
388
+ children: [/* @__PURE__ */ M("dt", {
389
+ className: "text-text-secondary",
390
+ children: "Weight"
391
+ }), /* @__PURE__ */ M("dd", {
392
+ className: "font-medium text-text-primary",
393
+ children: re(750)
394
+ })]
395
+ }),
396
+ /* @__PURE__ */ N("div", {
397
+ className: "flex justify-between gap-4",
398
+ children: [/* @__PURE__ */ M("dt", {
399
+ className: "text-text-secondary",
400
+ children: "Date and time"
401
+ }), /* @__PURE__ */ M("dd", {
402
+ className: "text-right font-medium text-text-primary",
403
+ children: l(Ce)
404
+ })]
405
+ })
406
+ ]
407
+ }),
408
+ i.updatedAt && /* @__PURE__ */ N("p", {
409
+ className: "mt-4 text-xs text-text-secondary",
410
+ children: ["Last saved ", l(i.updatedAt)]
411
+ }),
412
+ B && /* @__PURE__ */ M(g, {
413
+ variant: "outline",
414
+ size: "sm",
415
+ className: "mt-4",
416
+ onClick: he,
417
+ children: "Try loading again"
418
+ })
419
+ ] })] }), /* @__PURE__ */ N(_, { children: [/* @__PURE__ */ N(b, { children: [/* @__PURE__ */ M(x, {
420
+ className: "text-base",
421
+ children: "Other settings"
422
+ }), /* @__PURE__ */ M(y, { children: "These are managed by the platform for every product." })] }), /* @__PURE__ */ M(v, {
423
+ className: "space-y-2",
424
+ children: me.map((t) => {
425
+ let r = t.icon;
426
+ return /* @__PURE__ */ N("button", {
427
+ type: "button",
428
+ className: "flex w-full items-start gap-3 rounded-lg border border-border-default px-3 py-2 text-left transition-colors hover:bg-surface-secondary",
429
+ onClick: () => e(t.path),
430
+ children: [
431
+ /* @__PURE__ */ M(r, {
432
+ size: 18,
433
+ className: "mt-0.5 shrink-0 text-text-secondary"
434
+ }),
435
+ /* @__PURE__ */ N("span", {
436
+ className: "min-w-0 flex-1",
437
+ children: [/* @__PURE__ */ M("span", {
438
+ className: "block text-sm font-medium text-text-primary",
439
+ children: t.title
440
+ }), /* @__PURE__ */ M("span", {
441
+ className: "block text-xs text-text-secondary",
442
+ children: t.description
443
+ })]
444
+ }),
445
+ /* @__PURE__ */ M(n, {
446
+ size: 14,
447
+ className: "mt-1 shrink-0 text-text-tertiary"
448
+ })
449
+ ]
450
+ }, t.id);
451
+ })
452
+ })] })]
453
+ })]
454
+ })
455
+ ]
456
+ });
457
+ }
458
+ //#endregion
459
+ export { B as default };