powr-sdk-web 5.10.8 → 6.0.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.
- package/dist/activities/PowrActivityList.js +3 -3
- package/dist/activities/index.js +3 -3
- package/dist/admin/PowrBaseAdminFull.js +4 -4
- package/dist/admin/coreSectionLoaders.js +3 -3
- package/dist/admin/optionalSectionLoaders.js +8 -8
- package/dist/auth/index.js +3 -1
- package/dist/calendar/index.js +2 -2
- package/dist/index.js +91 -0
- package/dist/sso/api.js +11 -11
- package/dist/sso/index.js +26 -26
- package/dist/sso/openPowrLogin.js +18 -18
- package/dist/theme/PowrThemeProvider.js +302 -0
- package/dist/theme/index.js +123 -0
- package/dist/theme/tokens.js +212 -0
- package/dist/thread/components/AttachModal.js +2 -2
- package/dist/thread/components/ThreadComposer.js +3 -3
- package/dist/thread/components/ThreadItem.js +3 -3
- package/dist/thread/components/ThreadList.js +3 -3
- package/dist/thread/index.js +4 -4
- package/dist/thread/utils/linkify.js +4 -4
- package/dist/utils/auth.js +4 -1
- package/dist/utils/phone.js +3 -3
- package/package.json +4 -1
|
@@ -52,9 +52,9 @@ function formatWhen(iso, locale) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/**
|
|
56
|
-
* Presentational list for PowrBase activity-shaped rows (`activity.activity`, `activity.actor`, `activity.action`, `createdAt`).
|
|
57
|
-
* Does not fetch — pass data from parent or use {@link PowrBaseActivities}.
|
|
55
|
+
/**
|
|
56
|
+
* Presentational list for PowrBase activity-shaped rows (`activity.activity`, `activity.actor`, `activity.action`, `createdAt`).
|
|
57
|
+
* Does not fetch — pass data from parent or use {@link PowrBaseActivities}.
|
|
58
58
|
*/
|
|
59
59
|
function PowrActivityList(_ref) {
|
|
60
60
|
var activities = _ref.activities,
|
package/dist/activities/index.js
CHANGED
|
@@ -36,9 +36,9 @@ var wrapperStyle = {
|
|
|
36
36
|
fontFamily: 'Roboto, sans-serif'
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
/**
|
|
40
|
-
* Fetches activities like comments: GET with contentId + projectId (via apiCall).
|
|
41
|
-
* Date filtering is client-side: calendar picks a day, list shows items for that day.
|
|
39
|
+
/**
|
|
40
|
+
* Fetches activities like comments: GET with contentId + projectId (via apiCall).
|
|
41
|
+
* Date filtering is client-side: calendar picks a day, list shows items for that day.
|
|
42
42
|
*/
|
|
43
43
|
function PowrBaseActivities(_ref) {
|
|
44
44
|
var projectId = _ref.projectId,
|
|
@@ -18,10 +18,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
18
18
|
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); }
|
|
19
19
|
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; }
|
|
20
20
|
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; }
|
|
21
|
-
/**
|
|
22
|
-
* Full PowrBaseAdmin for host apps that already install optional peers
|
|
23
|
-
* (Excelrs / Spriny via the package root export).
|
|
24
|
-
* Prefer `powr-sdk-web/dist/admin` in lean apps (Ampy Ops) to avoid monaco/lucide.
|
|
21
|
+
/**
|
|
22
|
+
* Full PowrBaseAdmin for host apps that already install optional peers
|
|
23
|
+
* (Excelrs / Spriny via the package root export).
|
|
24
|
+
* Prefer `powr-sdk-web/dist/admin` in lean apps (Ampy Ops) to avoid monaco/lucide.
|
|
25
25
|
*/
|
|
26
26
|
function PowrBaseAdminFull(props) {
|
|
27
27
|
var sectionLoaders = props.sectionLoaders,
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.CORE_SECTION_LOADERS = void 0;
|
|
7
7
|
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); }
|
|
8
8
|
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); }
|
|
9
|
-
/**
|
|
10
|
-
* Core admin sections — no heavy optional peers (monaco / lucide / hot-toast).
|
|
11
|
-
* Safe for apps that only need Users (e.g. Ampy Ops).
|
|
9
|
+
/**
|
|
10
|
+
* Core admin sections — no heavy optional peers (monaco / lucide / hot-toast).
|
|
11
|
+
* Safe for apps that only need Users (e.g. Ampy Ops).
|
|
12
12
|
*/
|
|
13
13
|
var CORE_SECTION_LOADERS = exports.CORE_SECTION_LOADERS = {
|
|
14
14
|
users: function users() {
|
|
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports["default"] = exports.OPTIONAL_SECTION_LOADERS = void 0;
|
|
7
7
|
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); }
|
|
8
8
|
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); }
|
|
9
|
-
/**
|
|
10
|
-
* Heavy admin sections. Import only from apps that install optional peers:
|
|
11
|
-
* lucide-react, @monaco-editor/react, react-hot-toast
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* import PowrBaseAdmin from 'powr-sdk-web/dist/admin';
|
|
15
|
-
* import { OPTIONAL_SECTION_LOADERS } from 'powr-sdk-web/dist/admin/optionalSectionLoaders';
|
|
16
|
-
* <PowrBaseAdmin sections={['Users','Functions']} sectionLoaders={OPTIONAL_SECTION_LOADERS} />
|
|
9
|
+
/**
|
|
10
|
+
* Heavy admin sections. Import only from apps that install optional peers:
|
|
11
|
+
* lucide-react, @monaco-editor/react, react-hot-toast
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import PowrBaseAdmin from 'powr-sdk-web/dist/admin';
|
|
15
|
+
* import { OPTIONAL_SECTION_LOADERS } from 'powr-sdk-web/dist/admin/optionalSectionLoaders';
|
|
16
|
+
* <PowrBaseAdmin sections={['Users','Functions']} sectionLoaders={OPTIONAL_SECTION_LOADERS} />
|
|
17
17
|
*/
|
|
18
18
|
var OPTIONAL_SECTION_LOADERS = exports.OPTIONAL_SECTION_LOADERS = {
|
|
19
19
|
functions: function functions() {
|
package/dist/auth/index.js
CHANGED
|
@@ -29,6 +29,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
29
29
|
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; }
|
|
30
30
|
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; } }
|
|
31
31
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
32
|
+
var config = require('../config');
|
|
32
33
|
var PowrLogin = function PowrLogin(_ref) {
|
|
33
34
|
var apiUrl = _ref.apiUrl,
|
|
34
35
|
onLogin = _ref.onLogin,
|
|
@@ -37,7 +38,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
37
38
|
appLogo = _ref.appLogo,
|
|
38
39
|
_ref$mode = _ref.mode,
|
|
39
40
|
mode = _ref$mode === void 0 ? 'toggle' : _ref$mode,
|
|
40
|
-
|
|
41
|
+
projectIdProp = _ref.projectId,
|
|
41
42
|
_ref$requirePhoneVeri = _ref.requirePhoneVerification,
|
|
42
43
|
requirePhoneVerification = _ref$requirePhoneVeri === void 0 ? true : _ref$requirePhoneVeri,
|
|
43
44
|
_ref$showForgotPasswo = _ref.showForgotPassword,
|
|
@@ -55,6 +56,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
55
56
|
_ref$allowedCountries = _ref.allowedCountries,
|
|
56
57
|
allowedCountries = _ref$allowedCountries === void 0 ? null : _ref$allowedCountries,
|
|
57
58
|
onSessionExpired = _ref.onSessionExpired;
|
|
59
|
+
var projectId = projectIdProp || config.projectId;
|
|
58
60
|
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
59
61
|
var _useState = (0, _react.useState)(function () {
|
|
60
62
|
switch (mode) {
|
package/dist/calendar/index.js
CHANGED
|
@@ -101,8 +101,8 @@ function ChevronRight() {
|
|
|
101
101
|
}));
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
/**
|
|
105
|
-
* Week strip + day picker (controlled). No data fetching — use anywhere you need a date range UI.
|
|
104
|
+
/**
|
|
105
|
+
* Week strip + day picker (controlled). No data fetching — use anywhere you need a date range UI.
|
|
106
106
|
*/
|
|
107
107
|
function PowrCalendarStrip(_ref) {
|
|
108
108
|
var selectedDate = _ref.selectedDate,
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "AddPhonePanel", {
|
|
|
10
10
|
return _onboarding.AddPhonePanel;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
+
Object.defineProperty(exports, "DARK_POWR_TOKENS", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _theme.DARK_POWR_TOKENS;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
13
19
|
Object.defineProperty(exports, "DEFAULT_COUNTRY", {
|
|
14
20
|
enumerable: true,
|
|
15
21
|
get: function get() {
|
|
@@ -22,18 +28,66 @@ Object.defineProperty(exports, "DEFAULT_COUNTRY_CODE", {
|
|
|
22
28
|
return _phone.DEFAULT_COUNTRY_CODE;
|
|
23
29
|
}
|
|
24
30
|
});
|
|
31
|
+
Object.defineProperty(exports, "DEFAULT_POWR_DENSITY", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function get() {
|
|
34
|
+
return _theme.DEFAULT_POWR_DENSITY;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "DEFAULT_POWR_SCHEME", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _theme.DEFAULT_POWR_SCHEME;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
25
43
|
Object.defineProperty(exports, "DEFAULT_POWR_TARGETS", {
|
|
26
44
|
enumerable: true,
|
|
27
45
|
get: function get() {
|
|
28
46
|
return _sso.DEFAULT_POWR_TARGETS;
|
|
29
47
|
}
|
|
30
48
|
});
|
|
49
|
+
Object.defineProperty(exports, "DEFAULT_POWR_TOKENS", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _theme.DEFAULT_POWR_TOKENS;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
31
55
|
Object.defineProperty(exports, "OnboardingShell", {
|
|
32
56
|
enumerable: true,
|
|
33
57
|
get: function get() {
|
|
34
58
|
return _onboarding.OnboardingShell;
|
|
35
59
|
}
|
|
36
60
|
});
|
|
61
|
+
Object.defineProperty(exports, "POWR_CSS_VAR_NAMES", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function get() {
|
|
64
|
+
return _theme.POWR_CSS_VAR_NAMES;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, "POWR_DENSITIES", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function get() {
|
|
70
|
+
return _theme.POWR_DENSITIES;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "POWR_SCHEMES", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function get() {
|
|
76
|
+
return _theme.POWR_SCHEMES;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, "POWR_TOKENS", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function get() {
|
|
82
|
+
return _theme.POWR_TOKENS;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, "POWR_TOKEN_KEYS", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function get() {
|
|
88
|
+
return _theme.POWR_TOKEN_KEYS;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
37
91
|
Object.defineProperty(exports, "PRIORITY_COUNTRIES", {
|
|
38
92
|
enumerable: true,
|
|
39
93
|
get: function get() {
|
|
@@ -178,6 +232,12 @@ Object.defineProperty(exports, "PowrTable", {
|
|
|
178
232
|
return _table["default"];
|
|
179
233
|
}
|
|
180
234
|
});
|
|
235
|
+
Object.defineProperty(exports, "PowrThemeProvider", {
|
|
236
|
+
enumerable: true,
|
|
237
|
+
get: function get() {
|
|
238
|
+
return _theme.PowrThemeProvider;
|
|
239
|
+
}
|
|
240
|
+
});
|
|
181
241
|
Object.defineProperty(exports, "SESSION_MESSAGES", {
|
|
182
242
|
enumerable: true,
|
|
183
243
|
get: function get() {
|
|
@@ -346,6 +406,18 @@ Object.defineProperty(exports, "parsePhone", {
|
|
|
346
406
|
return _phone.parsePhone;
|
|
347
407
|
}
|
|
348
408
|
});
|
|
409
|
+
Object.defineProperty(exports, "powrThemeStorageKey", {
|
|
410
|
+
enumerable: true,
|
|
411
|
+
get: function get() {
|
|
412
|
+
return _theme.powrThemeStorageKey;
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
Object.defineProperty(exports, "powrVar", {
|
|
416
|
+
enumerable: true,
|
|
417
|
+
get: function get() {
|
|
418
|
+
return _theme.powrVar;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
349
421
|
Object.defineProperty(exports, "profileNameStep", {
|
|
350
422
|
enumerable: true,
|
|
351
423
|
get: function get() {
|
|
@@ -358,12 +430,30 @@ Object.defineProperty(exports, "resolveCountry", {
|
|
|
358
430
|
return _phone.resolveCountry;
|
|
359
431
|
}
|
|
360
432
|
});
|
|
433
|
+
Object.defineProperty(exports, "resolvePowrTokens", {
|
|
434
|
+
enumerable: true,
|
|
435
|
+
get: function get() {
|
|
436
|
+
return _theme.resolvePowrTokens;
|
|
437
|
+
}
|
|
438
|
+
});
|
|
361
439
|
Object.defineProperty(exports, "safeNextPath", {
|
|
362
440
|
enumerable: true,
|
|
363
441
|
get: function get() {
|
|
364
442
|
return _sso.safeNextPath;
|
|
365
443
|
}
|
|
366
444
|
});
|
|
445
|
+
Object.defineProperty(exports, "tokensToCssVars", {
|
|
446
|
+
enumerable: true,
|
|
447
|
+
get: function get() {
|
|
448
|
+
return _theme.tokensToCssVars;
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
Object.defineProperty(exports, "usePowrTheme", {
|
|
452
|
+
enumerable: true,
|
|
453
|
+
get: function get() {
|
|
454
|
+
return _theme.usePowrTheme;
|
|
455
|
+
}
|
|
456
|
+
});
|
|
367
457
|
var _table = _interopRequireDefault(require("./table"));
|
|
368
458
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
369
459
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -390,5 +480,6 @@ var _onboarding = require("./onboarding");
|
|
|
390
480
|
var _phone = require("./utils/phone");
|
|
391
481
|
var _jwt = require("./utils/jwt");
|
|
392
482
|
var _sessionMessages = require("./utils/sessionMessages");
|
|
483
|
+
var _theme = require("./theme");
|
|
393
484
|
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); }
|
|
394
485
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
package/dist/sso/api.js
CHANGED
|
@@ -27,21 +27,21 @@ function safeNextPath(next) {
|
|
|
27
27
|
return fallback;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* Issue a one-time login code (caller must already be authenticated).
|
|
32
|
-
* Host `injectProjectId` needs destination `projectId` on the body.
|
|
33
|
-
* @param {string} apiUrl - Powr API base
|
|
34
|
-
* @param {string} bearerToken
|
|
35
|
-
* @param {{ projectId?: string }} [opts]
|
|
30
|
+
/**
|
|
31
|
+
* Issue a one-time login code (caller must already be authenticated).
|
|
32
|
+
* Host `injectProjectId` needs destination `projectId` on the body.
|
|
33
|
+
* @param {string} apiUrl - Powr API base
|
|
34
|
+
* @param {string} bearerToken
|
|
35
|
+
* @param {{ projectId?: string }} [opts]
|
|
36
36
|
*/
|
|
37
37
|
function issueLoginCode(_x, _x2) {
|
|
38
38
|
return _issueLoginCode.apply(this, arguments);
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Exchange loginId for session (same shape as /login).
|
|
42
|
-
* @param {string} apiUrl
|
|
43
|
-
* @param {string} loginId
|
|
44
|
-
* @param {{ projectId?: string }} [opts]
|
|
40
|
+
/**
|
|
41
|
+
* Exchange loginId for session (same shape as /login).
|
|
42
|
+
* @param {string} apiUrl
|
|
43
|
+
* @param {string} loginId
|
|
44
|
+
* @param {{ projectId?: string }} [opts]
|
|
45
45
|
*/
|
|
46
46
|
function _issueLoginCode() {
|
|
47
47
|
_issueLoginCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, bearerToken) {
|
package/dist/sso/index.js
CHANGED
|
@@ -93,14 +93,14 @@ var shellStyle = {
|
|
|
93
93
|
justifyContent: "center",
|
|
94
94
|
padding: "0 1.5rem",
|
|
95
95
|
textAlign: "center",
|
|
96
|
-
background: "var(--background, #fafafa)",
|
|
97
|
-
color: "var(--foreground, #111)",
|
|
98
|
-
fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, sans-serif"
|
|
96
|
+
background: "var(--powr-bg, var(--background, #fafafa))",
|
|
97
|
+
color: "var(--powr-text, var(--foreground, #111))",
|
|
98
|
+
fontFamily: "var(--powr-font, system-ui, -apple-system, Segoe UI, Roboto, sans-serif)"
|
|
99
99
|
};
|
|
100
100
|
var mutedStyle = {
|
|
101
101
|
fontSize: "0.875rem",
|
|
102
102
|
fontWeight: 500,
|
|
103
|
-
color: "var(--muted-foreground, #737373)",
|
|
103
|
+
color: "var(--powr-muted, var(--muted-foreground, #737373))",
|
|
104
104
|
margin: 0
|
|
105
105
|
};
|
|
106
106
|
var titleStyle = {
|
|
@@ -114,18 +114,18 @@ var bodyStyle = {
|
|
|
114
114
|
marginTop: "0.5rem",
|
|
115
115
|
maxWidth: "24rem",
|
|
116
116
|
fontSize: "0.875rem",
|
|
117
|
-
color: "var(--muted-foreground, #737373)",
|
|
117
|
+
color: "var(--powr-muted, var(--muted-foreground, #737373))",
|
|
118
118
|
marginBottom: 0
|
|
119
119
|
};
|
|
120
120
|
var errorTextStyle = _objectSpread(_objectSpread({}, bodyStyle), {}, {
|
|
121
|
-
color: "var(--destructive, #dc2626)"
|
|
121
|
+
color: "var(--powr-danger, var(--destructive, #dc2626))"
|
|
122
122
|
});
|
|
123
123
|
var spinnerStyle = {
|
|
124
124
|
marginTop: "1.5rem",
|
|
125
125
|
width: "2.5rem",
|
|
126
126
|
height: "2.5rem",
|
|
127
127
|
borderRadius: "9999px",
|
|
128
|
-
border: "2px solid var(--primary, #2563eb)",
|
|
128
|
+
border: "2px solid var(--powr-primary, var(--primary, #2563eb))",
|
|
129
129
|
borderTopColor: "transparent",
|
|
130
130
|
animation: "powr-sso-spin 0.7s linear infinite"
|
|
131
131
|
};
|
|
@@ -134,9 +134,9 @@ var btnStyle = {
|
|
|
134
134
|
display: "inline-flex",
|
|
135
135
|
alignItems: "center",
|
|
136
136
|
justifyContent: "center",
|
|
137
|
-
borderRadius: "0.5rem",
|
|
138
|
-
background: "var(--primary, #2563eb)",
|
|
139
|
-
color: "var(--primary-foreground, #fff)",
|
|
137
|
+
borderRadius: "var(--powr-radius, 0.5rem)",
|
|
138
|
+
background: "var(--powr-primary, var(--primary, #2563eb))",
|
|
139
|
+
color: "var(--powr-primary-fg, var(--primary-foreground, #fff))",
|
|
140
140
|
padding: "0.5rem 1rem",
|
|
141
141
|
fontSize: "0.875rem",
|
|
142
142
|
fontWeight: 500,
|
|
@@ -145,22 +145,22 @@ var btnStyle = {
|
|
|
145
145
|
cursor: "pointer"
|
|
146
146
|
};
|
|
147
147
|
|
|
148
|
-
/**
|
|
149
|
-
* Cross-app SSO handoff UI (UrbanStall → Powr apps).
|
|
150
|
-
* Apps keep a thin `/sso` page that renders this with `apiUrl` + `onSuccess`.
|
|
151
|
-
*
|
|
152
|
-
* @param {object} props
|
|
153
|
-
* @param {string} [props.apiUrl] - Powr host. Defaults to https://powr-api.lawazia.tech
|
|
154
|
-
* @param {string} [props.projectId] - Destination Powr id. Defaults to NEXT_PUBLIC_PROJECT_ID
|
|
155
|
-
* @param {string} [props.appName]
|
|
156
|
-
* @param {boolean} [props.ready=true] - Wait (e.g. auth hydrate) before exchanging code
|
|
157
|
-
* @param {string} [props.loginHref="/login"]
|
|
158
|
-
* @param {string} [props.loginId] - Defaults to ?loginId=
|
|
159
|
-
* @param {string} [props.next] - Defaults to ?next=
|
|
160
|
-
* @param {(data: object, ctx: { next: string, safeNext: string }) => void | Promise<void>} props.onSuccess
|
|
161
|
-
* @param {string} [props.signingInTitle]
|
|
162
|
-
* @param {string} [props.signingInMessage]
|
|
163
|
-
* @param {string} [props.errorTitle]
|
|
148
|
+
/**
|
|
149
|
+
* Cross-app SSO handoff UI (UrbanStall → Powr apps).
|
|
150
|
+
* Apps keep a thin `/sso` page that renders this with `apiUrl` + `onSuccess`.
|
|
151
|
+
*
|
|
152
|
+
* @param {object} props
|
|
153
|
+
* @param {string} [props.apiUrl] - Powr host. Defaults to https://powr-api.lawazia.tech
|
|
154
|
+
* @param {string} [props.projectId] - Destination Powr id. Defaults to NEXT_PUBLIC_PROJECT_ID
|
|
155
|
+
* @param {string} [props.appName]
|
|
156
|
+
* @param {boolean} [props.ready=true] - Wait (e.g. auth hydrate) before exchanging code
|
|
157
|
+
* @param {string} [props.loginHref="/login"]
|
|
158
|
+
* @param {string} [props.loginId] - Defaults to ?loginId=
|
|
159
|
+
* @param {string} [props.next] - Defaults to ?next=
|
|
160
|
+
* @param {(data: object, ctx: { next: string, safeNext: string }) => void | Promise<void>} props.onSuccess
|
|
161
|
+
* @param {string} [props.signingInTitle]
|
|
162
|
+
* @param {string} [props.signingInMessage]
|
|
163
|
+
* @param {string} [props.errorTitle]
|
|
164
164
|
*/
|
|
165
165
|
function PowrBaseSso(_ref) {
|
|
166
166
|
var apiUrl = _ref.apiUrl,
|
|
@@ -79,10 +79,10 @@ function resolvePowrApiUrl(apiUrl) {
|
|
|
79
79
|
return "";
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
/**
|
|
83
|
-
* @param {string} url
|
|
84
|
-
* @param {string[]|Array<{url?: string, projectId?: string}>} [origins] - sibling card list or origins
|
|
85
|
-
* @returns {{ origin: string, pathname: string, search: string, hash: string, projectId: string } | null}
|
|
82
|
+
/**
|
|
83
|
+
* @param {string} url
|
|
84
|
+
* @param {string[]|Array<{url?: string, projectId?: string}>} [origins] - sibling card list or origins
|
|
85
|
+
* @returns {{ origin: string, pathname: string, search: string, hash: string, projectId: string } | null}
|
|
86
86
|
*/
|
|
87
87
|
function matchPowrTarget(url, origins) {
|
|
88
88
|
var dest = parseDest(url);
|
|
@@ -98,13 +98,13 @@ function matchPowrTarget(url, origins) {
|
|
|
98
98
|
return dest;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
/**
|
|
102
|
-
* @deprecated Product `/powr` URLs are gone. Pass `apiUrl` + the card list as `origins`.
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated Product `/powr` URLs are gone. Pass `apiUrl` + the card list as `origins`.
|
|
103
103
|
*/
|
|
104
104
|
var DEFAULT_POWR_TARGETS = exports.DEFAULT_POWR_TARGETS = [];
|
|
105
105
|
|
|
106
|
-
/**
|
|
107
|
-
* Build destination `/sso?loginId=` (+ optional `next`) on the sibling app.
|
|
106
|
+
/**
|
|
107
|
+
* Build destination `/sso?loginId=` (+ optional `next`) on the sibling app.
|
|
108
108
|
*/
|
|
109
109
|
function buildPowrSsoUrl(target, loginId) {
|
|
110
110
|
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
@@ -124,16 +124,16 @@ function openPlain(url) {
|
|
|
124
124
|
window.open(url, "_blank", "noopener,noreferrer");
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
/**
|
|
128
|
-
* Issue a login code and navigate to `/sso?loginId=`.
|
|
129
|
-
* Host is the SDK default. Omit `apiUrl` unless this call is a real override.
|
|
130
|
-
*
|
|
131
|
-
* @param {string} url - Destination app URL (from the sibling card / banner)
|
|
132
|
-
* @param {string|null|undefined} token
|
|
133
|
-
* @param {object} [options]
|
|
134
|
-
* @param {string} [options.apiUrl] - Override host. Do not pass product `/powr`.
|
|
135
|
-
* @param {string} [options.projectId] - Destination Powr id (else from matched card)
|
|
136
|
-
* @param {string[]|Array<{url?: string, projectId?: string}>} [options.origins] - The card list
|
|
127
|
+
/**
|
|
128
|
+
* Issue a login code and navigate to `/sso?loginId=`.
|
|
129
|
+
* Host is the SDK default. Omit `apiUrl` unless this call is a real override.
|
|
130
|
+
*
|
|
131
|
+
* @param {string} url - Destination app URL (from the sibling card / banner)
|
|
132
|
+
* @param {string|null|undefined} token
|
|
133
|
+
* @param {object} [options]
|
|
134
|
+
* @param {string} [options.apiUrl] - Override host. Do not pass product `/powr`.
|
|
135
|
+
* @param {string} [options.projectId] - Destination Powr id (else from matched card)
|
|
136
|
+
* @param {string[]|Array<{url?: string, projectId?: string}>} [options.origins] - The card list
|
|
137
137
|
*/
|
|
138
138
|
function openPowrLogin(_x, _x2) {
|
|
139
139
|
return _openPowrLogin.apply(this, arguments);
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = PowrThemeProvider;
|
|
7
|
+
exports.powrThemeStorageKey = powrThemeStorageKey;
|
|
8
|
+
exports.usePowrTheme = usePowrTheme;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _tokens = require("./tokens");
|
|
11
|
+
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); }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
+
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); }
|
|
17
|
+
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; } } }; }
|
|
18
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
19
|
+
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."); }
|
|
20
|
+
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; } }
|
|
21
|
+
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; }
|
|
22
|
+
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; } }
|
|
23
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
24
|
+
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); }
|
|
25
|
+
var config = require("../config");
|
|
26
|
+
var PowrThemeContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
27
|
+
var STORAGE_PREFIX = "powr-theme";
|
|
28
|
+
var DARK_QUERY = "(prefers-color-scheme: dark)";
|
|
29
|
+
function powrThemeStorageKey(projectId) {
|
|
30
|
+
return "".concat(STORAGE_PREFIX, ":").concat(projectId || "default");
|
|
31
|
+
}
|
|
32
|
+
function readStorage(key) {
|
|
33
|
+
if (typeof window === "undefined") return null;
|
|
34
|
+
try {
|
|
35
|
+
var raw = window.localStorage.getItem(key);
|
|
36
|
+
if (!raw) return null;
|
|
37
|
+
var parsed = JSON.parse(raw);
|
|
38
|
+
return parsed && _typeof(parsed) === "object" ? parsed : null;
|
|
39
|
+
} catch (_) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function writeStorage(key, value) {
|
|
44
|
+
if (typeof window === "undefined") return;
|
|
45
|
+
try {
|
|
46
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
47
|
+
} catch (_) {
|
|
48
|
+
/* private mode / quota — cache only, never truth */
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function systemPrefersDark() {
|
|
52
|
+
if (typeof window === "undefined" || !window.matchMedia) return false;
|
|
53
|
+
return window.matchMedia(DARK_QUERY).matches;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Root of the Powr theme. Mount once per app (the future `PowrBaseAppWrapper`
|
|
58
|
+
* mounts it for you). Structure (light / dark / density) is the SDK's;
|
|
59
|
+
* colours come from the product via `theme` and `presets`.
|
|
60
|
+
*
|
|
61
|
+
* With no props it writes today's neutral values, so SDK components render
|
|
62
|
+
* exactly as before.
|
|
63
|
+
*
|
|
64
|
+
* @param {object} props
|
|
65
|
+
* @param {object} [props.theme] - Product tokens. Flat `{ primary, bg, … }` (light) or `{ light: {…}, dark: {…} }`.
|
|
66
|
+
* @param {Array<{id: string, label?: string, tokens?: object, dark?: object}>} [props.presets] - Product-named presets users may pick.
|
|
67
|
+
* @param {"light"|"dark"|"system"} [props.scheme="light"] - Starting scheme; the user can change it (card 2 panel).
|
|
68
|
+
* @param {"comfortable"|"compact"} [props.density="comfortable"] - Starting density.
|
|
69
|
+
* @param {string} [props.preset] - Starting preset id.
|
|
70
|
+
* @param {string} [props.projectId] - Cache key scope. Defaults to NEXT_PUBLIC_PROJECT_ID.
|
|
71
|
+
* @param {boolean} [props.persist=true] - Cache choices in localStorage (cache, not truth — host save is card 3).
|
|
72
|
+
* @param {"root"|"scoped"} [props.attach="root"] - `root` writes vars on <html>; `scoped` wraps children in one div carrying the vars.
|
|
73
|
+
* @param {string} [props.className] - For `scoped` only.
|
|
74
|
+
* @param {(value: {scheme: string, density: string, preset: string|null}) => void} [props.onChange] - Fires when a selector changes.
|
|
75
|
+
*/
|
|
76
|
+
function PowrThemeProvider(_ref) {
|
|
77
|
+
var theme = _ref.theme,
|
|
78
|
+
_ref$presets = _ref.presets,
|
|
79
|
+
presets = _ref$presets === void 0 ? [] : _ref$presets,
|
|
80
|
+
_ref$scheme = _ref.scheme,
|
|
81
|
+
schemeProp = _ref$scheme === void 0 ? _tokens.DEFAULT_POWR_SCHEME : _ref$scheme,
|
|
82
|
+
_ref$density = _ref.density,
|
|
83
|
+
densityProp = _ref$density === void 0 ? _tokens.DEFAULT_POWR_DENSITY : _ref$density,
|
|
84
|
+
_ref$preset = _ref.preset,
|
|
85
|
+
presetProp = _ref$preset === void 0 ? null : _ref$preset,
|
|
86
|
+
projectId = _ref.projectId,
|
|
87
|
+
_ref$persist = _ref.persist,
|
|
88
|
+
persist = _ref$persist === void 0 ? true : _ref$persist,
|
|
89
|
+
_ref$attach = _ref.attach,
|
|
90
|
+
attach = _ref$attach === void 0 ? "root" : _ref$attach,
|
|
91
|
+
className = _ref.className,
|
|
92
|
+
onChange = _ref.onChange,
|
|
93
|
+
children = _ref.children;
|
|
94
|
+
var storageKey = powrThemeStorageKey(projectId || config.projectId);
|
|
95
|
+
var _useState = (0, _react.useState)(function () {
|
|
96
|
+
return (0, _tokens.normalizeScheme)(schemeProp);
|
|
97
|
+
}),
|
|
98
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
99
|
+
scheme = _useState2[0],
|
|
100
|
+
setSchemeState = _useState2[1];
|
|
101
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
102
|
+
return (0, _tokens.normalizeDensity)(densityProp);
|
|
103
|
+
}),
|
|
104
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
105
|
+
density = _useState4[0],
|
|
106
|
+
setDensityState = _useState4[1];
|
|
107
|
+
var _useState5 = (0, _react.useState)(function () {
|
|
108
|
+
return (0, _tokens.findPreset)(presets, presetProp) ? presetProp : null;
|
|
109
|
+
}),
|
|
110
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
111
|
+
preset = _useState6[0],
|
|
112
|
+
setPresetState = _useState6[1];
|
|
113
|
+
var _useState7 = (0, _react.useState)(false),
|
|
114
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
115
|
+
systemDark = _useState8[0],
|
|
116
|
+
setSystemDark = _useState8[1];
|
|
117
|
+
var _useState9 = (0, _react.useState)(false),
|
|
118
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
119
|
+
hydrated = _useState0[0],
|
|
120
|
+
setHydrated = _useState0[1];
|
|
121
|
+
|
|
122
|
+
// Cache → state, after mount (SSR-safe). Card 3 adds the head script so the
|
|
123
|
+
// first paint already matches.
|
|
124
|
+
(0, _react.useEffect)(function () {
|
|
125
|
+
if (persist) {
|
|
126
|
+
var cached = readStorage(storageKey);
|
|
127
|
+
if (cached) {
|
|
128
|
+
if (cached.scheme) setSchemeState((0, _tokens.normalizeScheme)(cached.scheme));
|
|
129
|
+
if (cached.density) setDensityState((0, _tokens.normalizeDensity)(cached.density));
|
|
130
|
+
if (cached.preset !== undefined) {
|
|
131
|
+
setPresetState((0, _tokens.findPreset)(presets, cached.preset) ? cached.preset : null);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
setHydrated(true);
|
|
136
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
137
|
+
}, [storageKey, persist]);
|
|
138
|
+
|
|
139
|
+
// `system` follows the OS.
|
|
140
|
+
(0, _react.useEffect)(function () {
|
|
141
|
+
if (typeof window === "undefined" || !window.matchMedia) return undefined;
|
|
142
|
+
var mq = window.matchMedia(DARK_QUERY);
|
|
143
|
+
var update = function update() {
|
|
144
|
+
return setSystemDark(mq.matches);
|
|
145
|
+
};
|
|
146
|
+
update();
|
|
147
|
+
if (mq.addEventListener) mq.addEventListener("change", update);else if (mq.addListener) mq.addListener(update);
|
|
148
|
+
return function () {
|
|
149
|
+
if (mq.removeEventListener) mq.removeEventListener("change", update);else if (mq.removeListener) mq.removeListener(update);
|
|
150
|
+
};
|
|
151
|
+
}, []);
|
|
152
|
+
var resolvedScheme = scheme === "system" ? systemDark || systemPrefersDark() ? "dark" : "light" : scheme;
|
|
153
|
+
var resolved = (0, _react.useMemo)(function () {
|
|
154
|
+
return (0, _tokens.resolvePowrTokens)({
|
|
155
|
+
scheme: resolvedScheme,
|
|
156
|
+
density: density,
|
|
157
|
+
theme: theme,
|
|
158
|
+
preset: preset,
|
|
159
|
+
presets: presets
|
|
160
|
+
});
|
|
161
|
+
}, [resolvedScheme, density, theme, preset, presets]);
|
|
162
|
+
var cssVars = (0, _react.useMemo)(function () {
|
|
163
|
+
return (0, _tokens.tokensToCssVars)(resolved.tokens, resolved.densityScale);
|
|
164
|
+
}, [resolved]);
|
|
165
|
+
|
|
166
|
+
// attach="root": write on <html> so product CSS, portals and toasts see the same vars.
|
|
167
|
+
(0, _react.useEffect)(function () {
|
|
168
|
+
if (attach !== "root" || typeof document === "undefined") return undefined;
|
|
169
|
+
var el = document.documentElement;
|
|
170
|
+
for (var _i = 0, _Object$keys = Object.keys(cssVars); _i < _Object$keys.length; _i++) {
|
|
171
|
+
var name = _Object$keys[_i];
|
|
172
|
+
el.style.setProperty(name, cssVars[name]);
|
|
173
|
+
}
|
|
174
|
+
el.setAttribute("data-powr-scheme", resolved.scheme);
|
|
175
|
+
el.setAttribute("data-powr-density", resolved.density);
|
|
176
|
+
if (resolved.preset) el.setAttribute("data-powr-preset", resolved.preset);else el.removeAttribute("data-powr-preset");
|
|
177
|
+
el.style.colorScheme = resolved.scheme;
|
|
178
|
+
return function () {
|
|
179
|
+
var _iterator = _createForOfIteratorHelper(_tokens.POWR_CSS_VAR_NAMES),
|
|
180
|
+
_step;
|
|
181
|
+
try {
|
|
182
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
183
|
+
var _name = _step.value;
|
|
184
|
+
el.style.removeProperty(_name);
|
|
185
|
+
}
|
|
186
|
+
} catch (err) {
|
|
187
|
+
_iterator.e(err);
|
|
188
|
+
} finally {
|
|
189
|
+
_iterator.f();
|
|
190
|
+
}
|
|
191
|
+
el.removeAttribute("data-powr-scheme");
|
|
192
|
+
el.removeAttribute("data-powr-density");
|
|
193
|
+
el.removeAttribute("data-powr-preset");
|
|
194
|
+
el.style.removeProperty("color-scheme");
|
|
195
|
+
};
|
|
196
|
+
}, [attach, cssVars, resolved.scheme, resolved.density, resolved.preset]);
|
|
197
|
+
var commit = (0, _react.useCallback)(function (next) {
|
|
198
|
+
if (persist) writeStorage(storageKey, next);
|
|
199
|
+
if (typeof onChange === "function") onChange(next);
|
|
200
|
+
}, [persist, storageKey, onChange]);
|
|
201
|
+
var setScheme = (0, _react.useCallback)(function (value) {
|
|
202
|
+
var s = (0, _tokens.normalizeScheme)(value);
|
|
203
|
+
setSchemeState(s);
|
|
204
|
+
commit({
|
|
205
|
+
scheme: s,
|
|
206
|
+
density: density,
|
|
207
|
+
preset: preset
|
|
208
|
+
});
|
|
209
|
+
}, [commit, density, preset]);
|
|
210
|
+
var setDensity = (0, _react.useCallback)(function (value) {
|
|
211
|
+
var d = (0, _tokens.normalizeDensity)(value);
|
|
212
|
+
setDensityState(d);
|
|
213
|
+
commit({
|
|
214
|
+
scheme: scheme,
|
|
215
|
+
density: d,
|
|
216
|
+
preset: preset
|
|
217
|
+
});
|
|
218
|
+
}, [commit, scheme, preset]);
|
|
219
|
+
var setPreset = (0, _react.useCallback)(function (value) {
|
|
220
|
+
var p = (0, _tokens.findPreset)(presets, value) ? value : null;
|
|
221
|
+
setPresetState(p);
|
|
222
|
+
commit({
|
|
223
|
+
scheme: scheme,
|
|
224
|
+
density: density,
|
|
225
|
+
preset: p
|
|
226
|
+
});
|
|
227
|
+
}, [commit, scheme, density, presets]);
|
|
228
|
+
var reset = (0, _react.useCallback)(function () {
|
|
229
|
+
var s = (0, _tokens.normalizeScheme)(schemeProp);
|
|
230
|
+
var d = (0, _tokens.normalizeDensity)(densityProp);
|
|
231
|
+
var p = (0, _tokens.findPreset)(presets, presetProp) ? presetProp : null;
|
|
232
|
+
setSchemeState(s);
|
|
233
|
+
setDensityState(d);
|
|
234
|
+
setPresetState(p);
|
|
235
|
+
commit({
|
|
236
|
+
scheme: s,
|
|
237
|
+
density: d,
|
|
238
|
+
preset: p
|
|
239
|
+
});
|
|
240
|
+
}, [commit, schemeProp, densityProp, presetProp, presets]);
|
|
241
|
+
var value = (0, _react.useMemo)(function () {
|
|
242
|
+
return {
|
|
243
|
+
scheme: scheme,
|
|
244
|
+
resolvedScheme: resolved.scheme,
|
|
245
|
+
density: density,
|
|
246
|
+
preset: preset,
|
|
247
|
+
presets: presets,
|
|
248
|
+
tokens: resolved.tokens,
|
|
249
|
+
cssVars: cssVars,
|
|
250
|
+
hydrated: hydrated,
|
|
251
|
+
mounted: true,
|
|
252
|
+
setScheme: setScheme,
|
|
253
|
+
setDensity: setDensity,
|
|
254
|
+
setPreset: setPreset,
|
|
255
|
+
reset: reset
|
|
256
|
+
};
|
|
257
|
+
}, [scheme, resolved, density, preset, presets, cssVars, hydrated, setScheme, setDensity, setPreset, reset]);
|
|
258
|
+
|
|
259
|
+
// `scoped` carries the vars only — it does not paint bg / text itself, so
|
|
260
|
+
// wrapping an existing page changes nothing until something reads a var.
|
|
261
|
+
var body = attach === "scoped" ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
262
|
+
className: className,
|
|
263
|
+
"data-powr-scheme": resolved.scheme,
|
|
264
|
+
"data-powr-density": resolved.density,
|
|
265
|
+
"data-powr-preset": resolved.preset || undefined,
|
|
266
|
+
style: _objectSpread(_objectSpread({}, cssVars), {}, {
|
|
267
|
+
colorScheme: resolved.scheme
|
|
268
|
+
})
|
|
269
|
+
}, children) : children;
|
|
270
|
+
return /*#__PURE__*/_react["default"].createElement(PowrThemeContext.Provider, {
|
|
271
|
+
value: value
|
|
272
|
+
}, body);
|
|
273
|
+
}
|
|
274
|
+
var UNMOUNTED_THEME = function () {
|
|
275
|
+
var resolved = (0, _tokens.resolvePowrTokens)();
|
|
276
|
+
var noop = function noop() {};
|
|
277
|
+
return Object.freeze({
|
|
278
|
+
scheme: _tokens.DEFAULT_POWR_SCHEME,
|
|
279
|
+
resolvedScheme: resolved.scheme,
|
|
280
|
+
density: resolved.density,
|
|
281
|
+
preset: null,
|
|
282
|
+
presets: [],
|
|
283
|
+
tokens: resolved.tokens,
|
|
284
|
+
cssVars: (0, _tokens.tokensToCssVars)(resolved.tokens, resolved.densityScale),
|
|
285
|
+
hydrated: true,
|
|
286
|
+
mounted: false,
|
|
287
|
+
setScheme: noop,
|
|
288
|
+
setDensity: noop,
|
|
289
|
+
setPreset: noop,
|
|
290
|
+
reset: noop
|
|
291
|
+
});
|
|
292
|
+
}();
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Read the theme. Outside a provider returns the neutral defaults and no-op
|
|
296
|
+
* setters (`mounted: false`), so SDK components work in apps that have not
|
|
297
|
+
* adopted the theme yet.
|
|
298
|
+
*/
|
|
299
|
+
function usePowrTheme() {
|
|
300
|
+
var ctx = (0, _react.useContext)(PowrThemeContext);
|
|
301
|
+
return ctx || UNMOUNTED_THEME;
|
|
302
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
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, "DARK_POWR_TOKENS", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _tokens.DARK_POWR_TOKENS;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "DEFAULT_POWR_DENSITY", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _tokens.DEFAULT_POWR_DENSITY;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "DEFAULT_POWR_SCHEME", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _tokens.DEFAULT_POWR_SCHEME;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "DEFAULT_POWR_TOKENS", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _tokens.DEFAULT_POWR_TOKENS;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "POWR_CSS_VAR_NAMES", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function get() {
|
|
34
|
+
return _tokens.POWR_CSS_VAR_NAMES;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "POWR_DENSITIES", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _tokens.POWR_DENSITIES;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "POWR_SCHEMES", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function get() {
|
|
46
|
+
return _tokens.POWR_SCHEMES;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "POWR_TOKENS", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _tokens.POWR_TOKENS;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "POWR_TOKEN_KEYS", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function get() {
|
|
58
|
+
return _tokens.POWR_TOKEN_KEYS;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "PowrThemeProvider", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function get() {
|
|
64
|
+
return _PowrThemeProvider["default"];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, "findPreset", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function get() {
|
|
70
|
+
return _tokens.findPreset;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "normalizeDensity", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function get() {
|
|
76
|
+
return _tokens.normalizeDensity;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, "normalizeScheme", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function get() {
|
|
82
|
+
return _tokens.normalizeScheme;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, "powrThemeStorageKey", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function get() {
|
|
88
|
+
return _PowrThemeProvider.powrThemeStorageKey;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(exports, "powrVar", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function get() {
|
|
94
|
+
return _tokens.powrVar;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, "resolvePowrTokens", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function get() {
|
|
100
|
+
return _tokens.resolvePowrTokens;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(exports, "themeForScheme", {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
get: function get() {
|
|
106
|
+
return _tokens.themeForScheme;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(exports, "tokensToCssVars", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function get() {
|
|
112
|
+
return _tokens.tokensToCssVars;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(exports, "usePowrTheme", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function get() {
|
|
118
|
+
return _PowrThemeProvider.usePowrTheme;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
var _PowrThemeProvider = _interopRequireWildcard(require("./PowrThemeProvider"));
|
|
122
|
+
var _tokens = require("./tokens");
|
|
123
|
+
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,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.POWR_TOKEN_KEYS = exports.POWR_TOKENS = exports.POWR_SCHEMES = exports.POWR_DENSITIES = exports.POWR_CSS_VAR_NAMES = exports.DEFAULT_POWR_TOKENS = exports.DEFAULT_POWR_SCHEME = exports.DEFAULT_POWR_DENSITY = exports.DARK_POWR_TOKENS = void 0;
|
|
7
|
+
exports.findPreset = findPreset;
|
|
8
|
+
exports.normalizeDensity = normalizeDensity;
|
|
9
|
+
exports.normalizeScheme = normalizeScheme;
|
|
10
|
+
exports.powrVar = powrVar;
|
|
11
|
+
exports.resolvePowrTokens = resolvePowrTokens;
|
|
12
|
+
exports.themeForScheme = themeForScheme;
|
|
13
|
+
exports.tokensToCssVars = tokensToCssVars;
|
|
14
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
15
|
+
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."); }
|
|
16
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
17
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
21
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
22
|
+
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); }
|
|
23
|
+
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; } } }; }
|
|
24
|
+
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; } }
|
|
25
|
+
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; }
|
|
26
|
+
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); }
|
|
27
|
+
/**
|
|
28
|
+
* Powr theme token contract.
|
|
29
|
+
*
|
|
30
|
+
* Ten CSS variables every Powr web app and every SDK component share.
|
|
31
|
+
* The SDK ships structure only (light / dark scheme, density). Colours that
|
|
32
|
+
* make a product look like itself come from the product via `theme` and
|
|
33
|
+
* `presets`.
|
|
34
|
+
*
|
|
35
|
+
* Components read `var(--powr-<name>, <today's hex>)` inline — no CSS file,
|
|
36
|
+
* no Tailwind colour classes, so a bump changes nothing until a product
|
|
37
|
+
* mounts `PowrThemeProvider`.
|
|
38
|
+
*
|
|
39
|
+
* Vocabulary: `scheme` = light / dark / system. `mode` is reserved for the
|
|
40
|
+
* layout shape (`sidebar` / `topbar` …) that `PowrBaseAppWrapper` owns.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/** token key → CSS variable (without the `--powr-` prefix). */
|
|
44
|
+
var POWR_TOKENS = exports.POWR_TOKENS = Object.freeze({
|
|
45
|
+
bg: "bg",
|
|
46
|
+
surface: "surface",
|
|
47
|
+
text: "text",
|
|
48
|
+
muted: "muted",
|
|
49
|
+
border: "border",
|
|
50
|
+
primary: "primary",
|
|
51
|
+
primaryFg: "primary-fg",
|
|
52
|
+
danger: "danger",
|
|
53
|
+
radius: "radius",
|
|
54
|
+
font: "font"
|
|
55
|
+
});
|
|
56
|
+
var POWR_TOKEN_KEYS = exports.POWR_TOKEN_KEYS = Object.freeze(Object.keys(POWR_TOKENS));
|
|
57
|
+
var SYSTEM_FONT = "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif";
|
|
58
|
+
|
|
59
|
+
/** Today's neutral SDK look. Mounting the provider with no `theme` = no change. */
|
|
60
|
+
var DEFAULT_POWR_TOKENS = exports.DEFAULT_POWR_TOKENS = Object.freeze({
|
|
61
|
+
bg: "#fafafa",
|
|
62
|
+
surface: "#ffffff",
|
|
63
|
+
text: "#111827",
|
|
64
|
+
muted: "#6b7280",
|
|
65
|
+
border: "#e5e7eb",
|
|
66
|
+
primary: "#2563eb",
|
|
67
|
+
primaryFg: "#ffffff",
|
|
68
|
+
danger: "#dc2626",
|
|
69
|
+
radius: "0.5rem",
|
|
70
|
+
font: SYSTEM_FONT
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
/** Structural dark scheme. Neutral, not a product palette. */
|
|
74
|
+
var DARK_POWR_TOKENS = exports.DARK_POWR_TOKENS = Object.freeze({
|
|
75
|
+
bg: "#0f1115",
|
|
76
|
+
surface: "#171a21",
|
|
77
|
+
text: "#f3f4f6",
|
|
78
|
+
muted: "#9ca3af",
|
|
79
|
+
border: "#2a2f3a",
|
|
80
|
+
primary: "#3b82f6",
|
|
81
|
+
primaryFg: "#ffffff",
|
|
82
|
+
danger: "#f87171",
|
|
83
|
+
radius: "0.5rem",
|
|
84
|
+
font: SYSTEM_FONT
|
|
85
|
+
});
|
|
86
|
+
var POWR_SCHEMES = exports.POWR_SCHEMES = Object.freeze(["light", "dark", "system"]);
|
|
87
|
+
|
|
88
|
+
/** density name → multiplier exposed as `--powr-density`. */
|
|
89
|
+
var POWR_DENSITIES = exports.POWR_DENSITIES = Object.freeze({
|
|
90
|
+
comfortable: 1,
|
|
91
|
+
compact: 0.875
|
|
92
|
+
});
|
|
93
|
+
var DEFAULT_POWR_SCHEME = exports.DEFAULT_POWR_SCHEME = "light";
|
|
94
|
+
var DEFAULT_POWR_DENSITY = exports.DEFAULT_POWR_DENSITY = "comfortable";
|
|
95
|
+
var BASE_BY_SCHEME = {
|
|
96
|
+
light: DEFAULT_POWR_TOKENS,
|
|
97
|
+
dark: DARK_POWR_TOKENS
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* `powrVar("primary", "#2563eb")` → `var(--powr-primary, #2563eb)`.
|
|
102
|
+
* Components use this so the fallback stays today's value.
|
|
103
|
+
*/
|
|
104
|
+
function powrVar(key, fallback) {
|
|
105
|
+
var name = POWR_TOKENS[key] || key;
|
|
106
|
+
return fallback === undefined ? "var(--powr-".concat(name, ")") : "var(--powr-".concat(name, ", ").concat(fallback, ")");
|
|
107
|
+
}
|
|
108
|
+
function pickKnown(tokens) {
|
|
109
|
+
if (!tokens || _typeof(tokens) !== "object") return {};
|
|
110
|
+
var out = {};
|
|
111
|
+
var _iterator = _createForOfIteratorHelper(POWR_TOKEN_KEYS),
|
|
112
|
+
_step;
|
|
113
|
+
try {
|
|
114
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
115
|
+
var key = _step.value;
|
|
116
|
+
var v = tokens[key];
|
|
117
|
+
if (v !== undefined && v !== null && v !== "") out[key] = String(v);
|
|
118
|
+
}
|
|
119
|
+
} catch (err) {
|
|
120
|
+
_iterator.e(err);
|
|
121
|
+
} finally {
|
|
122
|
+
_iterator.f();
|
|
123
|
+
}
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Product `theme` may be flat (light only) or `{ light, dark }`.
|
|
129
|
+
* Returns the token overrides for one resolved scheme.
|
|
130
|
+
*/
|
|
131
|
+
function themeForScheme(theme, scheme) {
|
|
132
|
+
if (!theme || _typeof(theme) !== "object") return {};
|
|
133
|
+
if (theme.light || theme.dark) {
|
|
134
|
+
return pickKnown(theme[scheme] || (scheme === "dark" ? theme.dark : theme.light));
|
|
135
|
+
}
|
|
136
|
+
// Flat product tokens apply to light; dark keeps the structural dark base
|
|
137
|
+
// unless the product also gives a `dark` block.
|
|
138
|
+
return scheme === "dark" ? {} : pickKnown(theme);
|
|
139
|
+
}
|
|
140
|
+
function findPreset(presets, id) {
|
|
141
|
+
if (!id || !Array.isArray(presets)) return null;
|
|
142
|
+
return presets.find(function (p) {
|
|
143
|
+
return p && p.id === id;
|
|
144
|
+
}) || null;
|
|
145
|
+
}
|
|
146
|
+
function normalizeScheme(scheme) {
|
|
147
|
+
return POWR_SCHEMES.includes(scheme) ? scheme : DEFAULT_POWR_SCHEME;
|
|
148
|
+
}
|
|
149
|
+
function normalizeDensity(density) {
|
|
150
|
+
return Object.prototype.hasOwnProperty.call(POWR_DENSITIES, density) ? density : DEFAULT_POWR_DENSITY;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Pure resolver. Order: structural base (light/dark) ← product theme[scheme]
|
|
155
|
+
* ← chosen preset (`tokens` / `dark`) ← density.
|
|
156
|
+
*
|
|
157
|
+
* `scheme` must already be `light` or `dark` (resolve `system` first).
|
|
158
|
+
* Also used by the head init script (card 3) so the server and the client
|
|
159
|
+
* compute the same variables.
|
|
160
|
+
*/
|
|
161
|
+
function resolvePowrTokens() {
|
|
162
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
163
|
+
_ref$scheme = _ref.scheme,
|
|
164
|
+
scheme = _ref$scheme === void 0 ? DEFAULT_POWR_SCHEME : _ref$scheme,
|
|
165
|
+
_ref$density = _ref.density,
|
|
166
|
+
density = _ref$density === void 0 ? DEFAULT_POWR_DENSITY : _ref$density,
|
|
167
|
+
theme = _ref.theme,
|
|
168
|
+
preset = _ref.preset,
|
|
169
|
+
presets = _ref.presets;
|
|
170
|
+
var resolvedScheme = scheme === "dark" ? "dark" : "light";
|
|
171
|
+
var base = BASE_BY_SCHEME[resolvedScheme];
|
|
172
|
+
var found = findPreset(presets, preset);
|
|
173
|
+
var presetTokens = found ? resolvedScheme === "dark" ? _objectSpread(_objectSpread({}, pickKnown(found.tokens)), pickKnown(found.dark)) : pickKnown(found.tokens) : {};
|
|
174
|
+
return {
|
|
175
|
+
scheme: resolvedScheme,
|
|
176
|
+
density: normalizeDensity(density),
|
|
177
|
+
densityScale: POWR_DENSITIES[normalizeDensity(density)],
|
|
178
|
+
preset: found ? found.id : null,
|
|
179
|
+
tokens: _objectSpread(_objectSpread(_objectSpread({}, base), themeForScheme(theme, resolvedScheme)), presetTokens)
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* `{ bg: "#fff" }` → `{ "--powr-bg": "#fff", "--powr-density": "1" }`.
|
|
185
|
+
* Safe to spread into a React `style` or to write on `document.documentElement`.
|
|
186
|
+
*/
|
|
187
|
+
function tokensToCssVars(tokens, densityScale) {
|
|
188
|
+
var out = {};
|
|
189
|
+
var _iterator2 = _createForOfIteratorHelper(POWR_TOKEN_KEYS),
|
|
190
|
+
_step2;
|
|
191
|
+
try {
|
|
192
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
193
|
+
var key = _step2.value;
|
|
194
|
+
if (tokens && tokens[key] !== undefined) {
|
|
195
|
+
out["--powr-".concat(POWR_TOKENS[key])] = tokens[key];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
} catch (err) {
|
|
199
|
+
_iterator2.e(err);
|
|
200
|
+
} finally {
|
|
201
|
+
_iterator2.f();
|
|
202
|
+
}
|
|
203
|
+
if (densityScale !== undefined && densityScale !== null) {
|
|
204
|
+
out["--powr-density"] = String(densityScale);
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** Names of every variable the contract may set — used to clear stale ones. */
|
|
210
|
+
var POWR_CSS_VAR_NAMES = exports.POWR_CSS_VAR_NAMES = Object.freeze([].concat(_toConsumableArray(POWR_TOKEN_KEYS.map(function (k) {
|
|
211
|
+
return "--powr-".concat(POWR_TOKENS[k]);
|
|
212
|
+
})), ["--powr-density"]));
|
|
@@ -8,8 +8,8 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _uploader = _interopRequireDefault(require("../../uploader"));
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
-
/**
|
|
12
|
-
* Shared attach modal used by thread (comments + chat). Uses PowrBaseUploader.
|
|
11
|
+
/**
|
|
12
|
+
* Shared attach modal used by thread (comments + chat). Uses PowrBaseUploader.
|
|
13
13
|
*/
|
|
14
14
|
var AttachModal = function AttachModal(_ref) {
|
|
15
15
|
var open = _ref.open,
|
|
@@ -7,9 +7,9 @@ exports["default"] = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
|
-
/**
|
|
11
|
-
* Composer: textarea, optional attach button, send button.
|
|
12
|
-
* variant 'message' = rectangular send button; 'comment' = pill style with play button.
|
|
10
|
+
/**
|
|
11
|
+
* Composer: textarea, optional attach button, send button.
|
|
12
|
+
* variant 'message' = rectangular send button; 'comment' = pill style with play button.
|
|
13
13
|
*/
|
|
14
14
|
var ThreadComposer = function ThreadComposer(_ref) {
|
|
15
15
|
var value = _ref.value,
|
|
@@ -16,9 +16,9 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
16
16
|
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; }
|
|
17
17
|
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; } }
|
|
18
18
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
19
|
-
/**
|
|
20
|
-
* Renders a single thread item. variant: 'message' = chat bubble (isOwn right), 'comment' = comment card.
|
|
21
|
-
* item: { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
19
|
+
/**
|
|
20
|
+
* Renders a single thread item. variant: 'message' = chat bubble (isOwn right), 'comment' = comment card.
|
|
21
|
+
* item: { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
22
22
|
*/
|
|
23
23
|
var ThreadItem = function ThreadItem(_ref) {
|
|
24
24
|
var item = _ref.item,
|
|
@@ -14,9 +14,9 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
14
14
|
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; }
|
|
15
15
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
16
|
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); }
|
|
17
|
-
/**
|
|
18
|
-
* items: array of { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
19
|
-
* dateGroups: optional array of { date, items } when groupByDate is true
|
|
17
|
+
/**
|
|
18
|
+
* items: array of { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
19
|
+
* dateGroups: optional array of { date, items } when groupByDate is true
|
|
20
20
|
*/
|
|
21
21
|
var ThreadList = function ThreadList(_ref) {
|
|
22
22
|
var items = _ref.items,
|
package/dist/thread/index.js
CHANGED
|
@@ -23,10 +23,10 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
23
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
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
25
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
-
/**
|
|
27
|
-
* Shared thread UI for chat messages and comments.
|
|
28
|
-
* items: array of { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
29
|
-
* dateGroups: when groupByDate true, array of { date, items }
|
|
26
|
+
/**
|
|
27
|
+
* Shared thread UI for chat messages and comments.
|
|
28
|
+
* items: array of { id, content, senderName, timestamp, isOwn, files?, formattedTime? }
|
|
29
|
+
* dateGroups: when groupByDate true, array of { date, items }
|
|
30
30
|
*/
|
|
31
31
|
var PowrBaseThread = function PowrBaseThread(_ref) {
|
|
32
32
|
var _ref$items = _ref.items,
|
|
@@ -9,10 +9,10 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default":
|
|
|
9
9
|
// Match http(s) URLs; simple pattern for display
|
|
10
10
|
var URL_REGEX = /(https?:\/\/[^\s<]+)/g;
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* Splits text and returns React nodes with URLs as clickable links.
|
|
14
|
-
* @param {string} text - Plain text that may contain URLs
|
|
15
|
-
* @returns {Array} Array of React elements (strings and <a> tags)
|
|
12
|
+
/**
|
|
13
|
+
* Splits text and returns React nodes with URLs as clickable links.
|
|
14
|
+
* @param {string} text - Plain text that may contain URLs
|
|
15
|
+
* @returns {Array} Array of React elements (strings and <a> tags)
|
|
16
16
|
*/
|
|
17
17
|
function linkify(text) {
|
|
18
18
|
if (!text || typeof text !== 'string') return null;
|
package/dist/utils/auth.js
CHANGED
|
@@ -84,7 +84,10 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
|
|
|
84
84
|
} else {
|
|
85
85
|
apiUrl = config.defaultPowrUrl;
|
|
86
86
|
}
|
|
87
|
-
url = "".concat(apiUrl).concat(endpoint);
|
|
87
|
+
url = "".concat(apiUrl).concat(endpoint); // Prop wins; NEXT_PUBLIC_PROJECT_ID is the default for every component.
|
|
88
|
+
if (!projectId && config.projectId) {
|
|
89
|
+
projectId = config.projectId;
|
|
90
|
+
}
|
|
88
91
|
if (projectId) {
|
|
89
92
|
separator = endpoint.includes('?') ? '&' : '?';
|
|
90
93
|
url = "".concat(url).concat(separator, "projectId=").concat(projectId);
|
package/dist/utils/phone.js
CHANGED
|
@@ -71,9 +71,9 @@ function normalizePhone(input) {
|
|
|
71
71
|
return parsed ? parsed.format('E.164') : '';
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/**
|
|
75
|
-
* Normalize phone for storage. Salvages digit runs when input has trailing junk.
|
|
76
|
-
* Returns null when invalid — never returns raw input.
|
|
74
|
+
/**
|
|
75
|
+
* Normalize phone for storage. Salvages digit runs when input has trailing junk.
|
|
76
|
+
* Returns null when invalid — never returns raw input.
|
|
77
77
|
*/
|
|
78
78
|
function coercePhoneForStorage(input) {
|
|
79
79
|
var defaultCountry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_COUNTRY;
|