@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,20 +1,20 @@
1
- import { l as e, t } from "./currency-ClRLIEg2.js";
1
+ import { i as e, r as t } from "./settingsStore-KW217unV.js";
2
2
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
- import { Autocomplete as i, Box as a, Card as o, CardContent as s, Stack as c, Table as l, TableCell as u, TableContainer as d, TableRow as f, TextField as p, Typography as m } from "@mui/material";
4
- import h from "prop-types";
3
+ import i from "prop-types";
4
+ import { Autocomplete as a, Box as o, Card as s, CardContent as c, Stack as l, Table as u, TableCell as d, TableContainer as f, TableRow as p, TextField as m, Typography as h } from "@mui/material";
5
5
  import { alpha as g, useTheme as _ } from "@mui/material/styles";
6
6
  //#region src/components/PmTable.jsx
7
7
  function v({ children: e, dense: t = !1, sx: r = {}, ...i }) {
8
8
  let a = _();
9
- return /* @__PURE__ */ n(d, {
9
+ return /* @__PURE__ */ n(f, {
10
10
  sx: {
11
- borderRadius: 2.5,
11
+ borderRadius: 1.5,
12
12
  border: `1px solid ${g(a.palette.divider, .55)}`,
13
13
  backgroundColor: a.palette.background.paper,
14
14
  overflow: "auto",
15
15
  ...r
16
16
  },
17
- children: /* @__PURE__ */ n(l, {
17
+ children: /* @__PURE__ */ n(u, {
18
18
  size: t ? "small" : "medium",
19
19
  ...i,
20
20
  sx: {
@@ -46,33 +46,33 @@ function v({ children: e, dense: t = !1, sx: r = {}, ...i }) {
46
46
  });
47
47
  }
48
48
  v.propTypes = {
49
- children: h.node,
50
- dense: h.bool,
51
- sx: h.object
49
+ children: i.node,
50
+ dense: i.bool,
51
+ sx: i.object
52
52
  };
53
- function y({ eyebrow: e, title: t, subtitle: i, actions: l, toolbar: u, children: d, sx: f = {} }) {
54
- return /* @__PURE__ */ n(o, {
53
+ function y({ eyebrow: e, title: t, subtitle: i, actions: a, toolbar: u, children: d, sx: f = {} }) {
54
+ return /* @__PURE__ */ n(s, {
55
55
  sx: {
56
- borderRadius: 4,
56
+ borderRadius: 1.5,
57
57
  border: "1px solid",
58
58
  borderColor: "divider",
59
59
  boxShadow: "0 12px 32px rgba(15, 23, 42, 0.045)",
60
60
  overflow: "hidden",
61
61
  ...f
62
62
  },
63
- children: /* @__PURE__ */ r(s, {
63
+ children: /* @__PURE__ */ r(c, {
64
64
  sx: {
65
65
  p: 0,
66
66
  "&:last-child": { pb: 0 }
67
67
  },
68
68
  children: [
69
- t || l ? /* @__PURE__ */ n(a, {
69
+ t || a ? /* @__PURE__ */ n(o, {
70
70
  sx: {
71
71
  px: 2.5,
72
72
  pt: 2,
73
73
  pb: 1.5
74
74
  },
75
- children: /* @__PURE__ */ r(c, {
75
+ children: /* @__PURE__ */ r(l, {
76
76
  direction: {
77
77
  xs: "column",
78
78
  md: "row"
@@ -83,10 +83,10 @@ function y({ eyebrow: e, title: t, subtitle: i, actions: l, toolbar: u, children
83
83
  md: "center"
84
84
  },
85
85
  spacing: 1.5,
86
- children: [/* @__PURE__ */ r(a, {
86
+ children: [/* @__PURE__ */ r(o, {
87
87
  sx: { minWidth: 0 },
88
88
  children: [
89
- e ? /* @__PURE__ */ n(m, {
89
+ e ? /* @__PURE__ */ n(h, {
90
90
  variant: "overline",
91
91
  sx: {
92
92
  color: "text.secondary",
@@ -96,7 +96,7 @@ function y({ eyebrow: e, title: t, subtitle: i, actions: l, toolbar: u, children
96
96
  },
97
97
  children: e
98
98
  }) : null,
99
- t ? /* @__PURE__ */ n(m, {
99
+ t ? /* @__PURE__ */ n(h, {
100
100
  variant: "h6",
101
101
  sx: {
102
102
  fontWeight: 800,
@@ -104,23 +104,23 @@ function y({ eyebrow: e, title: t, subtitle: i, actions: l, toolbar: u, children
104
104
  },
105
105
  children: t
106
106
  }) : null,
107
- i ? /* @__PURE__ */ n(m, {
107
+ i ? /* @__PURE__ */ n(h, {
108
108
  variant: "caption",
109
109
  color: "text.secondary",
110
110
  children: i
111
111
  }) : null
112
112
  ]
113
- }), l ? /* @__PURE__ */ n(a, { children: l }) : null]
113
+ }), a ? /* @__PURE__ */ n(o, { children: a }) : null]
114
114
  })
115
115
  }) : null,
116
- u ? /* @__PURE__ */ n(a, {
116
+ u ? /* @__PURE__ */ n(o, {
117
117
  sx: {
118
118
  px: 2.5,
119
119
  pb: 1.5
120
120
  },
121
121
  children: u
122
122
  }) : null,
123
- /* @__PURE__ */ n(a, {
123
+ /* @__PURE__ */ n(o, {
124
124
  sx: {
125
125
  p: 2.5,
126
126
  pt: t || u ? 0 : 2.5
@@ -132,78 +132,78 @@ function y({ eyebrow: e, title: t, subtitle: i, actions: l, toolbar: u, children
132
132
  });
133
133
  }
134
134
  y.propTypes = {
135
- eyebrow: h.node,
136
- title: h.node,
137
- subtitle: h.node,
138
- actions: h.node,
139
- toolbar: h.node,
140
- children: h.node,
141
- sx: h.object
135
+ eyebrow: i.node,
136
+ title: i.node,
137
+ subtitle: i.node,
138
+ actions: i.node,
139
+ toolbar: i.node,
140
+ children: i.node,
141
+ sx: i.object
142
142
  };
143
- function b({ colSpan: e, title: t, hint: i, icon: o, action: s }) {
144
- return /* @__PURE__ */ n(f, {
143
+ function b({ colSpan: e, title: t, hint: i, icon: a, action: s }) {
144
+ return /* @__PURE__ */ n(p, {
145
145
  hover: !1,
146
- children: /* @__PURE__ */ n(u, {
146
+ children: /* @__PURE__ */ n(d, {
147
147
  colSpan: e,
148
148
  sx: {
149
149
  py: 5,
150
150
  textAlign: "center",
151
151
  borderBottom: "none !important"
152
152
  },
153
- children: /* @__PURE__ */ r(c, {
153
+ children: /* @__PURE__ */ r(l, {
154
154
  alignItems: "center",
155
155
  spacing: 1.25,
156
156
  children: [
157
- o ? /* @__PURE__ */ n(o, { sx: {
157
+ a ? /* @__PURE__ */ n(a, { sx: {
158
158
  fontSize: 44,
159
159
  color: "text.disabled",
160
160
  opacity: .7
161
161
  } }) : null,
162
- /* @__PURE__ */ n(m, {
162
+ /* @__PURE__ */ n(h, {
163
163
  variant: "body2",
164
164
  sx: { fontWeight: 700 },
165
165
  children: t
166
166
  }),
167
- i ? /* @__PURE__ */ n(m, {
167
+ i ? /* @__PURE__ */ n(h, {
168
168
  variant: "caption",
169
169
  color: "text.secondary",
170
170
  sx: { maxWidth: 360 },
171
171
  children: i
172
172
  }) : null,
173
- s ? /* @__PURE__ */ n(a, { children: s }) : null
173
+ s ? /* @__PURE__ */ n(o, { children: s }) : null
174
174
  ]
175
175
  })
176
176
  })
177
177
  });
178
178
  }
179
179
  b.propTypes = {
180
- colSpan: h.number.isRequired,
181
- title: h.node,
182
- hint: h.node,
183
- icon: h.elementType,
184
- action: h.node
180
+ colSpan: i.number.isRequired,
181
+ title: i.node,
182
+ hint: i.node,
183
+ icon: i.elementType,
184
+ action: i.node
185
185
  };
186
- function x({ value: i, fallback: o = "—", size: s = "normal", tone: c, bold: l = !0, prefix: u, sx: d = {} }) {
187
- let f = _(), p = e(), m = u ?? t(p?.currencyCode);
188
- if (i == null || i === "") return /* @__PURE__ */ n(a, {
186
+ function x({ value: i, fallback: a = "—", size: s = "normal", tone: c, bold: l = !0, prefix: u, sx: d = {} }) {
187
+ let f = _(), p = t(), m = u ?? e(p?.currencyCode);
188
+ if (i == null || i === "") return /* @__PURE__ */ n(o, {
189
189
  component: "span",
190
190
  sx: {
191
191
  color: "text.disabled",
192
192
  fontVariantNumeric: "tabular-nums"
193
193
  },
194
- children: o
194
+ children: a
195
195
  });
196
196
  let h = Number(i);
197
- if (Number.isNaN(h)) return /* @__PURE__ */ n(a, {
197
+ if (Number.isNaN(h)) return /* @__PURE__ */ n(o, {
198
198
  component: "span",
199
199
  sx: {
200
200
  color: "text.disabled",
201
201
  fontVariantNumeric: "tabular-nums"
202
202
  },
203
- children: o
203
+ children: a
204
204
  });
205
205
  let g = c === "warning" ? f.palette.warning.dark : c === "success" ? f.palette.success.dark : c === "error" ? f.palette.error.dark : c === "muted" ? f.palette.text.secondary : "inherit";
206
- return /* @__PURE__ */ r(a, {
206
+ return /* @__PURE__ */ r(o, {
207
207
  component: "span",
208
208
  sx: {
209
209
  fontWeight: l ? s === "big" ? 800 : 700 : 500,
@@ -216,21 +216,21 @@ function x({ value: i, fallback: o = "—", size: s = "normal", tone: c, bold: l
216
216
  });
217
217
  }
218
218
  x.propTypes = {
219
- value: h.oneOfType([h.string, h.number]),
220
- fallback: h.node,
221
- size: h.oneOf(["normal", "big"]),
222
- tone: h.oneOf([
219
+ value: i.oneOfType([i.string, i.number]),
220
+ fallback: i.node,
221
+ size: i.oneOf(["normal", "big"]),
222
+ tone: i.oneOf([
223
223
  "warning",
224
224
  "success",
225
225
  "error",
226
226
  "muted"
227
227
  ]),
228
- bold: h.bool,
229
- prefix: h.string,
230
- sx: h.object
228
+ bold: i.bool,
229
+ prefix: i.string,
230
+ sx: i.object
231
231
  };
232
232
  function S({ id: e }) {
233
- return /* @__PURE__ */ r(a, {
233
+ return /* @__PURE__ */ r(o, {
234
234
  component: "span",
235
235
  sx: {
236
236
  display: "inline-flex",
@@ -249,21 +249,21 @@ function S({ id: e }) {
249
249
  children: ["#", e]
250
250
  });
251
251
  }
252
- S.propTypes = { id: h.oneOfType([h.string, h.number]) };
252
+ S.propTypes = { id: i.oneOfType([i.string, i.number]) };
253
253
  function C({ message: e, value: t, max: i }) {
254
- let o = (t ?? "").length, s = Math.max(0, i - o);
255
- return /* @__PURE__ */ r(a, {
254
+ let a = (t ?? "").length, s = Math.max(0, i - a);
255
+ return /* @__PURE__ */ r(o, {
256
256
  component: "span",
257
257
  sx: {
258
258
  display: "flex",
259
259
  width: "100%",
260
260
  gap: 1
261
261
  },
262
- children: [/* @__PURE__ */ n(a, {
262
+ children: [/* @__PURE__ */ n(o, {
263
263
  component: "span",
264
264
  sx: { flexGrow: 1 },
265
265
  children: e || ""
266
- }), /* @__PURE__ */ r(a, {
266
+ }), /* @__PURE__ */ r(o, {
267
267
  component: "span",
268
268
  sx: {
269
269
  flexShrink: 0,
@@ -279,12 +279,12 @@ function C({ message: e, value: t, max: i }) {
279
279
  });
280
280
  }
281
281
  C.propTypes = {
282
- message: h.node,
283
- value: h.string,
284
- max: h.number.isRequired
282
+ message: i.node,
283
+ value: i.string,
284
+ max: i.number.isRequired
285
285
  };
286
- function w({ label: e, value: t, onChange: r, onBlur: a, options: o, required: s = !1, disabled: c = !1, error: l = !1, helperText: u = "", fullWidth: d = !0, size: f = "small", noOptionsText: m, sx: h = {} }) {
287
- return /* @__PURE__ */ n(i, {
286
+ function w({ label: e, value: t, onChange: r, onBlur: i, options: o, required: s = !1, disabled: c = !1, error: l = !1, helperText: u = "", fullWidth: d = !0, size: f = "small", noOptionsText: p, sx: h = {} }) {
287
+ return /* @__PURE__ */ n(a, {
288
288
  size: f,
289
289
  fullWidth: d,
290
290
  disabled: c,
@@ -294,43 +294,43 @@ function w({ label: e, value: t, onChange: r, onBlur: a, options: o, required: s
294
294
  getOptionLabel: (e) => e?.label ?? "",
295
295
  isOptionEqualToValue: (e, t) => e?.value === t?.value,
296
296
  disableClearable: s,
297
- noOptionsText: m,
297
+ noOptionsText: p,
298
298
  sx: h,
299
- renderInput: (t) => /* @__PURE__ */ n(p, {
299
+ renderInput: (t) => /* @__PURE__ */ n(m, {
300
300
  ...t,
301
301
  label: e,
302
302
  required: s,
303
303
  error: l,
304
304
  helperText: u,
305
- onBlur: a
305
+ onBlur: i
306
306
  })
307
307
  });
308
308
  }
309
309
  w.propTypes = {
310
- label: h.node,
311
- value: h.any,
312
- onChange: h.func.isRequired,
313
- onBlur: h.func,
314
- options: h.arrayOf(h.shape({
315
- value: h.any,
316
- label: h.node
310
+ label: i.node,
311
+ value: i.any,
312
+ onChange: i.func.isRequired,
313
+ onBlur: i.func,
314
+ options: i.arrayOf(i.shape({
315
+ value: i.any,
316
+ label: i.node
317
317
  })).isRequired,
318
- required: h.bool,
319
- disabled: h.bool,
320
- error: h.bool,
321
- helperText: h.node,
322
- fullWidth: h.bool,
323
- size: h.string,
324
- noOptionsText: h.node,
325
- sx: h.object
318
+ required: i.bool,
319
+ disabled: i.bool,
320
+ error: i.bool,
321
+ helperText: i.node,
322
+ fullWidth: i.bool,
323
+ size: i.string,
324
+ noOptionsText: i.node,
325
+ sx: i.object
326
326
  };
327
- function T({ eyebrow: e, title: t, hint: i, children: o, sx: s = {} }) {
328
- return /* @__PURE__ */ r(a, {
327
+ function T({ eyebrow: e, title: t, hint: i, children: a, sx: s = {} }) {
328
+ return /* @__PURE__ */ r(o, {
329
329
  sx: s,
330
- children: [e || t || i ? /* @__PURE__ */ r(a, {
330
+ children: [e || t || i ? /* @__PURE__ */ r(o, {
331
331
  sx: { mb: 1.75 },
332
332
  children: [
333
- e ? /* @__PURE__ */ n(m, {
333
+ e ? /* @__PURE__ */ n(h, {
334
334
  variant: "overline",
335
335
  sx: {
336
336
  color: "text.secondary",
@@ -341,7 +341,7 @@ function T({ eyebrow: e, title: t, hint: i, children: o, sx: s = {} }) {
341
341
  },
342
342
  children: e
343
343
  }) : null,
344
- t ? /* @__PURE__ */ n(m, {
344
+ t ? /* @__PURE__ */ n(h, {
345
345
  variant: "h6",
346
346
  sx: {
347
347
  fontWeight: 800,
@@ -349,7 +349,7 @@ function T({ eyebrow: e, title: t, hint: i, children: o, sx: s = {} }) {
349
349
  },
350
350
  children: t
351
351
  }) : null,
352
- i ? /* @__PURE__ */ n(m, {
352
+ i ? /* @__PURE__ */ n(h, {
353
353
  variant: "caption",
354
354
  color: "text.secondary",
355
355
  sx: {
@@ -359,17 +359,17 @@ function T({ eyebrow: e, title: t, hint: i, children: o, sx: s = {} }) {
359
359
  children: i
360
360
  }) : null
361
361
  ]
362
- }) : null, o]
362
+ }) : null, a]
363
363
  });
364
364
  }
365
365
  T.propTypes = {
366
- eyebrow: h.node,
367
- title: h.node,
368
- hint: h.node,
369
- children: h.node,
370
- sx: h.object
366
+ eyebrow: i.node,
367
+ title: i.node,
368
+ hint: i.node,
369
+ children: i.node,
370
+ sx: i.object
371
371
  };
372
372
  //#endregion
373
373
  export { S as a, y as c, x as i, C as n, w as o, T as r, v as s, b as t };
374
374
 
375
- //# sourceMappingURL=PmTable-B9970kPY.js.map
375
+ //# sourceMappingURL=PmTable-BkK65bJQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PmTable-BkK65bJQ.js","names":[],"sources":["../src/components/PmTable.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport {\n Autocomplete,\n Box,\n Card,\n CardContent,\n Stack,\n Table,\n TableCell,\n TableContainer,\n TableRow,\n TextField,\n Typography,\n} from '@mui/material';\nimport { alpha, useTheme } from '@mui/material/styles';\nimport { currencySymbol } from '@pm/utils/currency';\nimport { usePmSettings } from '@pm/utils/settingsStore';\n\n// Shared building blocks for the data-heavy PM tables. The goal is one\n// consistent look: gradient-headed table, soft hover, eyebrow + title card\n// chrome, semantic empty state, tabular-figure money cell. Every list page\n// is built from these so the visual rhythm is identical everywhere.\n\n// -------- Table -----------------------------------------------------------\n\nexport function PmTable({ children, dense = false, sx = {}, ...props }) {\n const theme = useTheme();\n return (\n <TableContainer\n sx={{\n borderRadius: 1.5,\n border: `1px solid ${alpha(theme.palette.divider, 0.55)}`,\n backgroundColor: theme.palette.background.paper,\n overflow: 'auto',\n ...sx,\n }}\n >\n <Table\n size={dense ? 'small' : 'medium'}\n {...props}\n sx={{\n '& thead .MuiTableRow-root': {\n background: `linear-gradient(180deg, ${alpha(theme.palette.grey[50], 1)} 0%, ${alpha(theme.palette.grey[100], 1)} 100%)`,\n },\n '& thead .MuiTableCell-root': {\n fontWeight: 800,\n fontSize: '0.7rem',\n textTransform: 'uppercase',\n letterSpacing: '0.65px',\n color: theme.palette.text.secondary,\n borderBottom: `1px solid ${theme.palette.divider}`,\n py: 1.25,\n whiteSpace: 'nowrap',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n },\n '& tbody .MuiTableRow-root': {\n transition: 'background-color 140ms ease',\n },\n '& tbody .MuiTableRow-root:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.04),\n },\n '& tbody .MuiTableCell-root': {\n py: 1.4,\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.5)}`,\n verticalAlign: 'middle',\n },\n '& tbody .MuiTableRow-root:last-of-type .MuiTableCell-root': {\n borderBottom: 'none',\n },\n }}\n >\n {children}\n </Table>\n </TableContainer>\n );\n}\nPmTable.propTypes = {\n children: PropTypes.node,\n dense: PropTypes.bool,\n sx: PropTypes.object,\n};\n\n// -------- Section card chrome --------------------------------------------\n\n/**\n * Card with a consistent eyebrow + title + actions header, ready to hold a\n * PmTable (or any other content). The table renders flush against the card\n * because the container handles borders/radius. Toolbar slot is for filters\n * or search inputs that sit between the title and the table.\n */\nexport function PmTableCard({\n eyebrow,\n title,\n subtitle,\n actions,\n toolbar,\n children,\n sx = {},\n}) {\n return (\n <Card\n sx={{\n borderRadius: 1.5,\n border: '1px solid',\n borderColor: 'divider',\n boxShadow: '0 12px 32px rgba(15, 23, 42, 0.045)',\n overflow: 'hidden',\n ...sx,\n }}\n >\n <CardContent sx={{ p: 0, '&:last-child': { pb: 0 } }}>\n {(title || actions) ? (\n <Box sx={{ px: 2.5, pt: 2, pb: 1.5 }}>\n <Stack\n direction={{ xs: 'column', md: 'row' }}\n justifyContent=\"space-between\"\n alignItems={{ xs: 'flex-start', md: 'center' }}\n spacing={1.5}\n >\n <Box sx={{ minWidth: 0 }}>\n {eyebrow ? (\n <Typography\n variant=\"overline\"\n sx={{ color: 'text.secondary', fontWeight: 800, letterSpacing: 1, lineHeight: 1 }}\n >\n {eyebrow}\n </Typography>\n ) : null}\n {title ? (\n <Typography variant=\"h6\" sx={{ fontWeight: 800, lineHeight: 1.2 }}>\n {title}\n </Typography>\n ) : null}\n {subtitle ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {subtitle}\n </Typography>\n ) : null}\n </Box>\n {actions ? <Box>{actions}</Box> : null}\n </Stack>\n </Box>\n ) : null}\n {toolbar ? <Box sx={{ px: 2.5, pb: 1.5 }}>{toolbar}</Box> : null}\n <Box sx={{ p: 2.5, pt: title || toolbar ? 0 : 2.5 }}>{children}</Box>\n </CardContent>\n </Card>\n );\n}\nPmTableCard.propTypes = {\n eyebrow: PropTypes.node,\n title: PropTypes.node,\n subtitle: PropTypes.node,\n actions: PropTypes.node,\n toolbar: PropTypes.node,\n children: PropTypes.node,\n sx: PropTypes.object,\n};\n\n// -------- Empty state row -------------------------------------------------\n\nexport function PmEmptyRow({ colSpan, title, hint, icon: Icon, action }) {\n return (\n <TableRow hover={false}>\n <TableCell colSpan={colSpan} sx={{ py: 5, textAlign: 'center', borderBottom: 'none !important' }}>\n <Stack alignItems=\"center\" spacing={1.25}>\n {Icon ? <Icon sx={{ fontSize: 44, color: 'text.disabled', opacity: 0.7 }} /> : null}\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>{title}</Typography>\n {hint ? (\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ maxWidth: 360 }}>{hint}</Typography>\n ) : null}\n {action ? <Box>{action}</Box> : null}\n </Stack>\n </TableCell>\n </TableRow>\n );\n}\nPmEmptyRow.propTypes = {\n colSpan: PropTypes.number.isRequired,\n title: PropTypes.node,\n hint: PropTypes.node,\n icon: PropTypes.elementType,\n action: PropTypes.node,\n};\n\n// -------- Money cell ------------------------------------------------------\n\n/**\n * Currency display with tabular figures so numbers don't shift between\n * rows. {@code tone} can semantically colour the value — useful for\n * paid/due splits in the Sales table.\n */\nexport function PmMoney({ value, fallback = '—', size = 'normal', tone, bold = true, prefix, sx = {} }) {\n const theme = useTheme();\n const settings = usePmSettings();\n // When the caller doesn't override the prefix, pull the symbol from the\n // module settings — every PmMoney across the module then renders with the\n // currency configured for the deployment.\n const effectivePrefix = prefix ?? currencySymbol(settings?.currencyCode);\n if (value == null || value === '') {\n return <Box component=\"span\" sx={{ color: 'text.disabled', fontVariantNumeric: 'tabular-nums' }}>{fallback}</Box>;\n }\n const n = Number(value);\n if (Number.isNaN(n)) {\n return <Box component=\"span\" sx={{ color: 'text.disabled', fontVariantNumeric: 'tabular-nums' }}>{fallback}</Box>;\n }\n const color = tone === 'warning' ? theme.palette.warning.dark\n : tone === 'success' ? theme.palette.success.dark\n : tone === 'error' ? theme.palette.error.dark\n : tone === 'muted' ? theme.palette.text.secondary\n : 'inherit';\n return (\n <Box\n component=\"span\"\n sx={{\n fontWeight: bold ? (size === 'big' ? 800 : 700) : 500,\n fontSize: size === 'big' ? '1.05rem' : 'inherit',\n fontVariantNumeric: 'tabular-nums',\n color,\n ...sx,\n }}\n >\n {effectivePrefix}{n.toFixed(2)}\n </Box>\n );\n}\nPmMoney.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fallback: PropTypes.node,\n size: PropTypes.oneOf(['normal', 'big']),\n tone: PropTypes.oneOf(['warning', 'success', 'error', 'muted']),\n bold: PropTypes.bool,\n prefix: PropTypes.string,\n sx: PropTypes.object,\n};\n\n// -------- Reference chip --------------------------------------------------\n\n/** Monospace `#1234` chip used in left-most \"Ref\" columns. */\nexport function PmRef({ id }) {\n return (\n <Box\n component=\"span\"\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n px: 0.85,\n py: 0.25,\n borderRadius: 1,\n backgroundColor: 'grey.100',\n color: 'text.secondary',\n fontFamily: 'monospace',\n fontSize: '0.72rem',\n fontWeight: 700,\n letterSpacing: 0.4,\n lineHeight: 1.5,\n }}\n >\n #{id}\n </Box>\n );\n}\nPmRef.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\n// -------- Field helper text with character counter -----------------------\n\n/**\n * Helper-text content that pairs a message (validation error or hint) on the\n * left with a live \"remaining/allowed\" character counter on the right. Pass\n * as a TextField's `helperText`. Renders only spans so it's valid inside the\n * FormHelperText <p>.\n */\nexport function PmFieldHelp({ message, value, max }) {\n const used = (value ?? '').length;\n const remaining = Math.max(0, max - used);\n return (\n <Box component=\"span\" sx={{ display: 'flex', width: '100%', gap: 1 }}>\n <Box component=\"span\" sx={{ flexGrow: 1 }}>{message || ''}</Box>\n <Box\n component=\"span\"\n sx={{ flexShrink: 0, fontVariantNumeric: 'tabular-nums', color: 'text.secondary' }}\n >\n {remaining}/{max}\n </Box>\n </Box>\n );\n}\nPmFieldHelp.propTypes = {\n message: PropTypes.node,\n value: PropTypes.string,\n max: PropTypes.number.isRequired,\n};\n\n// -------- Select (dropdown) ----------------------------------------------\n\n/**\n * Standard PM dropdown. Wraps MUI Autocomplete (the app-wide dropdown\n * pattern, same as FacilityPicker / CustomDropdown) so every select in the\n * module looks and behaves identically and sizes like the themed text\n * fields. Options are plain `{ value, label }`; `value`/`onChange` work with\n * the raw value so callers don't deal with option objects.\n */\nexport function PmSelect({\n label,\n value,\n onChange,\n onBlur,\n options,\n required = false,\n disabled = false,\n error = false,\n helperText = '',\n fullWidth = true,\n size = 'small',\n noOptionsText,\n sx = {},\n}) {\n const selected = options.find((o) => o.value === value) ?? null;\n return (\n <Autocomplete\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n options={options}\n value={selected}\n onChange={(_, opt) => onChange(opt ? opt.value : '')}\n getOptionLabel={(o) => o?.label ?? ''}\n isOptionEqualToValue={(o, v) => o?.value === v?.value}\n disableClearable={required}\n noOptionsText={noOptionsText}\n sx={sx}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n required={required}\n error={error}\n helperText={helperText}\n onBlur={onBlur}\n />\n )}\n />\n );\n}\nPmSelect.propTypes = {\n label: PropTypes.node,\n value: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n onBlur: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.any,\n label: PropTypes.node,\n })).isRequired,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.node,\n fullWidth: PropTypes.bool,\n size: PropTypes.string,\n noOptionsText: PropTypes.node,\n sx: PropTypes.object,\n};\n\n// -------- Form section helper --------------------------------------------\n\n/**\n * Wraps a chunk of form fields with a consistent eyebrow + title + hint\n * header. Used inside create/edit pages so every section has the same\n * vertical rhythm.\n */\nexport function PmFormSection({ eyebrow, title, hint, children, sx = {} }) {\n return (\n <Box sx={sx}>\n {(eyebrow || title || hint) ? (\n <Box sx={{ mb: 1.75 }}>\n {eyebrow ? (\n <Typography\n variant=\"overline\"\n sx={{ color: 'text.secondary', fontWeight: 800, letterSpacing: 1, lineHeight: 1, display: 'block' }}\n >\n {eyebrow}\n </Typography>\n ) : null}\n {title ? (\n <Typography variant=\"h6\" sx={{ fontWeight: 800, lineHeight: 1.25 }}>{title}</Typography>\n ) : null}\n {hint ? (\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ display: 'block', mt: 0.5 }}>\n {hint}\n </Typography>\n ) : null}\n </Box>\n ) : null}\n {children}\n </Box>\n );\n}\nPmFormSection.propTypes = {\n eyebrow: PropTypes.node,\n title: PropTypes.node,\n hint: PropTypes.node,\n children: PropTypes.node,\n sx: PropTypes.object,\n};\n"],"mappings":"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"}