pixelize-design-library 2.2.16 → 2.2.18

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 (46) hide show
  1. package/dist/Components/AlertDialog/AlertDialog.js +2 -2
  2. package/dist/Components/Button/Button.d.ts +1 -1
  3. package/dist/Components/Button/Button.js +2 -2
  4. package/dist/Components/Button/ButtonProps.d.ts +1 -1
  5. package/dist/Components/Card/PaymentCard/PaymentCard.d.ts +1 -1
  6. package/dist/Components/Card/PaymentCard/PaymentCard.js +4 -3
  7. package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +2 -0
  8. package/dist/Components/FileUploader/FileUploader.d.ts +4 -0
  9. package/dist/Components/FileUploader/FileUploader.js +146 -0
  10. package/dist/Components/FileUploader/FileUploaderProps.d.ts +13 -0
  11. package/dist/Components/MultiSelect/MultiSelect.js +1 -1
  12. package/dist/Components/Notification/Notification.d.ts +4 -0
  13. package/dist/Components/Notification/Notification.js +131 -0
  14. package/dist/Components/Notification/NotificationProps.d.ts +16 -0
  15. package/dist/index.d.ts +3 -1
  16. package/dist/index.js +6 -2
  17. package/package.json +1 -1
  18. package/dist/Assets/defaultLogo.tsx +0 -31
  19. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.d.ts +0 -1
  20. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.js +0 -6
  21. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.d.ts +0 -4
  22. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.js +0 -58
  23. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChartProps.d.ts +0 -21
  24. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.d.ts +0 -1
  25. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.js +0 -6
  26. package/dist/Components/InputTextArea/InputTextArea.stories.d.ts +0 -1
  27. package/dist/Components/InputTextArea/InputTextArea.stories.js +0 -7
  28. package/dist/Components/KaTable/CustomHeader.d.ts +0 -14
  29. package/dist/Components/KaTable/CustomHeader.js +0 -69
  30. package/dist/Components/KaTable/KaTable.d.ts +0 -13
  31. package/dist/Components/KaTable/KaTable.js +0 -111
  32. package/dist/Components/KaTable/KaTableProps.d.ts +0 -23
  33. package/dist/Components/KaTable/SelectionCell.d.ts +0 -8
  34. package/dist/Components/KaTable/SelectionCell.js +0 -38
  35. package/dist/Components/KaTable/SelectionHeader.d.ts +0 -3
  36. package/dist/Components/KaTable/SelectionHeader.js +0 -56
  37. package/dist/Components/KaTable/ka-table.css +0 -27
  38. package/dist/Components/KaTable/useMergedChildComponents.d.ts +0 -14
  39. package/dist/Components/KaTable/useMergedChildComponents.js +0 -224
  40. package/dist/Components/NumberInput/NumberInput.stories.d.ts +0 -1
  41. package/dist/Components/NumberInput/NumberInput.stories.js +0 -5
  42. package/dist/Components/Table/Table.css +0 -16
  43. package/dist/Theme/Default/fonts.d.ts +0 -35
  44. package/dist/Theme/Default/fonts.js +0 -37
  45. /package/dist/Components/{Apexcharts/ApexDonutChart/ApexDonutChartProps.js → FileUploader/FileUploaderProps.js} +0 -0
  46. /package/dist/Components/{KaTable/KaTableProps.js → Notification/NotificationProps.js} +0 -0
@@ -14,7 +14,7 @@ var AlertDialog = function (_a) {
14
14
  react_2.default.createElement(react_1.AlertDialogCloseButton, { sx: closeButtonStyle }),
15
15
  react_2.default.createElement(react_1.AlertDialogBody, { sx: bodyStyle }, content),
16
16
  react_2.default.createElement(react_1.AlertDialogFooter, { sx: footerStyle },
17
- react_2.default.createElement(react_1.Button, { ref: null, onClick: onClose, size: "sm", sx: button1Style }, cancelButtonText),
18
- react_2.default.createElement(react_1.Button, { colorScheme: confirmButtonColor, onClick: onConfirm, isLoading: isConfirmLoading, ml: 3, size: "sm", sx: button2Style }, confirmButtonText)))));
17
+ react_2.default.createElement(react_1.Button, { ref: null, onClick: onClose, variant: "outline", colorScheme: "red", size: "sm", sx: button1Style }, cancelButtonText),
18
+ react_2.default.createElement(react_1.Button, { colorScheme: "primary", onClick: onConfirm, isLoading: isConfirmLoading, ml: 3, size: "sm", sx: button2Style }, confirmButtonText)))));
19
19
  };
20
20
  exports.default = AlertDialog;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
2
  import { ButtonProps } from "./ButtonProps";
3
- declare function Button({ label, children, onClick, opacity, variant, leftIcon, rightIcon, size, isDisabled, isLoading, loadingText, type, width, sx, colorScheme, ref, border, borderRadius, }: ButtonProps): React.JSX.Element;
3
+ declare function Button({ label, children, onClick, opacity, variant, leftIcon, rightIcon, size, isDisabled, isLoading, loadingText, type, width, sx, colorScheme, ref, border, borderRadius, onMouseEnter, onMouseLeave, }: ButtonProps): React.JSX.Element;
4
4
  declare const _default: React.MemoExoticComponent<typeof Button>;
5
5
  export default _default;
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  var react_1 = __importStar(require("react"));
27
27
  var react_2 = require("@chakra-ui/react");
28
28
  function Button(_a) {
29
- var label = _a.label, children = _a.children, onClick = _a.onClick, opacity = _a.opacity, _b = _a.variant, variant = _b === void 0 ? "solid" : _b, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, size = _a.size, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.loadingText, loadingText = _e === void 0 ? "Loading" : _e, type = _a.type, width = _a.width, sx = _a.sx, colorScheme = _a.colorScheme, ref = _a.ref, border = _a.border, borderRadius = _a.borderRadius;
30
- return (react_1.default.createElement(react_2.Button, { type: type, onClick: onClick, width: width || "fit-content", variant: variant, size: size, isLoading: isLoading, isDisabled: isDisabled, loadingText: loadingText, leftIcon: leftIcon, rightIcon: rightIcon, ref: ref, colorScheme: colorScheme, sx: sx, opacity: opacity, border: border, borderRadius: borderRadius }, children !== null && children !== void 0 ? children : label));
29
+ var label = _a.label, children = _a.children, onClick = _a.onClick, opacity = _a.opacity, _b = _a.variant, variant = _b === void 0 ? "solid" : _b, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, size = _a.size, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.loadingText, loadingText = _e === void 0 ? "Loading" : _e, type = _a.type, width = _a.width, sx = _a.sx, colorScheme = _a.colorScheme, ref = _a.ref, border = _a.border, borderRadius = _a.borderRadius, onMouseEnter = _a.onMouseEnter, onMouseLeave = _a.onMouseLeave;
30
+ return (react_1.default.createElement(react_2.Button, { type: type, onClick: onClick, width: width || "fit-content", variant: variant, size: size, isLoading: isLoading, isDisabled: isDisabled, loadingText: loadingText, leftIcon: leftIcon, rightIcon: rightIcon, ref: ref, colorScheme: colorScheme, sx: sx, opacity: opacity, border: border, borderRadius: borderRadius, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, children !== null && children !== void 0 ? children : label));
31
31
  }
32
32
  exports.default = (0, react_1.memo)(Button);
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ButtonProps as ChakraButtonProps } from "@chakra-ui/react";
3
- export type ButtonProps = Pick<ChakraButtonProps, "onClick" | "leftIcon" | "rightIcon" | "isDisabled" | "isLoading" | "loadingText" | "spinner" | "sx" | "border" | "borderRadius"> & {
3
+ export type ButtonProps = Pick<ChakraButtonProps, "onClick" | "leftIcon" | "rightIcon" | "isDisabled" | "isLoading" | "loadingText" | "spinner" | "sx" | "border" | "borderRadius" | "onMouseEnter" | "onMouseLeave"> & {
4
4
  label?: string;
5
5
  width?: string | number;
6
6
  size?: "lg" | "md" | "sm" | "xs" | "xl";
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { PaymentCardProps } from "./PaymentCardProps";
3
- declare const PaymentCard: ({ plan, isActive, isNextUpgrade, billingCycle, onSelect, onHover, }: PaymentCardProps) => React.JSX.Element;
3
+ declare const PaymentCard: ({ plan, isActive, isNextUpgrade, billingCycle, onSelect, onHover, buttonLoading, }: PaymentCardProps) => React.JSX.Element;
4
4
  export default PaymentCard;
@@ -18,6 +18,7 @@ var react_1 = __importDefault(require("react"));
18
18
  var react_2 = require("@chakra-ui/react");
19
19
  var lucide_react_1 = require("lucide-react");
20
20
  var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
21
+ var Button_1 = __importDefault(require("../../Button/Button"));
21
22
  var getCardStyles = function (isActive, isNextUpgrade, popular, theme) {
22
23
  if (isActive) {
23
24
  return {
@@ -51,7 +52,7 @@ var getCardStyles = function (isActive, isNextUpgrade, popular, theme) {
51
52
  };
52
53
  };
53
54
  var PaymentCard = function (_a) {
54
- var plan = _a.plan, _b = _a.isActive, isActive = _b === void 0 ? false : _b, _c = _a.isNextUpgrade, isNextUpgrade = _c === void 0 ? false : _c, billingCycle = _a.billingCycle, onSelect = _a.onSelect, onHover = _a.onHover;
55
+ var plan = _a.plan, _b = _a.isActive, isActive = _b === void 0 ? false : _b, _c = _a.isNextUpgrade, isNextUpgrade = _c === void 0 ? false : _c, billingCycle = _a.billingCycle, onSelect = _a.onSelect, onHover = _a.onHover, buttonLoading = _a.buttonLoading;
55
56
  var theme = (0, useCustomTheme_1.useCustomTheme)();
56
57
  var _d = getCardStyles(isActive, isNextUpgrade, !!plan.popular, theme), badgeText = _d.badgeText, badgeColor = _d.badgeColor, buttonColor = _d.buttonColor, buttonColor50 = _d.buttonColor50;
57
58
  var variantStyles = plan.buttonVariant === "outline"
@@ -78,8 +79,8 @@ var PaymentCard = function (_a) {
78
79
  react_1.default.createElement(react_2.Text, { fontSize: "0.9rem", fontWeight: "normal", color: theme.colors.gray[600] }, plan.billing),
79
80
  react_1.default.createElement(react_2.Text, { fontSize: "0.7rem", fontWeight: "normal", color: theme.colors.gray[600] }, plan.tax))),
80
81
  react_1.default.createElement(react_2.Text, { color: theme.colors.gray[600], mt: 3 }, plan.description)),
81
- !isActive && (react_1.default.createElement(react_2.Button, __assign({ w: "full", variant: plan.buttonVariant, mb: 6, onClick: function () { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(plan.plan_id); }, onMouseEnter: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", true); }, onMouseLeave: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", false); } }, variantStyles), plan.buttonText)),
82
- react_1.default.createElement(react_2.VStack, { align: "start", spacing: 3 }, plan.features.map(function (feature, i) { return (react_1.default.createElement(react_2.Flex, { key: i, align: "center" },
82
+ !isActive && (react_1.default.createElement(Button_1.default, __assign({ isLoading: plan.plan_id === buttonLoading, loadingText: plan.buttonLoadingText, width: "full", variant: plan.buttonVariant, size: "lg", onClick: function () { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(plan.plan_id); }, onMouseEnter: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", true); }, onMouseLeave: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", false); } }, variantStyles), plan.buttonText)),
83
+ react_1.default.createElement(react_2.VStack, { align: "start", spacing: 3, mt: 6 }, plan.features.map(function (feature, i) { return (react_1.default.createElement(react_2.Flex, { key: i, align: "center" },
83
84
  react_1.default.createElement(react_2.Icon, { as: lucide_react_1.Check, color: theme.colors.green[500], mr: 2 }),
84
85
  react_1.default.createElement(react_2.Text, { fontSize: "sm" }, feature))); })))));
85
86
  };
@@ -6,6 +6,7 @@ export type PaymentCardProps = {
6
6
  billingCycle: "monthly" | "yearly";
7
7
  onSelect?: (planId: number) => void;
8
8
  onHover?: (planId: number, type: "card" | "button", state: boolean) => void;
9
+ buttonLoading?: number;
9
10
  };
10
11
  export type Plan = {
11
12
  plan_id: number;
@@ -20,4 +21,5 @@ export type Plan = {
20
21
  buttonText: string;
21
22
  buttonVariant: "solid" | "outline" | "link";
22
23
  popular?: boolean;
24
+ buttonLoadingText?: string;
23
25
  };
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FileUploaderProps } from "./FileUploaderProps";
3
+ declare const FileUploader: React.FC<FileUploaderProps>;
4
+ export default FileUploader;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ var react_1 = __importStar(require("react"));
36
+ var react_2 = require("@chakra-ui/react");
37
+ var lucide_react_1 = require("lucide-react");
38
+ var Toaster_1 = require("../Toaster/Toaster");
39
+ var FileUploader = function (_a) {
40
+ var _b = _a.maxFiles, maxFiles = _b === void 0 ? 10 : _b, _c = _a.maxTotalSize, maxTotalSize = _c === void 0 ? 20 : _c, onFilesChange = _a.onFilesChange, _d = _a.acceptTypes, acceptTypes = _d === void 0 ? ["jpeg", "jpg", "png"] : _d;
41
+ var showToast = (0, Toaster_1.useToaster)().showToast;
42
+ var _e = (0, react_1.useState)([]), uploadedFiles = _e[0], setUploadedFiles = _e[1];
43
+ var _f = (0, react_1.useState)(false), setIsDragOver = _f[1];
44
+ // const [error, setError] = useState<string | null>(null);
45
+ var fileInputRef = (0, react_1.useRef)(null);
46
+ var totalSize = uploadedFiles.reduce(function (acc, f) { return acc + f.size; }, 0);
47
+ var maxTotalBytes = maxTotalSize * 1024 * 1024;
48
+ var formatFileSize = function (bytes) {
49
+ if (bytes === 0)
50
+ return "0 KB";
51
+ var k = 1024;
52
+ var sizes = ["Bytes", "KB", "MB"];
53
+ var i = Math.floor(Math.log(bytes) / Math.log(k));
54
+ return "".concat((bytes / Math.pow(k, i)).toFixed(2), " ").concat(sizes[i]);
55
+ };
56
+ var handleFiles = function (files) {
57
+ // setError(null);
58
+ var newFiles = Array.from(files).map(function (file) { return ({
59
+ id: Math.random().toString(36).substring(2),
60
+ name: file.name,
61
+ size: file.size,
62
+ previewUrl: file.type.startsWith("image/") ? URL.createObjectURL(file) : "",
63
+ }); });
64
+ var combinedFiles = __spreadArray(__spreadArray([], uploadedFiles, true), newFiles, true).slice(0, maxFiles);
65
+ var totalSizeBytes = combinedFiles.reduce(function (acc, f) { return acc + f.size; }, 0);
66
+ if (totalSizeBytes > maxTotalBytes) {
67
+ showToast({
68
+ title: "Total file size exceeds ".concat(maxTotalSize, " MB limit."),
69
+ duration: 3000,
70
+ status: "error",
71
+ });
72
+ return;
73
+ }
74
+ setUploadedFiles(combinedFiles);
75
+ onFilesChange === null || onFilesChange === void 0 ? void 0 : onFilesChange(combinedFiles);
76
+ };
77
+ var handleFileInput = function (e) {
78
+ if (e.target.files) {
79
+ handleFiles(e.target.files);
80
+ e.target.value = ""; // fix: reopen file dialog for same files
81
+ }
82
+ };
83
+ var handleDrop = function (e) {
84
+ e.preventDefault();
85
+ setIsDragOver(false);
86
+ if (e.dataTransfer.files)
87
+ handleFiles(e.dataTransfer.files);
88
+ };
89
+ var handleDragOver = function (e) {
90
+ e.preventDefault();
91
+ setIsDragOver(true);
92
+ };
93
+ var handleDragLeave = function () { return setIsDragOver(false); };
94
+ var removeFile = function (id) {
95
+ var filtered = uploadedFiles.filter(function (f) { return f.id !== id; });
96
+ setUploadedFiles(filtered);
97
+ onFilesChange === null || onFilesChange === void 0 ? void 0 : onFilesChange(filtered);
98
+ };
99
+ var handleBrowseClick = function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); };
100
+ // ✅ Convert ["png","pdf","zip"] → ".png,.pdf,.zip" for input accept
101
+ var acceptString = acceptTypes.map(function (ext) { return ".".concat(ext); }).join(",");
102
+ return (react_1.default.createElement(react_2.Box, { maxW: "500px", mx: "auto", p: 6 },
103
+ react_1.default.createElement(react_2.Text, { fontSize: "sm", color: "gray.600", mb: 4 },
104
+ "Files Uploaded:",
105
+ " ",
106
+ react_1.default.createElement(react_2.Text, { as: "span", fontWeight: "medium", color: "blue.500" },
107
+ uploadedFiles.length,
108
+ " / ",
109
+ maxFiles),
110
+ " ",
111
+ "| Total size:",
112
+ " ",
113
+ react_1.default.createElement(react_2.Text, { as: "span", fontWeight: "medium" },
114
+ formatFileSize(totalSize),
115
+ " / ",
116
+ maxTotalSize,
117
+ " MB")),
118
+ react_1.default.createElement(react_2.Box, { border: "1px dashed", borderColor: "gray.300", borderRadius: "md", p: 1, mt: 1, mb: 1 },
119
+ uploadedFiles.length > 0 && (react_1.default.createElement(react_2.Box, null,
120
+ react_1.default.createElement(react_2.Grid, { templateColumns: "repeat(2, 1fr)", gap: 3 }, uploadedFiles.map(function (file) {
121
+ var _a;
122
+ return (react_1.default.createElement(react_2.Flex, { key: file.id, align: "center", justify: "space-between", border: "1px solid", borderColor: "gray.200", borderRadius: "md", pl: 1, bg: "gray.50" },
123
+ react_1.default.createElement(react_2.HStack, { spacing: 3, flex: "1", minW: "0" },
124
+ file.previewUrl ? (react_1.default.createElement(react_2.Image, { src: file.previewUrl, alt: file.name, boxSize: "28px", borderRadius: "sm", objectFit: "cover" })) : (react_1.default.createElement(react_2.Box, { boxSize: "28px", borderRadius: "sm", bg: "gray.200", display: "flex", alignItems: "center", justifyContent: "center", fontSize: "xs", color: "gray.600" }, (_a = file.name.split(".").pop()) === null || _a === void 0 ? void 0 : _a.toUpperCase())),
125
+ react_1.default.createElement(react_2.Box, { minW: "0" },
126
+ react_1.default.createElement(react_2.Text, { fontSize: "sm", fontWeight: "medium", noOfLines: 1 }, file.name),
127
+ react_1.default.createElement(react_2.Text, { fontSize: "xs", color: "gray.600" },
128
+ "(",
129
+ formatFileSize(file.size),
130
+ ")"))),
131
+ react_1.default.createElement(react_2.HStack, { spacing: 1 },
132
+ react_1.default.createElement(react_2.Tooltip, { label: "Remove" },
133
+ react_1.default.createElement(react_2.IconButton, { "aria-label": "Remove", icon: react_1.default.createElement(lucide_react_1.X, { size: 14 }), size: "xs", variant: "ghost", colorScheme: "red", onClick: function () { return removeFile(file.id); } })))));
134
+ })))),
135
+ react_1.default.createElement("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptString, onChange: handleFileInput, style: { display: "none" } }),
136
+ react_1.default.createElement(react_2.Box, { p: uploadedFiles.length ? 0 : 5, mb: 2, textAlign: uploadedFiles.length ? "left" : "center", pt: uploadedFiles.length ? 5 : 5, transition: "all 0.2s", onDrop: handleDrop, onDragOver: handleDragOver, onDragLeave: handleDragLeave, cursor: "pointer", onClick: handleBrowseClick },
137
+ react_1.default.createElement(react_2.Box, null,
138
+ react_1.default.createElement(react_2.Text, { fontWeight: "medium", fontSize: "md" },
139
+ "Drag and drop the files here, or",
140
+ react_1.default.createElement(react_2.Box, { as: "span", color: "blue.400", ml: 1 }, "Click here"))),
141
+ react_1.default.createElement(react_2.Text, { fontSize: "xs", color: "gray.500" },
142
+ "Supported formats: ",
143
+ acceptTypes.map(function (t) { return t.toUpperCase(); }).join(", "),
144
+ ".")))));
145
+ };
146
+ exports.default = FileUploader;
@@ -0,0 +1,13 @@
1
+ export type UploadedFile = {
2
+ id: string;
3
+ name: string;
4
+ size: number;
5
+ type?: string;
6
+ previewUrl?: string;
7
+ };
8
+ export type FileUploaderProps = {
9
+ maxFiles?: number;
10
+ maxTotalSize?: number;
11
+ acceptTypes?: string[];
12
+ onFilesChange?: (files: UploadedFile[]) => void;
13
+ };
@@ -117,7 +117,7 @@ function MultiSelect(_a) {
117
117
  ? (_b = theme.colors.boxShadow) === null || _b === void 0 ? void 0 : _b.error
118
118
  : (_c = theme.colors.boxShadow) === null || _c === void 0 ? void 0 : _c.primary),
119
119
  } },
120
- options.map(function (option) { return (react_1.default.createElement(react_2.Tag, { key: option.id, size: "md", borderRadius: "full", variant: "subtle", colorScheme: "blue" },
120
+ options.map(function (option) { return (react_1.default.createElement(react_2.Tag, { key: option.id, size: "md", borderRadius: "full", variant: "subtle", colorScheme: "primary" },
121
121
  react_1.default.createElement(react_2.TagLabel, null, option.label),
122
122
  react_1.default.createElement(react_2.TagCloseButton, { onClick: function () { return handleRemove(option); } }))); }),
123
123
  react_1.default.createElement(react_2.Input, { ref: inputRef, type: "text", value: inputValue, isDisabled: isDisabled, isReadOnly: isReadOnly, id: id, name: name, size: size, variant: "unstyled", flex: "1", style: __assign(__assign({}, inputStyle), { backgroundColor: "transparent", fontWeight: 500, color: theme.colors.gray[700], fontSize: 15, letterSpacing: 0.3 }), onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: options.length === 0 ? placeholderText : "" })),
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { NotificationProps } from "./NotificationProps";
3
+ declare const Notification: React.FC<NotificationProps>;
4
+ export default Notification;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ var react_1 = __importStar(require("react"));
27
+ var react_2 = require("@chakra-ui/react");
28
+ var lucide_react_1 = require("lucide-react");
29
+ var useCustomTheme_1 = require("../../Theme/useCustomTheme");
30
+ var Notification = function (_a) {
31
+ var notification = _a.notification, onClose = _a.onClose;
32
+ var theme = (0, useCustomTheme_1.useCustomTheme)();
33
+ var bgColor = theme.colors.white;
34
+ var borderColor = theme.colors.gray[200];
35
+ var textColor = theme.colors.gray[700];
36
+ var titleColor = theme.colors.gray[800];
37
+ var warningColor = theme.colors.semantic.warning;
38
+ var errorColor = theme.colors.semantic.error;
39
+ var successColor = theme.colors.semantic.success;
40
+ var startDate = notification.startDate
41
+ ? new Date(notification.startDate)
42
+ : null;
43
+ // 🧮 Calculate time difference
44
+ var _b = (0, react_1.useMemo)(function () {
45
+ var targetDate = notification.dueDate
46
+ ? new Date(notification.dueDate)
47
+ : notification.endDate
48
+ ? new Date(notification.endDate)
49
+ : null;
50
+ if (!targetDate)
51
+ return { timeLabel: "", diffDays: null };
52
+ var now = new Date();
53
+ var diffMs = targetDate.getTime() - now.getTime();
54
+ var diffMinutes = Math.floor(diffMs / (1000 * 60));
55
+ var diffHours = diffMinutes / 60;
56
+ var diffDays = diffHours / 24;
57
+ var toTitle = function (text) {
58
+ if (!text)
59
+ return "Item";
60
+ return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
61
+ };
62
+ var typeLabel = toTitle(notification.type);
63
+ var label = "";
64
+ if (diffMs < 0) {
65
+ // 🔴 Overdue / Ended
66
+ var overdueMinutes = Math.abs(diffMinutes);
67
+ if (overdueMinutes < 60)
68
+ label = "".concat(typeLabel, " overdue by ").concat(overdueMinutes, " minute").concat(overdueMinutes === 1 ? "" : "s", " ago");
69
+ else if (overdueMinutes < 1440)
70
+ label = "".concat(typeLabel, " overdue by ").concat(Math.floor(overdueMinutes / 60), " hour").concat(Math.floor(overdueMinutes / 60) === 1 ? "" : "s", " ago");
71
+ else
72
+ label = "".concat(typeLabel, " overdue by ").concat(Math.floor(overdueMinutes / 1440), " day").concat(Math.floor(overdueMinutes / 1440) === 1 ? "" : "s", " ago");
73
+ }
74
+ else {
75
+ // 🟢 Upcoming
76
+ if (diffMinutes < 60)
77
+ label = "".concat(typeLabel, " due in ").concat(diffMinutes, " minute").concat(diffMinutes === 1 ? "" : "s");
78
+ else if (diffHours < 24)
79
+ label = "".concat(typeLabel, " due in ").concat(Math.floor(diffHours), " hour").concat(Math.floor(diffHours) === 1 ? "" : "s");
80
+ else
81
+ label = "".concat(typeLabel, " due in ").concat(Math.ceil(diffDays), " day").concat(Math.ceil(diffDays) === 1 ? "" : "s");
82
+ }
83
+ return { timeLabel: label, diffDays: diffDays };
84
+ }, [notification.dueDate, notification.endDate, notification.type]), timeLabel = _b.timeLabel, diffDays = _b.diffDays;
85
+ // 🟡 Status color indicator
86
+ var getStatusColor = function () {
87
+ if (diffDays === null)
88
+ return theme.colors.gray[400];
89
+ if (diffDays < 0)
90
+ return errorColor; // Overdue
91
+ if (diffDays <= 0.04)
92
+ return warningColor; // Less than 1 hour
93
+ if (diffDays <= 1)
94
+ return theme.colors.yellow[400]; // Within a day
95
+ return successColor; // Future
96
+ };
97
+ var TimeIcon = diffDays !== null && diffDays < 0 ? lucide_react_1.AlertCircle : lucide_react_1.Clock;
98
+ var formattedStart = (startDate === null || startDate === void 0 ? void 0 : startDate.toLocaleString("en-US", {
99
+ day: "2-digit",
100
+ month: "short",
101
+ hour: "2-digit",
102
+ minute: "2-digit",
103
+ })) || "";
104
+ return (react_1.default.createElement(react_2.Box, { bg: bgColor, border: "1px solid", borderColor: borderColor, borderRadius: "xl", p: 4, w: "100%", maxW: "400px", boxShadow: "sm", _hover: { boxShadow: "md", transform: "translateY(-2px)" }, transition: "all 0.2s ease", position: "relative" },
105
+ onClose && (react_1.default.createElement(react_2.Box, { position: "absolute", top: "2", right: "2", cursor: "pointer", onClick: onClose, onKeyDown: function (e) {
106
+ if (e.key === "Enter" || e.key === " ") {
107
+ e.preventDefault();
108
+ onClose();
109
+ }
110
+ }, tabIndex: 0, p: 1, borderRadius: "md", _hover: { bg: theme.colors.red[100], color: theme.colors.red[500], transform: "scale(1.1)" }, transition: "all 0.2s ease" },
111
+ react_1.default.createElement(lucide_react_1.X, { size: 16 }))),
112
+ react_1.default.createElement(react_2.VStack, { align: "start", spacing: 3, w: "100%" },
113
+ react_1.default.createElement(react_2.HStack, { spacing: 2 },
114
+ react_1.default.createElement(react_2.Icon, { as: TimeIcon, color: theme.colors.orange[400], boxSize: 4 }),
115
+ react_1.default.createElement(react_2.Text, { fontSize: "sm", color: theme.colors.orange[500], fontWeight: "semibold" }, timeLabel)),
116
+ react_1.default.createElement(react_2.HStack, { align: "center", spacing: 3, w: "100%" },
117
+ react_1.default.createElement(react_2.Avatar, { size: "sm", name: notification.host || notification.title, src: notification.avatarUrl || "" }),
118
+ react_1.default.createElement(react_2.VStack, { align: "start", spacing: 0, flex: "1" },
119
+ react_1.default.createElement(react_2.Text, { fontWeight: "bold", fontSize: "md", color: titleColor }, notification.title),
120
+ notification.description && (react_1.default.createElement(react_2.Text, { fontSize: "sm", color: textColor }, notification.description)))),
121
+ react_1.default.createElement(react_2.Divider, { borderColor: borderColor }),
122
+ react_1.default.createElement(react_2.HStack, { justify: "space-between", w: "100%" },
123
+ react_1.default.createElement(react_2.HStack, { spacing: 2 },
124
+ react_1.default.createElement(react_2.Icon, { as: lucide_react_1.Calendar, color: theme.colors.gray[400], boxSize: 4 }),
125
+ react_1.default.createElement(react_2.Text, { fontSize: "sm", color: theme.colors.gray[500] }, formattedStart)),
126
+ react_1.default.createElement(react_2.HStack, { spacing: 2 },
127
+ react_1.default.createElement(react_2.Icon, { as: lucide_react_1.User, color: theme.colors.gray[400], boxSize: 4 }),
128
+ notification.host && (react_1.default.createElement(react_2.Text, { fontSize: "sm", color: theme.colors.gray[500] }, notification.host))),
129
+ react_1.default.createElement(react_2.Box, { boxSize: "3", bg: getStatusColor(), borderRadius: "full" })))));
130
+ };
131
+ exports.default = Notification;
@@ -0,0 +1,16 @@
1
+ export type NotificationData = {
2
+ id: string;
3
+ title: string;
4
+ startDate: string;
5
+ dueDate?: string;
6
+ endDate?: string;
7
+ host?: string;
8
+ description?: string;
9
+ status?: string;
10
+ type?: string;
11
+ };
12
+ export type NotificationProps = {
13
+ notification: NotificationData;
14
+ onClose?: () => void;
15
+ showStatus?: boolean;
16
+ };
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ import Drawer, { DrawerHeader, DrawerBody, DrawerFooter } from "./Components/Dra
14
14
  import Dropdown from "./Components/Dropdown/DropDown";
15
15
  import Editor from "./Components/Editor/Editor";
16
16
  import FileUpload from "./Components/FileUpload/FileUpload";
17
+ import FileUploader from "./Components/FileUploader/FileUploader";
17
18
  import FormWrapper from "./Components/Form/FormWrapper";
18
19
  import Header from "./Components/Header/Header";
19
20
  import HeaderActions from "./Components/Header/HeaderActions";
@@ -57,5 +58,6 @@ import PhoneNumberInput from "./Components/Input/PhoneNumberInput";
57
58
  import { InputSwitch } from "./Components/Input/Switch/InputSwitch";
58
59
  import PaymentCard from "./Components/Card/PaymentCard/PaymentCard";
59
60
  import ApexLineChart from "./Components/Apexcharts/ApexLineChart/ApexLineChart";
60
- export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, FileUpload, FormWrapper, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, useToaster, VerifyEmailOtp, useCustomTheme, ThemesList, debounce, };
61
+ import Notification from "./Components/Notification/Notification";
62
+ export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, FileUpload, FileUploader, FormWrapper, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, Notification, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, useToaster, VerifyEmailOtp, useCustomTheme, ThemesList, debounce, };
61
63
  export default withTheme;
package/dist/index.js CHANGED
@@ -27,8 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Search = exports.Reorder = exports.RadioButtonGroup = exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = exports.InputTextArea = exports.HeaderActions = exports.Header = exports.FormWrapper = exports.FileUpload = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
31
- exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.VerifyEmailOtp = exports.useToaster = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.Select = void 0;
30
+ exports.RadioButtonGroup = exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.Notification = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = exports.InputTextArea = exports.HeaderActions = exports.Header = exports.FormWrapper = exports.FileUploader = exports.FileUpload = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
31
+ exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.VerifyEmailOtp = exports.useToaster = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.Select = exports.Search = exports.Reorder = void 0;
32
32
  var Accordion_1 = __importDefault(require("./Components/Accordion/Accordion"));
33
33
  exports.Accordian = Accordion_1.default;
34
34
  var AlertDialog_1 = __importDefault(require("./Components/AlertDialog/AlertDialog"));
@@ -64,6 +64,8 @@ var Editor_1 = __importDefault(require("./Components/Editor/Editor"));
64
64
  exports.Editor = Editor_1.default;
65
65
  var FileUpload_1 = __importDefault(require("./Components/FileUpload/FileUpload"));
66
66
  exports.FileUpload = FileUpload_1.default;
67
+ var FileUploader_1 = __importDefault(require("./Components/FileUploader/FileUploader"));
68
+ exports.FileUploader = FileUploader_1.default;
67
69
  var FormWrapper_1 = __importDefault(require("./Components/Form/FormWrapper"));
68
70
  exports.FormWrapper = FormWrapper_1.default;
69
71
  var Header_1 = __importDefault(require("./Components/Header/Header"));
@@ -157,4 +159,6 @@ var PaymentCard_1 = __importDefault(require("./Components/Card/PaymentCard/Payme
157
159
  exports.PaymentCard = PaymentCard_1.default;
158
160
  var ApexLineChart_1 = __importDefault(require("./Components/Apexcharts/ApexLineChart/ApexLineChart"));
159
161
  exports.ApexLineChart = ApexLineChart_1.default;
162
+ var Notification_1 = __importDefault(require("./Components/Notification/Notification"));
163
+ exports.Notification = Notification_1.default;
160
164
  exports.default = withTheme_1.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.2.16",
3
+ "version": "2.2.18",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,31 +0,0 @@
1
- import React from 'react';
2
- import { useCustomTheme } from "../Theme/useCustomTheme";
3
-
4
- const DefaultLogo = () => {
5
- const theme = useCustomTheme();
6
- return (
7
- <svg
8
- width="12.09"
9
- height="15.95"
10
- viewBox="0 0 31 29"
11
- fill="none"
12
- xmlns="http://www.w3.org/2000/svg"
13
- >
14
- <path
15
- d="M30.4999 6.26137V7.81058H15.9761H14.8787V22.8508V28.8862H12.5226C9.6824 28.8862 7.32632 26.4656 7.06812 23.3995C7.06812 23.2381 7.06812 23.0444 7.06812 22.8508V18.3323C7.06812 18.2677 7.06812 18.2032 7.06812 18.1063V15.5889V6.2291C7.06812 2.80793 9.84378 -5.72205e-06 13.2972 -5.72205e-06H24.8517C28.0147 0.355021 30.4676 3.00158 30.4676 6.2291L30.4999 6.26137Z"
16
- fill={theme.colors.black}
17
- />
18
- <path
19
- d="M7.10053 23.3672H7.03598C5.16402 23.2381 3.48571 22.4635 2.25926 21.3338C0.871428 20.0428 0 18.2677 0 16.3312V15.6211H7.06825V18.1386C7.06825 18.2032 7.06825 18.2677 7.06825 18.3645V22.883C7.06825 23.0767 7.06825 23.2381 7.06825 23.4317L7.10053 23.3672Z"
20
- fill={theme.colors.black}
21
- />
22
- <path
23
- d="M30.4678 12.0063V15.6211V17.1703C30.4678 20.6238 26.272 23.3994 21.0757 23.3994H14.8789V22.8508V15.6211H22.6572V7.81056C22.6895 7.81056 30.5001 7.81056 30.5001 7.81056V11.5868C30.5001 11.7159 30.5001 11.8772 30.5001 12.0063H30.4678Z"
24
- fill={theme.colors.black}
25
- />
26
- </svg>
27
-
28
- )
29
- };
30
-
31
- export default DefaultLogo;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- // import React from 'react';
3
- // import { StoryFn, Meta } from '@storybook/react';
4
- // import ApexBarChart from './ApexBarChart';
5
- // import { ApexBarChartProps } from './ApexBarChartProps';
6
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +0,0 @@
1
- import React from "react";
2
- import { ApexDonutChartProps } from "./ApexDonutChartProps";
3
- declare const ApexDonutChart: ({ data, labels, title, titlePosition, height, width, donutColors, chartColor, titleStyle, legendStyle, }: ApexDonutChartProps) => React.JSX.Element;
4
- export default ApexDonutChart;
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- var react_1 = __importDefault(require("react"));
18
- var react_apexcharts_1 = __importDefault(require("react-apexcharts"));
19
- var ApexDonutChart = function (_a) {
20
- var _b;
21
- var data = _a.data, labels = _a.labels, title = _a.title, _c = _a.titlePosition, titlePosition = _c === void 0 ? "center" : _c, _d = _a.height, height = _d === void 0 ? 400 : _d, _e = _a.width, width = _e === void 0 ? 500 : _e, donutColors = _a.donutColors, chartColor = _a.chartColor, _f = _a.titleStyle, titleStyle = _f === void 0 ? {
22
- color: "#3182ce",
23
- fontSize: "16px",
24
- fontWeight: 600,
25
- fontFamily: "Arial",
26
- } : _f, _g = _a.legendStyle, legendStyle = _g === void 0 ? {
27
- colors: "#000",
28
- position: "bottom",
29
- useSeriesColors: false,
30
- } : _g;
31
- var options = {
32
- chart: {
33
- type: "donut",
34
- },
35
- labels: labels,
36
- colors: (_b = chartColor !== null && chartColor !== void 0 ? chartColor : donutColors) !== null && _b !== void 0 ? _b : ["#3182ce", "#e53e3e", "#38a169", "#dd6b20"],
37
- legend: {
38
- position: legendStyle.position,
39
- labels: {
40
- colors: legendStyle.colors,
41
- useSeriesColors: legendStyle.useSeriesColors,
42
- },
43
- },
44
- title: {
45
- text: title,
46
- align: titlePosition,
47
- style: __assign(__assign({}, titleStyle), { fontSize: (titleStyle === null || titleStyle === void 0 ? void 0 : titleStyle.fontSize)
48
- ? String(titleStyle.fontSize) // ✅ ensures string if number passed
49
- : undefined }),
50
- },
51
- dataLabels: {
52
- enabled: true,
53
- },
54
- };
55
- return (react_1.default.createElement("div", null,
56
- react_1.default.createElement(react_apexcharts_1.default, { options: options, series: data, type: "donut", height: height, width: width })));
57
- };
58
- exports.default = ApexDonutChart;
@@ -1,21 +0,0 @@
1
- export type ApexDonutChartProps = {
2
- data: number[];
3
- labels: string[];
4
- title?: string;
5
- titlePosition?: "left" | "center" | "right";
6
- height?: number;
7
- width?: number;
8
- donutColors?: string[];
9
- chartColor?: string[];
10
- titleStyle?: {
11
- color?: string;
12
- fontSize?: string | number;
13
- fontWeight?: number | string;
14
- fontFamily?: string;
15
- };
16
- legendStyle?: {
17
- colors?: string | string[];
18
- useSeriesColors?: boolean;
19
- position?: "top" | "right" | "bottom" | "left";
20
- };
21
- };