@argusoft/medplat-product-management 1.0.2 → 1.0.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 (83) hide show
  1. package/dist/{BrandsPage-CSA3meke.js → BrandsPage-BE3kn-8b.js} +77 -75
  2. package/dist/BrandsPage-BE3kn-8b.js.map +1 -0
  3. package/dist/{CategoriesPage-BrspzkJL.js → CategoriesPage-COqi3pMi.js} +71 -70
  4. package/dist/{CategoriesPage-BrspzkJL.js.map → CategoriesPage-COqi3pMi.js.map} +1 -1
  5. package/dist/{DashboardPage-CqaquOs2.js → DashboardPage-C_H1Jrey.js} +90 -89
  6. package/dist/DashboardPage-C_H1Jrey.js.map +1 -0
  7. package/dist/{FacilityPicker-Dv_H95WW.js → FacilityPicker-Diq2hnYg.js} +2 -2
  8. package/dist/{FacilityPicker-Dv_H95WW.js.map → FacilityPicker-Diq2hnYg.js.map} +1 -1
  9. package/dist/{InventoryPage-CPbzfDMR.js → InventoryPage-Bjpw6vTz.js} +106 -115
  10. package/dist/InventoryPage-Bjpw6vTz.js.map +1 -0
  11. package/dist/{MemberProfileCard-0vjO3Gzd.js → MemberProfileCard-BLUVRILO.js} +10 -9
  12. package/dist/MemberProfileCard-BLUVRILO.js.map +1 -0
  13. package/dist/{PaymentCreatePage-BYmDZAIB.js → PaymentCreatePage-B5VOgTx9.js} +173 -177
  14. package/dist/PaymentCreatePage-B5VOgTx9.js.map +1 -0
  15. package/dist/{PaymentsPage-BXPvKon-.js → PaymentsPage-DY6BclkN.js} +24 -23
  16. package/dist/{PaymentsPage-BXPvKon-.js.map → PaymentsPage-DY6BclkN.js.map} +1 -1
  17. package/dist/PickupCreatePage-CCSiyFQF.js +706 -0
  18. package/dist/PickupCreatePage-CCSiyFQF.js.map +1 -0
  19. package/dist/{PickupsPage-D66_Wta4.js → PickupsPage-DGi6T5Of.js} +83 -90
  20. package/dist/PickupsPage-DGi6T5Of.js.map +1 -0
  21. package/dist/PmGuard-C90yhpsN.js +592 -0
  22. package/dist/PmGuard-C90yhpsN.js.map +1 -0
  23. package/dist/{PmTable-B9970kPY.js → PmTable-BkK65bJQ.js} +98 -98
  24. package/dist/PmTable-BkK65bJQ.js.map +1 -0
  25. package/dist/{ProductEditPage-B8qFTCW9.js → ProductEditPage-CQj9egzW.js} +138 -137
  26. package/dist/ProductEditPage-CQj9egzW.js.map +1 -0
  27. package/dist/{ProductsPage-C7_r9cKn.js → ProductsPage-i8QVw_Jm.js} +65 -64
  28. package/dist/{ProductsPage-C7_r9cKn.js.map → ProductsPage-i8QVw_Jm.js.map} +1 -1
  29. package/dist/PurchaseCreatePage-Bp6bl9n8.js +591 -0
  30. package/dist/PurchaseCreatePage-Bp6bl9n8.js.map +1 -0
  31. package/dist/{PurchaseRequestDetailPage-C7aAwEqw.js → PurchaseRequestDetailPage-CNAqIFef.js} +216 -215
  32. package/dist/PurchaseRequestDetailPage-CNAqIFef.js.map +1 -0
  33. package/dist/{PurchaseRequestsPage-BwCkbpaX.js → PurchaseRequestsPage-BJqDlNrc.js} +57 -56
  34. package/dist/{PurchaseRequestsPage-BwCkbpaX.js.map → PurchaseRequestsPage-BJqDlNrc.js.map} +1 -1
  35. package/dist/{PurchasesPage-CvaZouVy.js → PurchasesPage-BQEToymQ.js} +76 -75
  36. package/dist/{PurchasesPage-CvaZouVy.js.map → PurchasesPage-BQEToymQ.js.map} +1 -1
  37. package/dist/{SaleCreatePage-DP1Qmltu.js → SaleCreatePage-DbfBK4PH.js} +149 -173
  38. package/dist/SaleCreatePage-DbfBK4PH.js.map +1 -0
  39. package/dist/{SalesPage-CO3cdYX5.js → SalesPage-CTBJMxZe.js} +50 -49
  40. package/dist/SalesPage-CTBJMxZe.js.map +1 -0
  41. package/dist/SettingsPage-CiwVmzM3.js +663 -0
  42. package/dist/SettingsPage-CiwVmzM3.js.map +1 -0
  43. package/dist/{StorageUnitsPage-B9Hr_RkW.js → StorageUnitsPage-BV7nK_iE.js} +57 -56
  44. package/dist/{StorageUnitsPage-B9Hr_RkW.js.map → StorageUnitsPage-BV7nK_iE.js.map} +1 -1
  45. package/dist/{TransactionsPage-HKIGwEZN.js → TransactionsPage-Cocn4901.js} +55 -54
  46. package/dist/TransactionsPage-Cocn4901.js.map +1 -0
  47. package/dist/TransferCreatePage-DbjcjuOg.js +316 -0
  48. package/dist/TransferCreatePage-DbjcjuOg.js.map +1 -0
  49. package/dist/TransfersPage-BFVF7Xvc.js +471 -0
  50. package/dist/TransfersPage-BFVF7Xvc.js.map +1 -0
  51. package/dist/VialsPage-BNzYTLVd.js +321 -0
  52. package/dist/VialsPage-BNzYTLVd.js.map +1 -0
  53. package/dist/index.js +652 -34
  54. package/dist/index.js.map +1 -1
  55. package/dist/settingsStore-KW217unV.js +417 -0
  56. package/dist/settingsStore-KW217unV.js.map +1 -0
  57. package/package.json +1 -1
  58. package/dist/BrandsPage-CSA3meke.js.map +0 -1
  59. package/dist/DashboardPage-CqaquOs2.js.map +0 -1
  60. package/dist/InventoryPage-CPbzfDMR.js.map +0 -1
  61. package/dist/MemberProfileCard-0vjO3Gzd.js.map +0 -1
  62. package/dist/PaymentCreatePage-BYmDZAIB.js.map +0 -1
  63. package/dist/PickupCreatePage-CMGwoAXj.js +0 -426
  64. package/dist/PickupCreatePage-CMGwoAXj.js.map +0 -1
  65. package/dist/PickupsPage-D66_Wta4.js.map +0 -1
  66. package/dist/PmTable-B9970kPY.js.map +0 -1
  67. package/dist/ProductEditPage-B8qFTCW9.js.map +0 -1
  68. package/dist/PurchaseCreatePage-CDfNDcKG.js +0 -627
  69. package/dist/PurchaseCreatePage-CDfNDcKG.js.map +0 -1
  70. package/dist/PurchaseRequestDetailPage-C7aAwEqw.js.map +0 -1
  71. package/dist/SaleCreatePage-DP1Qmltu.js.map +0 -1
  72. package/dist/SalesPage-CO3cdYX5.js.map +0 -1
  73. package/dist/SettingsPage-DvVRwSFw.js +0 -711
  74. package/dist/SettingsPage-DvVRwSFw.js.map +0 -1
  75. package/dist/TransactionsPage-HKIGwEZN.js.map +0 -1
  76. package/dist/TransferCreatePage-DMuZqQ3c.js +0 -363
  77. package/dist/TransferCreatePage-DMuZqQ3c.js.map +0 -1
  78. package/dist/TransfersPage-COIyouL4.js +0 -480
  79. package/dist/TransfersPage-COIyouL4.js.map +0 -1
  80. package/dist/VialsPage-BNPUwGCU.js +0 -922
  81. package/dist/VialsPage-BNPUwGCU.js.map +0 -1
  82. package/dist/currency-ClRLIEg2.js +0 -1372
  83. package/dist/currency-ClRLIEg2.js.map +0 -1
@@ -1,711 +0,0 @@
1
- import { I as e, N as t, W as n, X as r, a as i, c as a, d as o, i as s, lt as c, n as ee, o as l, q as u, r as d, s as f, u as p } from "./currency-ClRLIEg2.js";
2
- import { r as m } from "./PmTable-B9970kPY.js";
3
- import { createElement as h, useEffect as g, useMemo as _, useState as v } from "react";
4
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
5
- import { Alert as x, Autocomplete as S, Box as C, Button as w, Card as T, CardContent as E, Grid as D, Stack as O, TextField as k, Typography as A } from "@mui/material";
6
- import j from "@mui/icons-material/RefreshRounded";
7
- import { showToast as M } from "@/common/toaster/toaster";
8
- import N from "@/views/custom-components/CustomSwitch";
9
- import { alpha as P } from "@mui/material/styles";
10
- import F from "@mui/icons-material/PaymentsRounded";
11
- import I from "@mui/icons-material/SaveRounded";
12
- import L from "@mui/icons-material/PhoneIphoneRounded";
13
- //#region src/views/SettingsPage.jsx
14
- var R = [...p].sort((e, t) => e.name.localeCompare(t.name));
15
- function te() {
16
- return {
17
- memberTableName: "",
18
- memberIdColumn: "",
19
- memberIdentifierColumn: "",
20
- memberFamilyIdColumn: "",
21
- memberNameColumn: "",
22
- memberDobColumn: "",
23
- countryCode: "IN",
24
- managePurchaseAmounts: !0,
25
- manageSales: !0,
26
- allowPersonalPurchase: !0,
27
- requirePurchaseConfirmation: !1
28
- };
29
- }
30
- function z(e) {
31
- return {
32
- memberTableName: e?.memberTableName ?? "",
33
- memberIdColumn: e?.memberIdColumn ?? "",
34
- memberIdentifierColumn: e?.memberIdentifierColumn ?? "",
35
- memberFamilyIdColumn: e?.memberFamilyIdColumn ?? "",
36
- memberNameColumn: e?.memberNameColumn ?? "",
37
- memberDobColumn: e?.memberDobColumn ?? "",
38
- countryCode: e?.countryCode ?? "IN",
39
- managePurchaseAmounts: e?.managePurchaseAmounts !== !1,
40
- manageSales: e?.manageSales !== !1,
41
- allowPersonalPurchase: e?.allowPersonalPurchase !== !1,
42
- requirePurchaseConfirmation: e?.requirePurchaseConfirmation === !0
43
- };
44
- }
45
- function B() {
46
- let p = i().has("update.manage.productManagement.settings"), [_, N] = v(te()), [P, B] = v(!0), [U, W] = v(!1), [G, K] = v(""), [re, ie] = v([]), [q, ae] = v({}), [J, oe] = v({}), [Y, se] = v({});
47
- async function X() {
48
- B(!0), K("");
49
- try {
50
- let [e, r] = await Promise.all([t(), n().catch(() => [])]);
51
- N(z(e)), ie(r);
52
- } catch (e) {
53
- K(e?.response?.data?.message ?? e?.message ?? "Failed to load settings");
54
- } finally {
55
- B(!1);
56
- }
57
- }
58
- s("view.manage.productManagement.settings", () => {
59
- X();
60
- }, []), g(() => {
61
- let e = [_.memberTableName].filter(Boolean).filter((e) => q[e] === void 0);
62
- if (e.length === 0) return;
63
- let t = !1;
64
- return (async () => {
65
- let n = {};
66
- await Promise.all(e.map(async (e) => {
67
- try {
68
- n[e] = await r(e);
69
- } catch {
70
- n[e] = [];
71
- }
72
- })), t || ae((e) => ({
73
- ...e,
74
- ...n
75
- }));
76
- })(), () => {
77
- t = !0;
78
- };
79
- }, [_.memberTableName, q]), g(() => {
80
- let e = [_.memberTableName].filter(Boolean).filter((e) => J[e] === void 0);
81
- if (e.length === 0) return;
82
- let t = !1;
83
- return (async () => {
84
- let n = {};
85
- await Promise.all(e.map(async (e) => {
86
- try {
87
- n[e] = await u(e);
88
- } catch {
89
- n[e] = [];
90
- }
91
- })), t || oe((e) => ({
92
- ...e,
93
- ...n
94
- }));
95
- })(), () => {
96
- t = !0;
97
- };
98
- }, [_.memberTableName, J]), g(() => {
99
- let t = [_.memberTableName].filter(Boolean).filter((e) => Y[e] === void 0);
100
- if (t.length === 0) return;
101
- let n = !1;
102
- return (async () => {
103
- let r = {};
104
- await Promise.all(t.map(async (t) => {
105
- try {
106
- r[t] = await e(t);
107
- } catch {
108
- r[t] = [];
109
- }
110
- })), n || se((e) => ({
111
- ...e,
112
- ...r
113
- }));
114
- })(), () => {
115
- n = !0;
116
- };
117
- }, [_.memberTableName, Y]);
118
- function Z(e, t) {
119
- N((n) => ({
120
- ...n,
121
- [e]: t
122
- }));
123
- }
124
- function ce(e, t, n) {
125
- let r = Array.isArray(t) ? t : [t];
126
- N((t) => {
127
- let i = r.reduce((e, t) => ({
128
- ...e,
129
- [t]: ""
130
- }), {});
131
- return {
132
- ...t,
133
- [e]: n,
134
- ...i
135
- };
136
- });
137
- }
138
- let Q = _.countryCode ? "" : "Country is required.", le = !Q, $ = o(_.countryCode);
139
- async function ue() {
140
- if (le) {
141
- W(!0), K("");
142
- try {
143
- let e = await c({
144
- memberTableName: _.memberTableName || null,
145
- memberIdColumn: _.memberIdColumn || null,
146
- memberIdentifierColumn: _.memberIdentifierColumn || null,
147
- memberFamilyIdColumn: _.memberFamilyIdColumn || null,
148
- memberNameColumn: _.memberNameColumn || null,
149
- memberDobColumn: _.memberDobColumn || null,
150
- countryCode: _.countryCode,
151
- managePurchaseAmounts: _.manageSales ? !0 : !!_.managePurchaseAmounts,
152
- manageSales: !!_.manageSales,
153
- allowPersonalPurchase: !!_.allowPersonalPurchase,
154
- requirePurchaseConfirmation: !!_.requirePurchaseConfirmation
155
- });
156
- N(z(e)), a(e), f(!0).catch(() => {}), M({
157
- message: "Settings saved.",
158
- type: "success"
159
- });
160
- } catch (e) {
161
- let t = e?.response?.data?.message ?? e?.message ?? "Failed to save settings";
162
- K(t), M({
163
- message: t,
164
- type: "error"
165
- });
166
- } finally {
167
- W(!1);
168
- }
169
- }
170
- }
171
- return /* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(d, {}), /* @__PURE__ */ y(ee, {
172
- perm: "view.manage.productManagement.settings",
173
- children: /* @__PURE__ */ b(l, {
174
- title: "Settings",
175
- subtitle: "Set up the module for your deployment. Choose your country, link to your database, and enable the features you need.",
176
- chips: ["Configuration"],
177
- actions: /* @__PURE__ */ b(O, {
178
- direction: "row",
179
- spacing: 1,
180
- children: [/* @__PURE__ */ y(w, {
181
- variant: "outlined",
182
- startIcon: /* @__PURE__ */ y(j, {}),
183
- onClick: () => void X(),
184
- children: "Refresh"
185
- }), /* @__PURE__ */ y(w, {
186
- variant: "contained",
187
- startIcon: /* @__PURE__ */ y(I, {}),
188
- disabled: !le || U || P || !p,
189
- onClick: () => void ue(),
190
- children: U ? "Saving…" : "Save"
191
- })]
192
- }),
193
- children: [
194
- G ? /* @__PURE__ */ y(x, {
195
- severity: "error",
196
- sx: { mb: 2 },
197
- children: G
198
- }) : null,
199
- /* @__PURE__ */ y(T, {
200
- sx: {
201
- borderRadius: 4,
202
- mb: 2,
203
- border: "1px solid",
204
- borderColor: "divider",
205
- boxShadow: "0 12px 32px rgba(15, 23, 42, 0.045)"
206
- },
207
- children: /* @__PURE__ */ b(E, {
208
- sx: { p: 2.5 },
209
- children: [/* @__PURE__ */ y(m, {
210
- eyebrow: "Locale",
211
- title: "Implementation country",
212
- hint: "The country controls currency display and phone number formats.",
213
- sx: { mb: 2 }
214
- }), /* @__PURE__ */ b(D, {
215
- container: !0,
216
- spacing: 2,
217
- children: [/* @__PURE__ */ y(D, {
218
- item: !0,
219
- xs: 12,
220
- md: 6,
221
- children: /* @__PURE__ */ y(S, {
222
- size: "small",
223
- options: R,
224
- value: $,
225
- onChange: (e, t) => Z("countryCode", t?.code ?? ""),
226
- disableClearable: !0,
227
- getOptionLabel: (e) => e ? `${e.name} (${e.code})` : "",
228
- isOptionEqualToValue: (e, t) => e?.code === t?.code,
229
- filterOptions: (e, { inputValue: t }) => {
230
- let n = t.trim().toLowerCase();
231
- return n ? e.filter((e) => e.name.toLowerCase().includes(n) || e.code.toLowerCase().includes(n) || e.currencyCode.toLowerCase().includes(n) || e.phoneCode.includes(n)) : e;
232
- },
233
- renderOption: (e, t) => /* @__PURE__ */ h(C, {
234
- component: "li",
235
- ...e,
236
- key: t.code
237
- }, /* @__PURE__ */ b(O, {
238
- direction: "row",
239
- alignItems: "baseline",
240
- spacing: 1.25,
241
- sx: { width: "100%" },
242
- children: [
243
- /* @__PURE__ */ y(C, {
244
- component: "span",
245
- sx: {
246
- fontWeight: 800,
247
- minWidth: 32
248
- },
249
- children: t.code
250
- }),
251
- /* @__PURE__ */ y(C, {
252
- component: "span",
253
- sx: { fontWeight: 700 },
254
- children: t.name
255
- }),
256
- /* @__PURE__ */ b(A, {
257
- component: "span",
258
- variant: "caption",
259
- color: "text.secondary",
260
- sx: { ml: "auto" },
261
- children: [
262
- t.currencyCode,
263
- " · ",
264
- t.currencySymbol,
265
- " · ",
266
- t.phoneCode
267
- ]
268
- })
269
- ]
270
- })),
271
- renderInput: (e) => /* @__PURE__ */ y(k, {
272
- ...e,
273
- required: !0,
274
- label: "Country",
275
- error: !!Q,
276
- helperText: Q || "Type to search by name, code, currency, or dial code."
277
- })
278
- })
279
- }), /* @__PURE__ */ y(D, {
280
- item: !0,
281
- xs: 12,
282
- md: 6,
283
- children: /* @__PURE__ */ b(O, {
284
- direction: "row",
285
- spacing: 1.5,
286
- sx: { height: "100%" },
287
- children: [/* @__PURE__ */ y(H, {
288
- icon: /* @__PURE__ */ y(F, { fontSize: "small" }),
289
- label: "Currency",
290
- primary: `${$?.currencySymbol ?? "—"} 1,234.50`,
291
- secondary: $?.currencyCode ?? "—"
292
- }), /* @__PURE__ */ y(H, {
293
- icon: /* @__PURE__ */ y(L, { fontSize: "small" }),
294
- label: "Phone",
295
- primary: $?.phoneCode ?? "—",
296
- secondary: $ ? `${$.phoneMin}${$.phoneMin === $.phoneMax ? "" : `–${$.phoneMax}`} digits` : "—"
297
- })]
298
- })
299
- })]
300
- })]
301
- })
302
- }),
303
- /* @__PURE__ */ y(T, {
304
- sx: {
305
- borderRadius: 4,
306
- mb: 2,
307
- border: "1px solid",
308
- borderColor: "divider",
309
- boxShadow: "0 12px 32px rgba(15, 23, 42, 0.045)"
310
- },
311
- children: /* @__PURE__ */ b(E, {
312
- sx: { p: 2.5 },
313
- children: [/* @__PURE__ */ y(m, {
314
- eyebrow: "Scope",
315
- title: "Features",
316
- hint: "Turn on only the features you need.",
317
- sx: { mb: 2 }
318
- }), /* @__PURE__ */ b(O, {
319
- spacing: 1.5,
320
- children: [
321
- /* @__PURE__ */ y(V, {
322
- label: "Manage sales and payments",
323
- hint: "Turn off to hide sales and payment features.",
324
- value: _.manageSales,
325
- onChange: (e) => Z("manageSales", e)
326
- }),
327
- /* @__PURE__ */ y(V, {
328
- label: "Manage purchase amounts",
329
- hint: "Turn off if you only track stock, not money.",
330
- value: _.manageSales ? !0 : _.managePurchaseAmounts,
331
- onChange: (e) => Z("managePurchaseAmounts", e),
332
- disabled: _.manageSales,
333
- lockNote: "Required while sales and payments are on — sales need purchase costs to compute margins."
334
- }),
335
- /* @__PURE__ */ y(V, {
336
- label: "Allow personal purchases",
337
- hint: "Turn off to hide the personal purchase option.",
338
- value: _.allowPersonalPurchase,
339
- onChange: (e) => Z("allowPersonalPurchase", e)
340
- }),
341
- /* @__PURE__ */ y(V, {
342
- label: "Require purchase confirmation",
343
- hint: "Turn on to require a manager to approve purchases before stock is added.",
344
- value: _.requirePurchaseConfirmation,
345
- onChange: (e) => Z("requirePurchaseConfirmation", e)
346
- })
347
- ]
348
- })]
349
- })
350
- }),
351
- /* @__PURE__ */ y(T, {
352
- sx: {
353
- borderRadius: 4,
354
- border: "1px solid",
355
- borderColor: "divider",
356
- boxShadow: "0 12px 32px rgba(15, 23, 42, 0.045)"
357
- },
358
- children: /* @__PURE__ */ b(E, {
359
- sx: { p: 2.5 },
360
- children: [/* @__PURE__ */ y(m, {
361
- eyebrow: "Identity mappings",
362
- title: "Subjects",
363
- hint: "Connect customer, user, and facility data from your system. This links real people to the app.",
364
- sx: { mb: 2 }
365
- }), /* @__PURE__ */ y(O, {
366
- spacing: 3,
367
- children: /* @__PURE__ */ y(ne, {
368
- tables: re,
369
- tableValue: _.memberTableName,
370
- onTableChange: (e) => ce("memberTableName", [
371
- "memberIdColumn",
372
- "memberIdentifierColumn",
373
- "memberFamilyIdColumn",
374
- "memberNameColumn",
375
- "memberDobColumn"
376
- ], e),
377
- uuidColumns: q[_.memberTableName],
378
- textColumns: J[_.memberTableName],
379
- dateColumns: Y[_.memberTableName],
380
- idColumnValue: _.memberIdColumn,
381
- onIdColumnChange: (e) => Z("memberIdColumn", e),
382
- identifierColumnValue: _.memberIdentifierColumn,
383
- onIdentifierColumnChange: (e) => Z("memberIdentifierColumn", e),
384
- familyIdColumnValue: _.memberFamilyIdColumn,
385
- onFamilyIdColumnChange: (e) => Z("memberFamilyIdColumn", e),
386
- nameColumnValue: _.memberNameColumn,
387
- onNameColumnChange: (e) => Z("memberNameColumn", e),
388
- dobColumnValue: _.memberDobColumn,
389
- onDobColumnChange: (e) => Z("memberDobColumn", e)
390
- })
391
- })]
392
- })
393
- })
394
- ]
395
- })
396
- })] });
397
- }
398
- function V({ label: e, hint: t, value: n, onChange: r, disabled: i = !1, lockNote: a = "" }) {
399
- let o = !!n, s = !i;
400
- return /* @__PURE__ */ b(C, {
401
- role: "button",
402
- tabIndex: s ? 0 : -1,
403
- "aria-disabled": i || void 0,
404
- onClick: s ? () => r(!o) : void 0,
405
- onKeyDown: s ? (e) => {
406
- (e.key === " " || e.key === "Enter") && (e.preventDefault(), r(!o));
407
- } : void 0,
408
- sx: (e) => ({
409
- display: "flex",
410
- alignItems: "center",
411
- gap: 2,
412
- p: 2,
413
- borderRadius: 3,
414
- cursor: s ? "pointer" : "not-allowed",
415
- opacity: s ? 1 : .75,
416
- border: "1px solid",
417
- borderColor: o ? P(e.palette.primary.main, .35) : "divider",
418
- bgcolor: o ? P(e.palette.primary.main, .04) : "transparent",
419
- transition: "all 180ms ease",
420
- "&:hover": s ? {
421
- borderColor: o ? e.palette.primary.main : P(e.palette.primary.main, .35),
422
- bgcolor: o ? P(e.palette.primary.main, .06) : P(e.palette.primary.main, .02)
423
- } : void 0
424
- }),
425
- children: [/* @__PURE__ */ b(C, {
426
- sx: {
427
- flexGrow: 1,
428
- minWidth: 0
429
- },
430
- children: [/* @__PURE__ */ b(O, {
431
- direction: "row",
432
- alignItems: "center",
433
- spacing: 1,
434
- children: [
435
- /* @__PURE__ */ y(A, {
436
- variant: "subtitle1",
437
- sx: {
438
- fontWeight: 800,
439
- lineHeight: 1.2
440
- },
441
- children: e
442
- }),
443
- /* @__PURE__ */ y(C, {
444
- sx: (e) => ({
445
- px: .9,
446
- py: .15,
447
- borderRadius: 999,
448
- fontSize: "0.65rem",
449
- fontWeight: 800,
450
- letterSpacing: .6,
451
- textTransform: "uppercase",
452
- color: o ? e.palette.success.dark : e.palette.text.disabled,
453
- bgcolor: o ? P(e.palette.success.main, .12) : P(e.palette.text.disabled, .1)
454
- }),
455
- children: o ? "Enabled" : "Disabled"
456
- }),
457
- i && a ? /* @__PURE__ */ y(C, {
458
- sx: (e) => ({
459
- px: .9,
460
- py: .15,
461
- borderRadius: 999,
462
- fontSize: "0.65rem",
463
- fontWeight: 800,
464
- letterSpacing: .6,
465
- textTransform: "uppercase",
466
- color: e.palette.warning.dark,
467
- bgcolor: P(e.palette.warning.main, .14)
468
- }),
469
- children: "Locked"
470
- }) : null
471
- ]
472
- }), /* @__PURE__ */ y(A, {
473
- variant: "caption",
474
- color: "text.secondary",
475
- sx: {
476
- display: "block",
477
- mt: .5
478
- },
479
- children: i && a ? a : t
480
- })]
481
- }), /* @__PURE__ */ y(N, {
482
- checked: o,
483
- disabled: i,
484
- onClick: (e) => e.stopPropagation(),
485
- onChange: (e) => r(e.target.checked)
486
- })]
487
- });
488
- }
489
- function H({ icon: e, label: t, primary: n, secondary: r }) {
490
- return /* @__PURE__ */ b(C, {
491
- sx: (e) => ({
492
- flex: 1,
493
- minWidth: 0,
494
- p: 1.25,
495
- borderRadius: 3,
496
- border: "1px solid",
497
- borderColor: "divider",
498
- bgcolor: P(e.palette.primary.main, .03),
499
- display: "flex",
500
- flexDirection: "column",
501
- justifyContent: "center"
502
- }),
503
- children: [
504
- /* @__PURE__ */ b(O, {
505
- direction: "row",
506
- alignItems: "center",
507
- spacing: .75,
508
- sx: {
509
- color: "text.secondary",
510
- mb: .25
511
- },
512
- children: [e, /* @__PURE__ */ y(A, {
513
- variant: "caption",
514
- sx: {
515
- fontWeight: 800,
516
- letterSpacing: .6,
517
- textTransform: "uppercase"
518
- },
519
- children: t
520
- })]
521
- }),
522
- /* @__PURE__ */ y(A, {
523
- sx: {
524
- fontWeight: 800,
525
- fontSize: "1.1rem",
526
- fontVariantNumeric: "tabular-nums",
527
- lineHeight: 1.2
528
- },
529
- noWrap: !0,
530
- children: n
531
- }),
532
- /* @__PURE__ */ y(A, {
533
- variant: "caption",
534
- color: "text.secondary",
535
- noWrap: !0,
536
- children: r
537
- })
538
- ]
539
- });
540
- }
541
- function ne({ tables: e, tableValue: t, onTableChange: n, uuidColumns: r, textColumns: i, dateColumns: a, idColumnValue: o, onIdColumnChange: s, identifierColumnValue: c, onIdentifierColumnChange: ee, familyIdColumnValue: l, onFamilyIdColumnChange: u, nameColumnValue: d, onNameColumnChange: f, dobColumnValue: p, onDobColumnChange: m }) {
542
- let h = Array.isArray(r), g = Array.isArray(i), v = Array.isArray(a), x = h && r.length === 0, w = g && i.length === 0, T = v && a.length === 0, E = _(() => {
543
- let n = e ?? [];
544
- return !t || n.includes(t) ? n : [t, ...n];
545
- }, [t, e]);
546
- function O(e, t) {
547
- let n = e ?? [];
548
- return !t || n.includes(t) ? n : [t, ...n];
549
- }
550
- let j = _(() => O(h ? r : [], o), [
551
- r,
552
- h,
553
- o
554
- ]), M = _(() => O(g ? i : [], c), [
555
- i,
556
- g,
557
- c
558
- ]), N = _(() => O(g ? i : [], l), [
559
- i,
560
- g,
561
- l
562
- ]), P = _(() => O(g ? i : [], d), [
563
- i,
564
- g,
565
- d
566
- ]), F = _(() => O(v ? a : [], p), [
567
- a,
568
- v,
569
- p
570
- ]), I = t ? h ? x ? "No UUID columns found in this table." : "Column that holds the member’s primary key." : "Loading columns…" : "Pick a table first.";
571
- function L(e) {
572
- return t ? g ? w ? "No text columns found in this table." : e : "Loading columns…" : "Pick a table first.";
573
- }
574
- let R = t ? v ? T ? "No date/timestamp columns found in this table." : "Age is derived from this column in the UI." : "Loading columns…" : "Pick a table first.";
575
- return /* @__PURE__ */ b(C, { children: [
576
- /* @__PURE__ */ y(A, {
577
- variant: "subtitle1",
578
- sx: {
579
- fontWeight: 800,
580
- lineHeight: 1.2
581
- },
582
- children: "Members"
583
- }),
584
- /* @__PURE__ */ y(A, {
585
- variant: "caption",
586
- color: "text.secondary",
587
- sx: {
588
- display: "block",
589
- mb: 1.5
590
- },
591
- children: "Patients / customers who can be sold to, charged dues, and administered vaccines. These columns build the member profile card on Sales and Payments."
592
- }),
593
- /* @__PURE__ */ b(D, {
594
- container: !0,
595
- spacing: 2,
596
- children: [
597
- /* @__PURE__ */ y(D, {
598
- item: !0,
599
- xs: 12,
600
- md: 6,
601
- children: /* @__PURE__ */ y(S, {
602
- size: "small",
603
- options: E,
604
- value: t || null,
605
- onChange: (e, t) => n(t ?? ""),
606
- renderInput: (e) => /* @__PURE__ */ y(k, {
607
- ...e,
608
- label: "Table name",
609
- placeholder: "Type to search…",
610
- helperText: "Public-schema table that holds members."
611
- })
612
- })
613
- }),
614
- /* @__PURE__ */ y(D, {
615
- item: !0,
616
- xs: 12,
617
- md: 6,
618
- children: /* @__PURE__ */ y(S, {
619
- size: "small",
620
- disabled: !t || !h || x,
621
- options: j,
622
- value: o || null,
623
- onChange: (e, t) => s(t ?? ""),
624
- renderInput: (e) => /* @__PURE__ */ y(k, {
625
- ...e,
626
- label: "UUID column",
627
- placeholder: "Type to search…",
628
- helperText: I
629
- })
630
- })
631
- }),
632
- /* @__PURE__ */ y(D, {
633
- item: !0,
634
- xs: 12,
635
- md: 6,
636
- children: /* @__PURE__ */ y(S, {
637
- size: "small",
638
- disabled: !t || !g || w,
639
- options: M,
640
- value: c || null,
641
- onChange: (e, t) => ee(t ?? ""),
642
- renderInput: (e) => /* @__PURE__ */ y(k, {
643
- ...e,
644
- label: "Identifier column",
645
- placeholder: "Type to search…",
646
- helperText: L("Unique identifier shown on the profile card (e.g. national id).")
647
- })
648
- })
649
- }),
650
- /* @__PURE__ */ y(D, {
651
- item: !0,
652
- xs: 12,
653
- md: 6,
654
- children: /* @__PURE__ */ y(S, {
655
- size: "small",
656
- disabled: !t || !g || w,
657
- options: N,
658
- value: l || null,
659
- onChange: (e, t) => u(t ?? ""),
660
- renderInput: (e) => /* @__PURE__ */ y(k, {
661
- ...e,
662
- label: "Family ID column",
663
- placeholder: "Type to search…",
664
- helperText: L("Groups members by household.")
665
- })
666
- })
667
- }),
668
- /* @__PURE__ */ y(D, {
669
- item: !0,
670
- xs: 12,
671
- md: 6,
672
- children: /* @__PURE__ */ y(S, {
673
- size: "small",
674
- disabled: !t || !g || w,
675
- options: P,
676
- value: d || null,
677
- onChange: (e, t) => f(t ?? ""),
678
- renderInput: (e) => /* @__PURE__ */ y(k, {
679
- ...e,
680
- label: "Name column",
681
- placeholder: "Type to search…",
682
- helperText: L("Display name. Also used by the recent-payments / sales tables.")
683
- })
684
- })
685
- }),
686
- /* @__PURE__ */ y(D, {
687
- item: !0,
688
- xs: 12,
689
- md: 6,
690
- children: /* @__PURE__ */ y(S, {
691
- size: "small",
692
- disabled: !t || !v || T,
693
- options: F,
694
- value: p || null,
695
- onChange: (e, t) => m(t ?? ""),
696
- renderInput: (e) => /* @__PURE__ */ y(k, {
697
- ...e,
698
- label: "Date of birth column",
699
- placeholder: "Type to search…",
700
- helperText: R
701
- })
702
- })
703
- })
704
- ]
705
- })
706
- ] });
707
- }
708
- //#endregion
709
- export { B as default };
710
-
711
- //# sourceMappingURL=SettingsPage-DvVRwSFw.js.map