@vuu-ui/vuu-shell 0.6.25-debug → 0.6.26-debug
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/cjs/index.js +199 -151
- package/cjs/index.js.map +4 -4
- package/esm/index.js +179 -126
- package/esm/index.js.map +4 -4
- package/package.json +4 -4
- package/types/app-header/AppHeader.d.ts +2 -5
- package/types/density-switch/DensitySwitch.d.ts +1 -1
- package/types/index.d.ts +2 -0
- package/types/theme-provider/ThemeProvider.d.ts +13 -6
- package/types/theme-provider/index.d.ts +1 -0
- package/types/theme-switch/ThemeSwitch.d.ts +1 -1
package/cjs/index.js
CHANGED
|
@@ -31,10 +31,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
ConnectionStatusIcon: () => ConnectionStatusIcon,
|
|
34
|
+
DEFAULT_DENSITY: () => DEFAULT_DENSITY2,
|
|
35
|
+
DEFAULT_THEME: () => DEFAULT_THEME,
|
|
36
|
+
DEFAULT_THEME_MODE: () => DEFAULT_THEME_MODE,
|
|
37
|
+
DensitySwitch: () => DensitySwitch,
|
|
34
38
|
Feature: () => Feature,
|
|
35
39
|
LoginPanel: () => LoginPanel,
|
|
36
40
|
Shell: () => Shell,
|
|
37
41
|
ShellContextProvider: () => ShellContextProvider,
|
|
42
|
+
ThemeContext: () => ThemeContext,
|
|
43
|
+
ThemeProvider: () => ThemeProvider,
|
|
38
44
|
ThemeSwitch: () => ThemeSwitch,
|
|
39
45
|
getAuthDetailsFromCookies: () => getAuthDetailsFromCookies,
|
|
40
46
|
logout: () => logout,
|
|
@@ -81,14 +87,42 @@ var ConnectionStatusIcon = ({ connectionStatus, className, element = "span", ...
|
|
|
81
87
|
] }) });
|
|
82
88
|
};
|
|
83
89
|
|
|
90
|
+
// src/density-switch/DensitySwitch.tsx
|
|
91
|
+
var import_salt_lab = require("@heswell/salt-lab");
|
|
92
|
+
var import_react2 = require("react");
|
|
93
|
+
var import_classnames2 = __toESM(require("classnames"));
|
|
94
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
95
|
+
var classBase = "vuuDensitySwitch";
|
|
96
|
+
var densities = ["high", "medium", "low", "touch"];
|
|
97
|
+
var DEFAULT_DENSITY = "high";
|
|
98
|
+
var DensitySwitch = ({
|
|
99
|
+
className: classNameProp,
|
|
100
|
+
defaultDensity = DEFAULT_DENSITY,
|
|
101
|
+
onDensityChange
|
|
102
|
+
}) => {
|
|
103
|
+
const handleSelectionChange = (0, import_react2.useCallback)((_event, selectedItem) => {
|
|
104
|
+
onDensityChange(selectedItem);
|
|
105
|
+
}, [onDensityChange]);
|
|
106
|
+
const className = (0, import_classnames2.default)(classBase, classNameProp);
|
|
107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
108
|
+
import_salt_lab.Dropdown,
|
|
109
|
+
{
|
|
110
|
+
className,
|
|
111
|
+
source: densities,
|
|
112
|
+
defaultSelected: defaultDensity,
|
|
113
|
+
onSelectionChange: handleSelectionChange
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
};
|
|
117
|
+
|
|
84
118
|
// src/feature/Feature.tsx
|
|
85
|
-
var
|
|
119
|
+
var import_react4 = __toESM(require("react"));
|
|
86
120
|
var import_vuu_layout = require("@vuu-ui/vuu-layout");
|
|
87
121
|
|
|
88
122
|
// src/feature/ErrorBoundary.jsx
|
|
89
|
-
var
|
|
90
|
-
var
|
|
91
|
-
var ErrorBoundary = class extends
|
|
123
|
+
var import_react3 = __toESM(require("react"));
|
|
124
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
125
|
+
var ErrorBoundary = class extends import_react3.default.Component {
|
|
92
126
|
constructor(props) {
|
|
93
127
|
super(props);
|
|
94
128
|
this.state = { errorMessage: null };
|
|
@@ -101,9 +135,9 @@ var ErrorBoundary = class extends import_react2.default.Component {
|
|
|
101
135
|
}
|
|
102
136
|
render() {
|
|
103
137
|
if (this.state.errorMessage) {
|
|
104
|
-
return /* @__PURE__ */ (0,
|
|
105
|
-
/* @__PURE__ */ (0,
|
|
106
|
-
/* @__PURE__ */ (0,
|
|
138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
139
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { children: "Something went wrong." }),
|
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: this.state.errorMessage })
|
|
107
141
|
] });
|
|
108
142
|
}
|
|
109
143
|
return this.props.children;
|
|
@@ -111,17 +145,11 @@ var ErrorBoundary = class extends import_react2.default.Component {
|
|
|
111
145
|
};
|
|
112
146
|
|
|
113
147
|
// src/feature/Loader.tsx
|
|
114
|
-
var
|
|
115
|
-
var Loader = () => /* @__PURE__ */ (0,
|
|
116
|
-
|
|
117
|
-
// src/feature/css-module-loader.ts
|
|
118
|
-
var importCSS = async (path) => {
|
|
119
|
-
const container = new CSSStyleSheet();
|
|
120
|
-
return fetch(path).then((x) => x.text()).then((x) => container.replace(x));
|
|
121
|
-
};
|
|
148
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
149
|
+
var Loader = () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "hwLoader", children: "loading" });
|
|
122
150
|
|
|
123
151
|
// src/feature/Feature.tsx
|
|
124
|
-
var
|
|
152
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
125
153
|
function RawFeature({
|
|
126
154
|
url,
|
|
127
155
|
css,
|
|
@@ -129,32 +157,37 @@ function RawFeature({
|
|
|
129
157
|
...props
|
|
130
158
|
}) {
|
|
131
159
|
if (css) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
160
|
+
import(
|
|
161
|
+
/* @vite-ignore */
|
|
162
|
+
css
|
|
163
|
+
).then(
|
|
164
|
+
(cssModule) => {
|
|
165
|
+
document.adoptedStyleSheets = [
|
|
166
|
+
...document.adoptedStyleSheets,
|
|
167
|
+
cssModule.default
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
);
|
|
138
171
|
}
|
|
139
|
-
const LazyFeature =
|
|
172
|
+
const LazyFeature = import_react4.default.lazy(() => import(
|
|
140
173
|
/* @vite-ignore */
|
|
141
174
|
url
|
|
142
175
|
));
|
|
143
|
-
return /* @__PURE__ */ (0,
|
|
176
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react4.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Loader, {}), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LazyFeature, { ...props, ...params }) }) });
|
|
144
177
|
}
|
|
145
|
-
var Feature =
|
|
178
|
+
var Feature = import_react4.default.memo(RawFeature);
|
|
146
179
|
Feature.displayName = "Feature";
|
|
147
180
|
(0, import_vuu_layout.registerComponent)("Feature", Feature, "view");
|
|
148
181
|
|
|
149
182
|
// src/login/LoginPanel.tsx
|
|
150
|
-
var
|
|
183
|
+
var import_react5 = require("react");
|
|
151
184
|
var import_core = require("@salt-ds/core");
|
|
152
|
-
var
|
|
153
|
-
var
|
|
154
|
-
var
|
|
185
|
+
var import_salt_lab2 = require("@heswell/salt-lab");
|
|
186
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
187
|
+
var classBase2 = "vuuLoginPanel";
|
|
155
188
|
var LoginPanel = ({ onSubmit }) => {
|
|
156
|
-
const [username, setUserName] = (0,
|
|
157
|
-
const [password, setPassword] = (0,
|
|
189
|
+
const [username, setUserName] = (0, import_react5.useState)("");
|
|
190
|
+
const [password, setPassword] = (0, import_react5.useState)("");
|
|
158
191
|
const login = () => {
|
|
159
192
|
onSubmit(username, password);
|
|
160
193
|
};
|
|
@@ -165,10 +198,10 @@ var LoginPanel = ({ onSubmit }) => {
|
|
|
165
198
|
setPassword(value);
|
|
166
199
|
};
|
|
167
200
|
const dataIsValid = username.trim() !== "" && password.trim() !== "";
|
|
168
|
-
return /* @__PURE__ */ (0,
|
|
169
|
-
/* @__PURE__ */ (0,
|
|
170
|
-
/* @__PURE__ */ (0,
|
|
171
|
-
|
|
201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: classBase2, children: [
|
|
202
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_salt_lab2.FormField, { label: "Username", style: { width: 200 }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_salt_lab2.Input, { value: username, id: "text-username", onChange: handleUsername }) }),
|
|
203
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_salt_lab2.FormField, { label: "Password", style: { width: 200 }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
204
|
+
import_salt_lab2.Input,
|
|
172
205
|
{
|
|
173
206
|
type: "password",
|
|
174
207
|
value: password,
|
|
@@ -176,10 +209,10 @@ var LoginPanel = ({ onSubmit }) => {
|
|
|
176
209
|
onChange: handlePassword
|
|
177
210
|
}
|
|
178
211
|
) }),
|
|
179
|
-
/* @__PURE__ */ (0,
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
180
213
|
import_core.Button,
|
|
181
214
|
{
|
|
182
|
-
className: `${
|
|
215
|
+
className: `${classBase2}-login`,
|
|
183
216
|
disabled: !dataIsValid,
|
|
184
217
|
onClick: login,
|
|
185
218
|
variant: "cta",
|
|
@@ -207,16 +240,43 @@ var logout = (loginUrl) => {
|
|
|
207
240
|
|
|
208
241
|
// src/shell.tsx
|
|
209
242
|
var import_vuu_data = require("@vuu-ui/vuu-data");
|
|
243
|
+
var import_classnames5 = __toESM(require("classnames"));
|
|
210
244
|
var import_react11 = require("react");
|
|
211
245
|
|
|
246
|
+
// src/ShellContextProvider.tsx
|
|
247
|
+
var import_react6 = require("react");
|
|
248
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
249
|
+
var defaultConfig = {};
|
|
250
|
+
var ShellContext = (0, import_react6.createContext)(defaultConfig);
|
|
251
|
+
var Provider = ({
|
|
252
|
+
children,
|
|
253
|
+
context,
|
|
254
|
+
inheritedContext
|
|
255
|
+
}) => {
|
|
256
|
+
const mergedContext = {
|
|
257
|
+
...inheritedContext,
|
|
258
|
+
...context
|
|
259
|
+
};
|
|
260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ShellContext.Provider, { value: mergedContext, children });
|
|
261
|
+
};
|
|
262
|
+
var ShellContextProvider = ({
|
|
263
|
+
children,
|
|
264
|
+
value
|
|
265
|
+
}) => {
|
|
266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ShellContext.Consumer, { children: (context) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Provider, { context: value, inheritedContext: context, children }) });
|
|
267
|
+
};
|
|
268
|
+
var useShellContext = () => {
|
|
269
|
+
return (0, import_react6.useContext)(ShellContext);
|
|
270
|
+
};
|
|
271
|
+
|
|
212
272
|
// src/use-layout-config.js
|
|
213
|
-
var
|
|
273
|
+
var import_react7 = require("react");
|
|
214
274
|
var useLayoutConfig = (user, defaultLayout) => {
|
|
215
|
-
const [layout, _setLayout] = (0,
|
|
275
|
+
const [layout, _setLayout] = (0, import_react7.useState)(defaultLayout);
|
|
216
276
|
const setLayout = (layout2) => {
|
|
217
277
|
_setLayout(layout2);
|
|
218
278
|
};
|
|
219
|
-
const load = (0,
|
|
279
|
+
const load = (0, import_react7.useCallback)(
|
|
220
280
|
async (id = "latest") => {
|
|
221
281
|
fetch(`api/vui/${user.username}/${id}`, {}).then((response) => {
|
|
222
282
|
return response.ok ? response.json() : defaultLayout;
|
|
@@ -226,10 +286,10 @@ var useLayoutConfig = (user, defaultLayout) => {
|
|
|
226
286
|
},
|
|
227
287
|
[defaultLayout, user.username]
|
|
228
288
|
);
|
|
229
|
-
(0,
|
|
289
|
+
(0, import_react7.useEffect)(() => {
|
|
230
290
|
load();
|
|
231
291
|
}, [load]);
|
|
232
|
-
const saveData = (0,
|
|
292
|
+
const saveData = (0, import_react7.useCallback)(
|
|
233
293
|
(data) => {
|
|
234
294
|
fetch(`api/vui/${user.username}`, {
|
|
235
295
|
method: "POST",
|
|
@@ -243,7 +303,7 @@ var useLayoutConfig = (user, defaultLayout) => {
|
|
|
243
303
|
},
|
|
244
304
|
[defaultLayout, user]
|
|
245
305
|
);
|
|
246
|
-
const loadLayoutById = (0,
|
|
306
|
+
const loadLayoutById = (0, import_react7.useCallback)(
|
|
247
307
|
(id) => {
|
|
248
308
|
load(id);
|
|
249
309
|
},
|
|
@@ -253,34 +313,7 @@ var useLayoutConfig = (user, defaultLayout) => {
|
|
|
253
313
|
};
|
|
254
314
|
var use_layout_config_default = useLayoutConfig;
|
|
255
315
|
|
|
256
|
-
// src/ShellContextProvider.tsx
|
|
257
|
-
var import_react6 = require("react");
|
|
258
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
259
|
-
var defaultConfig = {};
|
|
260
|
-
var ShellContext = (0, import_react6.createContext)(defaultConfig);
|
|
261
|
-
var Provider = ({
|
|
262
|
-
children,
|
|
263
|
-
context,
|
|
264
|
-
inheritedContext
|
|
265
|
-
}) => {
|
|
266
|
-
const mergedContext = {
|
|
267
|
-
...inheritedContext,
|
|
268
|
-
...context
|
|
269
|
-
};
|
|
270
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ShellContext.Provider, { value: mergedContext, children });
|
|
271
|
-
};
|
|
272
|
-
var ShellContextProvider = ({
|
|
273
|
-
children,
|
|
274
|
-
value
|
|
275
|
-
}) => {
|
|
276
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ShellContext.Consumer, { children: (context) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Provider, { context: value, inheritedContext: context, children }) });
|
|
277
|
-
};
|
|
278
|
-
var useShellContext = () => {
|
|
279
|
-
return (0, import_react6.useContext)(ShellContext);
|
|
280
|
-
};
|
|
281
|
-
|
|
282
316
|
// src/shell.tsx
|
|
283
|
-
var import_classnames5 = __toESM(require("classnames"));
|
|
284
317
|
var import_vuu_layout2 = require("@vuu-ui/vuu-layout");
|
|
285
318
|
|
|
286
319
|
// src/app-header/AppHeader.tsx
|
|
@@ -288,15 +321,15 @@ var import_react10 = require("react");
|
|
|
288
321
|
|
|
289
322
|
// src/user-profile/UserProfile.tsx
|
|
290
323
|
var import_core3 = require("@salt-ds/core");
|
|
291
|
-
var
|
|
324
|
+
var import_salt_lab4 = require("@heswell/salt-lab");
|
|
292
325
|
var import_icons2 = require("@salt-ds/icons");
|
|
293
326
|
|
|
294
327
|
// src/user-profile/UserPanel.tsx
|
|
295
328
|
var import_vuu_utils2 = require("@vuu-ui/vuu-utils");
|
|
296
|
-
var
|
|
329
|
+
var import_salt_lab3 = require("@heswell/salt-lab");
|
|
297
330
|
var import_core2 = require("@salt-ds/core");
|
|
298
331
|
var import_icons = require("@salt-ds/icons");
|
|
299
|
-
var
|
|
332
|
+
var import_react8 = require("react");
|
|
300
333
|
|
|
301
334
|
// src/get-layout-history.ts
|
|
302
335
|
var getLayoutHistory = async (user) => {
|
|
@@ -309,16 +342,16 @@ var getLayoutHistory = async (user) => {
|
|
|
309
342
|
};
|
|
310
343
|
|
|
311
344
|
// src/user-profile/UserPanel.tsx
|
|
312
|
-
var
|
|
345
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
313
346
|
var byLastUpdate = ({ lastUpdate: l1 }, { lastUpdate: l2 }) => {
|
|
314
347
|
return l2 === l1 ? 0 : l2 < l1 ? -1 : 1;
|
|
315
348
|
};
|
|
316
349
|
var HistoryListItem = (props) => {
|
|
317
|
-
return /* @__PURE__ */ (0,
|
|
350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_salt_lab3.ListItem, { ...props });
|
|
318
351
|
};
|
|
319
|
-
var UserPanel = (0,
|
|
320
|
-
const [history, setHistory] = (0,
|
|
321
|
-
(0,
|
|
352
|
+
var UserPanel = (0, import_react8.forwardRef)(function UserPanel2({ loginUrl, onNavigate, user, layoutId = "latest" }, forwardedRef) {
|
|
353
|
+
const [history, setHistory] = (0, import_react8.useState)([]);
|
|
354
|
+
(0, import_react8.useEffect)(() => {
|
|
322
355
|
async function getHistory() {
|
|
323
356
|
const history2 = await getLayoutHistory(user);
|
|
324
357
|
const sortedHistory = history2.filter((item) => item.id !== "latest").sort(byLastUpdate).map(({ id, lastUpdate }) => ({
|
|
@@ -331,7 +364,7 @@ var UserPanel = (0, import_react7.forwardRef)(function UserPanel2({ loginUrl, on
|
|
|
331
364
|
}
|
|
332
365
|
getHistory();
|
|
333
366
|
}, [user]);
|
|
334
|
-
const handleHisorySelected = (0,
|
|
367
|
+
const handleHisorySelected = (0, import_react8.useCallback)(
|
|
335
368
|
(evt, selected2) => {
|
|
336
369
|
if (selected2) {
|
|
337
370
|
onNavigate(selected2.id);
|
|
@@ -339,13 +372,13 @@ var UserPanel = (0, import_react7.forwardRef)(function UserPanel2({ loginUrl, on
|
|
|
339
372
|
},
|
|
340
373
|
[onNavigate]
|
|
341
374
|
);
|
|
342
|
-
const handleLogout = (0,
|
|
375
|
+
const handleLogout = (0, import_react8.useCallback)(() => {
|
|
343
376
|
logout(loginUrl);
|
|
344
377
|
}, [loginUrl]);
|
|
345
378
|
const selected = history.length === 0 ? null : layoutId === "latest" ? history[0] : history.find((i) => i.id === layoutId);
|
|
346
|
-
return /* @__PURE__ */ (0,
|
|
347
|
-
/* @__PURE__ */ (0,
|
|
348
|
-
|
|
379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "vuuUserPanel", ref: forwardedRef, children: [
|
|
380
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
381
|
+
import_salt_lab3.List,
|
|
349
382
|
{
|
|
350
383
|
ListItem: HistoryListItem,
|
|
351
384
|
className: "vuuUserPanel-history",
|
|
@@ -354,15 +387,15 @@ var UserPanel = (0, import_react7.forwardRef)(function UserPanel2({ loginUrl, on
|
|
|
354
387
|
source: history
|
|
355
388
|
}
|
|
356
389
|
),
|
|
357
|
-
/* @__PURE__ */ (0,
|
|
358
|
-
/* @__PURE__ */ (0,
|
|
390
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "vuuUserPanel-buttonBar", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_core2.Button, { "aria-label": "logout", onClick: handleLogout, children: [
|
|
391
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons.ExportIcon, {}),
|
|
359
392
|
" Logout"
|
|
360
393
|
] }) })
|
|
361
394
|
] });
|
|
362
395
|
});
|
|
363
396
|
|
|
364
397
|
// src/user-profile/UserProfile.tsx
|
|
365
|
-
var
|
|
398
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
366
399
|
var UserProfile = ({
|
|
367
400
|
layoutId,
|
|
368
401
|
loginUrl,
|
|
@@ -372,9 +405,9 @@ var UserProfile = ({
|
|
|
372
405
|
const handleNavigate = (id) => {
|
|
373
406
|
onNavigate(id);
|
|
374
407
|
};
|
|
375
|
-
return /* @__PURE__ */ (0,
|
|
376
|
-
/* @__PURE__ */ (0,
|
|
377
|
-
/* @__PURE__ */ (0,
|
|
408
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_salt_lab4.DropdownBase, { className: "vuuUserProfile", placement: "bottom-end", children: [
|
|
409
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core3.Button, { variant: "secondary", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons2.UserSolidIcon, {}) }),
|
|
410
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
378
411
|
UserPanel,
|
|
379
412
|
{
|
|
380
413
|
layoutId,
|
|
@@ -387,12 +420,12 @@ var UserProfile = ({
|
|
|
387
420
|
};
|
|
388
421
|
|
|
389
422
|
// src/theme-switch/ThemeSwitch.tsx
|
|
390
|
-
var
|
|
391
|
-
var
|
|
423
|
+
var import_salt_lab5 = require("@heswell/salt-lab");
|
|
424
|
+
var import_classnames3 = __toESM(require("classnames"));
|
|
392
425
|
var import_core4 = require("@salt-ds/core");
|
|
393
|
-
var
|
|
394
|
-
var
|
|
395
|
-
var
|
|
426
|
+
var import_react9 = require("react");
|
|
427
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
428
|
+
var classBase3 = "vuuThemeSwitch";
|
|
396
429
|
var modes = ["light", "dark"];
|
|
397
430
|
var ThemeSwitch = ({
|
|
398
431
|
className: classNameProp,
|
|
@@ -408,7 +441,7 @@ var ThemeSwitch = ({
|
|
|
408
441
|
state: "mode"
|
|
409
442
|
});
|
|
410
443
|
const selectedIndex = modes.indexOf(mode);
|
|
411
|
-
const handleChangeSecondary = (0,
|
|
444
|
+
const handleChangeSecondary = (0, import_react9.useCallback)(
|
|
412
445
|
(_evt, index) => {
|
|
413
446
|
const mode2 = modes[index];
|
|
414
447
|
setMode(mode2);
|
|
@@ -416,25 +449,25 @@ var ThemeSwitch = ({
|
|
|
416
449
|
},
|
|
417
450
|
[onChange, setMode]
|
|
418
451
|
);
|
|
419
|
-
const className = (0,
|
|
420
|
-
return /* @__PURE__ */ (0,
|
|
421
|
-
|
|
452
|
+
const className = (0, import_classnames3.default)(classBase3, classNameProp);
|
|
453
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
454
|
+
import_salt_lab5.ToggleButtonGroup,
|
|
422
455
|
{
|
|
423
456
|
className,
|
|
424
457
|
...htmlAttributes,
|
|
425
458
|
onChange: handleChangeSecondary,
|
|
426
459
|
selectedIndex,
|
|
427
460
|
children: [
|
|
428
|
-
/* @__PURE__ */ (0,
|
|
429
|
-
|
|
461
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
462
|
+
import_salt_lab5.ToggleButton,
|
|
430
463
|
{
|
|
431
464
|
"aria-label": "alert",
|
|
432
465
|
tooltipText: "Light Theme",
|
|
433
466
|
"data-icon": "light"
|
|
434
467
|
}
|
|
435
468
|
),
|
|
436
|
-
/* @__PURE__ */ (0,
|
|
437
|
-
|
|
469
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
470
|
+
import_salt_lab5.ToggleButton,
|
|
438
471
|
{
|
|
439
472
|
"aria-label": "home",
|
|
440
473
|
tooltipText: "Dark Theme",
|
|
@@ -448,36 +481,6 @@ var ThemeSwitch = ({
|
|
|
448
481
|
|
|
449
482
|
// src/app-header/AppHeader.tsx
|
|
450
483
|
var import_classnames4 = __toESM(require("classnames"));
|
|
451
|
-
|
|
452
|
-
// src/density-switch/DensitySwitch.tsx
|
|
453
|
-
var import_salt_lab5 = require("@heswell/salt-lab");
|
|
454
|
-
var import_core5 = require("@salt-ds/core");
|
|
455
|
-
var import_react9 = require("react");
|
|
456
|
-
var import_classnames3 = __toESM(require("classnames"));
|
|
457
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
458
|
-
var classBase3 = "vuuDensitySwitch";
|
|
459
|
-
var densities = ["high", "medium", "low", "touch"];
|
|
460
|
-
var DensitySwitch = ({
|
|
461
|
-
className: classNameProp,
|
|
462
|
-
defaultDensity = import_core5.DEFAULT_DENSITY,
|
|
463
|
-
onDensityChange
|
|
464
|
-
}) => {
|
|
465
|
-
const handleSelectionChange = (0, import_react9.useCallback)((_event, selectedItem) => {
|
|
466
|
-
onDensityChange(selectedItem);
|
|
467
|
-
}, [onDensityChange]);
|
|
468
|
-
const className = (0, import_classnames3.default)(classBase3, classNameProp);
|
|
469
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
470
|
-
import_salt_lab5.Dropdown,
|
|
471
|
-
{
|
|
472
|
-
className,
|
|
473
|
-
source: densities,
|
|
474
|
-
defaultSelected: defaultDensity,
|
|
475
|
-
onSelectionChange: handleSelectionChange
|
|
476
|
-
}
|
|
477
|
-
);
|
|
478
|
-
};
|
|
479
|
-
|
|
480
|
-
// src/app-header/AppHeader.tsx
|
|
481
484
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
482
485
|
var classBase4 = "vuuAppHeader";
|
|
483
486
|
var AppHeader = ({
|
|
@@ -487,23 +490,16 @@ var AppHeader = ({
|
|
|
487
490
|
onNavigate,
|
|
488
491
|
onSwitchTheme,
|
|
489
492
|
themeMode = "light",
|
|
490
|
-
onDensitySwitch,
|
|
491
|
-
density = "medium",
|
|
492
493
|
user,
|
|
493
494
|
...htmlAttributes
|
|
494
495
|
}) => {
|
|
495
|
-
const className = (0, import_classnames4.default)(classBase4, classNameProp
|
|
496
|
+
const className = (0, import_classnames4.default)(classBase4, classNameProp);
|
|
496
497
|
const handleSwitchTheme = (0, import_react10.useCallback)(
|
|
497
498
|
(mode) => onSwitchTheme == null ? void 0 : onSwitchTheme(mode),
|
|
498
499
|
[onSwitchTheme]
|
|
499
500
|
);
|
|
500
|
-
const handleDensitySwitch = (0, import_react10.useCallback)(
|
|
501
|
-
(density2) => onDensitySwitch == null ? void 0 : onDensitySwitch(density2),
|
|
502
|
-
[onDensitySwitch]
|
|
503
|
-
);
|
|
504
501
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("header", { className, ...htmlAttributes, children: [
|
|
505
502
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ThemeSwitch, { defaultMode: themeMode, onChange: handleSwitchTheme }),
|
|
506
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DensitySwitch, { defaultDensity: density, onDensityChange: handleDensitySwitch }),
|
|
507
503
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
508
504
|
UserProfile,
|
|
509
505
|
{
|
|
@@ -543,7 +539,6 @@ var Shell = ({
|
|
|
543
539
|
...htmlAttributes
|
|
544
540
|
}) => {
|
|
545
541
|
const rootRef = (0, import_react11.useRef)(null);
|
|
546
|
-
const [density, setDensity] = (0, import_react11.useState)("medium");
|
|
547
542
|
const paletteView = (0, import_react11.useRef)(null);
|
|
548
543
|
const [open, setOpen] = (0, import_react11.useState)(false);
|
|
549
544
|
const layoutId = (0, import_react11.useRef)("latest");
|
|
@@ -562,12 +557,6 @@ var Shell = ({
|
|
|
562
557
|
rootRef.current.dataset.mode = mode;
|
|
563
558
|
}
|
|
564
559
|
}, []);
|
|
565
|
-
const handleDensitySwitch = (0, import_react11.useCallback)(
|
|
566
|
-
(density2) => {
|
|
567
|
-
setDensity(density2);
|
|
568
|
-
},
|
|
569
|
-
[setDensity]
|
|
570
|
-
);
|
|
571
560
|
const handleDrawerClick = (e) => {
|
|
572
561
|
var _a;
|
|
573
562
|
const target = e.target;
|
|
@@ -623,7 +612,7 @@ var Shell = ({
|
|
|
623
612
|
"vuuShell",
|
|
624
613
|
classNameProp,
|
|
625
614
|
"salt-theme",
|
|
626
|
-
|
|
615
|
+
"salt-density-high"
|
|
627
616
|
);
|
|
628
617
|
return (
|
|
629
618
|
// ShellContext TBD
|
|
@@ -648,11 +637,10 @@ var Shell = ({
|
|
|
648
637
|
loginUrl,
|
|
649
638
|
user,
|
|
650
639
|
onNavigate: handleNavigate,
|
|
651
|
-
onSwitchTheme: handleSwitchTheme
|
|
652
|
-
onDensitySwitch: handleDensitySwitch
|
|
640
|
+
onSwitchTheme: handleSwitchTheme
|
|
653
641
|
}
|
|
654
642
|
),
|
|
655
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_vuu_layout2.
|
|
643
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_vuu_layout2.DockLayout, { style: { flex: 1 }, children: getDrawers().concat(
|
|
656
644
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
657
645
|
import_vuu_layout2.DraggableLayout,
|
|
658
646
|
{
|
|
@@ -671,4 +659,64 @@ var Shell = ({
|
|
|
671
659
|
] })
|
|
672
660
|
);
|
|
673
661
|
};
|
|
662
|
+
|
|
663
|
+
// src/theme-provider/ThemeProvider.tsx
|
|
664
|
+
var import_react12 = require("react");
|
|
665
|
+
var import_classnames6 = __toESM(require("classnames"));
|
|
666
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
667
|
+
var DEFAULT_DENSITY2 = "medium";
|
|
668
|
+
var DEFAULT_THEME = "salt-theme";
|
|
669
|
+
var DEFAULT_THEME_MODE = "light";
|
|
670
|
+
var ThemeContext = (0, import_react12.createContext)({
|
|
671
|
+
density: "high",
|
|
672
|
+
theme: "salt-theme",
|
|
673
|
+
themeMode: "light"
|
|
674
|
+
});
|
|
675
|
+
var createThemedChildren = (children, theme, themeMode, density) => {
|
|
676
|
+
var _a;
|
|
677
|
+
if ((0, import_react12.isValidElement)(children)) {
|
|
678
|
+
return (0, import_react12.cloneElement)(children, {
|
|
679
|
+
className: (0, import_classnames6.default)(
|
|
680
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
681
|
+
(_a = children.props) == null ? void 0 : _a.className,
|
|
682
|
+
theme,
|
|
683
|
+
`salt-density-${density}`
|
|
684
|
+
),
|
|
685
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
686
|
+
// @ts-expect-error
|
|
687
|
+
"data-mode": themeMode
|
|
688
|
+
});
|
|
689
|
+
} else {
|
|
690
|
+
console.warn(
|
|
691
|
+
`
|
|
692
|
+
ThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.
|
|
693
|
+
Wrap elements with a single container`
|
|
694
|
+
);
|
|
695
|
+
return children;
|
|
696
|
+
}
|
|
697
|
+
};
|
|
698
|
+
var ThemeProvider = ({
|
|
699
|
+
children,
|
|
700
|
+
theme: themeProp,
|
|
701
|
+
themeMode: themeModeProp,
|
|
702
|
+
density: densityProp
|
|
703
|
+
}) => {
|
|
704
|
+
var _a, _b, _c;
|
|
705
|
+
const {
|
|
706
|
+
density: inheritedDensity,
|
|
707
|
+
themeMode: inheritedThemeMode,
|
|
708
|
+
theme: inheritedTheme
|
|
709
|
+
} = (0, import_react12.useContext)(ThemeContext);
|
|
710
|
+
const density = (_a = densityProp != null ? densityProp : inheritedDensity) != null ? _a : DEFAULT_DENSITY2;
|
|
711
|
+
const themeMode = (_b = themeModeProp != null ? themeModeProp : inheritedThemeMode) != null ? _b : DEFAULT_THEME_MODE;
|
|
712
|
+
const theme = (_c = themeProp != null ? themeProp : inheritedTheme) != null ? _c : DEFAULT_THEME;
|
|
713
|
+
const themedChildren = createThemedChildren(
|
|
714
|
+
children,
|
|
715
|
+
theme,
|
|
716
|
+
themeMode,
|
|
717
|
+
density
|
|
718
|
+
);
|
|
719
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ThemeContext.Provider, { value: { themeMode, density, theme }, children: themedChildren });
|
|
720
|
+
};
|
|
721
|
+
ThemeProvider.displayName = "ThemeProvider";
|
|
674
722
|
//# sourceMappingURL=index.js.map
|