powr-sdk-web 3.2.0 → 3.2.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/admin/index.js +311 -50
- package/dist/index.js +5 -54
- package/package.json +1 -1
- package/ADMIN_USAGE.md +0 -129
package/dist/admin/index.js
CHANGED
|
@@ -1,57 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
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); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return _AdminDashboard["default"];
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "PowrBaseFormsAdmin", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _admin6["default"];
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "PowrBaseFunctionsAdmin", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function get() {
|
|
21
|
-
return _admin2["default"];
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "PowrBaseInvoicesAdmin", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function get() {
|
|
27
|
-
return _admin4["default"];
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "PowrBaseNotificationsAdmin", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function get() {
|
|
33
|
-
return _admin3["default"];
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, "PowrBaseSlidesAdmin", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function get() {
|
|
39
|
-
return _admin5["default"];
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(exports, "PowrBaseUsersAdmin", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function get() {
|
|
45
|
-
return _admin["default"];
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(exports, "PowrBaseWaitListAdmin", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function get() {
|
|
51
|
-
return _admin7["default"];
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
var _AdminDashboard = _interopRequireDefault(require("./AdminDashboard"));
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
55
10
|
var _admin = _interopRequireDefault(require("../users/admin"));
|
|
56
11
|
var _admin2 = _interopRequireDefault(require("../functions/admin"));
|
|
57
12
|
var _admin3 = _interopRequireDefault(require("../notifications/admin"));
|
|
@@ -59,4 +14,310 @@ var _admin4 = _interopRequireDefault(require("../invoices/admin"));
|
|
|
59
14
|
var _admin5 = _interopRequireDefault(require("../slides/admin"));
|
|
60
15
|
var _admin6 = _interopRequireDefault(require("../forms/admin"));
|
|
61
16
|
var _admin7 = _interopRequireDefault(require("../waitlists/admin"));
|
|
62
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
18
|
+
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
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
23
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
24
|
+
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); }
|
|
25
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
26
|
+
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."); }
|
|
27
|
+
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; } }
|
|
28
|
+
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; }
|
|
29
|
+
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; } }
|
|
30
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // Import all admin components
|
|
31
|
+
var AdminDashboard = function AdminDashboard(_ref) {
|
|
32
|
+
var projectId = _ref.projectId,
|
|
33
|
+
_ref$sections = _ref.sections,
|
|
34
|
+
sections = _ref$sections === void 0 ? [] : _ref$sections,
|
|
35
|
+
_ref$theme = _ref.theme,
|
|
36
|
+
theme = _ref$theme === void 0 ? "default" : _ref$theme;
|
|
37
|
+
var _useState = (0, _react.useState)(null),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
currentSection = _useState2[0],
|
|
40
|
+
setCurrentSection = _useState2[1];
|
|
41
|
+
var getThemeStyles = function getThemeStyles() {
|
|
42
|
+
var baseStyles = {
|
|
43
|
+
container: {
|
|
44
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif',
|
|
45
|
+
padding: '24px',
|
|
46
|
+
maxWidth: '1200px',
|
|
47
|
+
margin: '0 auto'
|
|
48
|
+
},
|
|
49
|
+
header: {
|
|
50
|
+
marginBottom: '32px'
|
|
51
|
+
},
|
|
52
|
+
title: {
|
|
53
|
+
fontSize: '32px',
|
|
54
|
+
fontWeight: '800',
|
|
55
|
+
color: '#1f2937',
|
|
56
|
+
margin: '0 0 8px 0',
|
|
57
|
+
lineHeight: '1.2'
|
|
58
|
+
},
|
|
59
|
+
subtitle: {
|
|
60
|
+
fontSize: '16px',
|
|
61
|
+
color: '#6b7280',
|
|
62
|
+
margin: '0'
|
|
63
|
+
},
|
|
64
|
+
backButton: {
|
|
65
|
+
background: 'none',
|
|
66
|
+
border: 'none',
|
|
67
|
+
color: '#3b82f6',
|
|
68
|
+
fontSize: '16px',
|
|
69
|
+
cursor: 'pointer',
|
|
70
|
+
padding: '8px 0',
|
|
71
|
+
marginBottom: '16px',
|
|
72
|
+
display: 'flex',
|
|
73
|
+
alignItems: 'center',
|
|
74
|
+
gap: '8px'
|
|
75
|
+
},
|
|
76
|
+
grid: {
|
|
77
|
+
display: 'grid',
|
|
78
|
+
gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
|
|
79
|
+
gap: '24px',
|
|
80
|
+
marginBottom: '32px'
|
|
81
|
+
},
|
|
82
|
+
card: {
|
|
83
|
+
background: '#ffffff',
|
|
84
|
+
border: '1px solid #e5e7eb',
|
|
85
|
+
borderRadius: '12px',
|
|
86
|
+
padding: '24px',
|
|
87
|
+
transition: 'all 0.2s ease',
|
|
88
|
+
cursor: 'pointer',
|
|
89
|
+
boxShadow: '0 1px 3px rgba(0, 0, 0, 0.1)'
|
|
90
|
+
},
|
|
91
|
+
cardHover: {
|
|
92
|
+
boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',
|
|
93
|
+
transform: 'translateY(-2px)'
|
|
94
|
+
},
|
|
95
|
+
cardHeader: {
|
|
96
|
+
display: 'flex',
|
|
97
|
+
alignItems: 'center',
|
|
98
|
+
marginBottom: '16px'
|
|
99
|
+
},
|
|
100
|
+
cardIcon: {
|
|
101
|
+
width: '24px',
|
|
102
|
+
height: '24px',
|
|
103
|
+
marginRight: '12px'
|
|
104
|
+
},
|
|
105
|
+
cardTitle: {
|
|
106
|
+
fontSize: '18px',
|
|
107
|
+
fontWeight: '600',
|
|
108
|
+
color: '#1f2937',
|
|
109
|
+
margin: '0'
|
|
110
|
+
},
|
|
111
|
+
cardDescription: {
|
|
112
|
+
fontSize: '14px',
|
|
113
|
+
color: '#6b7280',
|
|
114
|
+
margin: '0 0 16px 0',
|
|
115
|
+
lineHeight: '1.5'
|
|
116
|
+
},
|
|
117
|
+
cardButton: {
|
|
118
|
+
width: '100%',
|
|
119
|
+
padding: '12px 16px',
|
|
120
|
+
background: '#3b82f6',
|
|
121
|
+
color: '#ffffff',
|
|
122
|
+
border: 'none',
|
|
123
|
+
borderRadius: '8px',
|
|
124
|
+
fontSize: '14px',
|
|
125
|
+
fontWeight: '500',
|
|
126
|
+
cursor: 'pointer',
|
|
127
|
+
transition: 'background-color 0.2s ease'
|
|
128
|
+
},
|
|
129
|
+
cardButtonHover: {
|
|
130
|
+
background: '#2563eb'
|
|
131
|
+
},
|
|
132
|
+
statsCard: {
|
|
133
|
+
background: '#ffffff',
|
|
134
|
+
border: '1px solid #e5e7eb',
|
|
135
|
+
borderRadius: '12px',
|
|
136
|
+
padding: '24px',
|
|
137
|
+
marginTop: '32px'
|
|
138
|
+
},
|
|
139
|
+
statsGrid: {
|
|
140
|
+
display: 'grid',
|
|
141
|
+
gridTemplateColumns: 'repeat(auto-fit, minmax(150px, 1fr))',
|
|
142
|
+
gap: '16px'
|
|
143
|
+
},
|
|
144
|
+
statItem: {
|
|
145
|
+
textAlign: 'center'
|
|
146
|
+
},
|
|
147
|
+
statValue: {
|
|
148
|
+
fontSize: '24px',
|
|
149
|
+
fontWeight: '700',
|
|
150
|
+
color: '#3b82f6',
|
|
151
|
+
margin: '0 0 4px 0'
|
|
152
|
+
},
|
|
153
|
+
statLabel: {
|
|
154
|
+
fontSize: '14px',
|
|
155
|
+
color: '#6b7280',
|
|
156
|
+
margin: '0'
|
|
157
|
+
},
|
|
158
|
+
sectionContainer: {
|
|
159
|
+
background: '#ffffff',
|
|
160
|
+
border: '1px solid #e5e7eb',
|
|
161
|
+
borderRadius: '12px',
|
|
162
|
+
padding: '24px',
|
|
163
|
+
marginTop: '16px'
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Theme variations
|
|
168
|
+
if (theme === 'dark') {
|
|
169
|
+
baseStyles.container.backgroundColor = '#1f2937';
|
|
170
|
+
baseStyles.title.color = '#f9fafb';
|
|
171
|
+
baseStyles.subtitle.color = '#9ca3af';
|
|
172
|
+
baseStyles.card.backgroundColor = '#374151';
|
|
173
|
+
baseStyles.card.borderColor = '#4b5563';
|
|
174
|
+
baseStyles.cardTitle.color = '#f9fafb';
|
|
175
|
+
baseStyles.cardDescription.color = '#9ca3af';
|
|
176
|
+
baseStyles.statsCard.backgroundColor = '#374151';
|
|
177
|
+
baseStyles.statsCard.borderColor = '#4b5563';
|
|
178
|
+
baseStyles.statLabel.color = '#9ca3af';
|
|
179
|
+
baseStyles.sectionContainer.backgroundColor = '#374151';
|
|
180
|
+
baseStyles.sectionContainer.borderColor = '#4b5563';
|
|
181
|
+
}
|
|
182
|
+
return baseStyles;
|
|
183
|
+
};
|
|
184
|
+
var styles = getThemeStyles();
|
|
185
|
+
var handleCardClick = function handleCardClick(section) {
|
|
186
|
+
setCurrentSection(section.toLowerCase());
|
|
187
|
+
};
|
|
188
|
+
var handleBackToDashboard = function handleBackToDashboard() {
|
|
189
|
+
setCurrentSection(null);
|
|
190
|
+
};
|
|
191
|
+
var renderAdminSection = function renderAdminSection() {
|
|
192
|
+
var sectionProps = {
|
|
193
|
+
projectId: projectId,
|
|
194
|
+
theme: theme === 'dark' ? 'dark' : 'blue'
|
|
195
|
+
};
|
|
196
|
+
switch (currentSection) {
|
|
197
|
+
case 'users':
|
|
198
|
+
return /*#__PURE__*/_react["default"].createElement(_admin["default"], _extends({}, sectionProps, {
|
|
199
|
+
showActions: true
|
|
200
|
+
}));
|
|
201
|
+
case 'functions':
|
|
202
|
+
return /*#__PURE__*/_react["default"].createElement(_admin2["default"], sectionProps);
|
|
203
|
+
case 'notifications':
|
|
204
|
+
return /*#__PURE__*/_react["default"].createElement(_admin3["default"], sectionProps);
|
|
205
|
+
case 'invoices':
|
|
206
|
+
return /*#__PURE__*/_react["default"].createElement(_admin4["default"], sectionProps);
|
|
207
|
+
case 'slides':
|
|
208
|
+
return /*#__PURE__*/_react["default"].createElement(_admin5["default"], sectionProps);
|
|
209
|
+
case 'forms':
|
|
210
|
+
return /*#__PURE__*/_react["default"].createElement(_admin6["default"], sectionProps);
|
|
211
|
+
case 'waitlist':
|
|
212
|
+
return /*#__PURE__*/_react["default"].createElement(_admin7["default"], sectionProps);
|
|
213
|
+
default:
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
if (!projectId) {
|
|
218
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
+
style: _objectSpread(_objectSpread({}, styles.container), {}, {
|
|
220
|
+
textAlign: 'center',
|
|
221
|
+
padding: '40px'
|
|
222
|
+
})
|
|
223
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
224
|
+
style: {
|
|
225
|
+
color: '#6b7280',
|
|
226
|
+
fontSize: '16px'
|
|
227
|
+
}
|
|
228
|
+
}, "Project ID is required for admin functionality"));
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// If a section is selected, show that section
|
|
232
|
+
if (currentSection) {
|
|
233
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
234
|
+
style: styles.container
|
|
235
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
236
|
+
style: styles.backButton,
|
|
237
|
+
onClick: handleBackToDashboard
|
|
238
|
+
}, "\u2190 Back to Dashboard"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
239
|
+
style: styles.header
|
|
240
|
+
}, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
241
|
+
style: styles.title
|
|
242
|
+
}, currentSection.charAt(0).toUpperCase() + currentSection.slice(1), " Management"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
243
|
+
style: styles.subtitle
|
|
244
|
+
}, "Manage your ", currentSection, " settings")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
245
|
+
style: styles.sectionContainer
|
|
246
|
+
}, renderAdminSection()));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Show the main dashboard
|
|
250
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
251
|
+
style: styles.container
|
|
252
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
253
|
+
style: styles.header
|
|
254
|
+
}, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
255
|
+
style: styles.title
|
|
256
|
+
}, "Admin Dashboard"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
257
|
+
style: styles.subtitle
|
|
258
|
+
}, "Manage your project settings and users")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
259
|
+
style: styles.grid
|
|
260
|
+
}, sections.map(function (section, index) {
|
|
261
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
262
|
+
key: section,
|
|
263
|
+
style: styles.card,
|
|
264
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
265
|
+
e.currentTarget.style.transform = styles.cardHover.transform;
|
|
266
|
+
e.currentTarget.style.boxShadow = styles.cardHover.boxShadow;
|
|
267
|
+
},
|
|
268
|
+
onMouseLeave: function onMouseLeave(e) {
|
|
269
|
+
e.currentTarget.style.transform = 'none';
|
|
270
|
+
e.currentTarget.style.boxShadow = styles.card.boxShadow;
|
|
271
|
+
},
|
|
272
|
+
onClick: function onClick() {
|
|
273
|
+
return handleCardClick(section);
|
|
274
|
+
}
|
|
275
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
276
|
+
style: styles.cardHeader
|
|
277
|
+
}, /*#__PURE__*/_react["default"].createElement("h3", {
|
|
278
|
+
style: styles.cardTitle
|
|
279
|
+
}, section)), /*#__PURE__*/_react["default"].createElement("p", {
|
|
280
|
+
style: styles.cardDescription
|
|
281
|
+
}, "Manage your ", section.toLowerCase(), " settings"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
282
|
+
style: styles.cardButton,
|
|
283
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
284
|
+
e.target.style.background = styles.cardButtonHover.background;
|
|
285
|
+
},
|
|
286
|
+
onMouseLeave: function onMouseLeave(e) {
|
|
287
|
+
e.target.style.background = styles.cardButton.background;
|
|
288
|
+
}
|
|
289
|
+
}, "Manage ", section));
|
|
290
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
291
|
+
style: styles.statsCard
|
|
292
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
293
|
+
style: styles.cardHeader
|
|
294
|
+
}, /*#__PURE__*/_react["default"].createElement("h3", {
|
|
295
|
+
style: styles.cardTitle
|
|
296
|
+
}, "Quick Stats")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
297
|
+
style: styles.statsGrid
|
|
298
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
299
|
+
style: styles.statItem
|
|
300
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
301
|
+
style: styles.statValue
|
|
302
|
+
}, "0"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
303
|
+
style: styles.statLabel
|
|
304
|
+
}, "Total Users")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
305
|
+
style: styles.statItem
|
|
306
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
307
|
+
style: styles.statValue
|
|
308
|
+
}, "0"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
309
|
+
style: styles.statLabel
|
|
310
|
+
}, "Active Projects")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
311
|
+
style: styles.statItem
|
|
312
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
313
|
+
style: styles.statValue
|
|
314
|
+
}, "0"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
315
|
+
style: styles.statLabel
|
|
316
|
+
}, "Pending Tasks")))));
|
|
317
|
+
};
|
|
318
|
+
AdminDashboard.propTypes = {
|
|
319
|
+
projectId: _propTypes["default"].string.isRequired,
|
|
320
|
+
sections: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
321
|
+
theme: _propTypes["default"].oneOf(['default', 'dark'])
|
|
322
|
+
};
|
|
323
|
+
var _default = exports["default"] = AdminDashboard;
|
package/dist/index.js
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "PowrBaseActivities", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function get() {
|
|
9
|
-
return
|
|
9
|
+
return _activities["default"];
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "PowrBaseAdmin", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function get() {
|
|
15
|
-
return
|
|
15
|
+
return _admin["default"];
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "PowrBaseBlogs", {
|
|
@@ -39,30 +39,12 @@ Object.defineProperty(exports, "PowrBaseForm", {
|
|
|
39
39
|
return _forms["default"];
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
Object.defineProperty(exports, "PowrBaseFormsAdmin", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function get() {
|
|
45
|
-
return _admin2["default"];
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(exports, "PowrBaseFunctionsAdmin", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function get() {
|
|
51
|
-
return _admin7["default"];
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
42
|
Object.defineProperty(exports, "PowrBaseInvoice", {
|
|
55
43
|
enumerable: true,
|
|
56
44
|
get: function get() {
|
|
57
45
|
return _invoices["default"];
|
|
58
46
|
}
|
|
59
47
|
});
|
|
60
|
-
Object.defineProperty(exports, "PowrBaseInvoicesAdmin", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
get: function get() {
|
|
63
|
-
return _admin4["default"];
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
48
|
Object.defineProperty(exports, "PowrBaseLike", {
|
|
67
49
|
enumerable: true,
|
|
68
50
|
get: function get() {
|
|
@@ -75,24 +57,12 @@ Object.defineProperty(exports, "PowrBaseLogin", {
|
|
|
75
57
|
return _auth["default"];
|
|
76
58
|
}
|
|
77
59
|
});
|
|
78
|
-
Object.defineProperty(exports, "PowrBaseNotificationsAdmin", {
|
|
79
|
-
enumerable: true,
|
|
80
|
-
get: function get() {
|
|
81
|
-
return _admin5["default"];
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
60
|
Object.defineProperty(exports, "PowrBaseReviews", {
|
|
85
61
|
enumerable: true,
|
|
86
62
|
get: function get() {
|
|
87
63
|
return _reviews["default"];
|
|
88
64
|
}
|
|
89
65
|
});
|
|
90
|
-
Object.defineProperty(exports, "PowrBaseSlidesAdmin", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function get() {
|
|
93
|
-
return _admin3["default"];
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
66
|
Object.defineProperty(exports, "PowrBaseSwiper", {
|
|
97
67
|
enumerable: true,
|
|
98
68
|
get: function get() {
|
|
@@ -105,12 +75,6 @@ Object.defineProperty(exports, "PowrBaseUploader", {
|
|
|
105
75
|
return _uploader["default"];
|
|
106
76
|
}
|
|
107
77
|
});
|
|
108
|
-
Object.defineProperty(exports, "PowrBaseUsersAdmin", {
|
|
109
|
-
enumerable: true,
|
|
110
|
-
get: function get() {
|
|
111
|
-
return _admin6["default"];
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
78
|
Object.defineProperty(exports, "PowrBaseWaitlist", {
|
|
115
79
|
enumerable: true,
|
|
116
80
|
get: function get() {
|
|
@@ -123,12 +87,6 @@ Object.defineProperty(exports, "PowrTable", {
|
|
|
123
87
|
return _table["default"];
|
|
124
88
|
}
|
|
125
89
|
});
|
|
126
|
-
Object.defineProperty(exports, "PowrWaitListAdmin", {
|
|
127
|
-
enumerable: true,
|
|
128
|
-
get: function get() {
|
|
129
|
-
return _admin["default"];
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
90
|
var _table = _interopRequireDefault(require("./table"));
|
|
133
91
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
134
92
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -142,12 +100,5 @@ var _likes = _interopRequireDefault(require("./likes"));
|
|
|
142
100
|
var _auth = _interopRequireDefault(require("./auth"));
|
|
143
101
|
var _forms = _interopRequireDefault(require("./forms"));
|
|
144
102
|
var _chat = _interopRequireDefault(require("./chat"));
|
|
145
|
-
var _admin = _interopRequireDefault(require("./
|
|
146
|
-
var _admin2 = _interopRequireDefault(require("./forms/admin"));
|
|
147
|
-
var _admin3 = _interopRequireDefault(require("./slides/admin"));
|
|
148
|
-
var _admin4 = _interopRequireDefault(require("./invoices/admin"));
|
|
149
|
-
var _admin5 = _interopRequireDefault(require("./notifications/admin"));
|
|
150
|
-
var _admin6 = _interopRequireDefault(require("./users/admin"));
|
|
151
|
-
var _admin7 = _interopRequireDefault(require("./functions/admin"));
|
|
152
|
-
var _admin8 = require("./admin");
|
|
103
|
+
var _admin = _interopRequireDefault(require("./admin"));
|
|
153
104
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
package/package.json
CHANGED
package/ADMIN_USAGE.md
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# Admin Dashboard Usage Guide
|
|
2
|
-
|
|
3
|
-
The `powr-sdk-web` now includes a **complete self-contained admin system** that eliminates the need for separate routes and components.
|
|
4
|
-
|
|
5
|
-
## 🚀 **Revolutionary Approach**
|
|
6
|
-
|
|
7
|
-
**No more separate admin routes!** The AdminDashboard now handles everything internally:
|
|
8
|
-
|
|
9
|
-
- ✅ **Single Component** - Everything in one place
|
|
10
|
-
- ✅ **No Route Management** - No need for `/admin/users`, `/admin/functions`, etc.
|
|
11
|
-
- ✅ **Internal Navigation** - Click cards to switch between sections
|
|
12
|
-
- ✅ **Back Button** - Easy navigation back to dashboard
|
|
13
|
-
- ✅ **Consistent Styling** - Unified look across all sections
|
|
14
|
-
|
|
15
|
-
## Basic Usage
|
|
16
|
-
|
|
17
|
-
```jsx
|
|
18
|
-
// spriny-web/src/app/admin/page.tsx
|
|
19
|
-
"use client";
|
|
20
|
-
|
|
21
|
-
import ProtectedAdminRoute from "@/components/ProtectedAdminRoute";
|
|
22
|
-
import { AdminDashboard } from 'powr-sdk-web';
|
|
23
|
-
import { Users, FileText, Bell, Code } from "lucide-react";
|
|
24
|
-
|
|
25
|
-
export default function AdminPage() {
|
|
26
|
-
const adminCards = [
|
|
27
|
-
{
|
|
28
|
-
title: "Users",
|
|
29
|
-
description: "Manage project users, roles, and access levels",
|
|
30
|
-
icon: Users
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
title: "Functions",
|
|
34
|
-
description: "Manage dynamic API functions and endpoints",
|
|
35
|
-
icon: Code
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
title: "Invoices",
|
|
39
|
-
description: "View and manage project invoices",
|
|
40
|
-
icon: FileText
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
title: "Notifications",
|
|
44
|
-
description: "Manage system notifications and alerts",
|
|
45
|
-
icon: Bell
|
|
46
|
-
}
|
|
47
|
-
];
|
|
48
|
-
|
|
49
|
-
return (
|
|
50
|
-
<ProtectedAdminRoute>
|
|
51
|
-
<AdminDashboard
|
|
52
|
-
projectId={process.env.NEXT_PUBLIC_PROJECT_ID}
|
|
53
|
-
adminCards={adminCards}
|
|
54
|
-
/>
|
|
55
|
-
</ProtectedAdminRoute>
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Admin Card Configuration
|
|
61
|
-
|
|
62
|
-
Each admin card only needs these properties:
|
|
63
|
-
|
|
64
|
-
```jsx
|
|
65
|
-
{
|
|
66
|
-
title: "Section Name", // Required: Display name
|
|
67
|
-
description: "Description", // Required: Section description
|
|
68
|
-
icon: IconComponent // Optional: Lucide React icon
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## How It Works
|
|
73
|
-
|
|
74
|
-
1. **Dashboard View** - Shows all admin cards
|
|
75
|
-
2. **Click Any Card** - Opens that section internally
|
|
76
|
-
3. **Back Button** - Returns to dashboard
|
|
77
|
-
4. **No Page Reloads** - Smooth SPA experience
|
|
78
|
-
|
|
79
|
-
## Supported Admin Sections
|
|
80
|
-
|
|
81
|
-
The dashboard automatically handles these sections:
|
|
82
|
-
- **Users** - User management
|
|
83
|
-
- **Functions** - Dynamic API functions
|
|
84
|
-
- **Notifications** - System notifications
|
|
85
|
-
- **Invoices** - Invoice management
|
|
86
|
-
- **Slides** - Slide management
|
|
87
|
-
- **Forms** - Form management
|
|
88
|
-
- **Waitlist** - Waitlist management
|
|
89
|
-
|
|
90
|
-
## Benefits
|
|
91
|
-
|
|
92
|
-
✅ **Zero Route Management** - No need to create `/admin/*` routes
|
|
93
|
-
✅ **Single Component** - Everything in one place
|
|
94
|
-
✅ **No Duplication** - Single source of truth
|
|
95
|
-
✅ **Consistent UX** - Same interface everywhere
|
|
96
|
-
✅ **Easy Maintenance** - Update once, affects all projects
|
|
97
|
-
✅ **SPA Experience** - No page reloads, smooth navigation
|
|
98
|
-
|
|
99
|
-
## Customization
|
|
100
|
-
|
|
101
|
-
### Themes
|
|
102
|
-
- `"default"` - Light theme
|
|
103
|
-
- `"dark"` - Dark theme
|
|
104
|
-
|
|
105
|
-
```jsx
|
|
106
|
-
<AdminDashboard
|
|
107
|
-
projectId={process.env.NEXT_PUBLIC_PROJECT_ID}
|
|
108
|
-
adminCards={adminCards}
|
|
109
|
-
theme="dark" // Optional: "default" or "dark"
|
|
110
|
-
/>
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Migration from Old Approach
|
|
114
|
-
|
|
115
|
-
**Before (Multiple Routes):**
|
|
116
|
-
```
|
|
117
|
-
/admin/page.tsx
|
|
118
|
-
/admin/users/page.tsx
|
|
119
|
-
/admin/functions/page.tsx
|
|
120
|
-
/admin/notifications/page.tsx
|
|
121
|
-
/admin/invoices/page.tsx
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
**After (Single Component):**
|
|
125
|
-
```
|
|
126
|
-
/admin/page.tsx // That's it!
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**All the individual admin route files can now be deleted!** 🎉
|