powr-sdk-web 3.3.4 → 3.3.6
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/admin/index.js +3 -0
- package/dist/chat/index.js +0 -7
- package/dist/feeds/admin.js +237 -0
- package/dist/feeds/components/CreatePost.js +296 -0
- package/dist/feeds/components/FeedPost.js +266 -0
- package/dist/feeds/index.js +242 -0
- package/dist/forms/admin.js +32 -57
- package/dist/index.js +7 -0
- package/dist/waitlists/admin.js +17 -36
- package/package.json +1 -1
package/dist/admin/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var _admin4 = _interopRequireDefault(require("../invoices/admin"));
|
|
|
14
14
|
var _admin5 = _interopRequireDefault(require("../slides/admin"));
|
|
15
15
|
var _admin6 = _interopRequireDefault(require("../forms/admin"));
|
|
16
16
|
var _admin7 = _interopRequireDefault(require("../waitlists/admin"));
|
|
17
|
+
var _admin8 = _interopRequireDefault(require("../feeds/admin"));
|
|
17
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
18
19
|
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); }
|
|
19
20
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -207,6 +208,8 @@ var AdminDashboard = function AdminDashboard(_ref) {
|
|
|
207
208
|
return /*#__PURE__*/_react["default"].createElement(_admin6["default"], sectionProps);
|
|
208
209
|
case 'waitlist':
|
|
209
210
|
return /*#__PURE__*/_react["default"].createElement(_admin7["default"], sectionProps);
|
|
211
|
+
case 'feeds':
|
|
212
|
+
return /*#__PURE__*/_react["default"].createElement(_admin8["default"], sectionProps);
|
|
210
213
|
default:
|
|
211
214
|
return null;
|
|
212
215
|
}
|
package/dist/chat/index.js
CHANGED
|
@@ -525,13 +525,6 @@ var PowrBaseChat = function PowrBaseChat(_ref) {
|
|
|
525
525
|
return baseStyles;
|
|
526
526
|
};
|
|
527
527
|
var styles = getThemeStyles();
|
|
528
|
-
if (!projectId) {
|
|
529
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
530
|
-
style: _objectSpread(_objectSpread({}, styles.emptyState), {}, {
|
|
531
|
-
padding: '40px'
|
|
532
|
-
})
|
|
533
|
-
}, "Project ID is required for chat functionality");
|
|
534
|
-
}
|
|
535
528
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
536
529
|
className: className,
|
|
537
530
|
style: _objectSpread(_objectSpread({}, styles.container), style)
|
|
@@ -0,0 +1,237 @@
|
|
|
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
|
+
var _auth = require("../utils/auth");
|
|
10
|
+
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 _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
|
|
11
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
12
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
13
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
14
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
15
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
16
|
+
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."); }
|
|
17
|
+
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; } }
|
|
18
|
+
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; }
|
|
19
|
+
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; } }
|
|
20
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
21
|
+
var PowrBaseFeedsAdmin = function PowrBaseFeedsAdmin() {
|
|
22
|
+
var _useState = (0, _react.useState)([]),
|
|
23
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
24
|
+
posts = _useState2[0],
|
|
25
|
+
setPosts = _useState2[1];
|
|
26
|
+
var _useState3 = (0, _react.useState)(true),
|
|
27
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
28
|
+
loading = _useState4[0],
|
|
29
|
+
setLoading = _useState4[1];
|
|
30
|
+
var _useState5 = (0, _react.useState)(null),
|
|
31
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
32
|
+
selectedPost = _useState6[0],
|
|
33
|
+
setSelectedPost = _useState6[1];
|
|
34
|
+
var _useState7 = (0, _react.useState)(false),
|
|
35
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
36
|
+
showDeleteModal = _useState8[0],
|
|
37
|
+
setShowDeleteModal = _useState8[1];
|
|
38
|
+
(0, _react.useEffect)(function () {
|
|
39
|
+
fetchPosts();
|
|
40
|
+
}, []);
|
|
41
|
+
var fetchPosts = /*#__PURE__*/function () {
|
|
42
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
43
|
+
var _yield$apiCall, data, ok, _t;
|
|
44
|
+
return _regenerator().w(function (_context) {
|
|
45
|
+
while (1) switch (_context.n) {
|
|
46
|
+
case 0:
|
|
47
|
+
_context.p = 0;
|
|
48
|
+
_context.n = 1;
|
|
49
|
+
return (0, _auth.apiCall)(null, '/feeds?limit=100', null);
|
|
50
|
+
case 1:
|
|
51
|
+
_yield$apiCall = _context.v;
|
|
52
|
+
data = _yield$apiCall.data;
|
|
53
|
+
ok = _yield$apiCall.ok;
|
|
54
|
+
if (ok && data.success) {
|
|
55
|
+
setPosts(data.data);
|
|
56
|
+
}
|
|
57
|
+
_context.n = 3;
|
|
58
|
+
break;
|
|
59
|
+
case 2:
|
|
60
|
+
_context.p = 2;
|
|
61
|
+
_t = _context.v;
|
|
62
|
+
console.error('Error fetching posts:', _t);
|
|
63
|
+
case 3:
|
|
64
|
+
_context.p = 3;
|
|
65
|
+
setLoading(false);
|
|
66
|
+
return _context.f(3);
|
|
67
|
+
case 4:
|
|
68
|
+
return _context.a(2);
|
|
69
|
+
}
|
|
70
|
+
}, _callee, null, [[0, 2, 3, 4]]);
|
|
71
|
+
}));
|
|
72
|
+
return function fetchPosts() {
|
|
73
|
+
return _ref.apply(this, arguments);
|
|
74
|
+
};
|
|
75
|
+
}();
|
|
76
|
+
var handleDeletePost = /*#__PURE__*/function () {
|
|
77
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
78
|
+
var _yield$apiCall2, data, ok, _t2;
|
|
79
|
+
return _regenerator().w(function (_context2) {
|
|
80
|
+
while (1) switch (_context2.n) {
|
|
81
|
+
case 0:
|
|
82
|
+
if (selectedPost) {
|
|
83
|
+
_context2.n = 1;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
return _context2.a(2);
|
|
87
|
+
case 1:
|
|
88
|
+
_context2.p = 1;
|
|
89
|
+
_context2.n = 2;
|
|
90
|
+
return (0, _auth.apiCall)(null, "/feeds/".concat(selectedPost._id), null, {
|
|
91
|
+
method: 'DELETE'
|
|
92
|
+
});
|
|
93
|
+
case 2:
|
|
94
|
+
_yield$apiCall2 = _context2.v;
|
|
95
|
+
data = _yield$apiCall2.data;
|
|
96
|
+
ok = _yield$apiCall2.ok;
|
|
97
|
+
if (ok && data.success) {
|
|
98
|
+
setPosts(function (prev) {
|
|
99
|
+
return prev.filter(function (post) {
|
|
100
|
+
return post._id !== selectedPost._id;
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
setShowDeleteModal(false);
|
|
104
|
+
setSelectedPost(null);
|
|
105
|
+
}
|
|
106
|
+
_context2.n = 4;
|
|
107
|
+
break;
|
|
108
|
+
case 3:
|
|
109
|
+
_context2.p = 3;
|
|
110
|
+
_t2 = _context2.v;
|
|
111
|
+
console.error('Error deleting post:', _t2);
|
|
112
|
+
case 4:
|
|
113
|
+
return _context2.a(2);
|
|
114
|
+
}
|
|
115
|
+
}, _callee2, null, [[1, 3]]);
|
|
116
|
+
}));
|
|
117
|
+
return function handleDeletePost() {
|
|
118
|
+
return _ref2.apply(this, arguments);
|
|
119
|
+
};
|
|
120
|
+
}();
|
|
121
|
+
var formatDate = function formatDate(dateString) {
|
|
122
|
+
return new Date(dateString).toLocaleDateString() + ' ' + new Date(dateString).toLocaleTimeString();
|
|
123
|
+
};
|
|
124
|
+
var truncateText = function truncateText(text) {
|
|
125
|
+
var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
|
|
126
|
+
if (text.length <= maxLength) return text;
|
|
127
|
+
return text.substring(0, maxLength) + '...';
|
|
128
|
+
};
|
|
129
|
+
if (loading) {
|
|
130
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
131
|
+
className: "flex items-center justify-center p-8"
|
|
132
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
133
|
+
className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
137
|
+
className: "space-y-6"
|
|
138
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
139
|
+
className: "flex items-center justify-between"
|
|
140
|
+
}, /*#__PURE__*/_react["default"].createElement("h2", {
|
|
141
|
+
className: "text-2xl font-bold text-gray-900"
|
|
142
|
+
}, "Feed Management"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
143
|
+
onClick: fetchPosts,
|
|
144
|
+
className: "px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"
|
|
145
|
+
}, "Refresh")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
146
|
+
className: "bg-white rounded-lg shadow overflow-hidden"
|
|
147
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
148
|
+
className: "overflow-x-auto"
|
|
149
|
+
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
150
|
+
className: "min-w-full divide-y divide-gray-200"
|
|
151
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", {
|
|
152
|
+
className: "bg-gray-50"
|
|
153
|
+
}, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", {
|
|
154
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
155
|
+
}, "Author"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
156
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
157
|
+
}, "Content"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
158
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
159
|
+
}, "Stats"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
160
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
161
|
+
}, "Created"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
162
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
163
|
+
}, "Status"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
164
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
165
|
+
}, "Actions"))), /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
166
|
+
className: "bg-white divide-y divide-gray-200"
|
|
167
|
+
}, posts.map(function (post) {
|
|
168
|
+
var _post$author, _post$author2, _post$author3;
|
|
169
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
170
|
+
key: post._id,
|
|
171
|
+
className: "hover:bg-gray-50"
|
|
172
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
173
|
+
className: "px-6 py-4 whitespace-nowrap"
|
|
174
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
175
|
+
className: "flex items-center"
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
|
+
className: "w-8 h-8 bg-blue-500 rounded-full flex items-center justify-center text-white text-sm font-semibold"
|
|
178
|
+
}, ((_post$author = post.author) === null || _post$author === void 0 || (_post$author = _post$author.name) === null || _post$author === void 0 ? void 0 : _post$author.charAt(0)) || 'U'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
179
|
+
className: "ml-3"
|
|
180
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
+
className: "text-sm font-medium text-gray-900"
|
|
182
|
+
}, ((_post$author2 = post.author) === null || _post$author2 === void 0 ? void 0 : _post$author2.name) || 'Unknown User'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
|
+
className: "text-sm text-gray-500"
|
|
184
|
+
}, (_post$author3 = post.author) === null || _post$author3 === void 0 ? void 0 : _post$author3.email)))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
185
|
+
className: "px-6 py-4"
|
|
186
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
187
|
+
className: "text-sm text-gray-900"
|
|
188
|
+
}, truncateText(post.content)), post.tags && post.tags.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
189
|
+
className: "mt-1 flex flex-wrap gap-1"
|
|
190
|
+
}, post.tags.slice(0, 3).map(function (tag, index) {
|
|
191
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
192
|
+
key: index,
|
|
193
|
+
className: "px-2 py-1 bg-blue-100 text-blue-800 text-xs rounded-full"
|
|
194
|
+
}, "#", tag);
|
|
195
|
+
}), post.tags.length > 3 && /*#__PURE__*/_react["default"].createElement("span", {
|
|
196
|
+
className: "text-xs text-gray-500"
|
|
197
|
+
}, "+", post.tags.length - 3, " more"))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
198
|
+
className: "px-6 py-4 whitespace-nowrap text-sm text-gray-500"
|
|
199
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "\u2764\uFE0F ", post.likesCount || 0), /*#__PURE__*/_react["default"].createElement("div", null, "\uD83D\uDCAC ", post.commentsCount || 0), post.media && post.media.length > 0 && /*#__PURE__*/_react["default"].createElement("div", null, "\uD83D\uDCCE ", post.media.length)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
200
|
+
className: "px-6 py-4 whitespace-nowrap text-sm text-gray-500"
|
|
201
|
+
}, formatDate(post.createdAt)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
202
|
+
className: "px-6 py-4 whitespace-nowrap"
|
|
203
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
204
|
+
className: "inline-flex px-2 py-1 text-xs font-semibold rounded-full ".concat(post.isPublic ? 'bg-green-100 text-green-800' : 'bg-yellow-100 text-yellow-800')
|
|
205
|
+
}, post.isPublic ? 'Public' : 'Private')), /*#__PURE__*/_react["default"].createElement("td", {
|
|
206
|
+
className: "px-6 py-4 whitespace-nowrap text-sm font-medium"
|
|
207
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
208
|
+
onClick: function onClick() {
|
|
209
|
+
setSelectedPost(post);
|
|
210
|
+
setShowDeleteModal(true);
|
|
211
|
+
},
|
|
212
|
+
className: "text-red-600 hover:text-red-900"
|
|
213
|
+
}, "Delete")));
|
|
214
|
+
}))))), showDeleteModal && selectedPost && /*#__PURE__*/_react["default"].createElement("div", {
|
|
215
|
+
className: "fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50"
|
|
216
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
217
|
+
className: "relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white"
|
|
218
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
+
className: "mt-3 text-center"
|
|
220
|
+
}, /*#__PURE__*/_react["default"].createElement("h3", {
|
|
221
|
+
className: "text-lg font-medium text-gray-900 mb-4"
|
|
222
|
+
}, "Delete Post"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
223
|
+
className: "text-sm text-gray-500 mb-6"
|
|
224
|
+
}, "Are you sure you want to delete this post? This action cannot be undone."), /*#__PURE__*/_react["default"].createElement("div", {
|
|
225
|
+
className: "flex justify-center space-x-4"
|
|
226
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
227
|
+
onClick: function onClick() {
|
|
228
|
+
setShowDeleteModal(false);
|
|
229
|
+
setSelectedPost(null);
|
|
230
|
+
},
|
|
231
|
+
className: "px-4 py-2 bg-gray-300 text-gray-700 rounded-lg hover:bg-gray-400"
|
|
232
|
+
}, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
233
|
+
onClick: handleDeletePost,
|
|
234
|
+
className: "px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700"
|
|
235
|
+
}, "Delete"))))));
|
|
236
|
+
};
|
|
237
|
+
var _default = exports["default"] = PowrBaseFeedsAdmin;
|
|
@@ -0,0 +1,296 @@
|
|
|
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
|
+
var _auth = require("../../utils/auth");
|
|
10
|
+
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 _t4 in e) "default" !== _t4 && {}.hasOwnProperty.call(e, _t4) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t4)) && (i.get || i.set) ? o(f, _t4, i) : f[_t4] = e[_t4]); return f; })(e, t); }
|
|
11
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
12
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
14
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
15
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
16
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
17
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
18
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
19
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
20
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
21
|
+
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."); }
|
|
22
|
+
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; } }
|
|
23
|
+
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; }
|
|
24
|
+
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; } }
|
|
25
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
+
var CreatePost = function CreatePost(_ref) {
|
|
27
|
+
var onPostCreated = _ref.onPostCreated,
|
|
28
|
+
onPostError = _ref.onPostError;
|
|
29
|
+
var _useState = (0, _react.useState)(''),
|
|
30
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
31
|
+
content = _useState2[0],
|
|
32
|
+
setContent = _useState2[1];
|
|
33
|
+
var _useState3 = (0, _react.useState)([]),
|
|
34
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
35
|
+
media = _useState4[0],
|
|
36
|
+
setMedia = _useState4[1];
|
|
37
|
+
var _useState5 = (0, _react.useState)(true),
|
|
38
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
39
|
+
isPublic = _useState6[0],
|
|
40
|
+
setIsPublic = _useState6[1];
|
|
41
|
+
var _useState7 = (0, _react.useState)(''),
|
|
42
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
43
|
+
tags = _useState8[0],
|
|
44
|
+
setTags = _useState8[1];
|
|
45
|
+
var _useState9 = (0, _react.useState)(false),
|
|
46
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
47
|
+
isSubmitting = _useState0[0],
|
|
48
|
+
setIsSubmitting = _useState0[1];
|
|
49
|
+
var _useState1 = (0, _react.useState)(false),
|
|
50
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
51
|
+
showMediaUpload = _useState10[0],
|
|
52
|
+
setShowMediaUpload = _useState10[1];
|
|
53
|
+
var handleSubmit = /*#__PURE__*/function () {
|
|
54
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
55
|
+
var postData, _yield$apiCall, data, ok, _t;
|
|
56
|
+
return _regenerator().w(function (_context) {
|
|
57
|
+
while (1) switch (_context.n) {
|
|
58
|
+
case 0:
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
if (!(!content.trim() && media.length === 0)) {
|
|
61
|
+
_context.n = 1;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (onPostError) {
|
|
65
|
+
onPostError('Please add some content or media to your post');
|
|
66
|
+
}
|
|
67
|
+
return _context.a(2);
|
|
68
|
+
case 1:
|
|
69
|
+
setIsSubmitting(true);
|
|
70
|
+
_context.p = 2;
|
|
71
|
+
postData = {
|
|
72
|
+
content: content.trim(),
|
|
73
|
+
media: media,
|
|
74
|
+
isPublic: isPublic,
|
|
75
|
+
tags: tags.split(',').map(function (tag) {
|
|
76
|
+
return tag.trim();
|
|
77
|
+
}).filter(function (tag) {
|
|
78
|
+
return tag.length > 0;
|
|
79
|
+
})
|
|
80
|
+
};
|
|
81
|
+
_context.n = 3;
|
|
82
|
+
return (0, _auth.apiCall)(null, '/feeds', null, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
body: postData
|
|
85
|
+
});
|
|
86
|
+
case 3:
|
|
87
|
+
_yield$apiCall = _context.v;
|
|
88
|
+
data = _yield$apiCall.data;
|
|
89
|
+
ok = _yield$apiCall.ok;
|
|
90
|
+
if (ok && data.success) {
|
|
91
|
+
setContent('');
|
|
92
|
+
setMedia([]);
|
|
93
|
+
setTags('');
|
|
94
|
+
setIsPublic(true);
|
|
95
|
+
if (onPostCreated) {
|
|
96
|
+
onPostCreated(data.data);
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
if (onPostError) {
|
|
100
|
+
onPostError(data.message || 'Failed to create post');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
_context.n = 5;
|
|
104
|
+
break;
|
|
105
|
+
case 4:
|
|
106
|
+
_context.p = 4;
|
|
107
|
+
_t = _context.v;
|
|
108
|
+
console.error('Error creating post:', _t);
|
|
109
|
+
if (onPostError) {
|
|
110
|
+
onPostError('Failed to create post');
|
|
111
|
+
}
|
|
112
|
+
case 5:
|
|
113
|
+
_context.p = 5;
|
|
114
|
+
setIsSubmitting(false);
|
|
115
|
+
return _context.f(5);
|
|
116
|
+
case 6:
|
|
117
|
+
return _context.a(2);
|
|
118
|
+
}
|
|
119
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
120
|
+
}));
|
|
121
|
+
return function handleSubmit(_x) {
|
|
122
|
+
return _ref2.apply(this, arguments);
|
|
123
|
+
};
|
|
124
|
+
}();
|
|
125
|
+
var handleFileUpload = /*#__PURE__*/function () {
|
|
126
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(files) {
|
|
127
|
+
var uploadedFiles, _iterator, _step, file, formData, _yield$apiCall2, data, ok, _t2, _t3;
|
|
128
|
+
return _regenerator().w(function (_context2) {
|
|
129
|
+
while (1) switch (_context2.n) {
|
|
130
|
+
case 0:
|
|
131
|
+
uploadedFiles = [];
|
|
132
|
+
_iterator = _createForOfIteratorHelper(files);
|
|
133
|
+
_context2.p = 1;
|
|
134
|
+
_iterator.s();
|
|
135
|
+
case 2:
|
|
136
|
+
if ((_step = _iterator.n()).done) {
|
|
137
|
+
_context2.n = 7;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
file = _step.value;
|
|
141
|
+
_context2.p = 3;
|
|
142
|
+
formData = new FormData();
|
|
143
|
+
formData.append('file', file);
|
|
144
|
+
formData.append('projectId', process.env.NEXT_PUBLIC_PROJECT_ID);
|
|
145
|
+
_context2.n = 4;
|
|
146
|
+
return (0, _auth.apiCall)(null, '/files/upload', null, {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
body: formData
|
|
149
|
+
});
|
|
150
|
+
case 4:
|
|
151
|
+
_yield$apiCall2 = _context2.v;
|
|
152
|
+
data = _yield$apiCall2.data;
|
|
153
|
+
ok = _yield$apiCall2.ok;
|
|
154
|
+
if (ok && data.success) {
|
|
155
|
+
uploadedFiles.push({
|
|
156
|
+
url: data.data.url,
|
|
157
|
+
type: file.type.startsWith('image/') ? 'image' : 'document',
|
|
158
|
+
filename: file.name
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
_context2.n = 6;
|
|
162
|
+
break;
|
|
163
|
+
case 5:
|
|
164
|
+
_context2.p = 5;
|
|
165
|
+
_t2 = _context2.v;
|
|
166
|
+
console.error('Error uploading file:', _t2);
|
|
167
|
+
case 6:
|
|
168
|
+
_context2.n = 2;
|
|
169
|
+
break;
|
|
170
|
+
case 7:
|
|
171
|
+
_context2.n = 9;
|
|
172
|
+
break;
|
|
173
|
+
case 8:
|
|
174
|
+
_context2.p = 8;
|
|
175
|
+
_t3 = _context2.v;
|
|
176
|
+
_iterator.e(_t3);
|
|
177
|
+
case 9:
|
|
178
|
+
_context2.p = 9;
|
|
179
|
+
_iterator.f();
|
|
180
|
+
return _context2.f(9);
|
|
181
|
+
case 10:
|
|
182
|
+
setMedia(function (prev) {
|
|
183
|
+
return [].concat(_toConsumableArray(prev), uploadedFiles);
|
|
184
|
+
});
|
|
185
|
+
case 11:
|
|
186
|
+
return _context2.a(2);
|
|
187
|
+
}
|
|
188
|
+
}, _callee2, null, [[3, 5], [1, 8, 9, 10]]);
|
|
189
|
+
}));
|
|
190
|
+
return function handleFileUpload(_x2) {
|
|
191
|
+
return _ref3.apply(this, arguments);
|
|
192
|
+
};
|
|
193
|
+
}();
|
|
194
|
+
var handleFileChange = function handleFileChange(e) {
|
|
195
|
+
var files = Array.from(e.target.files);
|
|
196
|
+
handleFileUpload(files);
|
|
197
|
+
};
|
|
198
|
+
var removeMedia = function removeMedia(index) {
|
|
199
|
+
setMedia(function (prev) {
|
|
200
|
+
return prev.filter(function (_, i) {
|
|
201
|
+
return i !== index;
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
206
|
+
className: "bg-white rounded-lg shadow-sm border p-6"
|
|
207
|
+
}, /*#__PURE__*/_react["default"].createElement("form", {
|
|
208
|
+
onSubmit: handleSubmit
|
|
209
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
210
|
+
className: "mb-4"
|
|
211
|
+
}, /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
212
|
+
value: content,
|
|
213
|
+
onChange: function onChange(e) {
|
|
214
|
+
return setContent(e.target.value);
|
|
215
|
+
},
|
|
216
|
+
placeholder: "What's on your mind?",
|
|
217
|
+
className: "w-full p-3 border border-gray-300 rounded-lg resize-none focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
218
|
+
rows: 3,
|
|
219
|
+
disabled: isSubmitting
|
|
220
|
+
})), media.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
|
+
className: "mb-4"
|
|
222
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
223
|
+
className: "flex flex-wrap gap-2"
|
|
224
|
+
}, media.map(function (file, index) {
|
|
225
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
226
|
+
key: index,
|
|
227
|
+
className: "relative"
|
|
228
|
+
}, file.type === 'image' ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
229
|
+
src: file.url,
|
|
230
|
+
alt: file.filename,
|
|
231
|
+
className: "w-20 h-20 object-cover rounded-lg"
|
|
232
|
+
}) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
233
|
+
className: "w-20 h-20 bg-gray-100 rounded-lg flex items-center justify-center"
|
|
234
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
235
|
+
className: "text-xs text-gray-500"
|
|
236
|
+
}, "\uD83D\uDCC4")), /*#__PURE__*/_react["default"].createElement("button", {
|
|
237
|
+
type: "button",
|
|
238
|
+
onClick: function onClick() {
|
|
239
|
+
return removeMedia(index);
|
|
240
|
+
},
|
|
241
|
+
className: "absolute -top-2 -right-2 bg-red-500 text-white rounded-full w-6 h-6 flex items-center justify-center text-xs hover:bg-red-600"
|
|
242
|
+
}, "\xD7"));
|
|
243
|
+
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
244
|
+
className: "mb-4"
|
|
245
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
246
|
+
type: "text",
|
|
247
|
+
value: tags,
|
|
248
|
+
onChange: function onChange(e) {
|
|
249
|
+
return setTags(e.target.value);
|
|
250
|
+
},
|
|
251
|
+
placeholder: "Tags (comma separated)",
|
|
252
|
+
className: "w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
253
|
+
disabled: isSubmitting
|
|
254
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
255
|
+
className: "flex items-center justify-between mb-4"
|
|
256
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
257
|
+
className: "flex items-center"
|
|
258
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
259
|
+
type: "checkbox",
|
|
260
|
+
checked: isPublic,
|
|
261
|
+
onChange: function onChange(e) {
|
|
262
|
+
return setIsPublic(e.target.checked);
|
|
263
|
+
},
|
|
264
|
+
className: "mr-2",
|
|
265
|
+
disabled: isSubmitting
|
|
266
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
267
|
+
className: "text-sm text-gray-600"
|
|
268
|
+
}, "Public post")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
269
|
+
className: "flex gap-2"
|
|
270
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
271
|
+
type: "button",
|
|
272
|
+
onClick: function onClick() {
|
|
273
|
+
return setShowMediaUpload(!showMediaUpload);
|
|
274
|
+
},
|
|
275
|
+
className: "px-3 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 disabled:opacity-50",
|
|
276
|
+
disabled: isSubmitting
|
|
277
|
+
}, "\uD83D\uDCCE Media"))), showMediaUpload && /*#__PURE__*/_react["default"].createElement("div", {
|
|
278
|
+
className: "mb-4 p-4 border border-gray-200 rounded-lg bg-gray-50"
|
|
279
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
280
|
+
type: "file",
|
|
281
|
+
multiple: true,
|
|
282
|
+
onChange: handleFileChange,
|
|
283
|
+
accept: "image/*,.pdf,.doc,.docx,.txt",
|
|
284
|
+
className: "w-full",
|
|
285
|
+
disabled: isSubmitting
|
|
286
|
+
}), /*#__PURE__*/_react["default"].createElement("p", {
|
|
287
|
+
className: "text-xs text-gray-500 mt-1"
|
|
288
|
+
}, "Supported: Images, PDF, DOC, DOCX, TXT")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
289
|
+
className: "flex justify-end"
|
|
290
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
291
|
+
type: "submit",
|
|
292
|
+
disabled: isSubmitting || !content.trim() && media.length === 0,
|
|
293
|
+
className: "px-6 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
294
|
+
}, isSubmitting ? 'Posting...' : 'Post'))));
|
|
295
|
+
};
|
|
296
|
+
var _default = exports["default"] = CreatePost;
|