powr-sdk-web 1.3.0 → 1.4.0

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.
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
16
+ var PowrBaseActivity = function PowrBaseActivity(_ref) {
17
+ var tasks = _ref.tasks,
18
+ onTaskUpdate = _ref.onTaskUpdate,
19
+ onAddTask = _ref.onAddTask;
20
+ var _useState = (0, _react.useState)(null),
21
+ _useState2 = _slicedToArray(_useState, 2),
22
+ editingTaskId = _useState2[0],
23
+ setEditingTaskId = _useState2[1];
24
+ var _useState3 = (0, _react.useState)(""),
25
+ _useState4 = _slicedToArray(_useState3, 2),
26
+ editedTaskText = _useState4[0],
27
+ setEditedTaskText = _useState4[1];
28
+ var handleEdit = function handleEdit(task) {
29
+ setEditingTaskId(task.id);
30
+ setEditedTaskText(task.task);
31
+ };
32
+ var handleSave = function handleSave(taskId) {
33
+ if (onTaskUpdate) {
34
+ onTaskUpdate(taskId, {
35
+ task: editedTaskText
36
+ });
37
+ }
38
+ setEditingTaskId(null);
39
+ };
40
+ var getStatusDot = function getStatusDot(status) {
41
+ return status === "Completed" ? "bg-cyan-500" : "bg-yellow-400";
42
+ };
43
+ return /*#__PURE__*/_react["default"].createElement("div", {
44
+ className: "bg-white p-6 rounded-xl shadow-md"
45
+ }, /*#__PURE__*/_react["default"].createElement("div", {
46
+ className: "flex justify-between items-center mb-4"
47
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", {
48
+ className: "text-xl font-semibold"
49
+ }, "Project Tasks"), /*#__PURE__*/_react["default"].createElement("p", {
50
+ className: "text-sm text-gray-500"
51
+ }, "Manage and track project tasks")), /*#__PURE__*/_react["default"].createElement("button", {
52
+ onClick: onAddTask,
53
+ className: "bg-orange-500 hover:bg-orange-600 text-white px-4 py-2 rounded-md text-sm"
54
+ }, "+ Add Task")), /*#__PURE__*/_react["default"].createElement("div", {
55
+ className: "overflow-x-auto"
56
+ }, /*#__PURE__*/_react["default"].createElement("table", {
57
+ className: "min-w-full text-sm"
58
+ }, /*#__PURE__*/_react["default"].createElement("thead", {
59
+ className: "text-left text-gray-500 border-b"
60
+ }, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", {
61
+ className: "py-2"
62
+ }, "Status"), /*#__PURE__*/_react["default"].createElement("th", {
63
+ className: "py-2"
64
+ }, "Task"), /*#__PURE__*/_react["default"].createElement("th", {
65
+ className: "py-2"
66
+ }, "Assignee"), /*#__PURE__*/_react["default"].createElement("th", {
67
+ className: "py-2"
68
+ }, "Created"), /*#__PURE__*/_react["default"].createElement("th", {
69
+ className: "py-2"
70
+ }, "Priority"))), /*#__PURE__*/_react["default"].createElement("tbody", null, tasks.map(function (task) {
71
+ return /*#__PURE__*/_react["default"].createElement("tr", {
72
+ key: task.id,
73
+ className: "border-b last:border-b-0"
74
+ }, /*#__PURE__*/_react["default"].createElement("td", {
75
+ className: "py-3 align-middle"
76
+ }, /*#__PURE__*/_react["default"].createElement("div", {
77
+ className: "flex items-center gap-2"
78
+ }, /*#__PURE__*/_react["default"].createElement("span", {
79
+ className: "w-2.5 h-2.5 rounded-full ".concat(getStatusDot(task.status))
80
+ }), /*#__PURE__*/_react["default"].createElement("span", null, task.status))), /*#__PURE__*/_react["default"].createElement("td", {
81
+ className: "py-3 align-middle"
82
+ }, /*#__PURE__*/_react["default"].createElement("div", {
83
+ className: "flex items-center"
84
+ }, editingTaskId === task.id ? /*#__PURE__*/_react["default"].createElement("input", {
85
+ className: "border px-2 py-1 rounded w-full",
86
+ value: editedTaskText,
87
+ onChange: function onChange(e) {
88
+ return setEditedTaskText(e.target.value);
89
+ },
90
+ onBlur: function onBlur() {
91
+ return handleSave(task.id);
92
+ },
93
+ autoFocus: true
94
+ }) : /*#__PURE__*/_react["default"].createElement("span", {
95
+ className: "cursor-pointer font-medium",
96
+ onClick: function onClick() {
97
+ return handleEdit(task);
98
+ }
99
+ }, task.task))), /*#__PURE__*/_react["default"].createElement("td", {
100
+ className: "py-3 align-middle"
101
+ }, /*#__PURE__*/_react["default"].createElement("div", {
102
+ className: "flex items-center gap-2"
103
+ }, /*#__PURE__*/_react["default"].createElement("div", {
104
+ className: "w-6 h-6 rounded-full bg-orange-100 flex items-center justify-center text-xs text-orange-700"
105
+ }, task.assignee.charAt(0).toUpperCase()), /*#__PURE__*/_react["default"].createElement("span", null, task.assignee))), /*#__PURE__*/_react["default"].createElement("td", {
106
+ className: "py-3 align-middle"
107
+ }, /*#__PURE__*/_react["default"].createElement("div", {
108
+ className: "flex items-center h-full"
109
+ }, task.created)), /*#__PURE__*/_react["default"].createElement("td", {
110
+ className: "py-3 align-middle"
111
+ }, /*#__PURE__*/_react["default"].createElement("div", {
112
+ className: "flex items-center h-full"
113
+ }, /*#__PURE__*/_react["default"].createElement("span", {
114
+ className: "px-2 py-1 rounded-full bg-blue-100 text-blue-700 text-xs"
115
+ }, task.priority))));
116
+ })))));
117
+ };
118
+ var _default = exports["default"] = PowrBaseActivity;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Loader = _interopRequireDefault(require("./Loader"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ var CommentForm = function CommentForm(_ref) {
12
+ var newComment = _ref.newComment,
13
+ setNewComment = _ref.setNewComment,
14
+ handlePostComment = _ref.handlePostComment,
15
+ isPosting = _ref.isPosting,
16
+ isUploading = _ref.isUploading,
17
+ selectedFiles = _ref.selectedFiles,
18
+ setShowUploadModal = _ref.setShowUploadModal,
19
+ handleRemoveUploadedFile = _ref.handleRemoveUploadedFile;
20
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, selectedFiles.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
21
+ className: "powrbase-attachment-preview",
22
+ style: {
23
+ marginTop: '15px',
24
+ padding: '10px',
25
+ border: '1px solid #eee',
26
+ borderRadius: '8px',
27
+ backgroundColor: '#f9f9f9',
28
+ marginBottom: '15px'
29
+ }
30
+ }, selectedFiles.map(function (file, index) {
31
+ return /*#__PURE__*/_react["default"].createElement("div", {
32
+ key: index,
33
+ style: {
34
+ marginBottom: '10px',
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ gap: '10px'
38
+ }
39
+ }, file.type && file.type.startsWith('image/') ? /*#__PURE__*/_react["default"].createElement("img", {
40
+ src: file.url,
41
+ alt: file.name,
42
+ style: {
43
+ width: '50px',
44
+ height: '50px',
45
+ objectFit: 'cover',
46
+ borderRadius: '4px'
47
+ }
48
+ }) : /*#__PURE__*/_react["default"].createElement("span", {
49
+ style: {
50
+ fontSize: '24px'
51
+ }
52
+ }, "\uD83D\uDCCE"), /*#__PURE__*/_react["default"].createElement("span", {
53
+ style: {
54
+ fontSize: '14px',
55
+ flexGrow: 1
56
+ }
57
+ }, file.name), /*#__PURE__*/_react["default"].createElement("button", {
58
+ onClick: function onClick() {
59
+ return handleRemoveUploadedFile(index);
60
+ },
61
+ style: {
62
+ border: 'none',
63
+ background: 'none',
64
+ cursor: 'pointer',
65
+ fontSize: '18px',
66
+ color: '#888'
67
+ }
68
+ }, "\xD7"));
69
+ })), /*#__PURE__*/_react["default"].createElement("div", {
70
+ className: "powrbase-comment-form",
71
+ style: {
72
+ display: 'flex',
73
+ alignItems: 'flex-end',
74
+ marginTop: selectedFiles.length > 0 ? '0' : '15px',
75
+ padding: '8px 15px',
76
+ backgroundColor: selectedFiles.length > 0 ? 'transparent' : '#ffffff',
77
+ borderRadius: '25px',
78
+ gap: '8px',
79
+ boxShadow: selectedFiles.length > 0 ? 'none' : '0 2px 8px rgba(0,0,0,0.05)'
80
+ }
81
+ }, /*#__PURE__*/_react["default"].createElement("button", {
82
+ style: {
83
+ borderRadius: '50%',
84
+ width: '35px',
85
+ height: '35px',
86
+ border: 'none',
87
+ backgroundColor: 'transparent',
88
+ color: isUploading ? '#cccccc' : '#555',
89
+ display: 'flex',
90
+ justifyContent: 'center',
91
+ alignItems: 'center',
92
+ cursor: isUploading ? 'not-allowed' : 'pointer',
93
+ fontSize: '20px',
94
+ flexShrink: 0
95
+ },
96
+ onClick: function onClick() {
97
+ return setShowUploadModal(true);
98
+ },
99
+ disabled: isUploading || isPosting
100
+ }, "+"), /*#__PURE__*/_react["default"].createElement("textarea", {
101
+ className: "powrbase-comment-input",
102
+ placeholder: selectedFiles.length > 0 ? 'Add a caption...' : 'Write a comment...',
103
+ value: newComment,
104
+ onChange: function onChange(e) {
105
+ return setNewComment(e.target.value);
106
+ },
107
+ rows: 1,
108
+ style: {
109
+ flexGrow: 1,
110
+ border: 'none',
111
+ outline: 'none',
112
+ padding: '8px 0',
113
+ fontSize: '16px',
114
+ resize: 'none',
115
+ backgroundColor: 'transparent',
116
+ minHeight: '20px',
117
+ maxHeight: '100px',
118
+ overflowY: 'auto'
119
+ }
120
+ }), /*#__PURE__*/_react["default"].createElement("button", {
121
+ className: "powrbase-comment-submit",
122
+ onClick: handlePostComment,
123
+ disabled: isPosting || isUploading || !newComment.trim() && selectedFiles.length === 0,
124
+ style: {
125
+ borderRadius: '50%',
126
+ width: '35px',
127
+ height: '35px',
128
+ border: 'none',
129
+ backgroundColor: isPosting || isUploading || !newComment.trim() && selectedFiles.length === 0 ? '#cccccc' : '#28a745',
130
+ color: 'white',
131
+ display: 'flex',
132
+ justifyContent: 'center',
133
+ alignItems: 'center',
134
+ cursor: isPosting || isUploading || !newComment.trim() && selectedFiles.length === 0 ? 'not-allowed' : 'pointer',
135
+ fontSize: '18px',
136
+ flexShrink: 0,
137
+ transition: 'background-color 0.2s ease-in-out'
138
+ }
139
+ }, isPosting || isUploading ? /*#__PURE__*/_react["default"].createElement(_Loader["default"], {
140
+ size: "small",
141
+ color: "white"
142
+ }) : "\u25BA")));
143
+ };
144
+ CommentForm.propTypes = {
145
+ newComment: _propTypes["default"].string.isRequired,
146
+ setNewComment: _propTypes["default"].func.isRequired,
147
+ handlePostComment: _propTypes["default"].func.isRequired,
148
+ isPosting: _propTypes["default"].bool,
149
+ isUploading: _propTypes["default"].bool,
150
+ selectedFiles: _propTypes["default"].array.isRequired,
151
+ setShowUploadModal: _propTypes["default"].func.isRequired,
152
+ handleRemoveUploadedFile: _propTypes["default"].func.isRequired
153
+ };
154
+ var _default = exports["default"] = CommentForm;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var CommentItem = function CommentItem(_ref) {
11
+ var comment = _ref.comment,
12
+ showTimestamp = _ref.showTimestamp,
13
+ onImageClick = _ref.onImageClick;
14
+ return /*#__PURE__*/_react["default"].createElement("div", {
15
+ className: "powrbase-comment",
16
+ style: {
17
+ marginBottom: '12px',
18
+ padding: '8px 75px 8px 12px',
19
+ borderRadius: '18px 18px 5px 18px',
20
+ backgroundColor: '#ffffff',
21
+ wordBreak: 'break-word',
22
+ maxWidth: '80%',
23
+ marginRight: 'auto',
24
+ boxShadow: '0 2px 8px rgba(0,0,0,0.05)',
25
+ display: 'flex',
26
+ flexDirection: 'column',
27
+ position: 'relative',
28
+ alignSelf: 'flex-start',
29
+ width: 'fit-content',
30
+ minWidth: '0'
31
+ }
32
+ }, /*#__PURE__*/_react["default"].createElement("div", {
33
+ className: "powrbase-comment-content"
34
+ }, /*#__PURE__*/_react["default"].createElement("div", {
35
+ className: "powrbase-comment-header"
36
+ }, comment.comment && /*#__PURE__*/_react["default"].createElement("div", {
37
+ className: "powrbase-comment-text",
38
+ style: {
39
+ fontSize: '15px',
40
+ lineHeight: '1.4',
41
+ marginTop: '5px'
42
+ }
43
+ }, comment.comment), comment.files && Array.isArray(comment.files) && comment.files.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
44
+ className: "powrbase-comment-attachments",
45
+ style: {
46
+ marginTop: '10px'
47
+ }
48
+ }, comment.files.map(function (file, index) {
49
+ return /*#__PURE__*/_react["default"].createElement("div", {
50
+ key: index,
51
+ style: {
52
+ marginBottom: '5px'
53
+ }
54
+ }, /*#__PURE__*/_react["default"].createElement("div", {
55
+ onClick: function onClick() {
56
+ return file.type && file.type.startsWith('image/') ? onImageClick(file.url) : window.open(file.url, '_blank');
57
+ },
58
+ style: {
59
+ cursor: 'pointer'
60
+ }
61
+ }, file.type && file.type.startsWith('image/') ? /*#__PURE__*/_react["default"].createElement("img", {
62
+ src: file.url,
63
+ alt: file.name,
64
+ style: {
65
+ maxWidth: '200px',
66
+ maxHeight: '200px',
67
+ height: 'auto',
68
+ borderRadius: '8px',
69
+ cursor: 'pointer'
70
+ }
71
+ }) : /*#__PURE__*/_react["default"].createElement("a", {
72
+ href: file.url,
73
+ target: "_blank",
74
+ rel: "noopener noreferrer",
75
+ style: {
76
+ textDecoration: 'none',
77
+ color: '#007bff',
78
+ fontSize: '14px'
79
+ }
80
+ }, "\uD83D\uDCCE ", file.name, " (", file.size ? (file.size / 1024).toFixed(2) + ' KB' : 'N/A', ")")));
81
+ })))), showTimestamp && /*#__PURE__*/_react["default"].createElement("span", {
82
+ className: "powrbase-comment-time",
83
+ style: {
84
+ fontSize: '11px',
85
+ color: '#888',
86
+ position: 'absolute',
87
+ bottom: '2px',
88
+ right: '10px'
89
+ }
90
+ }, comment.formattedTime || 'Time unavailable'));
91
+ };
92
+ CommentItem.propTypes = {
93
+ comment: _propTypes["default"].shape({
94
+ comment: _propTypes["default"].string,
95
+ files: _propTypes["default"].array,
96
+ formattedTime: _propTypes["default"].string
97
+ }).isRequired,
98
+ showTimestamp: _propTypes["default"].bool,
99
+ onImageClick: _propTypes["default"].func.isRequired
100
+ };
101
+ var _default = exports["default"] = CommentItem;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _CommentItem = _interopRequireDefault(require("./CommentItem"));
10
+ var _Loader = _interopRequireDefault(require("./Loader"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ var CommentList = function CommentList(_ref) {
13
+ var comments = _ref.comments,
14
+ isLoading = _ref.isLoading,
15
+ showTimestamp = _ref.showTimestamp,
16
+ onImageClick = _ref.onImageClick;
17
+ if (isLoading) {
18
+ return /*#__PURE__*/_react["default"].createElement("div", {
19
+ className: "powrbase-loading",
20
+ style: {
21
+ textAlign: 'center',
22
+ color: '#555',
23
+ marginTop: '20px',
24
+ display: 'flex',
25
+ flexDirection: 'column',
26
+ alignItems: 'center',
27
+ gap: '10px'
28
+ }
29
+ }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], {
30
+ size: "medium",
31
+ color: "#28a745"
32
+ }));
33
+ }
34
+ if (comments.length === 0) {
35
+ return /*#__PURE__*/_react["default"].createElement("div", {
36
+ className: "powrbase-no-comments",
37
+ style: {
38
+ textAlign: 'center',
39
+ color: '#555',
40
+ marginTop: '20px'
41
+ }
42
+ }, "No comments yet. Be the first to comment!");
43
+ }
44
+ return /*#__PURE__*/_react["default"].createElement("div", {
45
+ className: "powrbase-comments-list",
46
+ style: {
47
+ flexGrow: 1,
48
+ overflowY: 'auto',
49
+ paddingRight: '10px',
50
+ paddingLeft: '5px',
51
+ scrollbarWidth: 'none',
52
+ msOverflowStyle: 'none',
53
+ '&::-webkit-scrollbar': {
54
+ display: 'none'
55
+ },
56
+ minHeight: '400px'
57
+ }
58
+ }, comments.map(function (dateGroup, groupIndex) {
59
+ return /*#__PURE__*/_react["default"].createElement("div", {
60
+ key: dateGroup.date || groupIndex
61
+ }, /*#__PURE__*/_react["default"].createElement("div", {
62
+ style: {
63
+ textAlign: 'center',
64
+ margin: '15px 0',
65
+ position: 'sticky',
66
+ top: '0',
67
+ zIndex: 1
68
+ }
69
+ }, /*#__PURE__*/_react["default"].createElement("span", {
70
+ style: {
71
+ backgroundColor: '#e0e0e0',
72
+ padding: '4px 12px',
73
+ borderRadius: '15px',
74
+ fontSize: '12px',
75
+ color: '#555',
76
+ fontWeight: '500'
77
+ }
78
+ }, dateGroup.date)), dateGroup.comments.map(function (comment) {
79
+ return /*#__PURE__*/_react["default"].createElement(_CommentItem["default"], {
80
+ key: comment._id,
81
+ comment: comment,
82
+ showTimestamp: showTimestamp,
83
+ onImageClick: onImageClick
84
+ });
85
+ }));
86
+ }));
87
+ };
88
+ CommentList.propTypes = {
89
+ comments: _propTypes["default"].arrayOf(_propTypes["default"].shape({
90
+ date: _propTypes["default"].string,
91
+ comments: _propTypes["default"].arrayOf(_propTypes["default"].shape({
92
+ _id: _propTypes["default"].string.isRequired,
93
+ comment: _propTypes["default"].string,
94
+ files: _propTypes["default"].array,
95
+ formattedTime: _propTypes["default"].string
96
+ }))
97
+ })).isRequired,
98
+ isLoading: _propTypes["default"].bool,
99
+ showTimestamp: _propTypes["default"].bool,
100
+ onImageClick: _propTypes["default"].func.isRequired
101
+ };
102
+ var _default = exports["default"] = CommentList;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var ImageModal = function ImageModal(_ref) {
11
+ var selectedImageUrl = _ref.selectedImageUrl,
12
+ onClose = _ref.onClose;
13
+ if (!selectedImageUrl) return null;
14
+ return /*#__PURE__*/_react["default"].createElement("div", {
15
+ style: {
16
+ position: 'fixed',
17
+ top: 0,
18
+ left: 0,
19
+ right: 0,
20
+ bottom: 0,
21
+ backgroundColor: 'rgba(0, 0, 0, 0.8)',
22
+ display: 'flex',
23
+ justifyContent: 'center',
24
+ alignItems: 'center',
25
+ zIndex: 1000
26
+ },
27
+ onClick: onClose
28
+ }, /*#__PURE__*/_react["default"].createElement("img", {
29
+ src: selectedImageUrl,
30
+ alt: "Enlarged view",
31
+ style: {
32
+ maxWidth: '90%',
33
+ maxHeight: '90%',
34
+ objectFit: 'contain',
35
+ borderRadius: '8px'
36
+ },
37
+ onClick: function onClick(e) {
38
+ return e.stopPropagation();
39
+ }
40
+ }));
41
+ };
42
+ ImageModal.propTypes = {
43
+ selectedImageUrl: _propTypes["default"].string,
44
+ onClose: _propTypes["default"].func.isRequired
45
+ };
46
+ var _default = exports["default"] = ImageModal;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var Loader = function Loader(_ref) {
11
+ var _ref$size = _ref.size,
12
+ size = _ref$size === void 0 ? 'medium' : _ref$size,
13
+ _ref$color = _ref.color,
14
+ color = _ref$color === void 0 ? '#28a745' : _ref$color;
15
+ var sizeMap = {
16
+ small: '20px',
17
+ medium: '30px',
18
+ large: '40px'
19
+ };
20
+ return /*#__PURE__*/_react["default"].createElement("div", {
21
+ style: {
22
+ display: 'flex',
23
+ justifyContent: 'center',
24
+ alignItems: 'center',
25
+ padding: '10px'
26
+ }
27
+ }, /*#__PURE__*/_react["default"].createElement("div", {
28
+ style: {
29
+ width: sizeMap[size],
30
+ height: sizeMap[size],
31
+ border: "3px solid ".concat(color, "20"),
32
+ borderTop: "3px solid ".concat(color),
33
+ borderRadius: '50%',
34
+ animation: 'spin 1s linear infinite',
35
+ '@keyframes spin': {
36
+ '0%': {
37
+ transform: 'rotate(0deg)'
38
+ },
39
+ '100%': {
40
+ transform: 'rotate(360deg)'
41
+ }
42
+ }
43
+ }
44
+ }));
45
+ };
46
+ Loader.propTypes = {
47
+ size: _propTypes["default"].oneOf(['small', 'medium', 'large']),
48
+ color: _propTypes["default"].string
49
+ };
50
+ var _default = exports["default"] = Loader;