pixelize-design-library 2.2.15 → 2.2.17

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 (40) hide show
  1. package/dist/Components/AlertDialog/AlertDialog.js +2 -2
  2. package/dist/Components/Dropdown/DropDown.js +1 -1
  3. package/dist/Components/FileUploader/FileUploader.d.ts +4 -0
  4. package/dist/Components/FileUploader/FileUploader.js +146 -0
  5. package/dist/Components/FileUploader/FileUploaderProps.d.ts +13 -0
  6. package/dist/Components/MultiSelect/MultiSelect.js +1 -1
  7. package/dist/Components/Notification/Notification.d.ts +4 -0
  8. package/dist/Components/Notification/Notification.js +131 -0
  9. package/dist/Components/Notification/NotificationProps.d.ts +16 -0
  10. package/dist/index.d.ts +3 -1
  11. package/dist/index.js +6 -2
  12. package/package.json +1 -1
  13. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.d.ts +0 -1
  14. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.js +0 -6
  15. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.d.ts +0 -4
  16. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.js +0 -58
  17. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChartProps.d.ts +0 -21
  18. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.d.ts +0 -1
  19. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.js +0 -6
  20. package/dist/Components/InputTextArea/InputTextArea.stories.d.ts +0 -1
  21. package/dist/Components/InputTextArea/InputTextArea.stories.js +0 -7
  22. package/dist/Components/KaTable/CustomHeader.d.ts +0 -14
  23. package/dist/Components/KaTable/CustomHeader.js +0 -69
  24. package/dist/Components/KaTable/KaTable.d.ts +0 -13
  25. package/dist/Components/KaTable/KaTable.js +0 -111
  26. package/dist/Components/KaTable/KaTableProps.d.ts +0 -23
  27. package/dist/Components/KaTable/SelectionCell.d.ts +0 -8
  28. package/dist/Components/KaTable/SelectionCell.js +0 -38
  29. package/dist/Components/KaTable/SelectionHeader.d.ts +0 -3
  30. package/dist/Components/KaTable/SelectionHeader.js +0 -56
  31. package/dist/Components/KaTable/ka-table.css +0 -27
  32. package/dist/Components/KaTable/useMergedChildComponents.d.ts +0 -14
  33. package/dist/Components/KaTable/useMergedChildComponents.js +0 -224
  34. package/dist/Components/NumberInput/NumberInput.stories.d.ts +0 -1
  35. package/dist/Components/NumberInput/NumberInput.stories.js +0 -5
  36. package/dist/Components/Table/Table.css +0 -16
  37. package/dist/Theme/Default/fonts.d.ts +0 -35
  38. package/dist/Theme/Default/fonts.js +0 -37
  39. /package/dist/Components/{Apexcharts/ApexDonutChart/ApexDonutChartProps.js → FileUploader/FileUploaderProps.js} +0 -0
  40. /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;
@@ -39,7 +39,7 @@ var react_2 = require("@chakra-ui/react");
39
39
  var framer_motion_1 = require("framer-motion");
40
40
  var useCustomTheme_1 = require("../../Theme/useCustomTheme");
41
41
  var lucide_react_1 = require("lucide-react");
42
- var MotionBox = framer_motion_1.motion.create((0, react_1.forwardRef)(function (props, ref) { return (react_1.default.createElement(react_2.Box, __assign({ ref: ref }, props))); }));
42
+ var MotionBox = (0, framer_motion_1.motion)((0, react_1.forwardRef)(function (props, ref) { return (react_1.default.createElement(react_2.Box, __assign({ ref: ref }, props))); }));
43
43
  var Dropdown = (0, react_1.forwardRef)(function (_a, ref) {
44
44
  var dropDownButtonStyle = _a.dropDownButtonStyle, ButtonText = _a.ButtonText, options = _a.options, handleOptionSelect = _a.handleOptionSelect, _b = _a.dropdownType, dropdownType = _b === void 0 ? "button" : _b, text = _a.text, DropdownIcon = _a.DropdownIcon, _c = _a.isVisibleIconShow, isVisibleIconShow = _c === void 0 ? true : _c, buttonProps = _a.buttonProps, headStyle = _a.headStyle, ListStyle = _a.ListStyle, ItemStyle = _a.ItemStyle, LabelStyle = _a.LabelStyle, ImageStyle = _a.ImageStyle, _d = _a.optionsSize, optionsSize = _d === void 0 ? "lg" : _d, _e = _a.divider, divider = _e === void 0 ? false : _e;
45
45
  var theme = (0, useCustomTheme_1.useCustomTheme)();
@@ -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.15",
3
+ "version": "2.2.17",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -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
- };
@@ -1,6 +0,0 @@
1
- "use strict";
2
- // import React from 'react';
3
- // import { StoryFn, Meta } from '@storybook/react';
4
- // import ApexPieChart from './ApexPieChart';
5
- // import { ApexPieChartProps } from './ApexPieChartProps';
6
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +0,0 @@
1
- "use strict";
2
- // import React from "react";
3
- // import type { Meta, StoryObj } from "@storybook/react/*";
4
- // import { InputTextAreaProps } from "./InputTextAreaProps";
5
- // import InputTextArea from "./InputTextArea";
6
- // import { useState } from "react";
7
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,14 +0,0 @@
1
- import React from "react";
2
- type CustomHeaderProps = {
3
- column: any;
4
- onSortChange?: (sortState: string, columnName: string) => void;
5
- menuItems?: Array<{
6
- label: string;
7
- onClick: () => void;
8
- submenu?: any[];
9
- }>;
10
- isSort?: boolean;
11
- sortDirection: string;
12
- };
13
- declare const CustomHeader: React.MemoExoticComponent<({ column, onSortChange, menuItems, isSort, sortDirection, }: CustomHeaderProps) => React.JSX.Element>;
14
- export default CustomHeader;
@@ -1,69 +0,0 @@
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 bs_1 = require("react-icons/bs");
29
- var fa_1 = require("react-icons/fa");
30
- var useCustomTheme_1 = require("../../Theme/useCustomTheme");
31
- var CustomHeader = (0, react_1.memo)(function (_a) {
32
- var column = _a.column, onSortChange = _a.onSortChange, menuItems = _a.menuItems, isSort = _a.isSort, sortDirection = _a.sortDirection;
33
- var handleSortClick = (0, react_1.useCallback)(function () {
34
- var sortOrder = "none";
35
- if (sortDirection === "none")
36
- sortOrder = "asc";
37
- else if (sortDirection === "asc")
38
- sortOrder = "desc";
39
- onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange(sortOrder, column.key);
40
- }, [sortDirection, column.key, onSortChange]);
41
- return (react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center" },
42
- react_1.default.createElement(react_2.Box, { fontWeight: "bold" }, column.title),
43
- react_1.default.createElement(react_2.Flex, { alignItems: "center" },
44
- isSort && (react_1.default.createElement(SortingIcon, { sortState: sortDirection, handleSortClick: handleSortClick })),
45
- menuItems && (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (react_1.default.createElement(react_2.Menu, null,
46
- react_1.default.createElement(react_2.MenuButton, { as: react_2.IconButton, "aria-label": "Options", icon: react_1.default.createElement(bs_1.BsThreeDots, null), size: "sm", variant: "ghost", _hover: { bg: "none" }, _active: { bg: "none" } }),
47
- react_1.default.createElement(react_2.Portal, null,
48
- react_1.default.createElement(react_2.MenuList, null, menuItems.map(function (item, index) { return (react_1.default.createElement(react_1.default.Fragment, { key: index },
49
- react_1.default.createElement(react_2.MenuItem, { onClick: function () { return item === null || item === void 0 ? void 0 : item.onClick(); } }, item.label),
50
- item.submenu && react_1.default.createElement(Submenu, { items: item.submenu }))); }))))) : null)));
51
- });
52
- var SortingIcon = (0, react_1.memo)(function (_a) {
53
- var sortState = _a.sortState, handleSortClick = _a.handleSortClick;
54
- var theme = (0, useCustomTheme_1.useCustomTheme)();
55
- return (react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "center", bg: theme.colors.white, borderRadius: "full", cursor: "pointer", w: "24px", h: "24px", onClick: handleSortClick, transition: "transform 0.2s ease-in-out", _hover: { transform: "scale(1.1)" } },
56
- sortState === "none" && react_1.default.createElement(fa_1.FaSort, { size: 14 }),
57
- sortState === "asc" && react_1.default.createElement(fa_1.FaCaretUp, { size: 14 }),
58
- sortState === "desc" && react_1.default.createElement(fa_1.FaCaretDown, { size: 14 })));
59
- });
60
- var Submenu = (0, react_1.memo)(function (_a) {
61
- var items = _a.items;
62
- return (react_1.default.createElement(react_2.MenuGroup, null, items.map(function (subItem, index) { return (react_1.default.createElement(react_2.MenuItem, { key: index, onClick: function () { return (subItem === null || subItem === void 0 ? void 0 : subItem.onClick) && (subItem === null || subItem === void 0 ? void 0 : subItem.onClick()); }, sx: {
63
- pl: 6,
64
- fontSize: "sm",
65
- color: "gray.600",
66
- _hover: { bg: "gray.100", color: "gray.800" }, // Hover styles
67
- } }, subItem.label)); })));
68
- });
69
- exports.default = CustomHeader;