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.
- package/dist/auth/index.js +2 -2
- package/dist/index.js +86 -0
- package/dist/session/index.js +217 -0
- package/dist/shell/PowrBaseAppWrapper.js +330 -0
- package/dist/shell/index.js +20 -0
- package/dist/shell/parts.js +267 -0
- package/dist/shell/styles.js +241 -0
- package/dist/theme/PowrThemeSettings.js +276 -0
- package/dist/theme/index.js +8 -0
- package/dist/utils/useMediaQuery.js +37 -0
- package/package.json +1 -1
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.v = exports.s = exports.SIDEBAR_WIDTH = exports.NARROW_QUERY = exports.HEADER_HEIGHT = void 0;
|
|
7
|
+
var _tokens = require("../theme/tokens");
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
11
|
+
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); }
|
|
12
|
+
/**
|
|
13
|
+
* Shell styles. Every colour is a `--powr-*` var with today's neutral as the
|
|
14
|
+
* fallback — the wrapper has no palette of its own (clone-leak guardrail).
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
var v = exports.v = {
|
|
18
|
+
bg: (0, _tokens.powrVar)("bg", "#fafafa"),
|
|
19
|
+
surface: (0, _tokens.powrVar)("surface", "#ffffff"),
|
|
20
|
+
text: (0, _tokens.powrVar)("text", "#111827"),
|
|
21
|
+
muted: (0, _tokens.powrVar)("muted", "#6b7280"),
|
|
22
|
+
border: (0, _tokens.powrVar)("border", "#e5e7eb"),
|
|
23
|
+
primary: (0, _tokens.powrVar)("primary", "#2563eb"),
|
|
24
|
+
primaryFg: (0, _tokens.powrVar)("primary-fg", "#ffffff"),
|
|
25
|
+
danger: (0, _tokens.powrVar)("danger", "#dc2626"),
|
|
26
|
+
radius: (0, _tokens.powrVar)("radius", "0.5rem"),
|
|
27
|
+
font: (0, _tokens.powrVar)("font", "system-ui, -apple-system, Segoe UI, Roboto, sans-serif")
|
|
28
|
+
};
|
|
29
|
+
var SIDEBAR_WIDTH = exports.SIDEBAR_WIDTH = 240;
|
|
30
|
+
var HEADER_HEIGHT = exports.HEADER_HEIGHT = 56;
|
|
31
|
+
var NARROW_QUERY = exports.NARROW_QUERY = "(max-width: 900px)";
|
|
32
|
+
var s = exports.s = {
|
|
33
|
+
root: {
|
|
34
|
+
minHeight: "100vh",
|
|
35
|
+
display: "flex",
|
|
36
|
+
flexDirection: "column",
|
|
37
|
+
background: v.bg,
|
|
38
|
+
color: v.text,
|
|
39
|
+
fontFamily: v.font
|
|
40
|
+
},
|
|
41
|
+
header: {
|
|
42
|
+
position: "sticky",
|
|
43
|
+
top: 0,
|
|
44
|
+
zIndex: 40,
|
|
45
|
+
height: HEADER_HEIGHT,
|
|
46
|
+
display: "flex",
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
gap: 16,
|
|
49
|
+
padding: "0 16px",
|
|
50
|
+
borderBottom: "1px solid ".concat(v.border),
|
|
51
|
+
background: v.surface
|
|
52
|
+
},
|
|
53
|
+
brand: {
|
|
54
|
+
display: "inline-flex",
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
gap: 8,
|
|
57
|
+
fontWeight: 700,
|
|
58
|
+
fontSize: 16,
|
|
59
|
+
color: v.text,
|
|
60
|
+
textDecoration: "none",
|
|
61
|
+
whiteSpace: "nowrap"
|
|
62
|
+
},
|
|
63
|
+
headerNav: {
|
|
64
|
+
display: "flex",
|
|
65
|
+
alignItems: "center",
|
|
66
|
+
gap: 4,
|
|
67
|
+
marginLeft: 8
|
|
68
|
+
},
|
|
69
|
+
headerRight: {
|
|
70
|
+
marginLeft: "auto",
|
|
71
|
+
display: "flex",
|
|
72
|
+
alignItems: "center",
|
|
73
|
+
gap: 8
|
|
74
|
+
},
|
|
75
|
+
body: {
|
|
76
|
+
display: "flex",
|
|
77
|
+
flex: 1,
|
|
78
|
+
minHeight: 0
|
|
79
|
+
},
|
|
80
|
+
sidebar: {
|
|
81
|
+
width: SIDEBAR_WIDTH,
|
|
82
|
+
flexShrink: 0,
|
|
83
|
+
position: "sticky",
|
|
84
|
+
top: HEADER_HEIGHT,
|
|
85
|
+
alignSelf: "flex-start",
|
|
86
|
+
height: "calc(100vh - ".concat(HEADER_HEIGHT, "px)"),
|
|
87
|
+
overflowY: "auto",
|
|
88
|
+
padding: 12,
|
|
89
|
+
borderRight: "1px solid ".concat(v.border),
|
|
90
|
+
background: v.surface
|
|
91
|
+
},
|
|
92
|
+
main: {
|
|
93
|
+
flex: 1,
|
|
94
|
+
minWidth: 0,
|
|
95
|
+
padding: "calc(24px * var(--powr-density, 1))"
|
|
96
|
+
},
|
|
97
|
+
footer: {
|
|
98
|
+
padding: "12px 16px",
|
|
99
|
+
borderTop: "1px solid ".concat(v.border),
|
|
100
|
+
color: v.muted,
|
|
101
|
+
fontSize: 12,
|
|
102
|
+
background: v.surface
|
|
103
|
+
},
|
|
104
|
+
navItem: function navItem(active, vertical) {
|
|
105
|
+
return {
|
|
106
|
+
display: "flex",
|
|
107
|
+
alignItems: "center",
|
|
108
|
+
gap: 10,
|
|
109
|
+
padding: vertical ? "9px 12px" : "6px 10px",
|
|
110
|
+
borderRadius: v.radius,
|
|
111
|
+
fontSize: 14,
|
|
112
|
+
lineHeight: 1.2,
|
|
113
|
+
textDecoration: "none",
|
|
114
|
+
cursor: "pointer",
|
|
115
|
+
whiteSpace: "nowrap",
|
|
116
|
+
color: active ? v.primary : v.text,
|
|
117
|
+
background: active ? "color-mix(in srgb, ".concat(v.primary, " 10%, transparent)") : "transparent",
|
|
118
|
+
fontWeight: active ? 600 : 500
|
|
119
|
+
};
|
|
120
|
+
},
|
|
121
|
+
navIcon: {
|
|
122
|
+
display: "inline-flex",
|
|
123
|
+
width: 18,
|
|
124
|
+
justifyContent: "center",
|
|
125
|
+
color: "inherit"
|
|
126
|
+
},
|
|
127
|
+
iconButton: {
|
|
128
|
+
width: 36,
|
|
129
|
+
height: 36,
|
|
130
|
+
display: "inline-flex",
|
|
131
|
+
alignItems: "center",
|
|
132
|
+
justifyContent: "center",
|
|
133
|
+
borderRadius: v.radius,
|
|
134
|
+
border: "1px solid ".concat(v.border),
|
|
135
|
+
background: v.surface,
|
|
136
|
+
color: v.text,
|
|
137
|
+
cursor: "pointer",
|
|
138
|
+
fontSize: 16,
|
|
139
|
+
padding: 0
|
|
140
|
+
},
|
|
141
|
+
avatarButton: {
|
|
142
|
+
display: "inline-flex",
|
|
143
|
+
alignItems: "center",
|
|
144
|
+
gap: 8,
|
|
145
|
+
height: 36,
|
|
146
|
+
padding: "0 10px 0 4px",
|
|
147
|
+
borderRadius: 999,
|
|
148
|
+
border: "1px solid ".concat(v.border),
|
|
149
|
+
background: v.surface,
|
|
150
|
+
color: v.text,
|
|
151
|
+
cursor: "pointer",
|
|
152
|
+
fontSize: 13
|
|
153
|
+
},
|
|
154
|
+
avatar: {
|
|
155
|
+
width: 28,
|
|
156
|
+
height: 28,
|
|
157
|
+
borderRadius: "50%",
|
|
158
|
+
display: "inline-flex",
|
|
159
|
+
alignItems: "center",
|
|
160
|
+
justifyContent: "center",
|
|
161
|
+
background: v.primary,
|
|
162
|
+
color: v.primaryFg,
|
|
163
|
+
fontSize: 12,
|
|
164
|
+
fontWeight: 700
|
|
165
|
+
},
|
|
166
|
+
menu: {
|
|
167
|
+
position: "absolute",
|
|
168
|
+
right: 0,
|
|
169
|
+
top: "calc(100% + 6px)",
|
|
170
|
+
minWidth: 220,
|
|
171
|
+
padding: 6,
|
|
172
|
+
borderRadius: v.radius,
|
|
173
|
+
border: "1px solid ".concat(v.border),
|
|
174
|
+
background: v.surface,
|
|
175
|
+
boxShadow: "0 10px 30px rgba(0,0,0,0.12)",
|
|
176
|
+
zIndex: 50
|
|
177
|
+
},
|
|
178
|
+
menuHeader: {
|
|
179
|
+
padding: "8px 10px 10px",
|
|
180
|
+
borderBottom: "1px solid ".concat(v.border),
|
|
181
|
+
marginBottom: 4
|
|
182
|
+
},
|
|
183
|
+
menuItem: function menuItem(danger) {
|
|
184
|
+
return {
|
|
185
|
+
display: "flex",
|
|
186
|
+
width: "100%",
|
|
187
|
+
alignItems: "center",
|
|
188
|
+
gap: 8,
|
|
189
|
+
padding: "8px 10px",
|
|
190
|
+
borderRadius: "calc(".concat(v.radius, " - 2px)"),
|
|
191
|
+
border: "none",
|
|
192
|
+
background: "transparent",
|
|
193
|
+
color: danger ? v.danger : v.text,
|
|
194
|
+
fontSize: 14,
|
|
195
|
+
textAlign: "left",
|
|
196
|
+
textDecoration: "none",
|
|
197
|
+
cursor: "pointer"
|
|
198
|
+
};
|
|
199
|
+
},
|
|
200
|
+
overlay: {
|
|
201
|
+
position: "fixed",
|
|
202
|
+
inset: 0,
|
|
203
|
+
background: "rgba(0,0,0,0.4)",
|
|
204
|
+
zIndex: 60
|
|
205
|
+
},
|
|
206
|
+
drawer: function drawer(side) {
|
|
207
|
+
return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
|
|
208
|
+
position: "fixed",
|
|
209
|
+
top: 0,
|
|
210
|
+
bottom: 0
|
|
211
|
+
}, side, 0), "width", "min(360px, 90vw)"), "padding", 16), "overflowY", "auto"), "background", v.surface), "color", v.text), "borderLeft", side === "right" ? "1px solid ".concat(v.border) : "none"), "borderRight", side === "left" ? "1px solid ".concat(v.border) : "none"), "boxShadow", "0 0 40px rgba(0,0,0,0.2)"), "zIndex", 61);
|
|
212
|
+
},
|
|
213
|
+
drawerHead: {
|
|
214
|
+
display: "flex",
|
|
215
|
+
alignItems: "center",
|
|
216
|
+
justifyContent: "space-between",
|
|
217
|
+
marginBottom: 12
|
|
218
|
+
},
|
|
219
|
+
gatePage: {
|
|
220
|
+
minHeight: "100vh",
|
|
221
|
+
display: "flex",
|
|
222
|
+
flexDirection: "column",
|
|
223
|
+
background: v.bg,
|
|
224
|
+
color: v.text,
|
|
225
|
+
fontFamily: v.font
|
|
226
|
+
},
|
|
227
|
+
gateCard: {
|
|
228
|
+
width: "min(480px, 100%)",
|
|
229
|
+
margin: "40px auto",
|
|
230
|
+
padding: 8
|
|
231
|
+
},
|
|
232
|
+
skeletonBar: function skeletonBar(w) {
|
|
233
|
+
return {
|
|
234
|
+
height: 12,
|
|
235
|
+
width: w,
|
|
236
|
+
borderRadius: 6,
|
|
237
|
+
background: v.border,
|
|
238
|
+
opacity: 0.6
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
};
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = PowrThemeSettings;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _PowrThemeProvider = require("./PowrThemeProvider");
|
|
9
|
+
var _tokens = require("./tokens");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
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); }
|
|
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
|
+
/**
|
|
18
|
+
* User-level theme selectors: scheme · density · product preset.
|
|
19
|
+
*
|
|
20
|
+
* Reads and writes through `usePowrTheme()`, so it needs a `PowrThemeProvider`
|
|
21
|
+
* above it. Legacy apps mount this inside their own Settings page; the
|
|
22
|
+
* wrapper opens it in a drawer. Presets come from the product — this panel
|
|
23
|
+
* never invents colours (no colour wheel).
|
|
24
|
+
*
|
|
25
|
+
* `onSave` is the hook for card 3 (host `/users/me/preferences`). Until then
|
|
26
|
+
* changes are live + cached in localStorage by the provider.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
var SCHEME_LABELS = {
|
|
30
|
+
light: "Light",
|
|
31
|
+
dark: "Dark",
|
|
32
|
+
system: "System"
|
|
33
|
+
};
|
|
34
|
+
var DENSITY_LABELS = {
|
|
35
|
+
comfortable: "Comfortable",
|
|
36
|
+
compact: "Compact"
|
|
37
|
+
};
|
|
38
|
+
var styles = {
|
|
39
|
+
root: {
|
|
40
|
+
display: "grid",
|
|
41
|
+
gap: 20,
|
|
42
|
+
color: (0, _tokens.powrVar)("text", "#111827"),
|
|
43
|
+
fontFamily: (0, _tokens.powrVar)("font", "system-ui, sans-serif")
|
|
44
|
+
},
|
|
45
|
+
title: {
|
|
46
|
+
margin: 0,
|
|
47
|
+
fontSize: 16,
|
|
48
|
+
fontWeight: 600
|
|
49
|
+
},
|
|
50
|
+
label: {
|
|
51
|
+
display: "block",
|
|
52
|
+
fontSize: 12,
|
|
53
|
+
fontWeight: 600,
|
|
54
|
+
letterSpacing: "0.04em",
|
|
55
|
+
textTransform: "uppercase",
|
|
56
|
+
color: (0, _tokens.powrVar)("muted", "#6b7280"),
|
|
57
|
+
marginBottom: 8
|
|
58
|
+
},
|
|
59
|
+
segmented: {
|
|
60
|
+
display: "inline-flex",
|
|
61
|
+
padding: 3,
|
|
62
|
+
gap: 2,
|
|
63
|
+
borderRadius: (0, _tokens.powrVar)("radius", "0.5rem"),
|
|
64
|
+
border: "1px solid ".concat((0, _tokens.powrVar)("border", "#e5e7eb")),
|
|
65
|
+
background: (0, _tokens.powrVar)("bg", "#fafafa")
|
|
66
|
+
},
|
|
67
|
+
segment: function segment(active) {
|
|
68
|
+
return {
|
|
69
|
+
padding: "6px 12px",
|
|
70
|
+
fontSize: 13,
|
|
71
|
+
lineHeight: 1.2,
|
|
72
|
+
borderRadius: "calc(".concat((0, _tokens.powrVar)("radius", "0.5rem"), " - 2px)"),
|
|
73
|
+
border: "none",
|
|
74
|
+
cursor: "pointer",
|
|
75
|
+
background: active ? (0, _tokens.powrVar)("surface", "#fff") : "transparent",
|
|
76
|
+
color: active ? (0, _tokens.powrVar)("text", "#111827") : (0, _tokens.powrVar)("muted", "#6b7280"),
|
|
77
|
+
boxShadow: active ? "0 1px 2px rgba(0,0,0,0.08)" : "none",
|
|
78
|
+
fontWeight: active ? 600 : 400
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
presetGrid: {
|
|
82
|
+
display: "grid",
|
|
83
|
+
gridTemplateColumns: "repeat(auto-fill, minmax(140px, 1fr))",
|
|
84
|
+
gap: 8
|
|
85
|
+
},
|
|
86
|
+
presetCard: function presetCard(active) {
|
|
87
|
+
return {
|
|
88
|
+
display: "grid",
|
|
89
|
+
gap: 8,
|
|
90
|
+
padding: 10,
|
|
91
|
+
textAlign: "left",
|
|
92
|
+
cursor: "pointer",
|
|
93
|
+
borderRadius: (0, _tokens.powrVar)("radius", "0.5rem"),
|
|
94
|
+
border: "2px solid ".concat(active ? (0, _tokens.powrVar)("primary", "#2563eb") : (0, _tokens.powrVar)("border", "#e5e7eb")),
|
|
95
|
+
background: (0, _tokens.powrVar)("surface", "#fff"),
|
|
96
|
+
color: (0, _tokens.powrVar)("text", "#111827")
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
swatchRow: {
|
|
100
|
+
display: "flex",
|
|
101
|
+
gap: 4
|
|
102
|
+
},
|
|
103
|
+
swatch: function swatch(bg) {
|
|
104
|
+
return {
|
|
105
|
+
width: 18,
|
|
106
|
+
height: 18,
|
|
107
|
+
borderRadius: 4,
|
|
108
|
+
background: bg,
|
|
109
|
+
border: "1px solid ".concat((0, _tokens.powrVar)("border", "#e5e7eb"))
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
footer: {
|
|
113
|
+
display: "flex",
|
|
114
|
+
gap: 8,
|
|
115
|
+
alignItems: "center"
|
|
116
|
+
},
|
|
117
|
+
button: function button(primary) {
|
|
118
|
+
return {
|
|
119
|
+
padding: "8px 14px",
|
|
120
|
+
fontSize: 13,
|
|
121
|
+
cursor: "pointer",
|
|
122
|
+
borderRadius: (0, _tokens.powrVar)("radius", "0.5rem"),
|
|
123
|
+
border: "1px solid ".concat(primary ? (0, _tokens.powrVar)("primary", "#2563eb") : (0, _tokens.powrVar)("border", "#e5e7eb")),
|
|
124
|
+
background: primary ? (0, _tokens.powrVar)("primary", "#2563eb") : (0, _tokens.powrVar)("surface", "#fff"),
|
|
125
|
+
color: primary ? (0, _tokens.powrVar)("primary-fg", "#fff") : (0, _tokens.powrVar)("text", "#111827")
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
hint: {
|
|
129
|
+
fontSize: 12,
|
|
130
|
+
color: (0, _tokens.powrVar)("muted", "#6b7280"),
|
|
131
|
+
margin: 0
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
function Segmented(_ref) {
|
|
135
|
+
var value = _ref.value,
|
|
136
|
+
options = _ref.options,
|
|
137
|
+
labels = _ref.labels,
|
|
138
|
+
onChange = _ref.onChange,
|
|
139
|
+
name = _ref.name;
|
|
140
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
141
|
+
role: "radiogroup",
|
|
142
|
+
"aria-label": name,
|
|
143
|
+
style: styles.segmented
|
|
144
|
+
}, options.map(function (opt) {
|
|
145
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
146
|
+
key: opt,
|
|
147
|
+
type: "button",
|
|
148
|
+
role: "radio",
|
|
149
|
+
"aria-checked": value === opt,
|
|
150
|
+
onClick: function onClick() {
|
|
151
|
+
return onChange(opt);
|
|
152
|
+
},
|
|
153
|
+
style: styles.segment(value === opt)
|
|
154
|
+
}, labels[opt] || opt);
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
function presetSwatches(preset, dark) {
|
|
158
|
+
var t = dark && preset.dark || preset.tokens || {};
|
|
159
|
+
return [t.bg, t.surface, t.primary, t.text].filter(Boolean);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @param {object} props
|
|
164
|
+
* @param {string} [props.title="Appearance"]
|
|
165
|
+
* @param {boolean} [props.showScheme=true]
|
|
166
|
+
* @param {boolean} [props.showDensity=true]
|
|
167
|
+
* @param {boolean} [props.showPresets=true] - Hidden automatically when the product passed no presets.
|
|
168
|
+
* @param {(value: {scheme, density, preset}) => void|Promise<void>} [props.onSave] - Card 3: host save. Shows a Save button when given.
|
|
169
|
+
* @param {boolean} [props.saving]
|
|
170
|
+
* @param {string} [props.saveLabel="Save"]
|
|
171
|
+
*/
|
|
172
|
+
function PowrThemeSettings(_ref2) {
|
|
173
|
+
var _ref2$title = _ref2.title,
|
|
174
|
+
title = _ref2$title === void 0 ? "Appearance" : _ref2$title,
|
|
175
|
+
_ref2$showScheme = _ref2.showScheme,
|
|
176
|
+
showScheme = _ref2$showScheme === void 0 ? true : _ref2$showScheme,
|
|
177
|
+
_ref2$showDensity = _ref2.showDensity,
|
|
178
|
+
showDensity = _ref2$showDensity === void 0 ? true : _ref2$showDensity,
|
|
179
|
+
_ref2$showPresets = _ref2.showPresets,
|
|
180
|
+
showPresets = _ref2$showPresets === void 0 ? true : _ref2$showPresets,
|
|
181
|
+
onSave = _ref2.onSave,
|
|
182
|
+
_ref2$saving = _ref2.saving,
|
|
183
|
+
saving = _ref2$saving === void 0 ? false : _ref2$saving,
|
|
184
|
+
_ref2$saveLabel = _ref2.saveLabel,
|
|
185
|
+
saveLabel = _ref2$saveLabel === void 0 ? "Save" : _ref2$saveLabel;
|
|
186
|
+
var t = (0, _PowrThemeProvider.usePowrTheme)();
|
|
187
|
+
var presets = Array.isArray(t.presets) ? t.presets : [];
|
|
188
|
+
var hasPresets = showPresets && presets.length > 0;
|
|
189
|
+
var isDark = t.resolvedScheme === "dark";
|
|
190
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
191
|
+
style: styles.root
|
|
192
|
+
}, title ? /*#__PURE__*/_react["default"].createElement("h3", {
|
|
193
|
+
style: styles.title
|
|
194
|
+
}, title) : null, showScheme ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
195
|
+
style: styles.label
|
|
196
|
+
}, "Scheme"), /*#__PURE__*/_react["default"].createElement(Segmented, {
|
|
197
|
+
name: "Scheme",
|
|
198
|
+
value: t.scheme,
|
|
199
|
+
options: _tokens.POWR_SCHEMES,
|
|
200
|
+
labels: SCHEME_LABELS,
|
|
201
|
+
onChange: t.setScheme
|
|
202
|
+
}), t.scheme === "system" ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
203
|
+
style: _objectSpread(_objectSpread({}, styles.hint), {}, {
|
|
204
|
+
marginTop: 6
|
|
205
|
+
})
|
|
206
|
+
}, "Following your device: ", t.resolvedScheme, ".") : null) : null, showDensity ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
207
|
+
style: styles.label
|
|
208
|
+
}, "Density"), /*#__PURE__*/_react["default"].createElement(Segmented, {
|
|
209
|
+
name: "Density",
|
|
210
|
+
value: t.density,
|
|
211
|
+
options: Object.keys(_tokens.POWR_DENSITIES),
|
|
212
|
+
labels: DENSITY_LABELS,
|
|
213
|
+
onChange: t.setDensity
|
|
214
|
+
})) : null, hasPresets ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
215
|
+
style: styles.label
|
|
216
|
+
}, "Theme"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
217
|
+
style: styles.presetGrid
|
|
218
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
219
|
+
type: "button",
|
|
220
|
+
"aria-pressed": !t.preset,
|
|
221
|
+
onClick: function onClick() {
|
|
222
|
+
return t.setPreset(null);
|
|
223
|
+
},
|
|
224
|
+
style: styles.presetCard(!t.preset)
|
|
225
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
226
|
+
style: {
|
|
227
|
+
fontSize: 13,
|
|
228
|
+
fontWeight: 600
|
|
229
|
+
}
|
|
230
|
+
}, "Default"), /*#__PURE__*/_react["default"].createElement("span", {
|
|
231
|
+
style: styles.hint
|
|
232
|
+
}, "App\u2019s standard look")), presets.map(function (p) {
|
|
233
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
234
|
+
key: p.id,
|
|
235
|
+
type: "button",
|
|
236
|
+
"aria-pressed": t.preset === p.id,
|
|
237
|
+
onClick: function onClick() {
|
|
238
|
+
return t.setPreset(p.id);
|
|
239
|
+
},
|
|
240
|
+
style: styles.presetCard(t.preset === p.id)
|
|
241
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
242
|
+
style: {
|
|
243
|
+
fontSize: 13,
|
|
244
|
+
fontWeight: 600
|
|
245
|
+
}
|
|
246
|
+
}, p.label || p.id), /*#__PURE__*/_react["default"].createElement("span", {
|
|
247
|
+
style: styles.swatchRow
|
|
248
|
+
}, presetSwatches(p, isDark).map(function (c, i) {
|
|
249
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
250
|
+
key: i,
|
|
251
|
+
style: styles.swatch(c)
|
|
252
|
+
});
|
|
253
|
+
})));
|
|
254
|
+
}))) : null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
255
|
+
style: styles.footer
|
|
256
|
+
}, onSave ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
257
|
+
type: "button",
|
|
258
|
+
disabled: saving,
|
|
259
|
+
onClick: function onClick() {
|
|
260
|
+
return onSave({
|
|
261
|
+
scheme: t.scheme,
|
|
262
|
+
density: t.density,
|
|
263
|
+
preset: t.preset
|
|
264
|
+
});
|
|
265
|
+
},
|
|
266
|
+
style: _objectSpread(_objectSpread({}, styles.button(true)), {}, {
|
|
267
|
+
opacity: saving ? 0.6 : 1
|
|
268
|
+
})
|
|
269
|
+
}, saving ? "Saving…" : saveLabel) : null, /*#__PURE__*/_react["default"].createElement("button", {
|
|
270
|
+
type: "button",
|
|
271
|
+
onClick: t.reset,
|
|
272
|
+
style: styles.button(false)
|
|
273
|
+
}, "Reset"), !onSave ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
274
|
+
style: styles.hint
|
|
275
|
+
}, "Saved on this device.") : null));
|
|
276
|
+
}
|
package/dist/theme/index.js
CHANGED
|
@@ -64,6 +64,12 @@ Object.defineProperty(exports, "PowrThemeProvider", {
|
|
|
64
64
|
return _PowrThemeProvider["default"];
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
|
+
Object.defineProperty(exports, "PowrThemeSettings", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function get() {
|
|
70
|
+
return _PowrThemeSettings["default"];
|
|
71
|
+
}
|
|
72
|
+
});
|
|
67
73
|
Object.defineProperty(exports, "findPreset", {
|
|
68
74
|
enumerable: true,
|
|
69
75
|
get: function get() {
|
|
@@ -119,5 +125,7 @@ Object.defineProperty(exports, "usePowrTheme", {
|
|
|
119
125
|
}
|
|
120
126
|
});
|
|
121
127
|
var _PowrThemeProvider = _interopRequireWildcard(require("./PowrThemeProvider"));
|
|
128
|
+
var _PowrThemeSettings = _interopRequireDefault(require("./PowrThemeSettings"));
|
|
122
129
|
var _tokens = require("./tokens");
|
|
130
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
123
131
|
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,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = useMediaQuery;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
9
|
+
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."); }
|
|
10
|
+
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; } }
|
|
11
|
+
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; }
|
|
12
|
+
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; } }
|
|
13
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
14
|
+
/**
|
|
15
|
+
* `window.matchMedia` as a hook. SSR-safe: returns `fallback` until mounted,
|
|
16
|
+
* so server and first client render agree (no hydration mismatch).
|
|
17
|
+
*/
|
|
18
|
+
function useMediaQuery(query) {
|
|
19
|
+
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
20
|
+
var _useState = (0, _react.useState)(fallback),
|
|
21
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
22
|
+
matches = _useState2[0],
|
|
23
|
+
setMatches = _useState2[1];
|
|
24
|
+
(0, _react.useEffect)(function () {
|
|
25
|
+
if (typeof window === "undefined" || !window.matchMedia) return undefined;
|
|
26
|
+
var mq = window.matchMedia(query);
|
|
27
|
+
var update = function update() {
|
|
28
|
+
return setMatches(mq.matches);
|
|
29
|
+
};
|
|
30
|
+
update();
|
|
31
|
+
if (mq.addEventListener) mq.addEventListener("change", update);else mq.addListener(update);
|
|
32
|
+
return function () {
|
|
33
|
+
if (mq.removeEventListener) mq.removeEventListener("change", update);else mq.removeListener(update);
|
|
34
|
+
};
|
|
35
|
+
}, [query]);
|
|
36
|
+
return matches;
|
|
37
|
+
}
|