@mamrp/components 1.0.6 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -192,14 +192,6 @@ interface HorizontalStepperProps {
192
192
  }
193
193
  declare function HorizontalStepper({ steps, currentStep, setCurrentStep, }: HorizontalStepperProps): React.JSX.Element;
194
194
 
195
- type SwitchWithIconsProps = {
196
- checked: boolean;
197
- handleChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void;
198
- iconChecked: React__default.ReactNode;
199
- iconUnchecked: React__default.ReactNode;
200
- };
201
- declare const SwitchWithIcons: React__default.FC<SwitchWithIconsProps>;
202
-
203
195
  interface StateType {
204
196
  page: number;
205
197
  pageSize: number;
@@ -282,4 +274,21 @@ declare function Page({ data, }: {
282
274
  }];
283
275
  }): React.JSX.Element;
284
276
 
285
- export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchWithIcons as SwitchButton, Table, UploadImage };
277
+ type SwitchButtonProps = {
278
+ checked: boolean;
279
+ handleChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void;
280
+ iconChecked?: React__default.ReactNode;
281
+ iconUnchecked?: React__default.ReactNode;
282
+ };
283
+ declare const SwitchButton: React__default.FC<SwitchButtonProps>;
284
+
285
+ type ConnectToBasculeButtonProps = {
286
+ baudRate: number;
287
+ dataBits?: number;
288
+ stopBits?: number;
289
+ parity?: "none" | "even" | "odd";
290
+ flowControl?: "none" | "hardware";
291
+ };
292
+ declare const ConnectToBasculeButton: React__default.FC<ConnectToBasculeButtonProps>;
293
+
294
+ export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
package/dist/index.d.ts CHANGED
@@ -192,14 +192,6 @@ interface HorizontalStepperProps {
192
192
  }
193
193
  declare function HorizontalStepper({ steps, currentStep, setCurrentStep, }: HorizontalStepperProps): React.JSX.Element;
194
194
 
195
- type SwitchWithIconsProps = {
196
- checked: boolean;
197
- handleChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void;
198
- iconChecked: React__default.ReactNode;
199
- iconUnchecked: React__default.ReactNode;
200
- };
201
- declare const SwitchWithIcons: React__default.FC<SwitchWithIconsProps>;
202
-
203
195
  interface StateType {
204
196
  page: number;
205
197
  pageSize: number;
@@ -282,4 +274,21 @@ declare function Page({ data, }: {
282
274
  }];
283
275
  }): React.JSX.Element;
284
276
 
285
- export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchWithIcons as SwitchButton, Table, UploadImage };
277
+ type SwitchButtonProps = {
278
+ checked: boolean;
279
+ handleChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void;
280
+ iconChecked?: React__default.ReactNode;
281
+ iconUnchecked?: React__default.ReactNode;
282
+ };
283
+ declare const SwitchButton: React__default.FC<SwitchButtonProps>;
284
+
285
+ type ConnectToBasculeButtonProps = {
286
+ baudRate: number;
287
+ dataBits?: number;
288
+ stopBits?: number;
289
+ parity?: "none" | "even" | "odd";
290
+ flowControl?: "none" | "hardware";
291
+ };
292
+ declare const ConnectToBasculeButton: React__default.FC<ConnectToBasculeButtonProps>;
293
+
294
+ export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ __export(src_exports, {
33
33
  Accordion: () => Page,
34
34
  AdvancedSearchButton: () => AdvancedSearchButton,
35
35
  ConfirmationDialog: () => ConfirmationDialog,
36
+ ConnectToBasculeButton: () => bascule_connection_button_default,
36
37
  CustomCheckbox: () => CustomCheckbox,
37
38
  CustomTimePicker: () => CustomTimePicker,
38
39
  DateFilter: () => DateFilter,
@@ -632,7 +633,6 @@ function MultipleSelectChip({
632
633
  {
633
634
  disableClearable: clear,
634
635
  disabled: disabled || isLoading,
635
- disablePortal: true,
636
636
  size,
637
637
  disableCloseOnSelect: multipleitems,
638
638
  options: combinedOptions,
@@ -2992,88 +2992,12 @@ function HorizontalStepper({
2992
2992
  )))));
2993
2993
  }
2994
2994
 
2995
- // src/switch-button/index.tsx
2996
- var import_material19 = require("@mui/material");
2997
- var import_system7 = require("@mui/system");
2998
- var import_react19 = __toESM(require("react"));
2999
- var CustomSwitch = (0, import_system7.styled)(import_material19.Switch)(({ theme }) => ({
3000
- "& .MuiSwitch-switchBase.Mui-checked": {
3001
- color: theme.palette.primary.main
3002
- },
3003
- "& .MuiSwitch-switchBase": {
3004
- color: "#757575"
3005
- },
3006
- "& .MuiSwitch-track": {
3007
- backgroundColor: "#E0E0E0"
3008
- },
3009
- "& .MuiSwitch-track.Mui-checked": {
3010
- backgroundColor: theme.palette.primary.light
3011
- }
3012
- }));
3013
- var BoxContainer = (0, import_system7.styled)(import_material19.Box)(({ theme }) => ({
3014
- display: "flex",
3015
- alignItems: "center",
3016
- padding: "5px",
3017
- backgroundColor: "#fafafa",
3018
- borderRadius: "10px",
3019
- transition: "all 0.3s ease",
3020
- "&:hover": {
3021
- backgroundColor: theme.palette.action.hover
3022
- },
3023
- // Conditionally apply smaller padding for mobile devices
3024
- "@media (max-width:700px)": {
3025
- padding: "0px"
3026
- // Smaller padding for mobile
3027
- }
3028
- }));
3029
- var LabelContainer = (0, import_system7.styled)("div")({
3030
- display: "flex",
3031
- alignItems: "center",
3032
- justifyContent: "center",
3033
- fontSize: "16px",
3034
- fontWeight: "100",
3035
- color: "#333",
3036
- marginLeft: "8px",
3037
- transition: "all 0.2s ease",
3038
- // Conditionally apply smaller font size and margin for mobile devices
3039
- "@media (max-width:700px)": {
3040
- fontSize: "14px",
3041
- // Smaller font size for mobile
3042
- marginLeft: "2px",
3043
- // Smaller margin for mobile
3044
- marginRight: "0px"
3045
- // Smaller
3046
- }
3047
- });
3048
- var SwitchWithIcons = ({
3049
- checked,
3050
- handleChange,
3051
- iconChecked,
3052
- iconUnchecked
3053
- }) => {
3054
- return /* @__PURE__ */ import_react19.default.createElement(BoxContainer, null, /* @__PURE__ */ import_react19.default.createElement(
3055
- import_material19.FormControlLabel,
3056
- {
3057
- control: /* @__PURE__ */ import_react19.default.createElement(
3058
- CustomSwitch,
3059
- {
3060
- checked,
3061
- onChange: handleChange,
3062
- name: "switch"
3063
- }
3064
- ),
3065
- label: /* @__PURE__ */ import_react19.default.createElement(LabelContainer, null, checked ? iconChecked ? iconChecked : /* @__PURE__ */ import_react19.default.createElement("div", { style: { fontSize: 22, color: "#4CAF50" } }, "\u2714") : iconUnchecked ? iconUnchecked : /* @__PURE__ */ import_react19.default.createElement("div", { style: { fontSize: 20, color: "#757575" } }, "\u2718"))
3066
- }
3067
- ));
3068
- };
3069
- var switch_button_default = SwitchWithIcons;
3070
-
3071
2995
  // src/table/index.tsx
3072
- var import_material20 = require("@mui/material");
2996
+ var import_material19 = require("@mui/material");
3073
2997
  var import_Skeleton = __toESM(require("@mui/material/Skeleton"));
3074
2998
  var import_styles = require("@mui/material/styles");
3075
2999
  var import_x_data_grid = require("@mui/x-data-grid");
3076
- var import_react20 = __toESM(require("react"));
3000
+ var import_react19 = __toESM(require("react"));
3077
3001
  var ScrollableContainer = (0, import_styles.styled)("div")({
3078
3002
  width: "100%",
3079
3003
  overflowX: "auto"
@@ -3099,7 +3023,7 @@ var Table = ({
3099
3023
  fontSize,
3100
3024
  ...rest
3101
3025
  }) => {
3102
- const [sortModel, setSortModel] = import_react20.default.useState([]);
3026
+ const [sortModel, setSortModel] = import_react19.default.useState([]);
3103
3027
  const handleSetQueryOptions = (options) => {
3104
3028
  if (!Array.isArray(options)) return;
3105
3029
  const formattedOptions = options.reduce((acc, item) => {
@@ -3109,7 +3033,7 @@ var Table = ({
3109
3033
  }, {});
3110
3034
  setsortQuery && setsortQuery(formattedOptions);
3111
3035
  };
3112
- (0, import_react20.useEffect)(() => {
3036
+ (0, import_react19.useEffect)(() => {
3113
3037
  if (sortQuery && Object.keys(sortQuery).length > 0) {
3114
3038
  const queryKey = Object.keys(sortQuery)[0];
3115
3039
  if (sortFieldMapping) {
@@ -3127,7 +3051,7 @@ var Table = ({
3127
3051
  setSortModel([]);
3128
3052
  }
3129
3053
  }, [sortQuery]);
3130
- const handleSortModelChange = import_react20.default.useCallback(
3054
+ const handleSortModelChange = import_react19.default.useCallback(
3131
3055
  (sortModel2) => {
3132
3056
  handleSetQueryOptions(
3133
3057
  sortModel2.map((item) => ({
@@ -3167,7 +3091,7 @@ var Table = ({
3167
3091
  // Connect paginationModel to DataGrid
3168
3092
  }
3169
3093
  };
3170
- return /* @__PURE__ */ import_react20.default.createElement(ScrollableContainer, null, /* @__PURE__ */ import_react20.default.createElement(
3094
+ return /* @__PURE__ */ import_react19.default.createElement(ScrollableContainer, null, /* @__PURE__ */ import_react19.default.createElement(
3171
3095
  import_x_data_grid.DataGrid,
3172
3096
  {
3173
3097
  rows,
@@ -3212,14 +3136,14 @@ var Table = ({
3212
3136
  noRowsLabel: "\u0647\u06CC\u0686 \u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F!",
3213
3137
  noResultsOverlayLabel: "\u0647\u06CC\u0686 \u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F!",
3214
3138
  MuiTablePagination: {
3215
- labelDisplayedRows: ({ from, to, count }) => loading ? /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
3139
+ labelDisplayedRows: ({ from, to, count }) => loading ? /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
3216
3140
  import_Skeleton.default,
3217
3141
  {
3218
3142
  variant: "text",
3219
3143
  width: 30,
3220
3144
  style: { display: "inline-block" }
3221
3145
  }
3222
- ), " ", /* @__PURE__ */ import_react20.default.createElement(
3146
+ ), " ", /* @__PURE__ */ import_react19.default.createElement(
3223
3147
  import_Skeleton.default,
3224
3148
  {
3225
3149
  variant: "text",
@@ -3228,7 +3152,7 @@ var Table = ({
3228
3152
  }
3229
3153
  )) : `${from} - ${!isNaN(to) ? to : "..."} \u0627\u0632 ${count !== void 0 ? count : "..."}`
3230
3154
  },
3231
- footerRowSelected: (count) => /* @__PURE__ */ import_react20.default.createElement(import_material20.Typography, null, "\u0633\u0637\u0631 \u0647\u0627\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647 : ", count)
3155
+ footerRowSelected: (count) => /* @__PURE__ */ import_react19.default.createElement(import_material19.Typography, null, "\u0633\u0637\u0631 \u0647\u0627\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647 : ", count)
3232
3156
  },
3233
3157
  ...rest
3234
3158
  }
@@ -3238,12 +3162,12 @@ var table_default = Table;
3238
3162
 
3239
3163
  // src/text-field/number-type/index.tsx
3240
3164
  var import_TextField2 = __toESM(require("@mui/material/TextField"));
3241
- var import_react21 = require("react");
3165
+ var import_react20 = require("react");
3242
3166
  var import_react_hook_form11 = require("react-hook-form");
3243
3167
  var import_react_number_format = require("react-number-format");
3244
3168
  var import_CircularProgress2 = __toESM(require("@mui/material/CircularProgress"));
3245
3169
  var import_InputAdornment = __toESM(require("@mui/material/InputAdornment"));
3246
- var import_react22 = __toESM(require("react"));
3170
+ var import_react21 = __toESM(require("react"));
3247
3171
  var FormInputNumber = ({
3248
3172
  name,
3249
3173
  control,
@@ -3261,13 +3185,13 @@ var FormInputNumber = ({
3261
3185
  decimalScale = 2,
3262
3186
  ...rest
3263
3187
  }) => {
3264
- return /* @__PURE__ */ import_react22.default.createElement(
3188
+ return /* @__PURE__ */ import_react21.default.createElement(
3265
3189
  import_react_hook_form11.Controller,
3266
3190
  {
3267
3191
  rules,
3268
3192
  name,
3269
3193
  control,
3270
- render: ({ field: { onChange, value, ref }, fieldState: { error } }) => /* @__PURE__ */ import_react22.default.createElement(
3194
+ render: ({ field: { onChange, value, ref }, fieldState: { error } }) => /* @__PURE__ */ import_react21.default.createElement(
3271
3195
  import_TextField2.default,
3272
3196
  {
3273
3197
  disabled: isLoading,
@@ -3307,7 +3231,7 @@ var FormInputNumber = ({
3307
3231
  maxLength,
3308
3232
  decimalScale
3309
3233
  },
3310
- endAdornment: isLoading ? /* @__PURE__ */ import_react22.default.createElement(import_InputAdornment.default, { position: "end" }, /* @__PURE__ */ import_react22.default.createElement(import_CircularProgress2.default, { size: 20 })) : null,
3234
+ endAdornment: isLoading ? /* @__PURE__ */ import_react21.default.createElement(import_InputAdornment.default, { position: "end" }, /* @__PURE__ */ import_react21.default.createElement(import_CircularProgress2.default, { size: 20 })) : null,
3311
3235
  startAdornment
3312
3236
  },
3313
3237
  ...rest
@@ -3316,7 +3240,7 @@ var FormInputNumber = ({
3316
3240
  }
3317
3241
  );
3318
3242
  };
3319
- var NumericFormatCustom = (0, import_react21.forwardRef)(
3243
+ var NumericFormatCustom = (0, import_react20.forwardRef)(
3320
3244
  function NumericFormatCustom2(props, ref) {
3321
3245
  const {
3322
3246
  onChange,
@@ -3327,7 +3251,7 @@ var NumericFormatCustom = (0, import_react21.forwardRef)(
3327
3251
  decimalScale,
3328
3252
  ...other
3329
3253
  } = props;
3330
- return /* @__PURE__ */ import_react22.default.createElement(
3254
+ return /* @__PURE__ */ import_react21.default.createElement(
3331
3255
  import_react_number_format.NumericFormat,
3332
3256
  {
3333
3257
  ...other,
@@ -3358,7 +3282,7 @@ var number_type_default = FormInputNumber;
3358
3282
  var import_CircularProgress3 = __toESM(require("@mui/material/CircularProgress"));
3359
3283
  var import_InputAdornment2 = __toESM(require("@mui/material/InputAdornment"));
3360
3284
  var import_TextField3 = __toESM(require("@mui/material/TextField"));
3361
- var import_react23 = __toESM(require("react"));
3285
+ var import_react22 = __toESM(require("react"));
3362
3286
  var import_react_hook_form12 = require("react-hook-form");
3363
3287
  var FormInputText = ({
3364
3288
  name,
@@ -3375,13 +3299,13 @@ var FormInputText = ({
3375
3299
  rows,
3376
3300
  ...rest
3377
3301
  }) => {
3378
- return /* @__PURE__ */ import_react23.default.createElement(
3302
+ return /* @__PURE__ */ import_react22.default.createElement(
3379
3303
  import_react_hook_form12.Controller,
3380
3304
  {
3381
3305
  name,
3382
3306
  control,
3383
3307
  rules,
3384
- render: ({ field: { onChange, value, ref }, fieldState: { error } }) => /* @__PURE__ */ import_react23.default.createElement(
3308
+ render: ({ field: { onChange, value, ref }, fieldState: { error } }) => /* @__PURE__ */ import_react22.default.createElement(
3385
3309
  import_TextField3.default,
3386
3310
  {
3387
3311
  disabled: disabled || isLoading,
@@ -3401,7 +3325,7 @@ var FormInputText = ({
3401
3325
  readOnly
3402
3326
  },
3403
3327
  InputProps: {
3404
- endAdornment: isLoading ? /* @__PURE__ */ import_react23.default.createElement(import_InputAdornment2.default, { position: "end" }, /* @__PURE__ */ import_react23.default.createElement(import_CircularProgress3.default, { size: 20 })) : null
3328
+ endAdornment: isLoading ? /* @__PURE__ */ import_react22.default.createElement(import_InputAdornment2.default, { position: "end" }, /* @__PURE__ */ import_react22.default.createElement(import_CircularProgress3.default, { size: 20 })) : null
3405
3329
  },
3406
3330
  InputLabelProps: { shrink: true },
3407
3331
  inputRef: ref,
@@ -3414,9 +3338,9 @@ var FormInputText = ({
3414
3338
  var text_type_default = FormInputText;
3415
3339
 
3416
3340
  // src/upload-image/index.tsx
3417
- var import_react24 = __toESM(require("react"));
3341
+ var import_react23 = __toESM(require("react"));
3418
3342
  var import_react_hook_form13 = require("react-hook-form");
3419
- var import_material21 = require("@mui/material");
3343
+ var import_material20 = require("@mui/material");
3420
3344
  var import_gr = require("react-icons/gr");
3421
3345
  var import_md5 = require("react-icons/md");
3422
3346
  var import_image3 = __toESM(require("next/image"));
@@ -3489,12 +3413,12 @@ var UploadImage = ({
3489
3413
  }
3490
3414
  }
3491
3415
  };
3492
- return /* @__PURE__ */ import_react24.default.createElement(
3416
+ return /* @__PURE__ */ import_react23.default.createElement(
3493
3417
  import_react_hook_form13.Controller,
3494
3418
  {
3495
3419
  name,
3496
3420
  control,
3497
- render: ({ field }) => /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement(
3421
+ render: ({ field }) => /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
3498
3422
  "label",
3499
3423
  {
3500
3424
  htmlFor: "file-upload",
@@ -3514,7 +3438,7 @@ var UploadImage = ({
3514
3438
  overflow: "hidden"
3515
3439
  }
3516
3440
  },
3517
- selectedImage ? /* @__PURE__ */ import_react24.default.createElement(
3441
+ selectedImage ? /* @__PURE__ */ import_react23.default.createElement(
3518
3442
  import_image3.default,
3519
3443
  {
3520
3444
  src: selectedImage,
@@ -3522,14 +3446,14 @@ var UploadImage = ({
3522
3446
  fill: true,
3523
3447
  objectFit: imageFit
3524
3448
  }
3525
- ) : /* @__PURE__ */ import_react24.default.createElement(
3526
- import_material21.Stack,
3449
+ ) : /* @__PURE__ */ import_react23.default.createElement(
3450
+ import_material20.Stack,
3527
3451
  {
3528
3452
  spacing: allowGallery ? 2 : 0,
3529
3453
  sx: { pt: allowGallery ? 2 : 0 }
3530
3454
  },
3531
- /* @__PURE__ */ import_react24.default.createElement(
3532
- import_material21.Box,
3455
+ /* @__PURE__ */ import_react23.default.createElement(
3456
+ import_material20.Box,
3533
3457
  {
3534
3458
  sx: {
3535
3459
  display: "flex",
@@ -3538,31 +3462,31 @@ var UploadImage = ({
3538
3462
  gap: 1.5
3539
3463
  }
3540
3464
  },
3541
- /* @__PURE__ */ import_react24.default.createElement(import_material21.Box, { sx: { paddingBottom: "0.5rem" } }, /* @__PURE__ */ import_react24.default.createElement(import_gr.GrUpload, null)),
3465
+ /* @__PURE__ */ import_react23.default.createElement(import_material20.Box, { sx: { paddingBottom: "0.5rem" } }, /* @__PURE__ */ import_react23.default.createElement(import_gr.GrUpload, null)),
3542
3466
  placeholder
3543
3467
  ),
3544
- allowGallery && /* @__PURE__ */ import_react24.default.createElement(import_material21.Stack, { spacing: 1.5 }, /* @__PURE__ */ import_react24.default.createElement(
3545
- import_material21.Button,
3468
+ allowGallery && /* @__PURE__ */ import_react23.default.createElement(import_material20.Stack, { spacing: 1.5 }, /* @__PURE__ */ import_react23.default.createElement(
3469
+ import_material20.Button,
3546
3470
  {
3547
3471
  sx: { width: "9rem" },
3548
3472
  variant: "outlined",
3549
3473
  color: "info",
3550
- startIcon: /* @__PURE__ */ import_react24.default.createElement(import_md5.MdOutlineCameraAlt, { size: 16 }),
3474
+ startIcon: /* @__PURE__ */ import_react23.default.createElement(import_md5.MdOutlineCameraAlt, { size: 16 }),
3551
3475
  onClick: () => document.getElementById("camera-upload")?.click()
3552
3476
  },
3553
3477
  "\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0627\u0632 \u062F\u0648\u0631\u0628\u06CC\u0646"
3554
- ), /* @__PURE__ */ import_react24.default.createElement(
3555
- import_material21.Button,
3478
+ ), /* @__PURE__ */ import_react23.default.createElement(
3479
+ import_material20.Button,
3556
3480
  {
3557
3481
  sx: { width: "9rem" },
3558
3482
  variant: "outlined",
3559
3483
  color: "info",
3560
- startIcon: /* @__PURE__ */ import_react24.default.createElement(import_gr.GrGallery, { size: 16 }),
3484
+ startIcon: /* @__PURE__ */ import_react23.default.createElement(import_gr.GrGallery, { size: 16 }),
3561
3485
  onClick: () => document.getElementById("gallery-upload")?.click()
3562
3486
  },
3563
3487
  "\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0627\u0632 \u06AF\u0627\u0644\u0631\u06CC"
3564
3488
  )),
3565
- !allowGallery && /* @__PURE__ */ import_react24.default.createElement(
3489
+ !allowGallery && /* @__PURE__ */ import_react23.default.createElement(
3566
3490
  "input",
3567
3491
  {
3568
3492
  id: "file-upload",
@@ -3577,7 +3501,7 @@ var UploadImage = ({
3577
3501
  }
3578
3502
  )
3579
3503
  )
3580
- ), /* @__PURE__ */ import_react24.default.createElement(
3504
+ ), /* @__PURE__ */ import_react23.default.createElement(
3581
3505
  "input",
3582
3506
  {
3583
3507
  id: "gallery-upload",
@@ -3589,7 +3513,7 @@ var UploadImage = ({
3589
3513
  },
3590
3514
  style: { display: "none" }
3591
3515
  }
3592
- ), /* @__PURE__ */ import_react24.default.createElement(
3516
+ ), /* @__PURE__ */ import_react23.default.createElement(
3593
3517
  "input",
3594
3518
  {
3595
3519
  id: "camera-upload",
@@ -3602,13 +3526,13 @@ var UploadImage = ({
3602
3526
  },
3603
3527
  style: { display: "none" }
3604
3528
  }
3605
- ), selectedImage && /* @__PURE__ */ import_react24.default.createElement(
3606
- import_material21.Box,
3529
+ ), selectedImage && /* @__PURE__ */ import_react23.default.createElement(
3530
+ import_material20.Box,
3607
3531
  {
3608
3532
  sx: { display: "flex", justifyContent: "center", marginTop: 2 }
3609
3533
  },
3610
- /* @__PURE__ */ import_react24.default.createElement(
3611
- import_material21.Button,
3534
+ /* @__PURE__ */ import_react23.default.createElement(
3535
+ import_material20.Button,
3612
3536
  {
3613
3537
  onClick: () => {
3614
3538
  setSelectedImage(null);
@@ -3627,7 +3551,7 @@ var UploadImage = ({
3627
3551
  },
3628
3552
  "\u062D\u0630\u0641 \u062A\u0635\u0648\u06CC\u0631"
3629
3553
  )
3630
- ), errors[name] && /* @__PURE__ */ import_react24.default.createElement(import_material21.Typography, { color: "error", variant: "body2", sx: { mt: 1.5, ml: 1 } }, String(errors[name]?.message || "")))
3554
+ ), errors[name] && /* @__PURE__ */ import_react23.default.createElement(import_material20.Typography, { color: "error", variant: "body2", sx: { mt: 1.5, ml: 1 } }, String(errors[name]?.message || "")))
3631
3555
  }
3632
3556
  );
3633
3557
  };
@@ -3639,8 +3563,8 @@ var import_io2 = require("react-icons/io");
3639
3563
  var import_Accordion = __toESM(require("@mui/material/Accordion"));
3640
3564
  var import_AccordionSummary = __toESM(require("@mui/material/AccordionSummary"));
3641
3565
  var import_AccordionDetails = __toESM(require("@mui/material/AccordionDetails"));
3642
- var import_material22 = require("@mui/material");
3643
- var import_react25 = require("react");
3566
+ var import_material21 = require("@mui/material");
3567
+ var import_react24 = require("react");
3644
3568
  function Page({
3645
3569
  data
3646
3570
  }) {
@@ -3670,7 +3594,7 @@ function Page({
3670
3594
  padding: theme.spacing(2),
3671
3595
  borderTop: "1px solid rgba(0, 0, 0, .125)"
3672
3596
  }));
3673
- const [expanded, setExpanded] = (0, import_react25.useState)("");
3597
+ const [expanded, setExpanded] = (0, import_react24.useState)("");
3674
3598
  const handleChange = (panel) => (event, newExpanded) => {
3675
3599
  setExpanded(newExpanded ? panel : false);
3676
3600
  };
@@ -3694,17 +3618,149 @@ function Page({
3694
3618
  }
3695
3619
  }
3696
3620
  },
3697
- /* @__PURE__ */ React.createElement(import_material22.Typography, { component: "span" }, item.title)
3621
+ /* @__PURE__ */ React.createElement(import_material21.Typography, { component: "span" }, item.title)
3698
3622
  ),
3699
3623
  /* @__PURE__ */ React.createElement(AccordionDetails, null, item.body)
3700
3624
  );
3701
3625
  }));
3702
3626
  }
3627
+
3628
+ // src/switch-button/index.tsx
3629
+ var import_material22 = require("@mui/material");
3630
+ var import_system7 = require("@mui/system");
3631
+ var import_react25 = __toESM(require("react"));
3632
+ var import_pi = require("react-icons/pi");
3633
+ var import_material23 = require("@mui/material");
3634
+ var SwitchButton = ({
3635
+ checked,
3636
+ handleChange,
3637
+ iconChecked,
3638
+ iconUnchecked
3639
+ }) => {
3640
+ const theme = (0, import_material23.useTheme)();
3641
+ const isDarkMode = theme.palette.mode === "dark";
3642
+ const CustomSwitch = (0, import_system7.styled)(import_material22.Switch)(({ theme: theme2 }) => ({
3643
+ "& .MuiSwitch-switchBase.Mui-checked": {
3644
+ color: theme2.palette.primary.main
3645
+ },
3646
+ "& .MuiSwitch-switchBase": {
3647
+ color: isDarkMode ? "rgba(220,220,220,1)" : "rgba(188,188,188,1)"
3648
+ },
3649
+ "& .MuiSwitch-track": {
3650
+ // backgroundColor: "rgba(160,160,160, 0.1)",
3651
+ backgroundColor: "#fff",
3652
+ border: isDarkMode ? "2px solid white" : "2px solid rgba(80,80,80, 1)"
3653
+ }
3654
+ }));
3655
+ const BoxContainer = (0, import_system7.styled)(import_material22.Box)(({ theme: theme2 }) => ({
3656
+ display: "flex",
3657
+ alignItems: "center",
3658
+ backgroundColor: "rgba(188,188,188, 0.1)",
3659
+ border: "2px solid rgba(200,200,200, 1)",
3660
+ borderRadius: 10,
3661
+ transition: "all 0.3s ease",
3662
+ paddingTop: theme2.spacing(0.1),
3663
+ paddingBottom: theme2.spacing(0.1),
3664
+ paddingLeft: theme2.spacing(1)
3665
+ }));
3666
+ const LabelContainer = (0, import_system7.styled)("div")({
3667
+ transition: "all 0.2s ease",
3668
+ color: isDarkMode ? "rgba(220,220,220, 1)" : "rgba(160,160,160, 1)"
3669
+ });
3670
+ return /* @__PURE__ */ import_react25.default.createElement(BoxContainer, null, /* @__PURE__ */ import_react25.default.createElement(
3671
+ import_material22.FormControlLabel,
3672
+ {
3673
+ control: /* @__PURE__ */ import_react25.default.createElement(
3674
+ CustomSwitch,
3675
+ {
3676
+ checked,
3677
+ onChange: handleChange,
3678
+ name: "switch"
3679
+ }
3680
+ ),
3681
+ label: /* @__PURE__ */ import_react25.default.createElement(LabelContainer, null, checked ? iconChecked ? iconChecked : /* @__PURE__ */ import_react25.default.createElement(import_pi.PiTableDuotone, { size: 30 }) : iconUnchecked ? iconUnchecked : /* @__PURE__ */ import_react25.default.createElement(import_pi.PiCardsDuotone, { size: 30 }))
3682
+ }
3683
+ ));
3684
+ };
3685
+ var switch_button_default = SwitchButton;
3686
+
3687
+ // src/bascule-connection-button/index.tsx
3688
+ var import_material24 = require("@mui/material");
3689
+ var import_react26 = __toESM(require("react"));
3690
+ var import_react_hot_toast = __toESM(require("react-hot-toast"));
3691
+ var import_pi2 = require("react-icons/pi");
3692
+ var ConnectToBasculeButton = ({
3693
+ baudRate,
3694
+ dataBits = 8,
3695
+ stopBits = 1,
3696
+ parity = "none",
3697
+ flowControl = "none"
3698
+ }) => {
3699
+ const [connected, setConnected] = (0, import_react26.useState)(false);
3700
+ const portRef = (0, import_react26.useRef)(null);
3701
+ const connectToBascule = async () => {
3702
+ if (!("serial" in navigator)) {
3703
+ import_react_hot_toast.default.error("Web Serial API \u062A\u0648\u0633\u0637 \u0627\u06CC\u0646 \u0645\u0631\u0648\u0631\u06AF\u0631 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0646\u0645\u06CC\u200C\u0634\u0648\u062F.");
3704
+ return;
3705
+ }
3706
+ try {
3707
+ const serial = navigator.serial;
3708
+ const port = await serial.requestPort();
3709
+ await port.open({ baudRate, dataBits, stopBits, parity, flowControl });
3710
+ portRef.current = port;
3711
+ setConnected(true);
3712
+ import_react_hot_toast.default.success("\u0627\u062A\u0635\u0627\u0644 \u0628\u0647 \u0628\u0627\u0633\u06A9\u0648\u0644 \u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0627\u0646\u062C\u0627\u0645 \u0634\u062F.");
3713
+ } catch (error) {
3714
+ console.error(error);
3715
+ import_react_hot_toast.default.error("\u062E\u0637\u0627 \u062F\u0631 \u0627\u062A\u0635\u0627\u0644 \u0628\u0647 \u0628\u0627\u0633\u06A9\u0648\u0644. \u0644\u0637\u0641\u0627\u064B \u062F\u0648\u0628\u0627\u0631\u0647 \u062A\u0644\u0627\u0634 \u06A9\u0646\u06CC\u062F.");
3716
+ }
3717
+ };
3718
+ return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("style", null, `
3719
+ @keyframes jumpAnimation {
3720
+ 0% { transform: translateY(1px); }
3721
+ 12.5% { transform: translateY(-2px); }
3722
+ 25% { transform: translateY(1px); }
3723
+ 37.5% { transform: translateY(-2px); }
3724
+ 50% { transform: translateY(0); }
3725
+ 100% { transform: translateY(0); }
3726
+ }
3727
+ `), /* @__PURE__ */ import_react26.default.createElement(
3728
+ import_material24.Button,
3729
+ {
3730
+ variant: "contained",
3731
+ onClick: connectToBascule,
3732
+ disabled: connected,
3733
+ sx: { minWidth: "11rem" }
3734
+ },
3735
+ /* @__PURE__ */ import_react26.default.createElement(
3736
+ import_material24.Box,
3737
+ {
3738
+ sx: {
3739
+ display: "flex",
3740
+ alignItems: "center",
3741
+ gap: 1,
3742
+ fontSize: 16
3743
+ }
3744
+ },
3745
+ connected ? /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, "\u0645\u062A\u0635\u0644 \u0628\u0647 \u0628\u0627\u0633\u06A9\u0648\u0644", /* @__PURE__ */ import_react26.default.createElement(import_pi2.PiPlugsConnected, { size: 20 })) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, "\u0627\u062A\u0635\u0627\u0644 \u0628\u0647 \u0628\u0627\u0633\u06A9\u0648\u0644", /* @__PURE__ */ import_react26.default.createElement(
3746
+ import_pi2.PiPlugs,
3747
+ {
3748
+ size: 20,
3749
+ style: {
3750
+ animation: "jumpAnimation 2s ease-in-out infinite"
3751
+ }
3752
+ }
3753
+ ))
3754
+ )
3755
+ ));
3756
+ };
3757
+ var bascule_connection_button_default = ConnectToBasculeButton;
3703
3758
  // Annotate the CommonJS export names for ESM import in node:
3704
3759
  0 && (module.exports = {
3705
3760
  Accordion,
3706
3761
  AdvancedSearchButton,
3707
3762
  ConfirmationDialog,
3763
+ ConnectToBasculeButton,
3708
3764
  CustomCheckbox,
3709
3765
  CustomTimePicker,
3710
3766
  DateFilter,