@apexcura/ui-components 0.0.14-Beta21 → 0.0.14-Beta211

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.js CHANGED
@@ -31,20 +31,27 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  AddMoreTable: () => AddMoreTable,
34
+ BarChart: () => BarChart,
34
35
  ButtonElement: () => ButtonElement,
35
36
  CheckboxElement: () => CheckboxElement,
37
+ CircleDonut: () => CircleDonut,
36
38
  CkEditor: () => CkEditor,
37
39
  DatePickerElement: () => DatePickerElement,
38
40
  DateRangePickerElement: () => DateRangePickerElement,
41
+ DoubleBarChart: () => DoubleBarChart,
39
42
  DropDownGroup: () => DropDownGroup,
40
43
  FileUpload: () => FileUpload,
44
+ HorizontalBarChart: () => HorizontalBarChart,
41
45
  Image: () => Image,
46
+ LineChart: () => LineChart,
42
47
  MultipleSelectElement: () => MultipleSelectElement,
43
48
  Navbar: () => Navbar,
44
49
  NumberElement: () => NumberElement,
50
+ OtpElement: () => OtpElement,
45
51
  PasswordElement: () => PasswordElement,
46
52
  RadioElement: () => RadioElement,
47
53
  SelectElement: () => SelectElement,
54
+ SemiCircleDonut: () => SemiCircleDonut,
48
55
  Sidebar: () => Sidebar,
49
56
  SingleCheckbox: () => SingleCheckbox,
50
57
  SingleSelectElement: () => SingleSelectElement,
@@ -52,7 +59,8 @@ __export(src_exports, {
52
59
  TableElement: () => TableElement,
53
60
  TabsElement: () => TabsElement,
54
61
  TextElement: () => TextElement,
55
- TextareaElement: () => TextareaElement
62
+ TextareaElement: () => TextareaElement,
63
+ Upload: () => Upload2
56
64
  });
57
65
  module.exports = __toCommonJS(src_exports);
58
66
 
@@ -71,6 +79,7 @@ var TextElement = (props) => {
71
79
  placeholder: props.placeholder,
72
80
  allowClear: true,
73
81
  id: props.name,
82
+ value: props.value,
74
83
  prefix: props.prefix,
75
84
  type: props.type,
76
85
  status: props.status,
@@ -130,8 +139,7 @@ var NumberElement = (props) => {
130
139
  {
131
140
  placeholder: props.placeholder,
132
141
  addonBefore: props.addonBefore,
133
- allowClear: true,
134
- defaultValue: props.defaultValue,
142
+ value: props.value,
135
143
  disabled: props.disabled,
136
144
  id: props.name,
137
145
  prefix: props.prefix,
@@ -379,11 +387,14 @@ var ButtonElement = (props) => {
379
387
  return /* @__PURE__ */ import_react11.default.createElement(
380
388
  "button",
381
389
  {
382
- onClick: () => props.onClick && props.onClick(),
383
- className: `${props.className ? props.className : ""}`
390
+ onClick: props.onClick,
391
+ className: `${props.className ? props.className : ""}`,
392
+ disabled: props.loading,
393
+ style: {
394
+ cursor: props.loading ? "no-drop" : "pointer"
395
+ }
384
396
  },
385
- props.icon && /* @__PURE__ */ import_react11.default.createElement("img", { className: props.iconsClassName, src: props.icon }),
386
- props.label
397
+ /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement("span", { className: props.iconsClassName }, props.loading ? /* @__PURE__ */ import_react11.default.createElement("img", { src: props.icon, className: "icon-active" }) : /* @__PURE__ */ import_react11.default.createElement("span", { dangerouslySetInnerHTML: { __html: props.icon || "" } })), props.label)
387
398
  );
388
399
  };
389
400
 
@@ -525,10 +536,19 @@ var Sidebar = (props) => {
525
536
  props.onChange(item);
526
537
  }
527
538
  };
528
- return /* @__PURE__ */ import_react13.default.createElement("div", { className: props.className, key: props.name }, /* @__PURE__ */ import_react13.default.createElement("div", null, /* @__PURE__ */ import_react13.default.createElement("img", { src: props.img, alt: "logo" })), /* @__PURE__ */ import_react13.default.createElement("ul", { className: props.listClassName }, props.items?.map((item) => {
529
- return /* @__PURE__ */ import_react13.default.createElement("li", { onClick: () => {
530
- handleChange(item);
531
- }, key: item.label, className: `${props.listItemClassName} ${item.active && props.activeClassName}` }, /* @__PURE__ */ import_react13.default.createElement("img", { src: item.icon, className: props.className }), /* @__PURE__ */ import_react13.default.createElement("p", null, item.label));
539
+ return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, { key: props.name }, /* @__PURE__ */ import_react13.default.createElement("div", { className: props.imgClassName }, /* @__PURE__ */ import_react13.default.createElement("img", { src: props.img, alt: "logo" })), /* @__PURE__ */ import_react13.default.createElement("div", { className: props.listClassName }, props.items?.map((item) => {
540
+ return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, { key: item.label }, /* @__PURE__ */ import_react13.default.createElement(
541
+ ButtonElement,
542
+ {
543
+ ...item,
544
+ className: item.active ? props.activeClassName : props.className,
545
+ iconsClassName: props.iconsClassName,
546
+ onClick: (e) => {
547
+ e.preventDefault();
548
+ handleChange(item);
549
+ }
550
+ }
551
+ ));
532
552
  })));
533
553
  };
534
554
 
@@ -602,18 +622,48 @@ var import_antd13 = require("antd");
602
622
 
603
623
  // src/Components/ModelBody.tsx
604
624
  var import_react18 = __toESM(require("react"));
625
+ var import_moment = __toESM(require("moment"));
605
626
  var ModelBody = (props) => {
606
- return /* @__PURE__ */ import_react18.default.createElement("div", { className: props.modalContent && props.modalContent.className }, props.modalContent && props.modalContent.fields.map((eachField) => {
607
- if (eachField.element === "div") {
608
- return /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, eachField.label);
609
- } else if (eachField.element === "input-radio") {
610
- return /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(RadioElement, { ...eachField }));
611
- } else if (eachField.element === "button") {
612
- return /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(ButtonElement, { ...eachField }));
613
- } else {
614
- return null;
627
+ return /* @__PURE__ */ import_react18.default.createElement("div", { className: props.modalContent && props.modalContent.className }, props.modalContent && props.modalContent.fields.map(
628
+ (eachField) => {
629
+ if (eachField.element === "div") {
630
+ return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, eachField.label), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
631
+ "p",
632
+ {
633
+ style: {
634
+ fontSize: "10px",
635
+ textAlign: eachField.source === "bot" ? "left" : "right"
636
+ }
637
+ },
638
+ (0, import_moment.default)(eachField.dateTime).format("LT")
639
+ ) : "");
640
+ } else if (eachField.element === "input-radio") {
641
+ return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(RadioElement, { ...eachField })), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
642
+ "p",
643
+ {
644
+ style: {
645
+ fontSize: "10px",
646
+ textAlign: eachField.source === "bot" ? "left" : "right"
647
+ }
648
+ },
649
+ (0, import_moment.default)(eachField.dateTime).format("LT")
650
+ ) : "");
651
+ } else if (eachField.element === "button") {
652
+ return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(ButtonElement, { ...eachField })), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
653
+ "p",
654
+ {
655
+ style: {
656
+ fontSize: "10px",
657
+ textAlign: eachField.source === "bot" ? "left" : "right"
658
+ }
659
+ },
660
+ (0, import_moment.default)(eachField.dateTime).format("LT")
661
+ ) : "");
662
+ } else {
663
+ return null;
664
+ }
615
665
  }
616
- }));
666
+ ));
617
667
  };
618
668
 
619
669
  // src/Components/Model.tsx
@@ -638,9 +688,22 @@ var ModelElement = (props) => {
638
688
  margin: "-10px"
639
689
  }
640
690
  },
641
- Object.entries(selectedRecord).map(([key, value]) => {
642
- const record = columns.filter((eachColumn) => eachColumn.key === key);
643
- return record.length > 0 ? /* @__PURE__ */ import_react19.default.createElement("p", { style: { fontWeight: "500", padding: "10px" }, key }, /* @__PURE__ */ import_react19.default.createElement("span", { style: { fontWeight: "200", color: "gray", paddingRight: "10px" } }, record[0].title), String(value)) : "";
691
+ columns.map((eachColumn) => {
692
+ if (!["index", "View"].includes(eachColumn.key) && eachColumn?.["is_detail"] !== false) {
693
+ return /* @__PURE__ */ import_react19.default.createElement("p", { style: { fontWeight: "500", padding: "10px" } }, /* @__PURE__ */ import_react19.default.createElement(
694
+ "span",
695
+ {
696
+ style: {
697
+ fontWeight: "200",
698
+ color: "gray",
699
+ paddingRight: "10px"
700
+ }
701
+ },
702
+ eachColumn.title
703
+ ), selectedRecord[eachColumn.key] !== "" ? selectedRecord[eachColumn.key] : "--");
704
+ } else {
705
+ return null;
706
+ }
644
707
  })
645
708
  )
646
709
  },
@@ -649,15 +712,30 @@ var ModelElement = (props) => {
649
712
  };
650
713
 
651
714
  // src/Components/TableElement.tsx
715
+ var import_icons4 = require("@ant-design/icons");
652
716
  var TableElement = (props) => {
653
717
  const { thead, tbody } = props;
654
718
  const [selectedRecord, setSelectedRecord] = (0, import_react20.useState)({});
655
719
  const [model, setModel] = (0, import_react20.useState)(false);
656
- const [selectedRowKeys, setSelectedRowKeys] = (0, import_react20.useState)([]);
720
+ const [dataSource, setDataSource] = (0, import_react20.useState)([]);
721
+ console.log(props.value);
722
+ const defaultVal = props.value;
723
+ (0, import_react20.useEffect)(() => {
724
+ if (tbody) {
725
+ setDataSource(
726
+ tbody.map((row, index) => ({
727
+ ...row,
728
+ key: index,
729
+ index: index + 1
730
+ }))
731
+ );
732
+ }
733
+ }, [tbody]);
657
734
  const handleChange = (record) => {
658
- console.log("record", record);
659
- if (props.onChange) {
660
- props.onChange(record);
735
+ if (record) {
736
+ props.onChange && props.onChange(record);
737
+ } else {
738
+ props.onChange && props.onChange(defaultVal);
661
739
  }
662
740
  };
663
741
  let columns = [];
@@ -665,106 +743,153 @@ var TableElement = (props) => {
665
743
  columns = [
666
744
  {
667
745
  title: "#",
668
- dataIndex: "#",
669
- key: "#"
746
+ dataIndex: "index",
747
+ key: "index",
748
+ fixed: "left"
670
749
  },
671
750
  ...thead.map((col, ind) => ({
672
751
  title: col.label,
673
752
  dataIndex: col.name,
674
753
  key: col.key,
754
+ ellipsis: col.ellipsis,
675
755
  render: col.render,
676
756
  sorter: {
677
757
  compare: (a, b) => {
678
- if (typeof a[col.key] === "number" && typeof a[col.key] === "number") {
758
+ if (typeof a[col.key] === "number" && typeof b[col.key] === "number") {
679
759
  return a[col.key] - b[col.key];
680
- } else if (typeof a[col.key] === "string" && typeof a[col.key] === "string") {
760
+ } else if (typeof a[col.key] === "string" && typeof b[col.key] === "string") {
681
761
  return a[col.key].localeCompare(b[col.key]);
682
762
  }
683
763
  }
684
764
  }
685
- })),
686
- {
765
+ }))
766
+ ];
767
+ if (props.view) {
768
+ columns.push({
687
769
  title: "View",
688
770
  dataIndex: "View",
689
771
  key: "View",
690
- render: (_, record) => /* @__PURE__ */ import_react20.default.createElement(
691
- "a",
692
- {
693
- onClick: () => {
694
- setSelectedRecord(record);
695
- handleChange(record);
696
- setModel(true);
697
- }
698
- },
699
- "View"
700
- )
701
- }
702
- ];
772
+ render: (_, record) => {
773
+ return /* @__PURE__ */ import_react20.default.createElement(
774
+ "a",
775
+ {
776
+ onClick: () => {
777
+ if (props.view) {
778
+ setSelectedRecord(record);
779
+ handleChange(record);
780
+ setModel(true);
781
+ }
782
+ }
783
+ },
784
+ /* @__PURE__ */ import_react20.default.createElement(import_icons4.EyeOutlined, null)
785
+ );
786
+ }
787
+ });
788
+ }
703
789
  }
704
- const dataSource = tbody && tbody.map((row, index) => ({
705
- ...row,
706
- [columns[0].key]: index + 1
707
- }));
708
- const count = dataSource ? dataSource.length : 0;
790
+ const onChangeTable = (pagination, filters, sorter, extra) => {
791
+ if (extra && extra.currentDataSource) {
792
+ setDataSource(
793
+ extra.currentDataSource.map((row, index) => ({
794
+ ...row,
795
+ index: index + 1
796
+ }))
797
+ );
798
+ }
799
+ };
709
800
  const onChangePage = (page, pageSize) => {
710
801
  if (props.onChange) {
711
802
  props.onChange({ name: "pagination", page, pageSize });
712
803
  }
713
804
  };
714
- const onSelectChange = (newSelectedRowKeys) => {
715
- console.log("selectedRowKeys changed: ", newSelectedRowKeys);
716
- setSelectedRowKeys(newSelectedRowKeys);
717
- };
718
805
  const rowSelectionConfig = props.rowSelection ? {
719
- selectedRowKeys,
720
- onChange: onSelectChange
806
+ onChange: (selectedRowKeys, selectedRows) => {
807
+ console.log(
808
+ `selectedRowKeys: ${selectedRowKeys}`,
809
+ "selectedRows: ",
810
+ selectedRows
811
+ );
812
+ if (props.onChange) {
813
+ props.onChange(selectedRows);
814
+ }
815
+ }
721
816
  } : void 0;
722
817
  return /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
723
818
  import_antd14.Table,
724
819
  {
725
- pagination: {
820
+ loading: props.loading,
821
+ className: props.className,
822
+ pagination: props.pagination ? {
823
+ defaultCurrent: props.value && props.value.page,
726
824
  showTotal: (total) => `Total: ${total} items`,
727
- total: count,
728
- showSizeChanger: count > 10,
825
+ total: props.count,
826
+ showSizeChanger: props.count ? props.count > 10 : 0 > 10,
729
827
  onChange: onChangePage
828
+ } : false,
829
+ onRow: (record) => {
830
+ return {
831
+ onClick: () => {
832
+ if (props.view) {
833
+ setSelectedRecord(record);
834
+ handleChange(record);
835
+ setModel(true);
836
+ }
837
+ },
838
+ style: { cursor: "pointer" }
839
+ };
730
840
  },
841
+ rowSelection: rowSelectionConfig,
731
842
  dataSource,
732
843
  columns,
844
+ size: props.size,
733
845
  bordered: true,
734
- rowSelection: rowSelectionConfig,
735
- size: props.size && props.size
846
+ onChange: onChangeTable
847
+ }
848
+ ), model && /* @__PURE__ */ import_react20.default.createElement(
849
+ ModelElement,
850
+ {
851
+ selectedRecord,
852
+ ...props,
853
+ columns,
854
+ model,
855
+ onCancel: () => setModel(false)
736
856
  }
737
- ), model && /* @__PURE__ */ import_react20.default.createElement(ModelElement, { selectedRecord, ...props, columns, model, onCancel: () => setModel(false) }));
857
+ ));
738
858
  };
739
859
 
740
860
  // src/Components/DatePicker.tsx
741
861
  var import_react21 = __toESM(require("react"));
742
862
  var import_antd15 = require("antd");
863
+ var import_dayjs = __toESM(require("dayjs"));
864
+ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
865
+ var import_moment2 = __toESM(require("moment"));
866
+ import_dayjs.default.extend(import_customParseFormat.default);
743
867
  var DatePickerElement = (props) => {
744
- const [date, setDate] = (0, import_react21.useState)(null);
745
- const dateFormat = "DD/MM/YYYY";
746
- const handleChange = (date2, dateString) => {
747
- console.log("date==========", date2);
748
- if (date2) {
749
- console.log("date==", date2);
750
- const formattedDate = date2.format(dateFormat);
751
- setDate(date2);
868
+ const [dateState, setDateState] = (0, import_react21.useState)("");
869
+ const handleChange = (date, dateString) => {
870
+ if (date) {
871
+ const formattedDate = dateString;
872
+ setDateState(date);
752
873
  if (props.onChange) {
753
874
  props.onChange(formattedDate);
754
875
  }
755
876
  } else {
756
- setDate(null);
877
+ setDateState("");
757
878
  if (props.onChange) {
758
879
  props.onChange("");
759
880
  }
760
881
  }
761
882
  };
883
+ const disabledDate = (current) => {
884
+ return current && current > (0, import_moment2.default)();
885
+ };
762
886
  return /* @__PURE__ */ import_react21.default.createElement("div", null, /* @__PURE__ */ import_react21.default.createElement(
763
887
  import_antd15.DatePicker,
764
888
  {
889
+ disabledDate,
765
890
  placeholder: props.placeholder,
766
- value: date,
767
- variant: "borderless",
891
+ value: dateState,
892
+ format: { format: "DD-MM-YYYY" },
768
893
  onChange: handleChange
769
894
  }
770
895
  ));
@@ -773,29 +898,45 @@ var DatePickerElement = (props) => {
773
898
  // src/Components/DateRangePickerElement.tsx
774
899
  var import_react22 = __toESM(require("react"));
775
900
  var import_antd16 = require("antd");
776
- var import_dayjs = __toESM(require("dayjs"));
901
+ var import_dayjs2 = __toESM(require("dayjs"));
777
902
  var DateRangePickerElement = (props) => {
903
+ const { value } = props;
778
904
  const { RangePicker } = import_antd16.DatePicker;
779
905
  const handleChange = (dates, dateStrings) => {
780
- if (dates && props.onChange) {
781
- props.onChange(dateStrings);
906
+ if (dates) {
907
+ props.onChange && props.onChange(dateStrings);
782
908
  } else {
783
- console.log("Clear");
909
+ props.onChange && props.onChange(["", ""]);
784
910
  }
785
911
  };
786
912
  const rangePresets = [
787
- { label: "Last 7 Days", value: [(0, import_dayjs.default)().add(-7, "d"), (0, import_dayjs.default)()] },
788
- { label: "Last 14 Days", value: [(0, import_dayjs.default)().add(-14, "d"), (0, import_dayjs.default)()] },
789
- { label: "Last 30 Days", value: [(0, import_dayjs.default)().add(-30, "d"), (0, import_dayjs.default)()] },
790
- { label: "Last 90 Days", value: [(0, import_dayjs.default)().add(-90, "d"), (0, import_dayjs.default)()] }
913
+ { label: "Last 7 Days", value: [(0, import_dayjs2.default)().add(-7, "d"), (0, import_dayjs2.default)()] },
914
+ { label: "Last 14 Days", value: [(0, import_dayjs2.default)().add(-14, "d"), (0, import_dayjs2.default)()] },
915
+ { label: "Last 30 Days", value: [(0, import_dayjs2.default)().add(-30, "d"), (0, import_dayjs2.default)()] },
916
+ { label: "Last 90 Days", value: [(0, import_dayjs2.default)().add(-90, "d"), (0, import_dayjs2.default)()] }
791
917
  ];
792
- return /* @__PURE__ */ import_react22.default.createElement(import_antd16.Space, { direction: "vertical", size: 12 }, /* @__PURE__ */ import_react22.default.createElement(RangePicker, { presets: rangePresets, onChange: handleChange }));
918
+ const disabledDate = (current) => {
919
+ return current && current > (0, import_dayjs2.default)();
920
+ };
921
+ return /* @__PURE__ */ import_react22.default.createElement(import_antd16.Space, { direction: "vertical", size: 12 }, /* @__PURE__ */ import_react22.default.createElement(
922
+ RangePicker,
923
+ {
924
+ disabledDate,
925
+ presets: rangePresets,
926
+ format: { format: "DD-MM-YYYY" },
927
+ onChange: handleChange,
928
+ value: value && value.length === 2 && [
929
+ (0, import_dayjs2.default)(value[0]),
930
+ (0, import_dayjs2.default)(value[1])
931
+ ]
932
+ }
933
+ ));
793
934
  };
794
935
 
795
936
  // src/Components/Image.tsx
796
937
  var import_react23 = __toESM(require("react"));
797
938
  var Image = (props) => {
798
- return /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("img", { className: props.className, src: props.img, alt: "image" }));
939
+ return /* @__PURE__ */ import_react23.default.createElement("img", { className: props.className, src: props.img, alt: "image" });
799
940
  };
800
941
 
801
942
  // src/Components/SingleCheckbox.tsx
@@ -814,60 +955,64 @@ var SingleCheckbox = (props) => {
814
955
  var import_react25 = __toESM(require("react"));
815
956
  var import_antd18 = require("antd");
816
957
  var DropDownGroup = (props) => {
817
- const [selectedValue, setSelectedValue] = (0, import_react25.useState)({ firstValue: {}, secondValue: {} });
818
- console.log(selectedValue);
958
+ const [selectedValue, setSelectedValue] = (0, import_react25.useState)({
959
+ firstValue: {},
960
+ secondValue: {},
961
+ temp: ""
962
+ });
819
963
  const handleFirstChange = (value) => {
820
- const filterOption2 = props.firstOptions?.find((eachOption) => eachOption.value === value);
964
+ console.log(selectedValue.temp);
965
+ const filterOption2 = props.firstOptions?.find(
966
+ (eachOption) => eachOption.value === value
967
+ );
821
968
  setSelectedValue((prev) => {
822
969
  const newValue = { ...prev, firstValue: filterOption2 };
970
+ const { temp, ...rest } = newValue;
823
971
  if (newValue.firstValue) {
824
- props.onChange?.(newValue);
972
+ props.onChange?.(rest);
825
973
  }
826
974
  return newValue;
827
975
  });
828
976
  };
829
977
  const handleSecondChange = (value) => {
830
- const filterOption2 = props.secondOptions?.find((eachOption) => eachOption.value === value);
978
+ const filterOption2 = props.secondOptions?.find(
979
+ (eachOption) => eachOption.value === value
980
+ );
831
981
  setSelectedValue((prev) => {
832
982
  const newValue = { ...prev, secondValue: filterOption2 };
983
+ const { temp, ...rest } = newValue;
833
984
  if (newValue.secondValue) {
834
- props.onChange?.(newValue);
985
+ props.onChange?.(rest);
835
986
  }
836
987
  return newValue;
837
988
  });
838
989
  };
839
- return /* @__PURE__ */ import_react25.default.createElement("div", { className: props.className, style: { display: "flex", flexDirection: "row", backgroundColor: "white", borderRadius: 10, border: "1px solid gray" } }, /* @__PURE__ */ import_react25.default.createElement(
990
+ return /* @__PURE__ */ import_react25.default.createElement("div", { className: props.containerClassName }, props.label && /* @__PURE__ */ import_react25.default.createElement("label", { htmlFor: props.name, className: props.labelClassName }, props.label), /* @__PURE__ */ import_react25.default.createElement("div", { className: props.subContainerClassName }, /* @__PURE__ */ import_react25.default.createElement(
840
991
  import_antd18.Select,
841
992
  {
842
993
  onChange: handleFirstChange,
843
994
  variant: props.variant,
844
- options: props.firstOptions
995
+ options: props.firstOptions,
996
+ className: props.className
845
997
  }
846
998
  ), /* @__PURE__ */ import_react25.default.createElement("div", { style: { borderLeft: "1px solid gray", height: "33px" } }), /* @__PURE__ */ import_react25.default.createElement(
847
999
  import_antd18.Select,
848
1000
  {
849
1001
  onChange: handleSecondChange,
850
1002
  variant: props.variant,
851
- options: props.secondOptions
1003
+ options: props.secondOptions,
1004
+ className: props.className
852
1005
  }
853
- ));
1006
+ )));
854
1007
  };
855
1008
 
856
1009
  // src/Components/FilesUpload.tsx
857
1010
  var import_react26 = __toESM(require("react"));
858
1011
  var import_antd19 = require("antd");
859
- var import_icons4 = require("@ant-design/icons");
1012
+ var import_icons5 = require("@ant-design/icons");
860
1013
  var FileUpload = (props) => {
861
1014
  const { Dragger } = import_antd19.Upload;
862
1015
  const [files, setFiles] = (0, import_react26.useState)([]);
863
- const beforeUpload = (file) => {
864
- const isCorrectFile = ["image/*", "video/*", "application/*"].includes(file.type);
865
- if (!isCorrectFile) {
866
- import_antd19.message.error(`(${file.name}) is an invalid file. Please upload files with the following extensions only (.png/.jpg/.jpeg/.pdf)`);
867
- return import_antd19.Upload.LIST_IGNORE;
868
- }
869
- return true;
870
- };
871
1016
  const handleChange = ({ fileList }) => {
872
1017
  setFiles(fileList);
873
1018
  if (props.onChange) {
@@ -891,12 +1036,11 @@ var FileUpload = (props) => {
891
1036
  maxCount: props.max_count,
892
1037
  multiple: props.multiple,
893
1038
  fileList: files,
894
- beforeUpload,
895
1039
  onChange: handleChange,
896
1040
  showUploadList: true,
897
1041
  customRequest
898
1042
  },
899
- /* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(import_icons4.InboxOutlined, null)),
1043
+ /* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(import_icons5.InboxOutlined, null)),
900
1044
  /* @__PURE__ */ import_react26.default.createElement("p", null, "Click or drag file to upload")
901
1045
  ));
902
1046
  };
@@ -920,23 +1064,546 @@ var onChange = (checked) => {
920
1064
  console.log(`switch to ${checked}`);
921
1065
  };
922
1066
  var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(import_antd21.Switch, { defaultChecked: true, onChange });
1067
+
1068
+ // src/Components/Upload.tsx
1069
+ var import_react29 = __toESM(require("react"));
1070
+ var Upload2 = (props) => {
1071
+ const [file, setFile] = (0, import_react29.useState)();
1072
+ const handleFileChange = (e) => {
1073
+ setFile(e.target.files[0]);
1074
+ if (props.onChange) {
1075
+ props.onChange(e.target.files[0]);
1076
+ }
1077
+ };
1078
+ const handleUpload = async () => {
1079
+ if (!file) {
1080
+ console.error("No file selected");
1081
+ return;
1082
+ }
1083
+ };
1084
+ return /* @__PURE__ */ import_react29.default.createElement("div", { style: { marginTop: 16 } }, /* @__PURE__ */ import_react29.default.createElement("input", { type: "file", onChange: handleFileChange }), /* @__PURE__ */ import_react29.default.createElement(
1085
+ "button",
1086
+ {
1087
+ type: "button",
1088
+ onClick: handleUpload,
1089
+ disabled: !file,
1090
+ style: { marginTop: 16 }
1091
+ },
1092
+ "Upload"
1093
+ ));
1094
+ };
1095
+
1096
+ // src/Components/OtpElement.tsx
1097
+ var import_react30 = __toESM(require("react"));
1098
+ var import_antd22 = require("antd");
1099
+ var OtpElement = (props) => {
1100
+ const length = props.length;
1101
+ const [otp, setOtp] = (0, import_react30.useState)(Array(length).fill(""));
1102
+ const inputRefs = (0, import_react30.useRef)([]);
1103
+ const handleChange = (e, index) => {
1104
+ const value = e.target.value;
1105
+ if (/^[0-9]$/.test(value) || value === "") {
1106
+ const newOtp = [...otp];
1107
+ newOtp[index] = value;
1108
+ setOtp(newOtp);
1109
+ props.onChange && props.onChange(newOtp.join(""));
1110
+ if (value && index < length - 1) {
1111
+ inputRefs.current[index + 1]?.focus();
1112
+ }
1113
+ }
1114
+ };
1115
+ const handleKeyDown = (e, index) => {
1116
+ if (e.key === "Backspace" && !otp[index] && index > 0) {
1117
+ inputRefs.current[index - 1]?.focus();
1118
+ }
1119
+ };
1120
+ const handlePaste = (e) => {
1121
+ e.preventDefault();
1122
+ const pasteData = e.clipboardData.getData("text");
1123
+ if (/^\d+$/.test(pasteData)) {
1124
+ const newOtp = pasteData.split("").slice(0, length);
1125
+ setOtp(newOtp.concat(Array(length - newOtp.length).fill("")));
1126
+ props.onChange && props.onChange(newOtp.join(""));
1127
+ newOtp.forEach((_, idx) => {
1128
+ if (inputRefs.current[idx]) {
1129
+ inputRefs.current[idx]?.focus();
1130
+ }
1131
+ });
1132
+ }
1133
+ };
1134
+ (0, import_react30.useEffect)(() => {
1135
+ inputRefs.current[0]?.focus();
1136
+ }, []);
1137
+ return /* @__PURE__ */ import_react30.default.createElement("div", { className: props.containerClassName }, Array.from({ length }).map((_, index) => /* @__PURE__ */ import_react30.default.createElement(
1138
+ import_antd22.Input,
1139
+ {
1140
+ key: index,
1141
+ className: props.className,
1142
+ maxLength: 1,
1143
+ value: otp[index],
1144
+ onChange: (e) => handleChange(e, index),
1145
+ onKeyDown: (e) => handleKeyDown(e, index),
1146
+ onPaste: handlePaste,
1147
+ ref: (el) => inputRefs.current[index] = el
1148
+ }
1149
+ )));
1150
+ };
1151
+
1152
+ // src/Components/CircleDonut.tsx
1153
+ var import_react31 = __toESM(require("react"));
1154
+ var import_react_chartjs_2 = require("react-chartjs-2");
1155
+ var import_chart = require("chart.js");
1156
+ import_chart.Chart.register(import_chart.DoughnutController, import_chart.ArcElement, import_chart.Tooltip, import_chart.Legend);
1157
+ var CircleDonut = (props) => {
1158
+ const data = {
1159
+ labels: props.labels,
1160
+ datasets: [
1161
+ {
1162
+ label: "Bot Conversation",
1163
+ data: props.data,
1164
+ backgroundColor: [
1165
+ "#FFCB8A",
1166
+ "#CADBBF",
1167
+ "#8AC1BB",
1168
+ "#FCB0CB",
1169
+ "#CEB0FA"
1170
+ ],
1171
+ borderWidth: 0
1172
+ }
1173
+ ]
1174
+ };
1175
+ const options = {
1176
+ responsive: true,
1177
+ cutout: "80%",
1178
+ plugins: {
1179
+ legend: {
1180
+ position: "left",
1181
+ labels: {
1182
+ font: {
1183
+ size: 10
1184
+ },
1185
+ boxWidth: 15,
1186
+ generateLabels: (chart) => {
1187
+ const dataset = chart.data.datasets[0];
1188
+ return chart.data.labels.map((label, index) => {
1189
+ const value = dataset.data[index];
1190
+ return {
1191
+ text: `${label}: ${value}`,
1192
+ fillStyle: dataset.backgroundColor[index]
1193
+ };
1194
+ });
1195
+ }
1196
+ }
1197
+ },
1198
+ tooltip: {
1199
+ enabled: true,
1200
+ callbacks: {
1201
+ label: function(context) {
1202
+ const label = context.label || "";
1203
+ const value = context.raw || 0;
1204
+ return `${label}: ${value}`;
1205
+ }
1206
+ }
1207
+ }
1208
+ }
1209
+ };
1210
+ const centerTextPlugin = {
1211
+ id: "centerText",
1212
+ beforeDraw: (chart) => {
1213
+ const { ctx, chartArea: { left, right, top, bottom } } = chart;
1214
+ const width = right - left;
1215
+ const height = bottom - top;
1216
+ const centerX = left + width / 2;
1217
+ const centerY = top + height / 2;
1218
+ ctx.save();
1219
+ ctx.font = "7px Arial";
1220
+ ctx.fillStyle = "blue";
1221
+ ctx.textAlign = "center";
1222
+ ctx.textBaseline = "middle";
1223
+ ctx.fillText("Total Sessions", centerX, centerY - 10);
1224
+ ctx.font = "25px Arial";
1225
+ ctx.fillStyle = "black";
1226
+ ctx.fillText("85", centerX, centerY + 20);
1227
+ ctx.restore();
1228
+ }
1229
+ };
1230
+ return /* @__PURE__ */ import_react31.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react31.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react31.default.createElement(import_react_chartjs_2.Doughnut, { data, options, plugins: [centerTextPlugin] }));
1231
+ };
1232
+
1233
+ // src/Components/SemiCircleDonut.tsx
1234
+ var import_react32 = __toESM(require("react"));
1235
+ var import_react_chartjs_22 = require("react-chartjs-2");
1236
+ var import_chart2 = require("chart.js");
1237
+ import_chart2.Chart.register(import_chart2.DoughnutController, import_chart2.ArcElement, import_chart2.Tooltip, import_chart2.Legend);
1238
+ var SemiCircleDonut = (props) => {
1239
+ const data = {
1240
+ labels: [
1241
+ "Registration",
1242
+ "Book Appointment",
1243
+ "Diagnostic Tests",
1244
+ "Hospital Facility",
1245
+ "Others, Prescriptions"
1246
+ ],
1247
+ datasets: [
1248
+ {
1249
+ label: "Bot Conversation",
1250
+ data: [30, 10, 27, 40, 12],
1251
+ backgroundColor: [
1252
+ "#FFCB8A",
1253
+ "#CADBBF",
1254
+ "#8AC1BB",
1255
+ "#FCB0CB",
1256
+ "#CEB0FA"
1257
+ ],
1258
+ borderWidth: 0
1259
+ }
1260
+ ]
1261
+ };
1262
+ const options = {
1263
+ responsive: true,
1264
+ circumference: 180,
1265
+ rotation: -90,
1266
+ cutout: "80%",
1267
+ plugins: {
1268
+ legend: {
1269
+ display: false
1270
+ // Disable the legend
1271
+ },
1272
+ tooltip: {
1273
+ enabled: true,
1274
+ callbacks: {
1275
+ label: function(context) {
1276
+ const label = context.label || "";
1277
+ const value = context.raw || 0;
1278
+ return `${label}: ${value}`;
1279
+ }
1280
+ }
1281
+ }
1282
+ }
1283
+ };
1284
+ const centerTextPlugin = {
1285
+ id: "centerText",
1286
+ beforeDraw: (chart) => {
1287
+ const { ctx, chartArea: { left, right, top, bottom } } = chart;
1288
+ const width = right - left;
1289
+ const height = bottom - top;
1290
+ const centerX = left + width / 2;
1291
+ const centerY = top + height / 1.5;
1292
+ const maxWidth = width * 0.8;
1293
+ ctx.save();
1294
+ ctx.fillStyle = "black";
1295
+ ctx.textAlign = "center";
1296
+ ctx.textBaseline = "middle";
1297
+ const drawText = (text, y, fontSize) => {
1298
+ ctx.font = `${fontSize}px Arial`;
1299
+ const textWidth = ctx.measureText(text).width;
1300
+ if (textWidth > maxWidth) {
1301
+ const newFontSize = fontSize * maxWidth / textWidth;
1302
+ ctx.font = `${newFontSize}px Arial`;
1303
+ }
1304
+ ctx.fillText(text, centerX, y);
1305
+ };
1306
+ drawText(props.fillText1, centerY - 10, 16);
1307
+ drawText(props.fillText2, centerY + 20, 8);
1308
+ ctx.restore();
1309
+ }
1310
+ };
1311
+ return /* @__PURE__ */ import_react32.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react32.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react32.default.createElement(import_react_chartjs_22.Doughnut, { data, options, plugins: [centerTextPlugin] }));
1312
+ };
1313
+
1314
+ // src/Components/HorizontalBarChart.tsx
1315
+ var import_react33 = __toESM(require("react"));
1316
+ var import_react_chartjs_23 = require("react-chartjs-2");
1317
+ var import_chart3 = require("chart.js");
1318
+ import_chart3.Chart.register(import_chart3.BarElement, import_chart3.CategoryScale, import_chart3.LinearScale, import_chart3.Tooltip);
1319
+ var HorizontalBarChart = (props) => {
1320
+ const data = {
1321
+ labels: ["18-24", "25-34", "35-44", "45-54", "55-64", "65+"],
1322
+ datasets: [
1323
+ {
1324
+ data: [30, 10, 27, 40, 12, 24],
1325
+ backgroundColor: "#6298D5",
1326
+ barThickness: 15
1327
+ }
1328
+ ]
1329
+ };
1330
+ const options = {
1331
+ responsive: true,
1332
+ indexAxis: "y",
1333
+ scales: {
1334
+ x: {
1335
+ beginAtZero: true,
1336
+ ticks: {
1337
+ callback: function(value) {
1338
+ return `${value}%`;
1339
+ }
1340
+ }
1341
+ },
1342
+ y: {
1343
+ grid: {
1344
+ display: false
1345
+ }
1346
+ }
1347
+ },
1348
+ plugins: {
1349
+ tooltip: {
1350
+ enabled: true,
1351
+ callbacks: {
1352
+ label: function(context) {
1353
+ const label = context.label || "";
1354
+ const value = context.raw || 0;
1355
+ return `${label}: ${value}`;
1356
+ }
1357
+ }
1358
+ },
1359
+ legend: {
1360
+ display: false
1361
+ }
1362
+ }
1363
+ };
1364
+ return /* @__PURE__ */ import_react33.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react33.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react33.default.createElement(import_react_chartjs_23.Bar, { data, options }));
1365
+ };
1366
+
1367
+ // src/Components/LineChart.tsx
1368
+ var import_react34 = __toESM(require("react"));
1369
+ var import_auto = __toESM(require("chart.js/auto"));
1370
+ var LineChart = (props) => {
1371
+ const chartRef = (0, import_react34.useRef)(null);
1372
+ const chartInstance = (0, import_react34.useRef)(null);
1373
+ const data = [
1374
+ { label: "ROI", data: [10, 13, 20, 15, 10] },
1375
+ { label: "Engagement Rate", data: [20, 23, 30, 28, 20] },
1376
+ { label: "Conversion Rate", data: [50, 100, 150, 180, 50] }
1377
+ ];
1378
+ const labels = ["Instagram", "Whatsapp", "Messages", "Telegram", "Linkedin"];
1379
+ (0, import_react34.useEffect)(() => {
1380
+ if (chartRef.current) {
1381
+ if (chartInstance.current) {
1382
+ chartInstance.current.destroy();
1383
+ }
1384
+ chartInstance.current = new import_auto.default(chartRef.current, {
1385
+ type: "line",
1386
+ data: {
1387
+ labels,
1388
+ datasets: data.map((dataset, index) => ({
1389
+ label: dataset.label,
1390
+ data: dataset.data,
1391
+ borderColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
1392
+ backgroundColor: "rgba(0, 0, 0, 0)",
1393
+ pointBackgroundColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
1394
+ pointBorderColor: "white",
1395
+ pointStyle: "circle",
1396
+ pointRadius: 3,
1397
+ tension: 0.1,
1398
+ fill: true
1399
+ }))
1400
+ },
1401
+ options: {
1402
+ plugins: {
1403
+ legend: {
1404
+ labels: {
1405
+ usePointStyle: true
1406
+ }
1407
+ }
1408
+ },
1409
+ scales: {
1410
+ x: {
1411
+ grid: {
1412
+ display: false
1413
+ }
1414
+ },
1415
+ y: {
1416
+ beginAtZero: true,
1417
+ suggestedMax: 200,
1418
+ ticks: {
1419
+ callback: function(value) {
1420
+ return value + "%";
1421
+ }
1422
+ },
1423
+ grid: {
1424
+ display: true
1425
+ }
1426
+ }
1427
+ }
1428
+ }
1429
+ });
1430
+ }
1431
+ return () => {
1432
+ if (chartInstance.current) {
1433
+ chartInstance.current.destroy();
1434
+ }
1435
+ };
1436
+ }, [labels, data]);
1437
+ return /* @__PURE__ */ import_react34.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react34.default.createElement("canvas", { ref: chartRef }));
1438
+ };
1439
+
1440
+ // src/Components/DoubleBarChart.tsx
1441
+ var import_react35 = __toESM(require("react"));
1442
+ var import_auto2 = __toESM(require("chart.js/auto"));
1443
+ var DoubleBarChart = (props) => {
1444
+ const chartRef = (0, import_react35.useRef)(null);
1445
+ const chartInstance = (0, import_react35.useRef)(null);
1446
+ (0, import_react35.useEffect)(() => {
1447
+ if (chartRef.current) {
1448
+ if (chartInstance.current) {
1449
+ chartInstance.current.destroy();
1450
+ }
1451
+ chartInstance.current = new import_auto2.default(chartRef.current, {
1452
+ type: "bar",
1453
+ data: {
1454
+ labels: [
1455
+ "Summer Health Tips",
1456
+ "New Services Launch",
1457
+ "Discounts on Checkups",
1458
+ "Wellness Webinar",
1459
+ "LinkedIn Insights"
1460
+ ],
1461
+ datasets: [
1462
+ {
1463
+ label: "Engagement Rate",
1464
+ data: [60, 70, 50, 80, 65],
1465
+ // Example data for male
1466
+ backgroundColor: "#93B8E2",
1467
+ barThickness: 10
1468
+ },
1469
+ {
1470
+ label: "Conversion Rate",
1471
+ data: [70, 65, 75, 55, 85],
1472
+ // Example data for female
1473
+ backgroundColor: "#4484CD",
1474
+ barThickness: 10
1475
+ }
1476
+ ]
1477
+ },
1478
+ options: {
1479
+ scales: {
1480
+ x: {
1481
+ grid: {
1482
+ display: false
1483
+ // Display x-axis grid lines
1484
+ }
1485
+ },
1486
+ y: {
1487
+ beginAtZero: true,
1488
+ suggestedMax: 100,
1489
+ ticks: {
1490
+ callback: function(value) {
1491
+ return value + "%";
1492
+ }
1493
+ },
1494
+ grid: {
1495
+ display: true
1496
+ }
1497
+ }
1498
+ },
1499
+ plugins: {
1500
+ legend: {
1501
+ labels: {
1502
+ usePointStyle: true
1503
+ }
1504
+ }
1505
+ }
1506
+ }
1507
+ });
1508
+ }
1509
+ return () => {
1510
+ if (chartInstance.current) {
1511
+ chartInstance.current.destroy();
1512
+ }
1513
+ };
1514
+ }, []);
1515
+ return /* @__PURE__ */ import_react35.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react35.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react35.default.createElement("canvas", { ref: chartRef }));
1516
+ };
1517
+
1518
+ // src/Components/BarChart.tsx
1519
+ var import_react36 = __toESM(require("react"));
1520
+ var import_react_chartjs_24 = require("react-chartjs-2");
1521
+ var import_chart4 = require("chart.js");
1522
+ import_chart4.Chart.register(import_chart4.BarElement, import_chart4.CategoryScale, import_chart4.LinearScale, import_chart4.Tooltip);
1523
+ var BarChart = (props) => {
1524
+ const data = {
1525
+ labels: [
1526
+ "17 June",
1527
+ "18 June",
1528
+ "19 June",
1529
+ "20 June",
1530
+ "21 June",
1531
+ "22 June",
1532
+ "23 June"
1533
+ ],
1534
+ datasets: [
1535
+ {
1536
+ data: [30, 100, 270, 140, 120, 240],
1537
+ backgroundColor: "#1565C0",
1538
+ barThickness: 15
1539
+ }
1540
+ ]
1541
+ };
1542
+ const options = {
1543
+ responsive: true,
1544
+ scales: {
1545
+ x: {
1546
+ beginAtZero: true,
1547
+ grid: {
1548
+ display: false
1549
+ }
1550
+ },
1551
+ y: {
1552
+ grid: {
1553
+ display: true
1554
+ },
1555
+ ticks: {
1556
+ min: 0,
1557
+ max: 400,
1558
+ stepSize: 200,
1559
+ callback: function(value) {
1560
+ return `${value}`;
1561
+ }
1562
+ }
1563
+ }
1564
+ },
1565
+ plugins: {
1566
+ tooltip: {
1567
+ enabled: true,
1568
+ callbacks: {
1569
+ label: function(context) {
1570
+ const label = context.label || "";
1571
+ const value = context.raw || 0;
1572
+ return ` ${label}: ${value}`;
1573
+ }
1574
+ }
1575
+ },
1576
+ legend: {
1577
+ display: false
1578
+ }
1579
+ }
1580
+ };
1581
+ return /* @__PURE__ */ import_react36.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react36.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react36.default.createElement(import_react_chartjs_24.Bar, { data, options }));
1582
+ };
923
1583
  // Annotate the CommonJS export names for ESM import in node:
924
1584
  0 && (module.exports = {
925
1585
  AddMoreTable,
1586
+ BarChart,
926
1587
  ButtonElement,
927
1588
  CheckboxElement,
1589
+ CircleDonut,
928
1590
  CkEditor,
929
1591
  DatePickerElement,
930
1592
  DateRangePickerElement,
1593
+ DoubleBarChart,
931
1594
  DropDownGroup,
932
1595
  FileUpload,
1596
+ HorizontalBarChart,
933
1597
  Image,
1598
+ LineChart,
934
1599
  MultipleSelectElement,
935
1600
  Navbar,
936
1601
  NumberElement,
1602
+ OtpElement,
937
1603
  PasswordElement,
938
1604
  RadioElement,
939
1605
  SelectElement,
1606
+ SemiCircleDonut,
940
1607
  Sidebar,
941
1608
  SingleCheckbox,
942
1609
  SingleSelectElement,
@@ -944,5 +1611,6 @@ var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(i
944
1611
  TableElement,
945
1612
  TabsElement,
946
1613
  TextElement,
947
- TextareaElement
1614
+ TextareaElement,
1615
+ Upload
948
1616
  });