powr-sdk-web 6.0.0 → 6.1.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,330 @@
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.POWR_SHELL_MODES = void 0;
8
+ exports["default"] = PowrBaseAppWrapper;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _PowrThemeProvider = _interopRequireWildcard(require("../theme/PowrThemeProvider"));
11
+ var _PowrThemeSettings = _interopRequireDefault(require("../theme/PowrThemeSettings"));
12
+ var _session = _interopRequireWildcard(require("../session"));
13
+ var _auth = _interopRequireDefault(require("../auth"));
14
+ var _PowrOnboardingProvider = _interopRequireDefault(require("../onboarding/PowrOnboardingProvider"));
15
+ var _useMediaQuery = _interopRequireDefault(require("../utils/useMediaQuery"));
16
+ var _styles = require("./styles");
17
+ var _parts = require("./parts");
18
+ var _excluded = ["theme", "presets", "scheme", "density", "preset", "persistTheme", "user", "token", "refreshToken", "onSessionChange", "onLogout"];
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
20
+ 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); }
21
+ 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; }
22
+ 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; }
23
+ 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; }
24
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
25
+ 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); }
26
+ 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); }
27
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
28
+ 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."); }
29
+ 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; } }
30
+ 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; }
31
+ 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; } }
32
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
33
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
34
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
35
+ var config = require("../config");
36
+ var POWR_SHELL_MODES = exports.POWR_SHELL_MODES = Object.freeze(["sidebar", "topbar"]);
37
+
38
+ /**
39
+ * PowrBaseAppWrapper — the one root mount for a Powr web app.
40
+ *
41
+ * Replaces the files every new app copied: auth store, route guards, top bar /
42
+ * sidebar, login page glue, providers. Chrome + selectors live here; palette,
43
+ * presets, logo, nav items, product roles and public pages stay in the product.
44
+ *
45
+ * Guardrails: no colours of its own (every colour is `var(--powr-*)`), more
46
+ * than one shape (`sidebar` | `topbar`), no `next/*` import — `Link` and
47
+ * `pathname` come in as props, like `apiUrl` does elsewhere.
48
+ */
49
+ function PowrBaseAppWrapper(props) {
50
+ var theme = props.theme,
51
+ presets = props.presets,
52
+ scheme = props.scheme,
53
+ density = props.density,
54
+ preset = props.preset,
55
+ _props$persistTheme = props.persistTheme,
56
+ persistTheme = _props$persistTheme === void 0 ? true : _props$persistTheme,
57
+ user = props.user,
58
+ token = props.token,
59
+ refreshToken = props.refreshToken,
60
+ onSessionChange = props.onSessionChange,
61
+ onLogout = props.onLogout,
62
+ rest = _objectWithoutProperties(props, _excluded);
63
+ var outerTheme = (0, _PowrThemeProvider.usePowrTheme)();
64
+ var needsThemeProvider = !outerTheme.mounted || theme !== undefined || presets !== undefined;
65
+ var shell = /*#__PURE__*/_react["default"].createElement(_session["default"], {
66
+ user: user,
67
+ token: token,
68
+ refreshToken: refreshToken,
69
+ onChange: onSessionChange,
70
+ onLogout: onLogout
71
+ }, /*#__PURE__*/_react["default"].createElement(Shell, rest));
72
+ if (!needsThemeProvider) return shell;
73
+ return /*#__PURE__*/_react["default"].createElement(_PowrThemeProvider["default"], {
74
+ theme: theme,
75
+ presets: presets,
76
+ scheme: scheme,
77
+ density: density,
78
+ preset: preset,
79
+ persist: persistTheme,
80
+ projectId: rest.projectId || config.projectId
81
+ }, shell);
82
+ }
83
+ function Shell(_ref) {
84
+ var _ref$mode = _ref.mode,
85
+ mode = _ref$mode === void 0 ? "topbar" : _ref$mode,
86
+ _ref$brand = _ref.brand,
87
+ brand = _ref$brand === void 0 ? null : _ref$brand,
88
+ _ref$brandHref = _ref.brandHref,
89
+ brandHref = _ref$brandHref === void 0 ? "/" : _ref$brandHref,
90
+ _ref$nav = _ref.nav,
91
+ nav = _ref$nav === void 0 ? [] : _ref$nav,
92
+ _ref$headerRight = _ref.headerRight,
93
+ headerRight = _ref$headerRight === void 0 ? null : _ref$headerRight,
94
+ _ref$footer = _ref.footer,
95
+ footer = _ref$footer === void 0 ? null : _ref$footer,
96
+ _ref$Link = _ref.Link,
97
+ Link = _ref$Link === void 0 ? _parts.DefaultLink : _ref$Link,
98
+ _ref$pathname = _ref.pathname,
99
+ pathname = _ref$pathname === void 0 ? "" : _ref$pathname,
100
+ _ref$gate = _ref.gate,
101
+ gate = _ref$gate === void 0 ? "login" : _ref$gate,
102
+ _ref$login = _ref.login,
103
+ login = _ref$login === void 0 ? {} : _ref$login,
104
+ _ref$onboarding = _ref.onboarding,
105
+ onboarding = _ref$onboarding === void 0 ? {} : _ref$onboarding,
106
+ _ref$adminHref = _ref.adminHref,
107
+ adminHref = _ref$adminHref === void 0 ? "/powr-admin" : _ref$adminHref,
108
+ _ref$loginHref = _ref.loginHref,
109
+ loginHref = _ref$loginHref === void 0 ? "/login" : _ref$loginHref,
110
+ _ref$menuItems = _ref.menuItems,
111
+ menuItems = _ref$menuItems === void 0 ? [] : _ref$menuItems,
112
+ _ref$showThemeSetting = _ref.showThemeSettings,
113
+ showThemeSettings = _ref$showThemeSetting === void 0 ? true : _ref$showThemeSetting,
114
+ apiUrl = _ref.apiUrl,
115
+ projectId = _ref.projectId,
116
+ appName = _ref.appName,
117
+ appLogo = _ref.appLogo,
118
+ children = _ref.children;
119
+ var session = (0, _session.usePowrSession)();
120
+ var narrow = (0, _useMediaQuery["default"])(_styles.NARROW_QUERY, false);
121
+ var _useState = (0, _react.useState)(false),
122
+ _useState2 = _slicedToArray(_useState, 2),
123
+ navOpen = _useState2[0],
124
+ setNavOpen = _useState2[1];
125
+ var _useState3 = (0, _react.useState)(false),
126
+ _useState4 = _slicedToArray(_useState3, 2),
127
+ settingsOpen = _useState4[0],
128
+ setSettingsOpen = _useState4[1];
129
+ var closeNav = (0, _react.useCallback)(function () {
130
+ return setNavOpen(false);
131
+ }, []);
132
+ var closeSettings = (0, _react.useCallback)(function () {
133
+ return setSettingsOpen(false);
134
+ }, []);
135
+ var resolvedAppName = appName || login.appName || "App";
136
+ var resolvedAppLogo = appLogo || login.appLogo;
137
+ if (!session.hydrated) return /*#__PURE__*/_react["default"].createElement(_parts.Skeleton, null);
138
+
139
+ // ---- Gate -------------------------------------------------------------
140
+ if (!session.user && gate === "login") {
141
+ return /*#__PURE__*/_react["default"].createElement("div", {
142
+ style: _styles.s.gatePage
143
+ }, /*#__PURE__*/_react["default"].createElement("header", {
144
+ style: _styles.s.header
145
+ }, /*#__PURE__*/_react["default"].createElement(Brand, {
146
+ Link: Link,
147
+ href: brandHref,
148
+ brand: brand,
149
+ appName: resolvedAppName,
150
+ appLogo: resolvedAppLogo
151
+ }), /*#__PURE__*/_react["default"].createElement("div", {
152
+ style: _styles.s.headerRight
153
+ }, showThemeSettings ? /*#__PURE__*/_react["default"].createElement("button", {
154
+ type: "button",
155
+ "aria-label": "Appearance",
156
+ onClick: function onClick() {
157
+ return setSettingsOpen(true);
158
+ },
159
+ style: _styles.s.iconButton
160
+ }, "\u25D0") : null)), /*#__PURE__*/_react["default"].createElement("main", {
161
+ style: {
162
+ flex: 1,
163
+ padding: 16
164
+ }
165
+ }, /*#__PURE__*/_react["default"].createElement("div", {
166
+ style: _styles.s.gateCard
167
+ }, /*#__PURE__*/_react["default"].createElement(_auth["default"], _extends({
168
+ apiUrl: apiUrl,
169
+ projectId: projectId,
170
+ appName: resolvedAppName,
171
+ appLogo: resolvedAppLogo,
172
+ requirePhoneVerification: false
173
+ }, login, {
174
+ onLogin: function onLogin(result) {
175
+ var _login$onLogin;
176
+ if (result !== null && result !== void 0 && result.success && result.token) {
177
+ session.setSession(result.user, result.token, result.refreshToken || null);
178
+ }
179
+ (_login$onLogin = login.onLogin) === null || _login$onLogin === void 0 || _login$onLogin.call(login, result);
180
+ },
181
+ onRegister: function onRegister(result) {
182
+ var _login$onRegister;
183
+ if (result !== null && result !== void 0 && result.success && result.token) {
184
+ session.setSession(result.user, result.token, result.refreshToken || null);
185
+ }
186
+ (_login$onRegister = login.onRegister) === null || _login$onRegister === void 0 || _login$onRegister.call(login, result);
187
+ },
188
+ onSessionExpired: function onSessionExpired() {
189
+ var _login$onSessionExpir;
190
+ session.clear();
191
+ (_login$onSessionExpir = login.onSessionExpired) === null || _login$onSessionExpir === void 0 || _login$onSessionExpir.call(login);
192
+ }
193
+ })))), footer ? /*#__PURE__*/_react["default"].createElement("footer", {
194
+ style: _styles.s.footer
195
+ }, footer) : null, /*#__PURE__*/_react["default"].createElement(SettingsDrawer, {
196
+ open: settingsOpen,
197
+ onClose: closeSettings
198
+ }));
199
+ }
200
+
201
+ // ---- Shell ------------------------------------------------------------
202
+ var vertical = mode === "sidebar" && !narrow;
203
+ var showBurger = narrow && nav.length > 0;
204
+ var content = /*#__PURE__*/_react["default"].createElement("div", {
205
+ style: _styles.s.root
206
+ }, /*#__PURE__*/_react["default"].createElement("header", {
207
+ style: _styles.s.header
208
+ }, showBurger ? /*#__PURE__*/_react["default"].createElement("button", {
209
+ type: "button",
210
+ "aria-label": "Menu",
211
+ onClick: function onClick() {
212
+ return setNavOpen(true);
213
+ },
214
+ style: _styles.s.iconButton
215
+ }, "\u2630") : null, /*#__PURE__*/_react["default"].createElement(Brand, {
216
+ Link: Link,
217
+ href: brandHref,
218
+ brand: brand,
219
+ appName: resolvedAppName,
220
+ appLogo: resolvedAppLogo
221
+ }), mode === "topbar" && !narrow && nav.length ? /*#__PURE__*/_react["default"].createElement("div", {
222
+ style: _styles.s.headerNav
223
+ }, /*#__PURE__*/_react["default"].createElement(_parts.NavList, {
224
+ items: nav,
225
+ pathname: pathname,
226
+ Link: Link,
227
+ vertical: false
228
+ })) : null, /*#__PURE__*/_react["default"].createElement("div", {
229
+ style: _styles.s.headerRight
230
+ }, headerRight, session.user ? /*#__PURE__*/_react["default"].createElement(_parts.ProfileMenu, {
231
+ user: session.user,
232
+ isPowrAdmin: session.isPowrAdmin,
233
+ adminHref: adminHref,
234
+ Link: Link,
235
+ extraItems: menuItems,
236
+ onOpenSettings: showThemeSettings ? function () {
237
+ return setSettingsOpen(true);
238
+ } : null,
239
+ onLogout: session.clear
240
+ }) : /*#__PURE__*/_react["default"].createElement(Link, {
241
+ href: loginHref,
242
+ style: _objectSpread(_objectSpread({}, _styles.s.navItem(false, false)), {}, {
243
+ border: "1px solid ".concat(_styles.v.border)
244
+ })
245
+ }, "Sign in"))), /*#__PURE__*/_react["default"].createElement("div", {
246
+ style: _styles.s.body
247
+ }, vertical && nav.length ? /*#__PURE__*/_react["default"].createElement("aside", {
248
+ style: _styles.s.sidebar
249
+ }, /*#__PURE__*/_react["default"].createElement(_parts.NavList, {
250
+ items: nav,
251
+ pathname: pathname,
252
+ Link: Link,
253
+ vertical: true
254
+ })) : null, /*#__PURE__*/_react["default"].createElement("main", {
255
+ style: _styles.s.main
256
+ }, children)), footer ? /*#__PURE__*/_react["default"].createElement("footer", {
257
+ style: _styles.s.footer
258
+ }, footer) : null, /*#__PURE__*/_react["default"].createElement(_parts.Drawer, {
259
+ open: navOpen,
260
+ side: "left",
261
+ title: resolvedAppName,
262
+ onClose: closeNav
263
+ }, /*#__PURE__*/_react["default"].createElement(_parts.NavList, {
264
+ items: nav,
265
+ pathname: pathname,
266
+ Link: Link,
267
+ vertical: true,
268
+ onNavigate: closeNav
269
+ })), /*#__PURE__*/_react["default"].createElement(SettingsDrawer, {
270
+ open: settingsOpen,
271
+ onClose: closeSettings
272
+ }));
273
+ if (onboarding === false || !session.user) return content;
274
+ return /*#__PURE__*/_react["default"].createElement(_PowrOnboardingProvider["default"], _extends({
275
+ apiUrl: apiUrl,
276
+ projectId: projectId || config.projectId,
277
+ user: session.user,
278
+ token: session.token,
279
+ refreshToken: session.refreshToken,
280
+ isHydrated: session.hydrated,
281
+ appName: resolvedAppName,
282
+ appLogo: resolvedAppLogo
283
+ }, onboarding, {
284
+ onUserUpdate: function onUserUpdate(u) {
285
+ var _onboarding$onUserUpd;
286
+ session.setSession(u, session.token, session.refreshToken);
287
+ (_onboarding$onUserUpd = onboarding.onUserUpdate) === null || _onboarding$onUserUpd === void 0 || _onboarding$onUserUpd.call(onboarding, u);
288
+ },
289
+ onTokenRefreshed: function onTokenRefreshed(newToken) {
290
+ var _onboarding$onTokenRe;
291
+ session.setSession(session.user, newToken, session.refreshToken);
292
+ (_onboarding$onTokenRe = onboarding.onTokenRefreshed) === null || _onboarding$onTokenRe === void 0 || _onboarding$onTokenRe.call(onboarding, newToken);
293
+ },
294
+ onSessionExpired: function onSessionExpired() {
295
+ var _onboarding$onSession;
296
+ session.clear();
297
+ (_onboarding$onSession = onboarding.onSessionExpired) === null || _onboarding$onSession === void 0 || _onboarding$onSession.call(onboarding);
298
+ }
299
+ }), content);
300
+ }
301
+ function Brand(_ref2) {
302
+ var Link = _ref2.Link,
303
+ href = _ref2.href,
304
+ brand = _ref2.brand,
305
+ appName = _ref2.appName,
306
+ appLogo = _ref2.appLogo;
307
+ return /*#__PURE__*/_react["default"].createElement(Link, {
308
+ href: href,
309
+ style: _styles.s.brand
310
+ }, brand !== null && brand !== undefined ? brand : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, appLogo ? /*#__PURE__*/_react["default"].createElement("img", {
311
+ src: appLogo,
312
+ alt: "",
313
+ style: {
314
+ height: 24,
315
+ width: "auto"
316
+ }
317
+ }) : null, /*#__PURE__*/_react["default"].createElement("span", null, appName)));
318
+ }
319
+ function SettingsDrawer(_ref3) {
320
+ var open = _ref3.open,
321
+ onClose = _ref3.onClose;
322
+ return /*#__PURE__*/_react["default"].createElement(_parts.Drawer, {
323
+ open: open,
324
+ side: "right",
325
+ title: "Appearance",
326
+ onClose: onClose
327
+ }, /*#__PURE__*/_react["default"].createElement(_PowrThemeSettings["default"], {
328
+ title: null
329
+ }));
330
+ }
@@ -0,0 +1,20 @@
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
+ Object.defineProperty(exports, "POWR_SHELL_MODES", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _PowrBaseAppWrapper.POWR_SHELL_MODES;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "PowrBaseAppWrapper", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _PowrBaseAppWrapper["default"];
17
+ }
18
+ });
19
+ var _PowrBaseAppWrapper = _interopRequireWildcard(require("./PowrBaseAppWrapper"));
20
+ 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); }
@@ -0,0 +1,267 @@
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.DefaultLink = void 0;
8
+ exports.Drawer = Drawer;
9
+ exports.NavList = NavList;
10
+ exports.ProfileMenu = ProfileMenu;
11
+ exports.Skeleton = Skeleton;
12
+ exports.initials = initials;
13
+ exports.isActive = isActive;
14
+ exports.useClickOutside = useClickOutside;
15
+ var _react = _interopRequireWildcard(require("react"));
16
+ var _styles = require("./styles");
17
+ var _excluded = ["href", "children"];
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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
25
+ 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."); }
26
+ 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; } }
27
+ 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; }
28
+ 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; } }
29
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
30
+ 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); }
31
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
32
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
33
+ /** Default `Link`: plain anchor. Next apps pass `next/link`. */
34
+ var DefaultLink = exports.DefaultLink = /*#__PURE__*/_react["default"].forwardRef(function DefaultLink(_ref, ref) {
35
+ var href = _ref.href,
36
+ children = _ref.children,
37
+ rest = _objectWithoutProperties(_ref, _excluded);
38
+ return /*#__PURE__*/_react["default"].createElement("a", _extends({
39
+ ref: ref,
40
+ href: href
41
+ }, rest), children);
42
+ });
43
+ function isActive(item, pathname) {
44
+ if (!pathname) return false;
45
+ if (typeof item.match === "function") return item.match(pathname);
46
+ if (item.match === "exact" || item.href === "/") return pathname === item.href;
47
+ return pathname === item.href || pathname.startsWith("".concat(item.href, "/"));
48
+ }
49
+ function NavList(_ref2) {
50
+ var items = _ref2.items,
51
+ pathname = _ref2.pathname,
52
+ Link = _ref2.Link,
53
+ vertical = _ref2.vertical,
54
+ onNavigate = _ref2.onNavigate;
55
+ return /*#__PURE__*/_react["default"].createElement("nav", {
56
+ "aria-label": "Primary",
57
+ style: {
58
+ display: "flex",
59
+ flexDirection: vertical ? "column" : "row",
60
+ gap: vertical ? 2 : 4
61
+ }
62
+ }, items.map(function (item) {
63
+ var active = isActive(item, pathname);
64
+ return /*#__PURE__*/_react["default"].createElement(Link, {
65
+ key: item.href,
66
+ href: item.href,
67
+ "aria-current": active ? "page" : undefined,
68
+ onClick: onNavigate,
69
+ style: _styles.s.navItem(active, vertical)
70
+ }, item.icon ? /*#__PURE__*/_react["default"].createElement("span", {
71
+ style: _styles.s.navIcon
72
+ }, item.icon) : null, /*#__PURE__*/_react["default"].createElement("span", null, item.label));
73
+ }));
74
+ }
75
+ function initials(user) {
76
+ var _parts$;
77
+ var name = ((user === null || user === void 0 ? void 0 : user.fullName) || (user === null || user === void 0 ? void 0 : user.username) || (user === null || user === void 0 ? void 0 : user.email) || "").trim();
78
+ if (!name) return "?";
79
+ var parts = name.split(/\s+/);
80
+ return (parts[0][0] + (((_parts$ = parts[1]) === null || _parts$ === void 0 ? void 0 : _parts$[0]) || "")).toUpperCase();
81
+ }
82
+ function useClickOutside(ref, onOutside, enabled) {
83
+ (0, _react.useEffect)(function () {
84
+ if (!enabled) return undefined;
85
+ var handler = function handler(e) {
86
+ if (ref.current && !ref.current.contains(e.target)) onOutside();
87
+ };
88
+ document.addEventListener("mousedown", handler);
89
+ document.addEventListener("touchstart", handler);
90
+ return function () {
91
+ document.removeEventListener("mousedown", handler);
92
+ document.removeEventListener("touchstart", handler);
93
+ };
94
+ }, [ref, onOutside, enabled]);
95
+ }
96
+ function ProfileMenu(_ref3) {
97
+ var user = _ref3.user,
98
+ isPowrAdmin = _ref3.isPowrAdmin,
99
+ adminHref = _ref3.adminHref,
100
+ Link = _ref3.Link,
101
+ onOpenSettings = _ref3.onOpenSettings,
102
+ onLogout = _ref3.onLogout,
103
+ _ref3$extraItems = _ref3.extraItems,
104
+ extraItems = _ref3$extraItems === void 0 ? [] : _ref3$extraItems;
105
+ var _useState = (0, _react.useState)(false),
106
+ _useState2 = _slicedToArray(_useState, 2),
107
+ open = _useState2[0],
108
+ setOpen = _useState2[1];
109
+ var ref = (0, _react.useRef)(null);
110
+ useClickOutside(ref, function () {
111
+ return setOpen(false);
112
+ }, open);
113
+ var name = (user === null || user === void 0 ? void 0 : user.fullName) || (user === null || user === void 0 ? void 0 : user.username) || (user === null || user === void 0 ? void 0 : user.email) || "Account";
114
+ return /*#__PURE__*/_react["default"].createElement("div", {
115
+ ref: ref,
116
+ style: {
117
+ position: "relative"
118
+ }
119
+ }, /*#__PURE__*/_react["default"].createElement("button", {
120
+ type: "button",
121
+ "aria-haspopup": "menu",
122
+ "aria-expanded": open,
123
+ onClick: function onClick() {
124
+ return setOpen(function (o) {
125
+ return !o;
126
+ });
127
+ },
128
+ style: _styles.s.avatarButton
129
+ }, /*#__PURE__*/_react["default"].createElement("span", {
130
+ style: _styles.s.avatar
131
+ }, initials(user)), /*#__PURE__*/_react["default"].createElement("span", {
132
+ style: {
133
+ maxWidth: 140,
134
+ overflow: "hidden",
135
+ textOverflow: "ellipsis",
136
+ whiteSpace: "nowrap"
137
+ }
138
+ }, name.split(" ")[0])), open ? /*#__PURE__*/_react["default"].createElement("div", {
139
+ role: "menu",
140
+ style: _styles.s.menu
141
+ }, /*#__PURE__*/_react["default"].createElement("div", {
142
+ style: _styles.s.menuHeader
143
+ }, /*#__PURE__*/_react["default"].createElement("div", {
144
+ style: {
145
+ fontWeight: 600,
146
+ fontSize: 14
147
+ }
148
+ }, name), user !== null && user !== void 0 && user.email ? /*#__PURE__*/_react["default"].createElement("div", {
149
+ style: {
150
+ fontSize: 12,
151
+ color: _styles.v.muted
152
+ }
153
+ }, user.email) : null), isPowrAdmin && adminHref ? /*#__PURE__*/_react["default"].createElement(Link, {
154
+ href: adminHref,
155
+ role: "menuitem",
156
+ onClick: function onClick() {
157
+ return setOpen(false);
158
+ },
159
+ style: _styles.s.menuItem(false)
160
+ }, /*#__PURE__*/_react["default"].createElement("span", {
161
+ "aria-hidden": true
162
+ }, "\u2699"), " Powr admin") : null, extraItems.map(function (item) {
163
+ return /*#__PURE__*/_react["default"].createElement(Link, {
164
+ key: item.href,
165
+ href: item.href,
166
+ role: "menuitem",
167
+ onClick: function onClick() {
168
+ return setOpen(false);
169
+ },
170
+ style: _styles.s.menuItem(false)
171
+ }, item.icon ? /*#__PURE__*/_react["default"].createElement("span", {
172
+ "aria-hidden": true
173
+ }, item.icon) : null, " ", item.label);
174
+ }), onOpenSettings ? /*#__PURE__*/_react["default"].createElement("button", {
175
+ type: "button",
176
+ role: "menuitem",
177
+ onClick: function onClick() {
178
+ setOpen(false);
179
+ onOpenSettings();
180
+ },
181
+ style: _styles.s.menuItem(false)
182
+ }, /*#__PURE__*/_react["default"].createElement("span", {
183
+ "aria-hidden": true
184
+ }, "\u25D0"), " Appearance") : null, /*#__PURE__*/_react["default"].createElement("button", {
185
+ type: "button",
186
+ role: "menuitem",
187
+ onClick: function onClick() {
188
+ setOpen(false);
189
+ onLogout();
190
+ },
191
+ style: _styles.s.menuItem(true)
192
+ }, /*#__PURE__*/_react["default"].createElement("span", {
193
+ "aria-hidden": true
194
+ }, "\u238B"), " Sign out")) : null);
195
+ }
196
+ function Drawer(_ref4) {
197
+ var open = _ref4.open,
198
+ _ref4$side = _ref4.side,
199
+ side = _ref4$side === void 0 ? "right" : _ref4$side,
200
+ title = _ref4.title,
201
+ onClose = _ref4.onClose,
202
+ children = _ref4.children;
203
+ (0, _react.useEffect)(function () {
204
+ if (!open) return undefined;
205
+ var onKey = function onKey(e) {
206
+ return e.key === "Escape" && onClose();
207
+ };
208
+ document.addEventListener("keydown", onKey);
209
+ return function () {
210
+ return document.removeEventListener("keydown", onKey);
211
+ };
212
+ }, [open, onClose]);
213
+ if (!open) return null;
214
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
215
+ style: _styles.s.overlay,
216
+ onClick: onClose,
217
+ "aria-hidden": true
218
+ }), /*#__PURE__*/_react["default"].createElement("aside", {
219
+ role: "dialog",
220
+ "aria-modal": "true",
221
+ "aria-label": title,
222
+ style: _styles.s.drawer(side)
223
+ }, /*#__PURE__*/_react["default"].createElement("div", {
224
+ style: _styles.s.drawerHead
225
+ }, /*#__PURE__*/_react["default"].createElement("strong", {
226
+ style: {
227
+ fontSize: 15
228
+ }
229
+ }, title), /*#__PURE__*/_react["default"].createElement("button", {
230
+ type: "button",
231
+ "aria-label": "Close",
232
+ onClick: onClose,
233
+ style: _styles.s.iconButton
234
+ }, "\xD7")), children));
235
+ }
236
+ function Skeleton() {
237
+ return /*#__PURE__*/_react["default"].createElement("div", {
238
+ style: _styles.s.root,
239
+ "aria-busy": "true"
240
+ }, /*#__PURE__*/_react["default"].createElement("div", {
241
+ style: _styles.s.header
242
+ }, /*#__PURE__*/_react["default"].createElement("div", {
243
+ style: _styles.s.skeletonBar(120)
244
+ }), /*#__PURE__*/_react["default"].createElement("div", {
245
+ style: _objectSpread(_objectSpread({}, _styles.s.skeletonBar(80)), {}, {
246
+ marginLeft: 16
247
+ })
248
+ }), /*#__PURE__*/_react["default"].createElement("div", {
249
+ style: _objectSpread(_objectSpread({}, _styles.s.skeletonBar(36)), {}, {
250
+ marginLeft: "auto",
251
+ height: 36,
252
+ borderRadius: 18
253
+ })
254
+ })), /*#__PURE__*/_react["default"].createElement("div", {
255
+ style: {
256
+ padding: 24,
257
+ display: "grid",
258
+ gap: 12
259
+ }
260
+ }, /*#__PURE__*/_react["default"].createElement("div", {
261
+ style: _styles.s.skeletonBar("40%")
262
+ }), /*#__PURE__*/_react["default"].createElement("div", {
263
+ style: _styles.s.skeletonBar("70%")
264
+ }), /*#__PURE__*/_react["default"].createElement("div", {
265
+ style: _styles.s.skeletonBar("55%")
266
+ })));
267
+ }