@argusoft/medplat-product-management 1.0.0

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 (65) hide show
  1. package/dist/BrandsPage-DCMCVvDY.js +334 -0
  2. package/dist/BrandsPage-DCMCVvDY.js.map +1 -0
  3. package/dist/CategoriesPage-BpRhwfrc.js +284 -0
  4. package/dist/CategoriesPage-BpRhwfrc.js.map +1 -0
  5. package/dist/DashboardPage-BNKUQj46.js +436 -0
  6. package/dist/DashboardPage-BNKUQj46.js.map +1 -0
  7. package/dist/FacilityPicker-Coi8I3yE.js +79 -0
  8. package/dist/FacilityPicker-Coi8I3yE.js.map +1 -0
  9. package/dist/InventoryPage-BR6jOzg2.js +517 -0
  10. package/dist/InventoryPage-BR6jOzg2.js.map +1 -0
  11. package/dist/MemberProfileCard-DbHZCS5n.js +272 -0
  12. package/dist/MemberProfileCard-DbHZCS5n.js.map +1 -0
  13. package/dist/PaymentCreatePage-Ci3ERnby.js +487 -0
  14. package/dist/PaymentCreatePage-Ci3ERnby.js.map +1 -0
  15. package/dist/PaymentsPage-sdg902zX.js +157 -0
  16. package/dist/PaymentsPage-sdg902zX.js.map +1 -0
  17. package/dist/PickupCreatePage-CieMsgWV.js +310 -0
  18. package/dist/PickupCreatePage-CieMsgWV.js.map +1 -0
  19. package/dist/PickupsPage-Ci2Ll0Kn.js +566 -0
  20. package/dist/PickupsPage-Ci2Ll0Kn.js.map +1 -0
  21. package/dist/PmGuard-CjJBisaN.js +1195 -0
  22. package/dist/PmGuard-CjJBisaN.js.map +1 -0
  23. package/dist/PmTable-BuXZQZCU.js +302 -0
  24. package/dist/PmTable-BuXZQZCU.js.map +1 -0
  25. package/dist/ProductEditPage-DL8gy85Y.js +666 -0
  26. package/dist/ProductEditPage-DL8gy85Y.js.map +1 -0
  27. package/dist/ProductsPage-BANTKxLb.js +221 -0
  28. package/dist/ProductsPage-BANTKxLb.js.map +1 -0
  29. package/dist/PurchaseCreatePage-C3KMfBxJ.js +626 -0
  30. package/dist/PurchaseCreatePage-C3KMfBxJ.js.map +1 -0
  31. package/dist/PurchaseRequestDetailPage-C0GYFJDl.js +586 -0
  32. package/dist/PurchaseRequestDetailPage-C0GYFJDl.js.map +1 -0
  33. package/dist/PurchaseRequestsPage-DvFH_tWe.js +265 -0
  34. package/dist/PurchaseRequestsPage-DvFH_tWe.js.map +1 -0
  35. package/dist/PurchasesPage-BCvLvSp4.js +295 -0
  36. package/dist/PurchasesPage-BCvLvSp4.js.map +1 -0
  37. package/dist/SaleCreatePage-DpkQMoTq.js +548 -0
  38. package/dist/SaleCreatePage-DpkQMoTq.js.map +1 -0
  39. package/dist/SalesPage-DUwgkEO-.js +315 -0
  40. package/dist/SalesPage-DUwgkEO-.js.map +1 -0
  41. package/dist/SettingsPage-CusC0jqJ.js +710 -0
  42. package/dist/SettingsPage-CusC0jqJ.js.map +1 -0
  43. package/dist/StorageUnitsPage-BlC2AgrJ.js +469 -0
  44. package/dist/StorageUnitsPage-BlC2AgrJ.js.map +1 -0
  45. package/dist/TransactionsPage-DDaK4VyY.js +714 -0
  46. package/dist/TransactionsPage-DDaK4VyY.js.map +1 -0
  47. package/dist/TransferCreatePage-BxudLfhS.js +363 -0
  48. package/dist/TransferCreatePage-BxudLfhS.js.map +1 -0
  49. package/dist/TransfersPage-zgmt7teZ.js +480 -0
  50. package/dist/TransfersPage-zgmt7teZ.js.map +1 -0
  51. package/dist/VialsPage-CjqPfgpV.js +855 -0
  52. package/dist/VialsPage-CjqPfgpV.js.map +1 -0
  53. package/dist/constants-BrA_hfAI.js +254 -0
  54. package/dist/constants-BrA_hfAI.js.map +1 -0
  55. package/dist/currency-BDDCDgeE.js +169 -0
  56. package/dist/currency-BDDCDgeE.js.map +1 -0
  57. package/dist/format-UOyOu75i.js +52 -0
  58. package/dist/format-UOyOu75i.js.map +1 -0
  59. package/dist/index.js +45 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/useFieldErrors-hDG8ox_x.js +29 -0
  62. package/dist/useFieldErrors-hDG8ox_x.js.map +1 -0
  63. package/dist/validation-Ba7puFIO.js +109 -0
  64. package/dist/validation-Ba7puFIO.js.map +1 -0
  65. package/package.json +36 -0
@@ -0,0 +1,1195 @@
1
+ import { useEffect as e, useMemo as t, useState as n } from "react";
2
+ import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { Alert as o, Box as s, Button as c, Chip as l, Fade as u, LinearProgress as d, Stack as f, Tab as p, Tabs as m, Typography as h } from "@mui/material";
4
+ import g from "@mui/icons-material/SellRounded";
5
+ import _ from "prop-types";
6
+ import { useLocation as v, useNavigate as y } from "react-router-dom";
7
+ import { alpha as b, useTheme as x } from "@mui/material/styles";
8
+ import S from "@mui/icons-material/SpaceDashboardRounded";
9
+ import C from "@mui/icons-material/SettingsRounded";
10
+ import w from "@mui/icons-material/LayersRounded";
11
+ import T from "@mui/icons-material/CategoryRounded";
12
+ import E from "@mui/icons-material/Inventory2Rounded";
13
+ import D from "@mui/icons-material/WarehouseRounded";
14
+ import ee from "@mui/icons-material/LocalShippingRounded";
15
+ import te from "@mui/icons-material/WidgetsRounded";
16
+ import ne from "@mui/icons-material/ShoppingCartRounded";
17
+ import re from "@mui/icons-material/FactCheckRounded";
18
+ import ie from "@mui/icons-material/MoveDownRounded";
19
+ import ae from "@mui/icons-material/SwapHorizRounded";
20
+ import oe from "@mui/icons-material/PointOfSaleRounded";
21
+ import se from "@mui/icons-material/VaccinesRounded";
22
+ import ce from "@mui/icons-material/PaymentsRounded";
23
+ import O from "@mui/icons-material/ReceiptLongRounded";
24
+ import { api as k } from "@/common/interceptors/AxiosInterceptor";
25
+ import { execute as le } from "@/common/services/QueryBuilder.js";
26
+ import { useSelector as A } from "react-redux";
27
+ import ue from "@mui/icons-material/LockOutlined";
28
+ //#region src/utils/workspaces.js
29
+ var j = {
30
+ id: "dashboard",
31
+ label: "Dashboard",
32
+ path: "/ui/medplat/manage/pm",
33
+ icon: S,
34
+ accent: "#6366f1",
35
+ accentDark: "#4338ca",
36
+ permissionId: "view.manage.productManagement"
37
+ }, M = {
38
+ id: "settings",
39
+ label: "Settings",
40
+ path: "/ui/medplat/manage/pm/settings",
41
+ icon: C,
42
+ accent: "#64748b",
43
+ accentDark: "#334155",
44
+ permissionId: "view.manage.productManagement.settings"
45
+ }, N = [
46
+ {
47
+ id: "catalog",
48
+ label: "Catalog",
49
+ description: "Define what you sell and where you keep it. Master data — configured once, used everywhere.",
50
+ icon: w,
51
+ accent: "#8b5cf6",
52
+ accentDark: "#6d28d9",
53
+ accentSoft: "#ede9fe",
54
+ items: [
55
+ {
56
+ id: "categories",
57
+ label: "Categories",
58
+ path: "/ui/medplat/manage/pm/categories",
59
+ icon: T,
60
+ permissionId: "view.manage.productManagement.category"
61
+ },
62
+ {
63
+ id: "brands",
64
+ label: "Brands",
65
+ path: "/ui/medplat/manage/pm/brands",
66
+ icon: g,
67
+ permissionId: "view.manage.productManagement.brand"
68
+ },
69
+ {
70
+ id: "products",
71
+ label: "Products",
72
+ path: "/ui/medplat/manage/pm/products",
73
+ icon: E,
74
+ permissionId: "view.manage.productManagement.product"
75
+ },
76
+ {
77
+ id: "storage",
78
+ label: "Storage Units",
79
+ path: "/ui/medplat/manage/pm/storage-units",
80
+ icon: D,
81
+ permissionId: "view.manage.productManagement.storageUnit"
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ id: "operations",
87
+ label: "Operations",
88
+ description: "Run the day — receive stock, sell to customers, administer vaccines, collect payments.",
89
+ icon: ee,
90
+ accent: "#10b981",
91
+ accentDark: "#047857",
92
+ accentSoft: "#d1fae5",
93
+ items: [
94
+ {
95
+ id: "purchase-requests",
96
+ label: "Purchase Requests",
97
+ path: "/ui/medplat/manage/pm/purchase-requests",
98
+ icon: re,
99
+ anyOfPermissionIds: ["view.manage.productManagement.purchase", "approve.manage.productManagement.purchase"],
100
+ purchaseApprovalGroup: !0
101
+ },
102
+ {
103
+ id: "purchases",
104
+ label: "Purchases",
105
+ path: "/ui/medplat/manage/pm/purchases",
106
+ icon: ne,
107
+ permissionId: "view.manage.productManagement.purchase",
108
+ hiddenWhenConfirmationOn: !0
109
+ },
110
+ {
111
+ id: "inventory",
112
+ label: "Inventory",
113
+ path: "/ui/medplat/manage/pm/inventory",
114
+ icon: te,
115
+ permissionId: "view.manage.productManagement.inventory"
116
+ },
117
+ {
118
+ id: "pickups",
119
+ label: "Pickups",
120
+ path: "/ui/medplat/manage/pm/pickups",
121
+ icon: ie,
122
+ permissionId: "view.manage.productManagement.pickup"
123
+ },
124
+ {
125
+ id: "transfers",
126
+ label: "Transfers",
127
+ path: "/ui/medplat/manage/pm/transfers",
128
+ icon: ae,
129
+ permissionId: "view.manage.productManagement.transfer"
130
+ },
131
+ {
132
+ id: "sales",
133
+ label: "Sales",
134
+ path: "/ui/medplat/manage/pm/sales",
135
+ icon: oe,
136
+ permissionId: "view.manage.productManagement.sale",
137
+ salesGroup: !0
138
+ },
139
+ {
140
+ id: "vials",
141
+ label: "Vial",
142
+ path: "/ui/medplat/manage/pm/vials",
143
+ icon: se,
144
+ permissionId: "view.manage.productManagement.vial"
145
+ },
146
+ {
147
+ id: "payments",
148
+ label: "Payments",
149
+ path: "/ui/medplat/manage/pm/payments",
150
+ icon: ce,
151
+ permissionId: "view.manage.productManagement.payment",
152
+ salesGroup: !0
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ id: "ledger",
158
+ label: "Ledger",
159
+ description: "Every stock and money movement, append-only, with full lot / volume / monetary detail.",
160
+ icon: O,
161
+ accent: "#f59e0b",
162
+ accentDark: "#b45309",
163
+ accentSoft: "#fef3c7",
164
+ items: [{
165
+ id: "transactions",
166
+ label: "Transactions",
167
+ path: "/ui/medplat/manage/pm/transactions",
168
+ icon: O,
169
+ permissionId: "view.manage.productManagement.ledger"
170
+ }]
171
+ }
172
+ ];
173
+ function P(e, t) {
174
+ let n = t?.manageSales !== !1, r = t?.requirePurchaseConfirmation === !0;
175
+ return N.map((t) => ({
176
+ ...t,
177
+ items: t.items.filter((t) => (t.anyOfPermissionIds ? !!e?.hasAny?.(t.anyOfPermissionIds) : !!e?.has?.(t.permissionId)) && (n || !t.salesGroup) && (r || !t.purchaseApprovalGroup) && (!r || !t.hiddenWhenConfirmationOn))
178
+ })).filter((e) => e.items.length > 0);
179
+ }
180
+ function de(e) {
181
+ if (!e) return null;
182
+ for (let t of N) if (t.items.some((t) => e.startsWith(t.path))) return t;
183
+ return null;
184
+ }
185
+ function fe(e) {
186
+ if (!e) return null;
187
+ for (let t of N) {
188
+ let n = t.items.find((t) => e.startsWith(t.path));
189
+ if (n) return {
190
+ workspace: t,
191
+ item: n
192
+ };
193
+ }
194
+ return null;
195
+ }
196
+ //#endregion
197
+ //#region src/services/pmApi.js
198
+ var F = "/pm";
199
+ async function I() {
200
+ return (await k.get(`${F}/settings`)).data;
201
+ }
202
+ async function L(e) {
203
+ return (await k.put(`${F}/settings`, e)).data;
204
+ }
205
+ async function R() {
206
+ return (await k.get(`${F}/settings/tables`)).data ?? [];
207
+ }
208
+ async function z(e) {
209
+ return (await k.get(`${F}/settings/tables/${encodeURIComponent(e)}/uuid-columns`)).data ?? [];
210
+ }
211
+ async function B(e) {
212
+ return (await k.get(`${F}/settings/tables/${encodeURIComponent(e)}/text-columns`)).data ?? [];
213
+ }
214
+ async function V(e) {
215
+ return (await k.get(`${F}/settings/tables/${encodeURIComponent(e)}/date-columns`)).data ?? [];
216
+ }
217
+ async function pe() {
218
+ return ((await le({
219
+ code: "FETCH_IMMUNISATION_MASTER",
220
+ parameters: {}
221
+ }, { showLoader: !1 }))?.data?.result ?? []).map((e) => ({
222
+ id: e.id,
223
+ vaccineCode: e.vaccine_code,
224
+ vaccineName: e.vaccine_name
225
+ }));
226
+ }
227
+ async function me(e) {
228
+ return (await k.get(`${F}/categories`, { params: e ? { lastModifiedDate: e } : {} })).data ?? [];
229
+ }
230
+ async function he(e) {
231
+ return (await k.post(`${F}/categories`, e)).data;
232
+ }
233
+ async function ge(e) {
234
+ return (await k.get(`${F}/brands`, { params: e ? { lastModifiedDate: e } : {} })).data ?? [];
235
+ }
236
+ async function _e(e) {
237
+ return (await k.post(`${F}/brands`, e)).data;
238
+ }
239
+ async function ve(e) {
240
+ return (await k.get(`${F}/products`, { params: e ? { lastModifiedDate: e } : {} })).data ?? [];
241
+ }
242
+ async function ye(e) {
243
+ return (await k.get(`${F}/products/${e}`)).data;
244
+ }
245
+ async function be(e) {
246
+ return (await k.post(`${F}/products`, e)).data;
247
+ }
248
+ async function xe({ facilityId: e, activeOnly: t = !1 } = {}) {
249
+ let n = { activeOnly: t };
250
+ return e && (n.facilityId = e), (await k.get(`${F}/storage-units`, { params: n })).data ?? [];
251
+ }
252
+ async function Se(e) {
253
+ return (await k.post(`${F}/storage-units`, e)).data;
254
+ }
255
+ async function Ce() {
256
+ return (await k.get(`${F}/facilities`)).data ?? [];
257
+ }
258
+ async function we(e) {
259
+ let t = (e ?? []).filter(Boolean);
260
+ return t.length === 0 ? [] : (await k.get(`${F}/facilities/by-ids`, { params: { ids: t.join(",") } })).data ?? [];
261
+ }
262
+ async function Te(e) {
263
+ if (!e) return null;
264
+ try {
265
+ return (await k.get(`${F}/members/${e}`)).data ?? null;
266
+ } catch (e) {
267
+ if (e?.response?.status === 404) return null;
268
+ throw e;
269
+ }
270
+ }
271
+ async function Ee(e) {
272
+ let t = (e ?? []).filter(Boolean);
273
+ return t.length === 0 ? [] : (await k.get(`${F}/members/by-ids`, { params: { ids: t.join(",") } })).data ?? [];
274
+ }
275
+ async function De() {
276
+ return (await k.get(`${F}/inventory/dues/by-member`)).data ?? [];
277
+ }
278
+ async function Oe(e) {
279
+ return (await k.get(`${F}/inventory/dues/by-member/${e}`)).data;
280
+ }
281
+ async function ke() {
282
+ return (await k.get(`${F}/inventory/batches`)).data ?? [];
283
+ }
284
+ async function Ae() {
285
+ return (await k.get(`${F}/inventory/vials/open`)).data ?? [];
286
+ }
287
+ async function je(e) {
288
+ return (await k.get(`${F}/inventory/vials/by-product/${e}`)).data ?? [];
289
+ }
290
+ async function Me(e = 0, t = 25) {
291
+ return (await k.get(`${F}/inventory/purchases`, { params: {
292
+ page: e,
293
+ size: t
294
+ } })).data ?? [];
295
+ }
296
+ async function Ne(e = 0, t = 25) {
297
+ return (await k.get(`${F}/inventory/sales`, { params: {
298
+ page: e,
299
+ size: t
300
+ } })).data ?? [];
301
+ }
302
+ async function Pe(e = 0, t = 25) {
303
+ return (await k.get(`${F}/inventory/payments`, { params: {
304
+ page: e,
305
+ size: t
306
+ } })).data ?? [];
307
+ }
308
+ async function Fe(e = 0, t = 50) {
309
+ return (await k.get(`${F}/inventory/transactions`, { params: {
310
+ page: e,
311
+ size: t
312
+ } })).data?.content ?? [];
313
+ }
314
+ async function Ie(e = {}) {
315
+ let { types: t, ...n } = e;
316
+ return (await k.get(`${F}/inventory/transactions`, {
317
+ params: {
318
+ ...n,
319
+ types: Array.isArray(t) ? t : void 0
320
+ },
321
+ paramsSerializer: { serialize: (e) => {
322
+ let t = new URLSearchParams();
323
+ return Object.entries(e).forEach(([e, n]) => {
324
+ n == null || n === "" || (Array.isArray(n) ? n.forEach((n) => t.append(e, n)) : t.append(e, n));
325
+ }), t.toString();
326
+ } }
327
+ })).data ?? {
328
+ content: [],
329
+ totalElements: 0,
330
+ totalPages: 0,
331
+ page: 0,
332
+ size: 50
333
+ };
334
+ }
335
+ async function Le(e) {
336
+ return (await k.post(`${F}/inventory/purchase`, e)).data;
337
+ }
338
+ async function H(e) {
339
+ return (await k.post(`${F}/inventory/transfer`, e)).data;
340
+ }
341
+ async function Re(e, t) {
342
+ return (await k.post(`${F}/inventory/transfer/${e}/confirm`, t ?? {})).data;
343
+ }
344
+ async function ze(e, t) {
345
+ return (await k.post(`${F}/inventory/transfer/${e}/cancel`, t ?? {})).data;
346
+ }
347
+ async function Be() {
348
+ return (await k.get(`${F}/inventory/transfers`)).data ?? [];
349
+ }
350
+ async function Ve(e) {
351
+ return (await k.post(`${F}/inventory/pickup`, e)).data;
352
+ }
353
+ async function He(e, t) {
354
+ return (await k.post(`${F}/inventory/pickup/${e}/return`, t)).data;
355
+ }
356
+ async function Ue(e, t) {
357
+ return (await k.post(`${F}/inventory/pickup/${e}/topup`, t)).data;
358
+ }
359
+ async function We() {
360
+ return (await k.get(`${F}/inventory/pickups`)).data ?? [];
361
+ }
362
+ async function Ge() {
363
+ return (await k.get(`${F}/inventory/pickups/mine/open`)).data ?? [];
364
+ }
365
+ async function Ke(e) {
366
+ return (await k.post(`${F}/inventory/purchase-request`, e)).data;
367
+ }
368
+ async function qe() {
369
+ return (await k.get(`${F}/inventory/purchase-requests/mine`)).data ?? [];
370
+ }
371
+ async function Je() {
372
+ return (await k.get(`${F}/inventory/purchase-requests/pending`)).data ?? [];
373
+ }
374
+ async function Ye(e) {
375
+ return (await k.get(`${F}/inventory/purchase-requests/${e}`)).data;
376
+ }
377
+ async function Xe(e, t) {
378
+ return (await k.post(`${F}/inventory/purchase-request/${e}/decision`, t)).data;
379
+ }
380
+ async function Ze(e) {
381
+ return (await k.post(`${F}/inventory/purchase-request/${e}/cancel`)).data;
382
+ }
383
+ async function Qe(e) {
384
+ return (await k.post(`${F}/inventory/sale`, e)).data;
385
+ }
386
+ async function $e(e) {
387
+ return (await k.post(`${F}/inventory/payment`, e)).data;
388
+ }
389
+ async function et(e) {
390
+ return (await k.post(`${F}/inventory/vial/administer`, e)).data;
391
+ }
392
+ async function tt(e) {
393
+ return (await k.post(`${F}/inventory/vial/close`, e)).data;
394
+ }
395
+ async function nt(e) {
396
+ return (await k.post(`${F}/inventory/batch/quarantine`, e)).data;
397
+ }
398
+ async function rt(e) {
399
+ return (await k.post(`${F}/inventory/batch/unquarantine`, e)).data;
400
+ }
401
+ //#endregion
402
+ //#region src/utils/countries.js
403
+ var U = [
404
+ {
405
+ code: "IN",
406
+ name: "India",
407
+ currencyCode: "INR",
408
+ currencySymbol: "₹",
409
+ phoneCode: "+91",
410
+ phoneMin: 10,
411
+ phoneMax: 10
412
+ },
413
+ {
414
+ code: "JM",
415
+ name: "Jamaica",
416
+ currencyCode: "JMD",
417
+ currencySymbol: "J$",
418
+ phoneCode: "+1",
419
+ phoneMin: 10,
420
+ phoneMax: 10
421
+ },
422
+ {
423
+ code: "US",
424
+ name: "United States",
425
+ currencyCode: "USD",
426
+ currencySymbol: "$",
427
+ phoneCode: "+1",
428
+ phoneMin: 10,
429
+ phoneMax: 10
430
+ },
431
+ {
432
+ code: "CA",
433
+ name: "Canada",
434
+ currencyCode: "CAD",
435
+ currencySymbol: "C$",
436
+ phoneCode: "+1",
437
+ phoneMin: 10,
438
+ phoneMax: 10
439
+ },
440
+ {
441
+ code: "GB",
442
+ name: "United Kingdom",
443
+ currencyCode: "GBP",
444
+ currencySymbol: "£",
445
+ phoneCode: "+44",
446
+ phoneMin: 10,
447
+ phoneMax: 10
448
+ },
449
+ {
450
+ code: "AU",
451
+ name: "Australia",
452
+ currencyCode: "AUD",
453
+ currencySymbol: "A$",
454
+ phoneCode: "+61",
455
+ phoneMin: 9,
456
+ phoneMax: 9
457
+ },
458
+ {
459
+ code: "NZ",
460
+ name: "New Zealand",
461
+ currencyCode: "NZD",
462
+ currencySymbol: "NZ$",
463
+ phoneCode: "+64",
464
+ phoneMin: 8,
465
+ phoneMax: 10
466
+ },
467
+ {
468
+ code: "SG",
469
+ name: "Singapore",
470
+ currencyCode: "SGD",
471
+ currencySymbol: "S$",
472
+ phoneCode: "+65",
473
+ phoneMin: 8,
474
+ phoneMax: 8
475
+ },
476
+ {
477
+ code: "HK",
478
+ name: "Hong Kong",
479
+ currencyCode: "HKD",
480
+ currencySymbol: "HK$",
481
+ phoneCode: "+852",
482
+ phoneMin: 8,
483
+ phoneMax: 8
484
+ },
485
+ {
486
+ code: "MY",
487
+ name: "Malaysia",
488
+ currencyCode: "MYR",
489
+ currencySymbol: "RM",
490
+ phoneCode: "+60",
491
+ phoneMin: 9,
492
+ phoneMax: 10
493
+ },
494
+ {
495
+ code: "TH",
496
+ name: "Thailand",
497
+ currencyCode: "THB",
498
+ currencySymbol: "฿",
499
+ phoneCode: "+66",
500
+ phoneMin: 9,
501
+ phoneMax: 9
502
+ },
503
+ {
504
+ code: "VN",
505
+ name: "Vietnam",
506
+ currencyCode: "VND",
507
+ currencySymbol: "₫",
508
+ phoneCode: "+84",
509
+ phoneMin: 9,
510
+ phoneMax: 10
511
+ },
512
+ {
513
+ code: "PH",
514
+ name: "Philippines",
515
+ currencyCode: "PHP",
516
+ currencySymbol: "₱",
517
+ phoneCode: "+63",
518
+ phoneMin: 10,
519
+ phoneMax: 10
520
+ },
521
+ {
522
+ code: "ID",
523
+ name: "Indonesia",
524
+ currencyCode: "IDR",
525
+ currencySymbol: "Rp",
526
+ phoneCode: "+62",
527
+ phoneMin: 9,
528
+ phoneMax: 12
529
+ },
530
+ {
531
+ code: "CN",
532
+ name: "China",
533
+ currencyCode: "CNY",
534
+ currencySymbol: "¥",
535
+ phoneCode: "+86",
536
+ phoneMin: 11,
537
+ phoneMax: 11
538
+ },
539
+ {
540
+ code: "JP",
541
+ name: "Japan",
542
+ currencyCode: "JPY",
543
+ currencySymbol: "¥",
544
+ phoneCode: "+81",
545
+ phoneMin: 10,
546
+ phoneMax: 11
547
+ },
548
+ {
549
+ code: "KR",
550
+ name: "South Korea",
551
+ currencyCode: "KRW",
552
+ currencySymbol: "₩",
553
+ phoneCode: "+82",
554
+ phoneMin: 9,
555
+ phoneMax: 11
556
+ },
557
+ {
558
+ code: "PK",
559
+ name: "Pakistan",
560
+ currencyCode: "PKR",
561
+ currencySymbol: "₨",
562
+ phoneCode: "+92",
563
+ phoneMin: 10,
564
+ phoneMax: 10
565
+ },
566
+ {
567
+ code: "BD",
568
+ name: "Bangladesh",
569
+ currencyCode: "BDT",
570
+ currencySymbol: "৳",
571
+ phoneCode: "+880",
572
+ phoneMin: 10,
573
+ phoneMax: 10
574
+ },
575
+ {
576
+ code: "LK",
577
+ name: "Sri Lanka",
578
+ currencyCode: "LKR",
579
+ currencySymbol: "₨",
580
+ phoneCode: "+94",
581
+ phoneMin: 9,
582
+ phoneMax: 9
583
+ },
584
+ {
585
+ code: "NP",
586
+ name: "Nepal",
587
+ currencyCode: "NPR",
588
+ currencySymbol: "₨",
589
+ phoneCode: "+977",
590
+ phoneMin: 10,
591
+ phoneMax: 10
592
+ },
593
+ {
594
+ code: "AE",
595
+ name: "United Arab Emirates",
596
+ currencyCode: "AED",
597
+ currencySymbol: "د.إ",
598
+ phoneCode: "+971",
599
+ phoneMin: 9,
600
+ phoneMax: 9
601
+ },
602
+ {
603
+ code: "SA",
604
+ name: "Saudi Arabia",
605
+ currencyCode: "SAR",
606
+ currencySymbol: "﷼",
607
+ phoneCode: "+966",
608
+ phoneMin: 9,
609
+ phoneMax: 9
610
+ },
611
+ {
612
+ code: "EG",
613
+ name: "Egypt",
614
+ currencyCode: "EGP",
615
+ currencySymbol: "E£",
616
+ phoneCode: "+20",
617
+ phoneMin: 10,
618
+ phoneMax: 10
619
+ },
620
+ {
621
+ code: "NG",
622
+ name: "Nigeria",
623
+ currencyCode: "NGN",
624
+ currencySymbol: "₦",
625
+ phoneCode: "+234",
626
+ phoneMin: 10,
627
+ phoneMax: 10
628
+ },
629
+ {
630
+ code: "KE",
631
+ name: "Kenya",
632
+ currencyCode: "KES",
633
+ currencySymbol: "KSh",
634
+ phoneCode: "+254",
635
+ phoneMin: 9,
636
+ phoneMax: 10
637
+ },
638
+ {
639
+ code: "GH",
640
+ name: "Ghana",
641
+ currencyCode: "GHS",
642
+ currencySymbol: "GH₵",
643
+ phoneCode: "+233",
644
+ phoneMin: 9,
645
+ phoneMax: 10
646
+ },
647
+ {
648
+ code: "ZA",
649
+ name: "South Africa",
650
+ currencyCode: "ZAR",
651
+ currencySymbol: "R",
652
+ phoneCode: "+27",
653
+ phoneMin: 9,
654
+ phoneMax: 9
655
+ },
656
+ {
657
+ code: "BR",
658
+ name: "Brazil",
659
+ currencyCode: "BRL",
660
+ currencySymbol: "R$",
661
+ phoneCode: "+55",
662
+ phoneMin: 10,
663
+ phoneMax: 11
664
+ },
665
+ {
666
+ code: "MX",
667
+ name: "Mexico",
668
+ currencyCode: "MXN",
669
+ currencySymbol: "MX$",
670
+ phoneCode: "+52",
671
+ phoneMin: 10,
672
+ phoneMax: 10
673
+ },
674
+ {
675
+ code: "AR",
676
+ name: "Argentina",
677
+ currencyCode: "ARS",
678
+ currencySymbol: "$",
679
+ phoneCode: "+54",
680
+ phoneMin: 10,
681
+ phoneMax: 11
682
+ },
683
+ {
684
+ code: "DE",
685
+ name: "Germany",
686
+ currencyCode: "EUR",
687
+ currencySymbol: "€",
688
+ phoneCode: "+49",
689
+ phoneMin: 10,
690
+ phoneMax: 11
691
+ },
692
+ {
693
+ code: "FR",
694
+ name: "France",
695
+ currencyCode: "EUR",
696
+ currencySymbol: "€",
697
+ phoneCode: "+33",
698
+ phoneMin: 9,
699
+ phoneMax: 9
700
+ },
701
+ {
702
+ code: "IT",
703
+ name: "Italy",
704
+ currencyCode: "EUR",
705
+ currencySymbol: "€",
706
+ phoneCode: "+39",
707
+ phoneMin: 9,
708
+ phoneMax: 10
709
+ },
710
+ {
711
+ code: "ES",
712
+ name: "Spain",
713
+ currencyCode: "EUR",
714
+ currencySymbol: "€",
715
+ phoneCode: "+34",
716
+ phoneMin: 9,
717
+ phoneMax: 9
718
+ },
719
+ {
720
+ code: "NL",
721
+ name: "Netherlands",
722
+ currencyCode: "EUR",
723
+ currencySymbol: "€",
724
+ phoneCode: "+31",
725
+ phoneMin: 9,
726
+ phoneMax: 9
727
+ },
728
+ {
729
+ code: "CH",
730
+ name: "Switzerland",
731
+ currencyCode: "CHF",
732
+ currencySymbol: "Fr",
733
+ phoneCode: "+41",
734
+ phoneMin: 9,
735
+ phoneMax: 9
736
+ },
737
+ {
738
+ code: "TR",
739
+ name: "Turkey",
740
+ currencyCode: "TRY",
741
+ currencySymbol: "₺",
742
+ phoneCode: "+90",
743
+ phoneMin: 10,
744
+ phoneMax: 10
745
+ },
746
+ {
747
+ code: "RU",
748
+ name: "Russia",
749
+ currencyCode: "RUB",
750
+ currencySymbol: "₽",
751
+ phoneCode: "+7",
752
+ phoneMin: 10,
753
+ phoneMax: 10
754
+ }
755
+ ], it = Object.fromEntries(U.map((e) => [e.code, e]));
756
+ function W(e) {
757
+ return e ? it[e] ?? null : null;
758
+ }
759
+ function at(e) {
760
+ return W(e)?.currencyCode ?? "INR";
761
+ }
762
+ function ot(e, t) {
763
+ if (!e) return "";
764
+ let n = String(e).replace(/\D/g, "");
765
+ return t ? n.length < t.phoneMin || n.length > t.phoneMax ? `Phone must be ${t.phoneMin === t.phoneMax ? `${t.phoneMin} digits` : `${t.phoneMin}–${t.phoneMax} digits`} for ${t.name}.` : "" : n.length < 6 || n.length > 15 ? "Phone number looks invalid." : "";
766
+ }
767
+ //#endregion
768
+ //#region src/utils/settingsStore.js
769
+ var st = {
770
+ memberTableName: null,
771
+ memberIdColumn: null,
772
+ memberIdentifierColumn: null,
773
+ memberFamilyIdColumn: null,
774
+ memberNameColumn: null,
775
+ memberDobColumn: null,
776
+ countryCode: "IN",
777
+ currencyCode: "INR",
778
+ managePurchaseAmounts: !0,
779
+ manageSales: !0,
780
+ allowPersonalPurchase: !0,
781
+ requirePurchaseConfirmation: !1
782
+ }, G = null, K = null, q = /* @__PURE__ */ new Set();
783
+ function J(e) {
784
+ let t = {
785
+ ...st,
786
+ ...e ?? {}
787
+ };
788
+ return t.currencyCode = at(t.countryCode), t.managePurchaseAmounts = t.managePurchaseAmounts !== !1, t.manageSales = t.manageSales !== !1, t.allowPersonalPurchase = t.allowPersonalPurchase !== !1, t.requirePurchaseConfirmation = t.requirePurchaseConfirmation === !0, t;
789
+ }
790
+ function Y() {
791
+ q.forEach((e) => e(G));
792
+ }
793
+ async function X(e = !1) {
794
+ return !e && G ? G : (!e && K || (K = I().then((e) => (G = J(e), K = null, Y(), G)).catch((e) => {
795
+ throw K = null, G || (G = J(null), Y()), e;
796
+ })), K);
797
+ }
798
+ function ct(e) {
799
+ G = J(e), Y();
800
+ }
801
+ function Z() {
802
+ let [t, r] = n(G ?? J(null));
803
+ return e(() => (q.add(r), !G && !K ? X().catch(() => {}) : G && r(G), () => {
804
+ q.delete(r);
805
+ }), []), t;
806
+ }
807
+ //#endregion
808
+ //#region src/components/PmPageShell.jsx
809
+ function Q({ title: t, subtitle: n, chips: o = [], actions: c, children: d }) {
810
+ let p = x(), { pathname: m } = v();
811
+ e(() => {
812
+ X().catch(() => {});
813
+ }, []);
814
+ let g = m.startsWith(j.path), _ = m.startsWith(M.path), y = fe(m), S = y?.workspace, C = g ? j.accent : _ ? M.accent : S?.accent ?? p.palette.primary.main, w = g ? j.accentDark : _ ? M.accentDark : S?.accentDark ?? p.palette.primary.dark;
815
+ return /* @__PURE__ */ a(s, {
816
+ sx: {
817
+ position: "relative",
818
+ px: {
819
+ xs: 1,
820
+ md: 2
821
+ },
822
+ py: {
823
+ xs: 1,
824
+ md: 2
825
+ }
826
+ },
827
+ children: [
828
+ /* @__PURE__ */ a(s, {
829
+ sx: {
830
+ position: "absolute",
831
+ inset: 0,
832
+ pointerEvents: "none",
833
+ overflow: "hidden"
834
+ },
835
+ children: [/* @__PURE__ */ i(s, { sx: {
836
+ position: "absolute",
837
+ top: -60,
838
+ right: -40,
839
+ width: 260,
840
+ height: 260,
841
+ borderRadius: "50%",
842
+ background: `radial-gradient(circle, ${b(C, .18)} 0%, transparent 70%)`,
843
+ filter: "blur(2px)"
844
+ } }), /* @__PURE__ */ i(s, { sx: {
845
+ position: "absolute",
846
+ top: 40,
847
+ left: -50,
848
+ width: 200,
849
+ height: 200,
850
+ borderRadius: "50%",
851
+ background: `radial-gradient(circle, ${b(p.palette.info.main, .08)} 0%, transparent 72%)`,
852
+ filter: "blur(2px)"
853
+ } })]
854
+ }),
855
+ /* @__PURE__ */ i(s, {
856
+ sx: {
857
+ position: "relative",
858
+ zIndex: 1,
859
+ mb: 2,
860
+ p: {
861
+ xs: 2,
862
+ md: 2.5
863
+ },
864
+ borderRadius: 4,
865
+ border: `1px solid ${b(C, .18)}`,
866
+ background: `linear-gradient(135deg, ${b(p.palette.background.paper, .98)} 0%, ${b(C, .07)} 100%)`,
867
+ boxShadow: `0 18px 44px ${b(p.palette.common.black, .06)}`,
868
+ overflow: "hidden",
869
+ "&::before": {
870
+ content: "\"\"",
871
+ position: "absolute",
872
+ left: 0,
873
+ top: 0,
874
+ bottom: 0,
875
+ width: 4,
876
+ background: `linear-gradient(180deg, ${C} 0%, ${w} 100%)`
877
+ }
878
+ },
879
+ children: /* @__PURE__ */ a(f, {
880
+ direction: {
881
+ xs: "column",
882
+ md: "row"
883
+ },
884
+ justifyContent: "space-between",
885
+ alignItems: {
886
+ xs: "flex-start",
887
+ md: "center"
888
+ },
889
+ spacing: 1.5,
890
+ children: [/* @__PURE__ */ a(s, {
891
+ sx: { minWidth: 0 },
892
+ children: [
893
+ S || g || _ ? /* @__PURE__ */ a(f, {
894
+ direction: "row",
895
+ alignItems: "center",
896
+ spacing: .75,
897
+ sx: { mb: .75 },
898
+ children: [
899
+ (() => {
900
+ let e = g ? j.icon : _ ? M.icon : S.icon;
901
+ return e ? /* @__PURE__ */ i(e, { sx: {
902
+ fontSize: 16,
903
+ color: w
904
+ } }) : null;
905
+ })(),
906
+ /* @__PURE__ */ i(h, {
907
+ variant: "overline",
908
+ sx: {
909
+ color: w,
910
+ fontWeight: 800,
911
+ letterSpacing: 1.1,
912
+ lineHeight: 1
913
+ },
914
+ children: g ? "Overview" : _ ? "Configuration" : S.label
915
+ }),
916
+ y?.item ? /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i(s, { sx: {
917
+ width: 4,
918
+ height: 4,
919
+ borderRadius: "50%",
920
+ bgcolor: b(C, .4),
921
+ mx: .5
922
+ } }), /* @__PURE__ */ i(h, {
923
+ variant: "overline",
924
+ sx: {
925
+ color: p.palette.text.secondary,
926
+ fontWeight: 700,
927
+ letterSpacing: .8
928
+ },
929
+ children: y.item.label
930
+ })] }) : null
931
+ ]
932
+ }) : null,
933
+ /* @__PURE__ */ i(h, {
934
+ variant: "h5",
935
+ sx: {
936
+ fontWeight: 800,
937
+ color: p.palette.text.primary,
938
+ lineHeight: 1.2
939
+ },
940
+ children: t
941
+ }),
942
+ n ? /* @__PURE__ */ i(h, {
943
+ variant: "body2",
944
+ sx: {
945
+ mt: .75,
946
+ maxWidth: 900,
947
+ color: p.palette.text.secondary
948
+ },
949
+ children: n
950
+ }) : null,
951
+ o?.length ? /* @__PURE__ */ i(f, {
952
+ direction: "row",
953
+ spacing: 1,
954
+ useFlexGap: !0,
955
+ flexWrap: "wrap",
956
+ sx: { mt: 1.5 },
957
+ children: o.map((e) => /* @__PURE__ */ i(l, {
958
+ label: e,
959
+ size: "small",
960
+ sx: {
961
+ borderRadius: 2,
962
+ backgroundColor: b(C, .1),
963
+ color: w,
964
+ fontWeight: 700,
965
+ border: `1px solid ${b(C, .2)}`
966
+ }
967
+ }, e))
968
+ }) : null
969
+ ]
970
+ }), c ? /* @__PURE__ */ i(s, { children: c }) : null]
971
+ })
972
+ }),
973
+ /* @__PURE__ */ i(u, {
974
+ in: !0,
975
+ timeout: 360,
976
+ children: /* @__PURE__ */ i(s, {
977
+ sx: {
978
+ position: "relative",
979
+ zIndex: 1
980
+ },
981
+ children: d
982
+ })
983
+ }, m)
984
+ ]
985
+ });
986
+ }
987
+ Q.propTypes = {
988
+ title: _.node,
989
+ subtitle: _.node,
990
+ chips: _.arrayOf(_.string),
991
+ actions: _.node,
992
+ children: _.node
993
+ };
994
+ //#endregion
995
+ //#region src/utils/permissions.js
996
+ var lt = "techo.manage.pm";
997
+ function ut(t, n, r) {
998
+ let i = $(), a = Array.isArray(t) ? i.hasAny(t) : !!t && i.has(t);
999
+ e(() => {
1000
+ if (a) return n();
1001
+ }, [a, ...r ?? []]);
1002
+ }
1003
+ function $() {
1004
+ let e = A((e) => e.Authenticate?.linearMenuItems);
1005
+ return t(() => {
1006
+ let t = e?.[lt]?.featureJson;
1007
+ if (typeof t == "string") try {
1008
+ t = JSON.parse(t);
1009
+ } catch {
1010
+ t = {};
1011
+ }
1012
+ let n = t && typeof t == "object" ? t : {}, r = (e) => !!e && n[e] === !0;
1013
+ return {
1014
+ has: r,
1015
+ hasAny: (e) => Array.isArray(e) && e.some(r)
1016
+ };
1017
+ }, [e]);
1018
+ }
1019
+ //#endregion
1020
+ //#region src/components/PmNav.jsx
1021
+ function dt() {
1022
+ let e = y(), n = v(), r = x(), o = Z(), c = $(), l = t(() => P(c, o), [c, o]), u = c.has(j.permissionId), d = c.has(M.permissionId), g = n.pathname.startsWith(j.path), _ = n.pathname.startsWith(M.path), S = de(n.pathname), C = S ? l.find((e) => e.id === S.id) ?? null : null, w = g ? j.accent : _ ? M.accent : S?.accent ?? r.palette.primary.main, T = C ? C.items.findIndex((e) => n.pathname.startsWith(e.path)) : -1;
1023
+ function E(e, t) {
1024
+ return {
1025
+ px: 2,
1026
+ py: .9,
1027
+ borderRadius: 999,
1028
+ cursor: "pointer",
1029
+ display: "inline-flex",
1030
+ alignItems: "center",
1031
+ gap: 1,
1032
+ fontWeight: 700,
1033
+ fontSize: "0.875rem",
1034
+ letterSpacing: .2,
1035
+ transition: "all 220ms cubic-bezier(0.4, 0, 0.2, 1)",
1036
+ color: e ? "#fff" : r.palette.text.secondary,
1037
+ backgroundColor: e ? t : "transparent",
1038
+ boxShadow: e ? `0 8px 22px ${b(t, .32)}` : "none",
1039
+ "&:hover": {
1040
+ color: e ? "#fff" : t,
1041
+ backgroundColor: e ? t : b(t, .08),
1042
+ transform: e ? "none" : "translateY(-1px)"
1043
+ }
1044
+ };
1045
+ }
1046
+ function D({ id: e, label: t, icon: n, active: r, onClick: o, hue: c }) {
1047
+ return /* @__PURE__ */ a(s, {
1048
+ role: "button",
1049
+ onClick: o,
1050
+ sx: E(r, c),
1051
+ children: [n ? /* @__PURE__ */ i(n, { sx: { fontSize: 18 } }) : null, t]
1052
+ }, e);
1053
+ }
1054
+ return /* @__PURE__ */ a(s, {
1055
+ sx: { mb: 2 },
1056
+ children: [/* @__PURE__ */ i(s, {
1057
+ sx: {
1058
+ position: "relative",
1059
+ borderRadius: 4,
1060
+ p: 1,
1061
+ background: `linear-gradient(135deg, ${b(r.palette.background.paper, .96)} 0%, ${b(w, .06)} 100%)`,
1062
+ border: `1px solid ${b(r.palette.divider, .7)}`,
1063
+ boxShadow: `0 10px 28px ${b(r.palette.common.black, .04)}`
1064
+ },
1065
+ children: /* @__PURE__ */ a(f, {
1066
+ direction: "row",
1067
+ alignItems: "center",
1068
+ spacing: .75,
1069
+ flexWrap: "wrap",
1070
+ useFlexGap: !0,
1071
+ children: [
1072
+ u ? D({
1073
+ id: j.id,
1074
+ label: j.label,
1075
+ icon: j.icon,
1076
+ active: g,
1077
+ hue: j.accent,
1078
+ onClick: () => e(j.path)
1079
+ }) : null,
1080
+ u && l.length > 0 ? /* @__PURE__ */ i(s, { sx: {
1081
+ width: 1,
1082
+ height: 22,
1083
+ mx: .5,
1084
+ bgcolor: "divider",
1085
+ opacity: .7
1086
+ } }) : null,
1087
+ l.map((t) => D({
1088
+ id: t.id,
1089
+ label: t.label,
1090
+ icon: t.icon,
1091
+ active: S?.id === t.id,
1092
+ hue: t.accent,
1093
+ onClick: () => t.items[0] && e(t.items[0].path)
1094
+ })),
1095
+ /* @__PURE__ */ i(s, { sx: { flexGrow: 1 } }),
1096
+ d ? D({
1097
+ id: M.id,
1098
+ label: M.label,
1099
+ icon: M.icon,
1100
+ active: _,
1101
+ hue: M.accent,
1102
+ onClick: () => e(M.path)
1103
+ }) : null
1104
+ ]
1105
+ })
1106
+ }), C && C.items.length > 0 ? /* @__PURE__ */ i(s, {
1107
+ sx: {
1108
+ mt: 1,
1109
+ borderRadius: 3,
1110
+ px: 1,
1111
+ bgcolor: b(C.accent, .04),
1112
+ border: `1px solid ${b(C.accent, .12)}`
1113
+ },
1114
+ children: /* @__PURE__ */ i(m, {
1115
+ value: T === -1 ? !1 : T,
1116
+ onChange: (t, n) => e(C.items[n].path),
1117
+ variant: "scrollable",
1118
+ scrollButtons: "auto",
1119
+ slotProps: { indicator: { sx: {
1120
+ backgroundColor: C.accent,
1121
+ height: 3,
1122
+ borderRadius: 2
1123
+ } } },
1124
+ sx: {
1125
+ minHeight: 44,
1126
+ "& .MuiTab-root": {
1127
+ minHeight: 44,
1128
+ fontWeight: 700,
1129
+ textTransform: "none",
1130
+ fontSize: "0.85rem",
1131
+ color: r.palette.text.secondary,
1132
+ transition: "color 180ms ease",
1133
+ "&:hover": { color: C.accentDark },
1134
+ "&.Mui-selected": { color: C.accentDark }
1135
+ }
1136
+ },
1137
+ children: C.items.map((e) => {
1138
+ let t = e.icon;
1139
+ return /* @__PURE__ */ i(p, {
1140
+ iconPosition: "start",
1141
+ icon: t ? /* @__PURE__ */ i(t, { sx: { fontSize: 18 } }) : void 0,
1142
+ label: /* @__PURE__ */ i(h, {
1143
+ component: "span",
1144
+ sx: { fontWeight: 700 },
1145
+ children: e.label
1146
+ })
1147
+ }, e.id);
1148
+ })
1149
+ })
1150
+ }) : null]
1151
+ });
1152
+ }
1153
+ //#endregion
1154
+ //#region src/components/PmGuard.jsx
1155
+ function ft({ perm: e, anyOf: t, children: n, title: r = "You don’t have access to this page" }) {
1156
+ let l = $(), u = y();
1157
+ return A((e) => e.Authenticate?.linearMenuItems) == null ? /* @__PURE__ */ i(s, {
1158
+ sx: { p: 3 },
1159
+ children: /* @__PURE__ */ i(d, {})
1160
+ }) : (t ? l.hasAny(t) : l.has(e)) ? n : /* @__PURE__ */ i(s, {
1161
+ sx: { p: 3 },
1162
+ children: /* @__PURE__ */ i(o, {
1163
+ severity: "warning",
1164
+ icon: /* @__PURE__ */ i(ue, {}),
1165
+ sx: {
1166
+ borderRadius: 3,
1167
+ alignItems: "flex-start"
1168
+ },
1169
+ children: /* @__PURE__ */ a(f, {
1170
+ spacing: 1.25,
1171
+ children: [
1172
+ /* @__PURE__ */ i(h, {
1173
+ sx: { fontWeight: 800 },
1174
+ children: r
1175
+ }),
1176
+ /* @__PURE__ */ i(h, {
1177
+ variant: "body2",
1178
+ color: "text.secondary",
1179
+ children: "Your account doesn’t have the required permission to view this section of Product Management. Ask an admin to grant it via the role / user permission assignment."
1180
+ }),
1181
+ /* @__PURE__ */ i(s, { children: /* @__PURE__ */ i(c, {
1182
+ size: "small",
1183
+ variant: "contained",
1184
+ onClick: () => u("/ui/medplat/manage/pm"),
1185
+ children: "Back to Dashboard"
1186
+ }) })
1187
+ ]
1188
+ })
1189
+ })
1190
+ });
1191
+ }
1192
+ //#endregion
1193
+ export { Ve as $, ve as A, Pe as B, we as C, Te as D, De as E, V as F, Ne as G, We as H, Ce as I, Be as J, B as K, Ge as L, I as M, xe as N, Ee as O, ke as P, Ie as Q, qe as R, me as S, Oe as T, R as U, Je as V, Me as W, je as X, z as Y, nt as Z, $e as _, Q as a, _e as at, Xe as b, Z as c, L as ct, ot as d, He as et, et as f, Re as g, tt as h, $ as i, rt as it, Ye as j, ye as k, U as l, Se as lt, ze as m, dt as n, H as nt, X as o, he as ot, Ze as p, Fe as q, ut as r, Ke as rt, ct as s, be as st, ft as t, Ue as tt, W as u, P as ut, Le as v, pe as w, ge as x, Qe as y, Ae as z };
1194
+
1195
+ //# sourceMappingURL=PmGuard-CjJBisaN.js.map