pixelize-design-library 2.0.22 → 2.1.2
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/Components/FileUpload/FileUpload.d.ts +4 -0
- package/dist/Components/FileUpload/FileUpload.js +156 -0
- package/dist/Components/FileUpload/FileUploadProps.d.ts +11 -0
- package/dist/Components/FileUpload/constants.d.ts +3 -0
- package/dist/Components/FileUpload/constants.js +28 -0
- package/dist/Components/Header/Header.d.ts +4 -0
- package/dist/Components/Header/Header.js +57 -0
- package/dist/Components/Header/HeaderProps.d.ts +44 -0
- package/dist/Components/Header/HeaderProps.js +2 -0
- package/dist/Components/Header/components/desktopMenu.d.ts +4 -0
- package/dist/Components/Header/components/desktopMenu.js +33 -0
- package/dist/Components/Header/components/mobileMenu.d.ts +4 -0
- package/dist/Components/Header/components/mobileMenu.js +32 -0
- package/dist/Components/Reorder/Reorder.d.ts +4 -0
- package/dist/Components/Reorder/Reorder.js +50 -0
- package/dist/Components/Reorder/ReorderProps.d.ts +10 -0
- package/dist/Components/Reorder/ReorderProps.js +2 -0
- package/dist/Components/SearchSelect/SearchSelect.js +1 -3
- package/dist/Layout.js +75 -33
- package/dist/Pages/fileUpload.d.ts +2 -0
- package/dist/Pages/fileUpload.js +65 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +8 -2
- package/package.json +3 -2
- package/dist/Components/KaTable/CustomHeader.d.ts +0 -14
- package/dist/Components/KaTable/CustomHeader.js +0 -69
- package/dist/Components/KaTable/KaTable.d.ts +0 -13
- package/dist/Components/KaTable/KaTable.js +0 -111
- package/dist/Components/KaTable/KaTableProps.d.ts +0 -23
- package/dist/Components/KaTable/SelectionCell.d.ts +0 -8
- package/dist/Components/KaTable/SelectionCell.js +0 -38
- package/dist/Components/KaTable/SelectionHeader.d.ts +0 -3
- package/dist/Components/KaTable/SelectionHeader.js +0 -56
- package/dist/Components/KaTable/ka-table.css +0 -27
- package/dist/Components/KaTable/useMergedChildComponents.d.ts +0 -14
- package/dist/Components/KaTable/useMergedChildComponents.js +0 -224
- package/dist/Pages/KaTableExample.d.ts +0 -3
- package/dist/Pages/KaTableExample.js +0 -259
- package/dist/Theme/Default/fonts.d.ts +0 -35
- package/dist/Theme/Default/fonts.js +0 -37
- /package/dist/Components/{KaTable/KaTableProps.js → FileUpload/FileUploadProps.js} +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
var react_1 = __importStar(require("react"));
|
|
38
|
+
var react_2 = require("@chakra-ui/react");
|
|
39
|
+
var react_dropzone_1 = require("react-dropzone");
|
|
40
|
+
var lucide_react_1 = require("lucide-react");
|
|
41
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
42
|
+
var constants_1 = require("./constants");
|
|
43
|
+
var Modal_1 = __importStar(require("../Modal/Modal"));
|
|
44
|
+
var FileUpload = function (_a) {
|
|
45
|
+
var _b, _c, _d, _e;
|
|
46
|
+
var onFilesUploaded = _a.onFilesUploaded, uploadedFiles = _a.uploadedFiles, onRemoveFile = _a.onRemoveFile, _f = _a.acceptTypes, acceptTypes = _f === void 0 ? [".jpg", ".png"] : _f, _g = _a.maxSizeKB, maxSizeKB = _g === void 0 ? 5 : _g, _h = _a.maxFiles, maxFiles = _h === void 0 ? undefined : _h, _j = _a.progress, progress = _j === void 0 ? {} : _j;
|
|
47
|
+
var colors = (0, useCustomTheme_1.useCustomTheme)().colors;
|
|
48
|
+
var _k = (0, react_2.useDisclosure)(), isOpen = _k.isOpen, onOpen = _k.onOpen, onClose = _k.onClose;
|
|
49
|
+
var _l = react_1.default.useState(null), previewUrl = _l[0], setPreviewUrl = _l[1];
|
|
50
|
+
var _m = react_1.default.useState(null), previewTitle = _m[0], setPreviewTitle = _m[1];
|
|
51
|
+
var _o = react_1.default.useState([]), errors = _o[0], setErrors = _o[1];
|
|
52
|
+
var bg = (_b = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _b === void 0 ? void 0 : _b[50];
|
|
53
|
+
var border = (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[300];
|
|
54
|
+
var mappedAccept = acceptTypes.reduce(function (acc, ext) {
|
|
55
|
+
var mime = constants_1.mimeMap[ext];
|
|
56
|
+
if (mime) {
|
|
57
|
+
acc[mime] = []; // File dropzone format
|
|
58
|
+
}
|
|
59
|
+
return acc;
|
|
60
|
+
}, {});
|
|
61
|
+
var onDrop = (0, react_1.useCallback)(function (acceptedFiles) {
|
|
62
|
+
setErrors([]);
|
|
63
|
+
var totalFiles = uploadedFiles.length + acceptedFiles.length;
|
|
64
|
+
if (maxFiles && totalFiles > maxFiles) {
|
|
65
|
+
setErrors([
|
|
66
|
+
"Maximum ".concat(maxFiles, " files allowed. You already uploaded ").concat(uploadedFiles.length, "."),
|
|
67
|
+
]);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
onFilesUploaded(acceptedFiles);
|
|
71
|
+
}, [onFilesUploaded, uploadedFiles, maxFiles]);
|
|
72
|
+
var _p = (0, react_dropzone_1.useDropzone)({
|
|
73
|
+
onDrop: onDrop,
|
|
74
|
+
accept: mappedAccept,
|
|
75
|
+
maxSize: maxSizeKB * 1024,
|
|
76
|
+
maxFiles: maxFiles,
|
|
77
|
+
onDropRejected: function (rejectedFiles) {
|
|
78
|
+
var messages = rejectedFiles.flatMap(function (rejected) {
|
|
79
|
+
return rejected.errors.map(function (err) {
|
|
80
|
+
if (err.code === "file-too-large") {
|
|
81
|
+
return "File \"".concat(rejected.file.name, "\" is too large. Max size is ").concat((0, constants_1.toMB)(maxSizeKB), ".");
|
|
82
|
+
}
|
|
83
|
+
else if (err.code === "file-invalid-type") {
|
|
84
|
+
return "File \"".concat(rejected.file.name, "\" is not an accepted file type.");
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return "File \"".concat(rejected.file.name, "\" was rejected: ").concat(err.message);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
setErrors(messages);
|
|
92
|
+
},
|
|
93
|
+
}), getRootProps = _p.getRootProps, getInputProps = _p.getInputProps;
|
|
94
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
95
|
+
react_1.default.createElement(react_2.VStack, { spacing: 4, align: "stretch" },
|
|
96
|
+
react_1.default.createElement(react_2.Box, __assign({}, getRootProps(), { border: "2px dashed", borderColor: border, borderRadius: "md", p: 10, textAlign: "center", bg: bg, cursor: "pointer", transition: "all 0.2s", _hover: { bg: (_d = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _d === void 0 ? void 0 : _d[100] }, position: "relative" }),
|
|
97
|
+
react_1.default.createElement("input", __assign({}, getInputProps())),
|
|
98
|
+
react_1.default.createElement(react_2.VStack, { spacing: 2 },
|
|
99
|
+
react_1.default.createElement(react_2.Icon, { as: lucide_react_1.Upload, boxSize: 6 }),
|
|
100
|
+
react_1.default.createElement(react_2.Text, { fontWeight: "medium" }, "Drag and drop files here"),
|
|
101
|
+
react_1.default.createElement(react_2.Text, { fontSize: "sm", color: (_e = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _e === void 0 ? void 0 : _e[500] },
|
|
102
|
+
acceptTypes.join(", "),
|
|
103
|
+
" up to ",
|
|
104
|
+
(0, constants_1.toMB)(maxSizeKB),
|
|
105
|
+
" ",
|
|
106
|
+
maxFiles ? "- ".concat(maxFiles, " file(s) max") : ""))),
|
|
107
|
+
errors.length > 0 && (react_1.default.createElement(react_2.Box, null, errors.map(function (err, idx) {
|
|
108
|
+
var _a;
|
|
109
|
+
return (react_1.default.createElement(react_2.Text, { key: idx, fontSize: "sm", color: (_a = colors === null || colors === void 0 ? void 0 : colors.red) === null || _a === void 0 ? void 0 : _a[600] }, err));
|
|
110
|
+
}))),
|
|
111
|
+
uploadedFiles.length > 0 && (react_1.default.createElement(react_2.Box, null,
|
|
112
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2 },
|
|
113
|
+
react_1.default.createElement(react_2.Text, { fontFamily: "open-sans, sans-serif", fontWeight: 600, fontSize: 14, lineHeight: "100%", letterSpacing: "4%", textTransform: "uppercase", py: 4 }, "Uploaded Files")),
|
|
114
|
+
react_1.default.createElement(react_2.List, { spacing: 2 }, uploadedFiles.map(function (file, index) {
|
|
115
|
+
var _a, _b, _c, _d, _e, _f;
|
|
116
|
+
return (react_1.default.createElement(react_2.Box, { key: index, borderWidth: "0.063rem", borderRadius: "md", px: 3, py: 2, bg: colors === null || colors === void 0 ? void 0 : colors.white },
|
|
117
|
+
react_1.default.createElement(react_2.ListItem, { display: "flex", justifyContent: "space-between", alignItems: "center" },
|
|
118
|
+
react_1.default.createElement(react_2.HStack, { spacing: 3, flex: "1" },
|
|
119
|
+
file.type.startsWith("image/") ? (react_1.default.createElement(react_2.Box, { boxSize: "2.5rem", cursor: "pointer", position: "relative", _hover: {
|
|
120
|
+
".hover-icon": {
|
|
121
|
+
opacity: 1,
|
|
122
|
+
bg: (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.secondary) === null || _a === void 0 ? void 0 : _a.opacity) === null || _b === void 0 ? void 0 : _b[16],
|
|
123
|
+
},
|
|
124
|
+
}, onClick: function () {
|
|
125
|
+
setPreviewUrl(URL.createObjectURL(file));
|
|
126
|
+
setPreviewTitle(file.name);
|
|
127
|
+
onOpen();
|
|
128
|
+
} },
|
|
129
|
+
react_1.default.createElement("img", { src: URL.createObjectURL(file), alt: file.name, style: {
|
|
130
|
+
width: "100%",
|
|
131
|
+
height: "100%",
|
|
132
|
+
objectFit: "cover",
|
|
133
|
+
borderRadius: "0.25rem",
|
|
134
|
+
} }),
|
|
135
|
+
react_1.default.createElement(react_2.Box, { className: "hover-icon", position: "absolute", top: "0.5rem", left: "0.5rem", opacity: 0 },
|
|
136
|
+
react_1.default.createElement(lucide_react_1.Eye, { color: (_c = colors === null || colors === void 0 ? void 0 : colors.background) === null || _c === void 0 ? void 0 : _c[100] })))) : (react_1.default.createElement(react_2.ListIcon, { as: lucide_react_1.FileText, color: (_d = colors === null || colors === void 0 ? void 0 : colors.blue) === null || _d === void 0 ? void 0 : _d[500], boxSize: 8 })),
|
|
137
|
+
react_1.default.createElement(react_2.VStack, { align: "start", spacing: 0, flex: "1" },
|
|
138
|
+
react_1.default.createElement(react_2.Text, { fontSize: "sm", noOfLines: 1 }, file.name),
|
|
139
|
+
react_1.default.createElement(react_2.Text, { fontSize: "xs", color: (_e = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _e === void 0 ? void 0 : _e[500] },
|
|
140
|
+
(0, constants_1.toMB)(file.size / 1024),
|
|
141
|
+
" \u2022",
|
|
142
|
+
" ",
|
|
143
|
+
file.type || "Unknown type"))),
|
|
144
|
+
onRemoveFile && (react_1.default.createElement(react_2.CloseButton, { onClick: function () { return onRemoveFile(file); }, size: "sm", color: (_f = colors === null || colors === void 0 ? void 0 : colors.red) === null || _f === void 0 ? void 0 : _f[600] }))),
|
|
145
|
+
(progress === null || progress === void 0 ? void 0 : progress[file.name]) !== undefined && (react_1.default.createElement(react_2.Progress, { value: progress === null || progress === void 0 ? void 0 : progress[file.name], size: "xs", mt: 1, hasStripe: (progress === null || progress === void 0 ? void 0 : progress[file.name]) < 100, isAnimated: (progress === null || progress === void 0 ? void 0 : progress[file.name]) < 100, colorScheme: (progress === null || progress === void 0 ? void 0 : progress[file.name]) >= 100 ? "green" : "blue", borderRadius: 5 }))));
|
|
146
|
+
}))))),
|
|
147
|
+
react_1.default.createElement(Modal_1.default, { isOpen: isOpen, onClose: function () {
|
|
148
|
+
onClose();
|
|
149
|
+
setPreviewUrl(null);
|
|
150
|
+
setPreviewTitle(null);
|
|
151
|
+
}, size: "xl", isCentered: true },
|
|
152
|
+
react_1.default.createElement(Modal_1.ModalHeader, null,
|
|
153
|
+
react_1.default.createElement(react_2.Text, { fontFamily: "open-sans, sans-serif", fontWeight: 600, fontSize: 16, textTransform: "uppercase" }, previewTitle)),
|
|
154
|
+
react_1.default.createElement(Modal_1.ModalBody, null, previewUrl && (react_1.default.createElement(react_2.Image, { src: previewUrl, alt: "Preview", w: "100%", h: "auto", objectFit: "contain" }))))));
|
|
155
|
+
};
|
|
156
|
+
exports.default = FileUpload;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type MimeExtension = '.jpg' | '.jpeg' | '.png' | '.gif' | '.webp' | '.svg' | '.pdf' | '.doc' | '.docx' | '.xls' | '.xlsx' | '.ppt' | '.pptx' | '.txt' | '.mp4' | '.mov' | '.mp3' | '.wav' | '.zip' | '.rar' | '.7z';
|
|
2
|
+
export type MimeMap = Record<MimeExtension, string>;
|
|
3
|
+
export type FileUploaderProps = {
|
|
4
|
+
onFilesUploaded: (files: File[]) => void;
|
|
5
|
+
uploadedFiles: File[];
|
|
6
|
+
onRemoveFile?: (file: File) => void;
|
|
7
|
+
acceptTypes?: MimeExtension[];
|
|
8
|
+
maxSizeKB?: number;
|
|
9
|
+
maxFiles?: number;
|
|
10
|
+
progress?: Record<string, number>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toMB = exports.mimeMap = void 0;
|
|
4
|
+
exports.mimeMap = {
|
|
5
|
+
'.jpg': 'image/jpeg',
|
|
6
|
+
'.jpeg': 'image/jpeg',
|
|
7
|
+
'.png': 'image/png',
|
|
8
|
+
'.gif': 'image/gif',
|
|
9
|
+
'.webp': 'image/webp',
|
|
10
|
+
'.svg': 'image/svg+xml',
|
|
11
|
+
'.pdf': 'application/pdf',
|
|
12
|
+
'.doc': 'application/msword',
|
|
13
|
+
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
14
|
+
'.xls': 'application/vnd.ms-excel',
|
|
15
|
+
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
16
|
+
'.ppt': 'application/vnd.ms-powerpoint',
|
|
17
|
+
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
18
|
+
'.txt': 'text/plain',
|
|
19
|
+
'.mp4': 'video/mp4',
|
|
20
|
+
'.mov': 'video/quicktime',
|
|
21
|
+
'.mp3': 'audio/mpeg',
|
|
22
|
+
'.wav': 'audio/wav',
|
|
23
|
+
'.zip': 'application/zip',
|
|
24
|
+
'.rar': 'application/vnd.rar',
|
|
25
|
+
'.7z': 'application/x-7z-compressed',
|
|
26
|
+
};
|
|
27
|
+
var toMB = function (size) { return "".concat((size / 1024).toFixed(2), " MB"); };
|
|
28
|
+
exports.toMB = toMB;
|
|
@@ -0,0 +1,57 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var react_1 = require("@chakra-ui/react");
|
|
30
|
+
var lucide_react_1 = require("lucide-react");
|
|
31
|
+
var react_2 = __importStar(require("react"));
|
|
32
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
33
|
+
var desktopMenu_1 = __importDefault(require("./components/desktopMenu"));
|
|
34
|
+
var mobileMenu_1 = __importDefault(require("./components/mobileMenu"));
|
|
35
|
+
var Header = function (_a) {
|
|
36
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
37
|
+
var logo = _a.logo, menuItems = _a.menuItems, rightSlot = _a.rightSlot, active = _a.active, colors = _a.colors;
|
|
38
|
+
var _k = (0, react_1.useDisclosure)(), isOpen = _k.isOpen, onOpen = _k.onOpen, onClose = _k.onClose;
|
|
39
|
+
var _l = (0, react_2.useState)(null), hoveredMenu = _l[0], setHoveredMenu = _l[1];
|
|
40
|
+
var themeColor = (0, useCustomTheme_1.useCustomTheme)().colors;
|
|
41
|
+
var bg = (_b = colors === null || colors === void 0 ? void 0 : colors.bg) !== null && _b !== void 0 ? _b : (_c = themeColor === null || themeColor === void 0 ? void 0 : themeColor.gray) === null || _c === void 0 ? void 0 : _c[700];
|
|
42
|
+
var color = (_d = colors === null || colors === void 0 ? void 0 : colors.color) !== null && _d !== void 0 ? _d : (_e = themeColor === null || themeColor === void 0 ? void 0 : themeColor.background) === null || _e === void 0 ? void 0 : _e[100];
|
|
43
|
+
var activeBg = (_f = colors === null || colors === void 0 ? void 0 : colors.active) !== null && _f !== void 0 ? _f : (_g = themeColor === null || themeColor === void 0 ? void 0 : themeColor.primary) === null || _g === void 0 ? void 0 : _g[400];
|
|
44
|
+
var hoverBg = (_h = colors === null || colors === void 0 ? void 0 : colors.hover) !== null && _h !== void 0 ? _h : (_j = themeColor === null || themeColor === void 0 ? void 0 : themeColor.gray) === null || _j === void 0 ? void 0 : _j[500];
|
|
45
|
+
var isActive = function (href) { return href && active === href; };
|
|
46
|
+
return (react_2.default.createElement(react_1.Box, { bg: bg, color: color, px: 4, shadow: "md",
|
|
47
|
+
// position="sticky"
|
|
48
|
+
// top="0"
|
|
49
|
+
zIndex: 1000 },
|
|
50
|
+
react_2.default.createElement(react_1.Flex, { h: 16, align: "center", mx: "auto" },
|
|
51
|
+
react_2.default.createElement(react_1.Box, { cursor: "pointer" }, logo),
|
|
52
|
+
react_2.default.createElement(desktopMenu_1.default, { menuItems: menuItems, rightSlot: rightSlot, setHoveredMenu: setHoveredMenu, isActive: isActive, activeBg: activeBg, hoveredMenu: hoveredMenu, hoverBg: hoverBg, color: color }),
|
|
53
|
+
react_2.default.createElement(react_1.HStack, { spacing: 4, display: { base: "none", md: "flex" } }, rightSlot),
|
|
54
|
+
react_2.default.createElement(react_1.IconButton, { variant: "unstyled", icon: react_2.default.createElement(react_1.Box, { display: "flex", alignItems: "center", justifyContent: "center", w: "full", h: "full" }, isOpen ? react_2.default.createElement(lucide_react_1.X, { size: 20 }) : react_2.default.createElement(lucide_react_1.MenuIcon, { size: 20 })), "aria-label": "Toggle Menu", display: { md: "none" }, onClick: isOpen ? onClose : onOpen })),
|
|
55
|
+
react_2.default.createElement(mobileMenu_1.default, { menuItems: menuItems, isOpen: isOpen, isActive: isActive, hoverBg: hoverBg, activeBg: activeBg, color: color, rightSlot: rightSlot })));
|
|
56
|
+
};
|
|
57
|
+
exports.default = Header;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type SubItem = {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
badge?: {
|
|
6
|
+
label: string;
|
|
7
|
+
colorScheme?: "blue" | "cyan" | "gray" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "whiteAlpha" | "blackAlpha" | undefined;
|
|
8
|
+
};
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
};
|
|
11
|
+
type MenuItemProp = {
|
|
12
|
+
label: string;
|
|
13
|
+
href?: string;
|
|
14
|
+
badge?: {
|
|
15
|
+
label: string;
|
|
16
|
+
colorScheme?: "blue" | "cyan" | "gray" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "whiteAlpha" | "blackAlpha" | undefined;
|
|
17
|
+
};
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
children?: SubItem[];
|
|
20
|
+
};
|
|
21
|
+
export type HeaderProps = {
|
|
22
|
+
logo: React.ReactNode;
|
|
23
|
+
menuItems: MenuItemProp[];
|
|
24
|
+
rightSlot?: React.ReactNode;
|
|
25
|
+
active?: string;
|
|
26
|
+
colors?: {
|
|
27
|
+
bg: string;
|
|
28
|
+
color: string;
|
|
29
|
+
active: string;
|
|
30
|
+
hover: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export type DesktopMenuProps = Pick<HeaderProps, "menuItems" | "rightSlot"> & {
|
|
34
|
+
setHoveredMenu: (menu: string | null) => void;
|
|
35
|
+
isActive: (href?: string) => boolean | "" | undefined;
|
|
36
|
+
activeBg: string;
|
|
37
|
+
hoveredMenu: string | null;
|
|
38
|
+
hoverBg: string;
|
|
39
|
+
color: string;
|
|
40
|
+
};
|
|
41
|
+
export type MobileMenuProps = Pick<HeaderProps, 'menuItems' | 'rightSlot'> & Pick<DesktopMenuProps, 'isActive' | 'activeBg' | 'color' | 'hoverBg'> & {
|
|
42
|
+
isOpen: boolean;
|
|
43
|
+
};
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("@chakra-ui/react");
|
|
7
|
+
var lucide_react_1 = require("lucide-react");
|
|
8
|
+
var react_2 = __importDefault(require("react"));
|
|
9
|
+
var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
10
|
+
var DesktopMenu = function (_a) {
|
|
11
|
+
var menuItems = _a.menuItems, rightSlot = _a.rightSlot, setHoveredMenu = _a.setHoveredMenu, isActive = _a.isActive, activeBg = _a.activeBg, hoveredMenu = _a.hoveredMenu, hoverBg = _a.hoverBg, color = _a.color;
|
|
12
|
+
var colors = (0, useCustomTheme_1.useCustomTheme)().colors;
|
|
13
|
+
return (react_2.default.createElement(react_1.HStack, { spacing: 6, align: "center", display: { base: "none", md: "flex" }, mx: rightSlot ? "auto" : 0 }, menuItems.map(function (item) {
|
|
14
|
+
var _a, _b, _c, _d;
|
|
15
|
+
var hasChildren = !!item.children;
|
|
16
|
+
var isHovered = hoveredMenu === item.label;
|
|
17
|
+
return (react_2.default.createElement(react_1.Box, { key: item.label, position: "relative", onMouseEnter: function () { return hasChildren && setHoveredMenu(item.label); }, onMouseLeave: function () { return hasChildren && setHoveredMenu(null); } },
|
|
18
|
+
react_2.default.createElement(react_1.Button, { variant: "ghost", onClick: item.onClick, rightIcon: hasChildren ? react_2.default.createElement(lucide_react_1.ChevronDown, { size: 14 }) : undefined, bg: isActive(item.href) ? activeBg : "transparent", _hover: { bg: hoverBg }, color: color },
|
|
19
|
+
react_2.default.createElement(react_1.VStack, { spacing: 0 },
|
|
20
|
+
item.badge && (react_2.default.createElement(react_1.Badge, { colorScheme: (_b = (_a = item === null || item === void 0 ? void 0 : item.badge) === null || _a === void 0 ? void 0 : _a.colorScheme) !== null && _b !== void 0 ? _b : "blue", fontSize: "0.6em" }, (_c = item.badge) === null || _c === void 0 ? void 0 : _c.label)),
|
|
21
|
+
react_2.default.createElement(react_1.Text, null, item.label))),
|
|
22
|
+
hasChildren && (react_2.default.createElement(react_1.Collapse, { in: isHovered, animateOpacity: true },
|
|
23
|
+
react_2.default.createElement(react_1.Box, { position: "absolute", top: "100%", bg: colors === null || colors === void 0 ? void 0 : colors.white, color: colors === null || colors === void 0 ? void 0 : colors.black, rounded: "md", shadow: "md", minW: "10rem", zIndex: 10 },
|
|
24
|
+
react_2.default.createElement(react_1.Stack, { spacing: 1, p: 2 }, (_d = item.children) === null || _d === void 0 ? void 0 : _d.map(function (subItem) {
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
return (react_2.default.createElement(react_1.Button, { key: subItem.label, onClick: subItem.onClick, variant: "ghost", justifyContent: "flex-start", w: "full", bg: isActive(subItem.href) ? activeBg : "transparent", _hover: { bg: hoverBg } },
|
|
27
|
+
react_2.default.createElement(react_1.VStack, { spacing: 0, align: "start" },
|
|
28
|
+
subItem.badge && (react_2.default.createElement(react_1.Badge, { colorScheme: (_b = (_a = subItem === null || subItem === void 0 ? void 0 : subItem.badge) === null || _a === void 0 ? void 0 : _a.colorScheme) !== null && _b !== void 0 ? _b : "blue", fontSize: "0.6em", alignItems: "end" }, (_c = subItem.badge) === null || _c === void 0 ? void 0 : _c.label)),
|
|
29
|
+
react_2.default.createElement(react_1.Text, null, subItem.label))));
|
|
30
|
+
})))))));
|
|
31
|
+
})));
|
|
32
|
+
};
|
|
33
|
+
exports.default = DesktopMenu;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("@chakra-ui/react");
|
|
7
|
+
var react_2 = __importDefault(require("react"));
|
|
8
|
+
var MobileMenu = function (_a) {
|
|
9
|
+
var menuItems = _a.menuItems, isOpen = _a.isOpen, isActive = _a.isActive, hoverBg = _a.hoverBg, activeBg = _a.activeBg, color = _a.color, rightSlot = _a.rightSlot;
|
|
10
|
+
return (react_2.default.createElement(react_1.Collapse, { in: isOpen, animateOpacity: true },
|
|
11
|
+
react_2.default.createElement(react_1.Box, { pb: 4, display: { md: "none" } },
|
|
12
|
+
react_2.default.createElement(react_1.Stack, { spacing: 4 },
|
|
13
|
+
menuItems.map(function (item) {
|
|
14
|
+
var _a, _b, _c, _d, _e;
|
|
15
|
+
return item.children ? (react_2.default.createElement(react_1.Box, { key: item.label, px: 2 },
|
|
16
|
+
react_2.default.createElement(react_1.VStack, { spacing: 0, align: "start" },
|
|
17
|
+
item.badge && (react_2.default.createElement(react_1.Badge, { colorScheme: (_b = (_a = item === null || item === void 0 ? void 0 : item.badge) === null || _a === void 0 ? void 0 : _a.colorScheme) !== null && _b !== void 0 ? _b : "blue", fontSize: "0.6em" }, item.badge.label)),
|
|
18
|
+
react_2.default.createElement(react_1.Text, { fontWeight: "medium" }, item.label)),
|
|
19
|
+
react_2.default.createElement(react_1.Stack, { pl: 4, mt: 1 }, item.children.map(function (subItem) {
|
|
20
|
+
var _a, _b, _c;
|
|
21
|
+
return (react_2.default.createElement(react_1.Button, { key: subItem.label, onClick: subItem.onClick, variant: "ghost", w: "full", justifyContent: "flex-start", color: color, bg: isActive(subItem.href) ? activeBg : "transparent", _hover: { bg: hoverBg } },
|
|
22
|
+
react_2.default.createElement(react_1.VStack, { spacing: 0, align: "start" },
|
|
23
|
+
subItem.badge && (react_2.default.createElement(react_1.Badge, { colorScheme: (_b = (_a = subItem === null || subItem === void 0 ? void 0 : subItem.badge) === null || _a === void 0 ? void 0 : _a.colorScheme) !== null && _b !== void 0 ? _b : "blue", fontSize: "0.6em" }, (_c = subItem.badge) === null || _c === void 0 ? void 0 : _c.label)),
|
|
24
|
+
react_2.default.createElement(react_1.Text, null, subItem.label))));
|
|
25
|
+
})))) : (react_2.default.createElement(react_1.Button, { key: item.label, onClick: item.onClick, variant: "ghost", w: "full", justifyContent: "flex-start", color: color, bg: isActive(item.href) ? activeBg : "transparent", _hover: { bg: hoverBg } },
|
|
26
|
+
react_2.default.createElement(react_1.VStack, { spacing: 0, align: "start" },
|
|
27
|
+
item.badge && (react_2.default.createElement(react_1.Badge, { colorScheme: (_d = (_c = item === null || item === void 0 ? void 0 : item.badge) === null || _c === void 0 ? void 0 : _c.colorScheme) !== null && _d !== void 0 ? _d : "blue", fontSize: "0.6em" }, (_e = item.badge) === null || _e === void 0 ? void 0 : _e.label)),
|
|
28
|
+
react_2.default.createElement(react_1.Text, null, item.label))));
|
|
29
|
+
}),
|
|
30
|
+
rightSlot && react_2.default.createElement(react_1.Box, { mt: 4 }, rightSlot)))));
|
|
31
|
+
};
|
|
32
|
+
exports.default = MobileMenu;
|
|
@@ -0,0 +1,50 @@
|
|
|
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_2 = require("@chakra-ui/react");
|
|
19
|
+
var dnd_1 = require("@hello-pangea/dnd");
|
|
20
|
+
var lucide_react_1 = require("lucide-react");
|
|
21
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
22
|
+
var ReorderList = function (_a) {
|
|
23
|
+
var _b = _a.label, label = _b === void 0 ? "" : _b, items = _a.items, onReorder = _a.onReorder;
|
|
24
|
+
var colors = (0, useCustomTheme_1.useCustomTheme)().colors;
|
|
25
|
+
var handleDragEnd = function (result) {
|
|
26
|
+
if (!result.destination)
|
|
27
|
+
return;
|
|
28
|
+
var reordered = Array.from(items);
|
|
29
|
+
var moved = reordered.splice(result.source.index, 1)[0];
|
|
30
|
+
reordered.splice(result.destination.index, 0, moved);
|
|
31
|
+
onReorder(reordered);
|
|
32
|
+
};
|
|
33
|
+
return (react_1.default.createElement(react_2.Box, { borderWidth: "0.063rem", borderRadius: "md", px: 3, py: 2, bg: colors === null || colors === void 0 ? void 0 : colors.white },
|
|
34
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2 },
|
|
35
|
+
react_1.default.createElement(lucide_react_1.BetweenHorizonalStart, null),
|
|
36
|
+
react_1.default.createElement(react_2.Text, { fontFamily: "open-sans, sans-serif", fontWeight: 600, fontSize: 14, lineHeight: "100%", letterSpacing: "4%", textTransform: "uppercase", py: 4 }, label)),
|
|
37
|
+
react_1.default.createElement(react_2.Divider, null),
|
|
38
|
+
react_1.default.createElement("br", null),
|
|
39
|
+
react_1.default.createElement(dnd_1.DragDropContext, { onDragEnd: handleDragEnd },
|
|
40
|
+
react_1.default.createElement(dnd_1.Droppable, { droppableId: "item-list", direction: "horizontal" }, function (provided) { return (react_1.default.createElement(react_2.HStack, __assign({ ref: provided.innerRef }, provided.droppableProps, { spacing: 4, overflowX: "auto" }),
|
|
41
|
+
items.map(function (item, index) { return (react_1.default.createElement(dnd_1.Draggable, { key: item.id, draggableId: item.id, index: index }, function (provided) {
|
|
42
|
+
var _a, _b, _c;
|
|
43
|
+
return (react_1.default.createElement(react_2.Box, __assign({ ref: provided.innerRef }, provided.draggableProps, provided.dragHandleProps, { position: "relative", border: "0.063rem solid", borderColor: (_a = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _a === void 0 ? void 0 : _a[300], borderRadius: "md", overflow: "hidden" }),
|
|
44
|
+
react_1.default.createElement(react_2.Image, { src: item.previewUrl, alt: (_b = item.name) !== null && _b !== void 0 ? _b : "item-".concat(index), boxSize: "7.5rem", objectFit: "cover" }),
|
|
45
|
+
react_1.default.createElement(react_2.IconButton, { icon: react_1.default.createElement(lucide_react_1.GripVertical, { size: 16, color: (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[500] }), "aria-label": "Drag", size: "sm", position: "absolute", top: 1, left: 1, variant: "ghost" }),
|
|
46
|
+
react_1.default.createElement(react_2.Badge, { position: "absolute", colorScheme: "gray", variant: "solid", bottom: 1, right: 1 }, index + 1)));
|
|
47
|
+
})); }),
|
|
48
|
+
provided.placeholder)); }))));
|
|
49
|
+
};
|
|
50
|
+
exports.default = ReorderList;
|
|
@@ -82,9 +82,7 @@ var SearchSelect = function (_a) {
|
|
|
82
82
|
: normalizeSingleValue(value)
|
|
83
83
|
? [normalizeSingleValue(value)]
|
|
84
84
|
: [];
|
|
85
|
-
var filteredOptions = options.filter(function (option) {
|
|
86
|
-
return option.label.toLowerCase().includes(inputValue.toLowerCase());
|
|
87
|
-
});
|
|
85
|
+
var filteredOptions = options.filter(function (option) { var _a, _b; return (_b = (_a = option === null || option === void 0 ? void 0 : option.label) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(inputValue === null || inputValue === void 0 ? void 0 : inputValue.toLowerCase()); });
|
|
88
86
|
(0, react_1.useEffect)(function () {
|
|
89
87
|
var delayDebounce = setTimeout(function () {
|
|
90
88
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(inputValue);
|