@dsh-plugin/dsh-loader 1.1.0-dev.32287576957 → 1.2.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/adapters/dsh-1-x.js +4 -0
- package/dist/adapters/dsh-1-x.js.map +1 -1
- package/dist/api.d.ts +2 -0
- package/dist/api.js +18 -2
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +0 -1
- package/dist/client.js +13 -3
- package/dist/client.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/patch.d.ts +112 -0
- package/dist/patch.js +179 -0
- package/dist/patch.js.map +1 -0
- package/dist/services/dsh-symbols.d.ts +70 -0
- package/dist/services/dsh-symbols.js +82 -0
- package/dist/services/dsh-symbols.js.map +1 -0
- package/dist/services/llm.d.ts +30 -0
- package/dist/services/llm.js +35 -0
- package/dist/services/llm.js.map +1 -0
- package/dist/services/registry.d.ts +144 -0
- package/dist/services/registry.js +209 -0
- package/dist/services/registry.js.map +1 -0
- package/dist/services/settings.d.ts +6 -0
- package/dist/services/settings.js +29 -1
- package/dist/services/settings.js.map +1 -1
- package/dist/services/web.js +20 -4
- package/dist/services/web.js.map +1 -1
- package/dist/setup.js +17 -1
- package/dist/setup.js.map +1 -1
- package/dist/types.d.ts +55 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/lib/client.js +2775 -4
- package/lib/client.js.map +1 -1
- package/lib/types/adapters/dsh-1-x.d.ts +23 -0
- package/lib/types/adapters/index.d.ts +22 -0
- package/lib/types/client-ui.d.ts +40 -0
- package/lib/types/client.d.ts +156 -0
- package/lib/types/patch.d.ts +112 -0
- package/lib/types/registry.d.ts +35 -0
- package/lib/types/services/dsh-symbols.d.ts +70 -0
- package/lib/types/services/llm.d.ts +30 -0
- package/lib/types/services/registry.d.ts +144 -0
- package/lib/types/services/settings.d.ts +47 -0
- package/lib/types/types.d.ts +166 -0
- package/lib/types/ui/anchors.d.ts +56 -0
- package/lib/types/ui/components.d.ts +159 -0
- package/lib/types/ui/icons.d.ts +142 -0
- package/lib/types/ui/index.d.ts +30 -0
- package/lib/types/ui/menu.d.ts +104 -0
- package/lib/types/ui/slots.d.ts +152 -0
- package/lib/types/ui/style.d.ts +97 -0
- package/lib/types/version.d.ts +2 -0
- package/package.json +42 -9
- package/src/stable/compaction-basic.d.ts +1 -0
- package/src/stable/compaction-basic.js +5 -0
- package/src/stable/credentials.d.ts +1 -0
- package/src/stable/credentials.js +5 -0
- package/src/stable/subagent.d.ts +1 -0
- package/src/stable/subagent.js +5 -0
- package/src/stable/timeout.d.ts +1 -0
- package/src/stable/timeout.js +5 -0
package/lib/client.js
CHANGED
|
@@ -4,8 +4,35 @@ window.__ModuleLoader__.load({
|
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
|
+
//#region \0rolldown/runtime.js
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
16
|
+
key = keys[i];
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: ((k) => from[k]).bind(null, key),
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
25
|
+
value: mod,
|
|
26
|
+
enumerable: true
|
|
27
|
+
}) : target, mod));
|
|
28
|
+
//#endregion
|
|
29
|
+
let react = require("react");
|
|
30
|
+
let react$1 = __toESM(react, 1);
|
|
31
|
+
react = __toESM(react);
|
|
32
|
+
let react_dom_client = require("react-dom/client");
|
|
33
|
+
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
7
34
|
//#region src/version.ts
|
|
8
|
-
const LOADER_VERSION = "1.
|
|
35
|
+
const LOADER_VERSION = "1.2.0";
|
|
9
36
|
const LOG_PREFIX = "[dshloader]";
|
|
10
37
|
//#endregion
|
|
11
38
|
//#region src/adapters/dsh-1-x.ts
|
|
@@ -30,6 +57,14 @@ window.__ModuleLoader__.load({
|
|
|
30
57
|
}];
|
|
31
58
|
//#endregion
|
|
32
59
|
//#region src/client.ts
|
|
60
|
+
/**
|
|
61
|
+
* The ambient browser `window`, when this module runs in a browser-like realm.
|
|
62
|
+
* Read off `globalThis` so no DOM lib and no global declaration is required.
|
|
63
|
+
*/
|
|
64
|
+
function ambientWindow$1() {
|
|
65
|
+
const found = globalThis.window;
|
|
66
|
+
return typeof found === "object" && found !== null ? found : void 0;
|
|
67
|
+
}
|
|
33
68
|
var ModuleNotFoundError = class extends Error {
|
|
34
69
|
specifier;
|
|
35
70
|
constructor(specifier) {
|
|
@@ -114,7 +149,7 @@ window.__ModuleLoader__.load({
|
|
|
114
149
|
* Install dshloader into a browser-like environment.
|
|
115
150
|
*/
|
|
116
151
|
function installClient(opts = {}) {
|
|
117
|
-
const win = opts.window ?? (
|
|
152
|
+
const win = opts.window ?? ambientWindow$1();
|
|
118
153
|
if (win === void 0) return void 0;
|
|
119
154
|
const dshVersion = opts.dshVersion ?? win.__DSHLOADER_VERSION__;
|
|
120
155
|
const adapter = pickClientAdapter(dshVersion);
|
|
@@ -260,22 +295,2758 @@ window.__ModuleLoader__.load({
|
|
|
260
295
|
win.fetch = originalFetch;
|
|
261
296
|
};
|
|
262
297
|
}
|
|
298
|
+
//#endregion
|
|
299
|
+
//#region src/ui/anchors.ts
|
|
300
|
+
/** Query helper that tolerates an invalid selector (returns nothing). */
|
|
301
|
+
function all(selector) {
|
|
302
|
+
return () => {
|
|
303
|
+
if (typeof document === "undefined") return [];
|
|
304
|
+
try {
|
|
305
|
+
return document.querySelectorAll(selector);
|
|
306
|
+
} catch {
|
|
307
|
+
return [];
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/** Anchor names dshloader ships for the dsh 1.x shell. */
|
|
312
|
+
const ANCHOR_NAMES = [
|
|
313
|
+
"conversation.status",
|
|
314
|
+
"conversation.column",
|
|
315
|
+
"shell.overlay",
|
|
316
|
+
"desktop.detailsSurface",
|
|
317
|
+
"layout.frame",
|
|
318
|
+
"settings.nav"
|
|
319
|
+
];
|
|
320
|
+
/**
|
|
321
|
+
* The built-in anchors for dsh 1.x (verified against dsh 0.1.0-rc.6).
|
|
322
|
+
*
|
|
323
|
+
* Provenance of each selector:
|
|
324
|
+
*
|
|
325
|
+
* - `conversation.status` — dsh-thought-buddy, `src/client/index.ts:632-637`:
|
|
326
|
+
* `[data-conversation-scroll] [role="status"]` with a whole-document
|
|
327
|
+
* `[role="status"]` fallback. Callers add their own `accept` (thought-buddy
|
|
328
|
+
* matches the status text) via {@link AnchorSpec.accept} on a redefinition,
|
|
329
|
+
* or filter in `MountSpec.when`.
|
|
330
|
+
* - `conversation.column` — dsh-better-sidebar, `src/client/Sidebar.tsx:396`:
|
|
331
|
+
* `#root [data-slot="conversation"]`.
|
|
332
|
+
* - `shell.overlay` — dsh-code-review, `src/client.ts:1930` / `:2528`:
|
|
333
|
+
* `[data-shell-overlay]`.
|
|
334
|
+
* - `desktop.detailsSurface` — dsh-code-review, `src/client.ts:1957`:
|
|
335
|
+
* `.dshDesktopDetailsSurface`. A CSS-module-adjacent CLASS name and therefore
|
|
336
|
+
* the most fragile anchor in the table; kept because the behaviour needs it.
|
|
337
|
+
* - `layout.frame` — dsh-code-review, `src/client.ts:1176` / `:1209` / `:1244`:
|
|
338
|
+
* the frame whose `style.gridTemplateColumns` carries the sidebar width and
|
|
339
|
+
* whose `data-sidebar-collapsed` attribute carries the collapsed state. This
|
|
340
|
+
* anchor is READ (via `ui.hosts('layout.frame')`), never mounted into.
|
|
341
|
+
* - `settings.nav` — dsh-better-sidebar, `src/client/settings-nav-icon.ts`:
|
|
342
|
+
* the settings navigation list that gets an icon synced into it.
|
|
343
|
+
*/
|
|
344
|
+
const BUILTIN_ANCHORS = {
|
|
345
|
+
"conversation.status": {
|
|
346
|
+
describe: "Conversation turn-status strip ([data-conversation-scroll] [role=\"status\"])",
|
|
347
|
+
find: all("[data-conversation-scroll] [role=\"status\"]"),
|
|
348
|
+
fallback: all("[role=\"status\"]"),
|
|
349
|
+
insert: "prepend"
|
|
350
|
+
},
|
|
351
|
+
"conversation.column": {
|
|
352
|
+
describe: "Conversation centre column (#root [data-slot=\"conversation\"])",
|
|
353
|
+
find: all("#root [data-slot=\"conversation\"]"),
|
|
354
|
+
insert: "append"
|
|
355
|
+
},
|
|
356
|
+
"shell.overlay": {
|
|
357
|
+
describe: "Shell overlay host ([data-shell-overlay])",
|
|
358
|
+
find: all("[data-shell-overlay]"),
|
|
359
|
+
insert: "append"
|
|
360
|
+
},
|
|
361
|
+
"desktop.detailsSurface": {
|
|
362
|
+
describe: "Desktop details surface (.dshDesktopDetailsSurface) — class-based, fragile",
|
|
363
|
+
find: all(".dshDesktopDetailsSurface"),
|
|
364
|
+
insert: "append"
|
|
365
|
+
},
|
|
366
|
+
"layout.frame": {
|
|
367
|
+
describe: "Layout frame carrying sidebar width / collapsed state (read-only anchor)",
|
|
368
|
+
find: all("[data-sidebar-collapsed], [data-shell-frame]"),
|
|
369
|
+
insert: "append"
|
|
370
|
+
},
|
|
371
|
+
"settings.nav": {
|
|
372
|
+
describe: "Settings navigation list",
|
|
373
|
+
find: all("[data-settings-nav]"),
|
|
374
|
+
fallback: all("[role=\"tablist\"]"),
|
|
375
|
+
insert: "append"
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
/**
|
|
379
|
+
* Project one `layout.frame` host into {@link LayoutFrameState}.
|
|
380
|
+
*
|
|
381
|
+
* Encapsulates the `style.gridTemplateColumns` parsing dsh-code-review does at
|
|
382
|
+
* `src/client.ts:1176`, so the regex lives with the anchor it belongs to.
|
|
383
|
+
*/
|
|
384
|
+
function readLayoutFrame(host) {
|
|
385
|
+
const collapsed = host.hasAttribute("data-sidebar-collapsed");
|
|
386
|
+
let firstColumnPx;
|
|
387
|
+
const style = host.style;
|
|
388
|
+
const template = typeof style?.gridTemplateColumns === "string" ? style.gridTemplateColumns : "";
|
|
389
|
+
const match = /^\s*([\d.]+)px/.exec(template);
|
|
390
|
+
if (match !== null) {
|
|
391
|
+
const value = Number.parseFloat(match[1]);
|
|
392
|
+
if (Number.isFinite(value)) firstColumnPx = value;
|
|
393
|
+
}
|
|
394
|
+
return {
|
|
395
|
+
collapsed,
|
|
396
|
+
firstColumnPx
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
//#endregion
|
|
400
|
+
//#region src/ui/slots.tsx
|
|
401
|
+
/**
|
|
402
|
+
* The dshloader UI SLOT engine (`ctx.dshLoader.ui` / `__dshLoader__.ui`).
|
|
403
|
+
*
|
|
404
|
+
* dsh's Web shell offers official slots for a few places (`settings.section`,
|
|
405
|
+
* `conversation.chat.node`, …) but not for everything plugins need to decorate.
|
|
406
|
+
* Today four plugins in this family each hand-roll the same DOM-injection
|
|
407
|
+
* boilerplate against hardcoded shell selectors:
|
|
408
|
+
*
|
|
409
|
+
* - dsh-thought-buddy → `[data-conversation-scroll] [role="status"]`
|
|
410
|
+
* - dsh-auxiliary → the Models page's editable model rows
|
|
411
|
+
* - dsh-code-review → `[data-shell-overlay]`, `.dshDesktopDetailsSurface`
|
|
412
|
+
* - dsh-better-sidebar → `#root [data-slot="conversation"]`, theme root, …
|
|
413
|
+
*
|
|
414
|
+
* Every one of them re-implements: a MutationObserver, requestAnimationFrame
|
|
415
|
+
* coalescing, an idempotence guard, self-healing after a React re-render, and
|
|
416
|
+
* teardown. This module implements that ONCE and moves the shell selectors into
|
|
417
|
+
* a named ANCHOR TABLE the version adapter owns — so when dsh moves its DOM,
|
|
418
|
+
* one anchor entry changes instead of four plugins.
|
|
419
|
+
*
|
|
420
|
+
* What it cannot do: invent an anchor that no longer exists. A vanished anchor
|
|
421
|
+
* turns N silent breakages into ONE diagnosable one (`ui.diagnose()`), which is
|
|
422
|
+
* the honest goal — DOM injection is centralised here, not made robust. The
|
|
423
|
+
* durable fix stays "get the anchor promoted to an official slot".
|
|
424
|
+
*
|
|
425
|
+
* @module @dsh-plugin/dsh-loader/ui/slots
|
|
426
|
+
*/
|
|
427
|
+
/** Attribute marking a generated mount node (and making re-mount idempotent). */
|
|
428
|
+
const SLOT_ATTR = "data-dshl-slot";
|
|
429
|
+
/**
|
|
430
|
+
* Build the `ui` facade with its own observer. One engine serves every anchor
|
|
431
|
+
* and every mount, so the shell is observed exactly once regardless of how many
|
|
432
|
+
* plugins inject.
|
|
433
|
+
*/
|
|
434
|
+
function createUiAPI(options = {}) {
|
|
435
|
+
const warn = options.warn ?? ((message) => console.warn(message));
|
|
436
|
+
const anchors = /* @__PURE__ */ new Map();
|
|
437
|
+
/** anchor name → mount id → spec */
|
|
438
|
+
const mounts = /* @__PURE__ */ new Map();
|
|
439
|
+
/** anchor name → mount id → host → instance */
|
|
440
|
+
const live = /* @__PURE__ */ new Map();
|
|
441
|
+
/** Anchors whose primary locator came up empty on the last sweep. */
|
|
442
|
+
const fellBack = /* @__PURE__ */ new Set();
|
|
443
|
+
/** `onDomSettled` subscribers, notified once per coalesced batch. */
|
|
444
|
+
const settledListeners = /* @__PURE__ */ new Set();
|
|
445
|
+
let observer;
|
|
446
|
+
let scheduled = false;
|
|
447
|
+
let destroyed = false;
|
|
448
|
+
const hasDom = () => typeof document !== "undefined" && typeof MutationObserver !== "undefined";
|
|
449
|
+
/** Resolve an anchor to its host elements, recording fallback use. */
|
|
450
|
+
const resolve = (name, spec) => {
|
|
451
|
+
const collect = (source) => {
|
|
452
|
+
if (source === void 0) return [];
|
|
453
|
+
try {
|
|
454
|
+
return [...source()];
|
|
455
|
+
} catch {
|
|
456
|
+
return [];
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
let hosts = collect(spec.find);
|
|
460
|
+
if (hosts.length === 0) {
|
|
461
|
+
const alt = collect(spec.fallback);
|
|
462
|
+
if (alt.length > 0) {
|
|
463
|
+
fellBack.add(name);
|
|
464
|
+
hosts = alt;
|
|
465
|
+
} else fellBack.delete(name);
|
|
466
|
+
} else fellBack.delete(name);
|
|
467
|
+
if (spec.accept !== void 0) hosts = hosts.filter((host) => {
|
|
468
|
+
try {
|
|
469
|
+
return spec.accept(host);
|
|
470
|
+
} catch {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
return [...new Set(hosts)];
|
|
475
|
+
};
|
|
476
|
+
/** Insert a freshly created mount node relative to its host. */
|
|
477
|
+
const place = (host, node, mode) => {
|
|
478
|
+
switch (mode) {
|
|
479
|
+
case "prepend":
|
|
480
|
+
host.insertBefore(node, host.firstChild);
|
|
481
|
+
return;
|
|
482
|
+
case "before":
|
|
483
|
+
host.parentNode?.insertBefore(node, host);
|
|
484
|
+
return;
|
|
485
|
+
case "after":
|
|
486
|
+
host.parentNode?.insertBefore(node, host.nextSibling);
|
|
487
|
+
return;
|
|
488
|
+
default: host.appendChild(node);
|
|
489
|
+
}
|
|
490
|
+
};
|
|
491
|
+
/** Tear down one instance, containing any cleanup failure. */
|
|
492
|
+
const teardown = (instance) => {
|
|
493
|
+
try {
|
|
494
|
+
instance.cleanup?.();
|
|
495
|
+
} catch (error) {
|
|
496
|
+
warn(`[dshloader.ui] mount cleanup threw: ${error instanceof Error ? error.message : String(error)}`);
|
|
497
|
+
}
|
|
498
|
+
if (instance.mount.parentNode !== null) instance.mount.parentNode.removeChild(instance.mount);
|
|
499
|
+
};
|
|
500
|
+
const instancesFor = (anchor, mountId) => {
|
|
501
|
+
let byMount = live.get(anchor);
|
|
502
|
+
if (byMount === void 0) {
|
|
503
|
+
byMount = /* @__PURE__ */ new Map();
|
|
504
|
+
live.set(anchor, byMount);
|
|
505
|
+
}
|
|
506
|
+
let byHost = byMount.get(mountId);
|
|
507
|
+
if (byHost === void 0) {
|
|
508
|
+
byHost = /* @__PURE__ */ new Map();
|
|
509
|
+
byMount.set(mountId, byHost);
|
|
510
|
+
}
|
|
511
|
+
return byHost;
|
|
512
|
+
};
|
|
513
|
+
/** One reconciliation pass over every anchor × mount. */
|
|
514
|
+
const sweep = () => {
|
|
515
|
+
if (destroyed || !hasDom()) return;
|
|
516
|
+
for (const [name, spec] of anchors) {
|
|
517
|
+
const specs = mounts.get(name);
|
|
518
|
+
if (specs === void 0 || specs.size === 0) continue;
|
|
519
|
+
const hosts = resolve(name, spec);
|
|
520
|
+
const insert = spec.insert ?? "append";
|
|
521
|
+
const tagName = spec.tagName ?? "span";
|
|
522
|
+
for (const [mountId, mountSpec] of specs) {
|
|
523
|
+
const instances = instancesFor(name, mountId);
|
|
524
|
+
for (const [host, instance] of [...instances]) if (!host.isConnected || !instance.mount.isConnected) {
|
|
525
|
+
teardown(instance);
|
|
526
|
+
instances.delete(host);
|
|
527
|
+
}
|
|
528
|
+
for (const host of hosts) {
|
|
529
|
+
if (instances.has(host)) continue;
|
|
530
|
+
if (mountSpec.when !== void 0) try {
|
|
531
|
+
if (!mountSpec.when(host)) continue;
|
|
532
|
+
} catch {
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
if (host.querySelector(`[${SLOT_ATTR}="${mountId}"]`) !== null) continue;
|
|
536
|
+
const node = document.createElement(tagName);
|
|
537
|
+
node.setAttribute(SLOT_ATTR, mountId);
|
|
538
|
+
try {
|
|
539
|
+
place(host, node, insert);
|
|
540
|
+
} catch (error) {
|
|
541
|
+
warn(`[dshloader.ui] could not place "${mountId}" on anchor "${name}": ${error instanceof Error ? error.message : String(error)}`);
|
|
542
|
+
continue;
|
|
543
|
+
}
|
|
544
|
+
let cleanup;
|
|
545
|
+
try {
|
|
546
|
+
cleanup = mountSpec.render(node, host) ?? void 0;
|
|
547
|
+
} catch (error) {
|
|
548
|
+
warn(`[dshloader.ui] mount "${mountId}" render threw: ${error instanceof Error ? error.message : String(error)}`);
|
|
549
|
+
if (node.parentNode !== null) node.parentNode.removeChild(node);
|
|
550
|
+
continue;
|
|
551
|
+
}
|
|
552
|
+
instances.set(host, {
|
|
553
|
+
mount: node,
|
|
554
|
+
cleanup
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
/** Coalesce mutation bursts into one sweep per frame. */
|
|
561
|
+
const schedule = () => {
|
|
562
|
+
if (scheduled || destroyed) return;
|
|
563
|
+
scheduled = true;
|
|
564
|
+
const run = () => {
|
|
565
|
+
scheduled = false;
|
|
566
|
+
sweep();
|
|
567
|
+
for (const listener of [...settledListeners]) try {
|
|
568
|
+
listener();
|
|
569
|
+
} catch (error) {
|
|
570
|
+
warn(`[dshloader.ui] onDomSettled listener threw: ${error instanceof Error ? error.message : String(error)}`);
|
|
571
|
+
}
|
|
572
|
+
};
|
|
573
|
+
if (typeof requestAnimationFrame === "function") requestAnimationFrame(run);
|
|
574
|
+
else setTimeout(run, 16);
|
|
575
|
+
};
|
|
576
|
+
/** Start observing on first use; a single observer serves every anchor. */
|
|
577
|
+
const ensureObserver = () => {
|
|
578
|
+
if (observer !== void 0 || destroyed || !hasDom()) return;
|
|
579
|
+
const root = options.observeRoot ?? document.documentElement;
|
|
580
|
+
observer = new MutationObserver(schedule);
|
|
581
|
+
observer.observe(root, {
|
|
582
|
+
childList: true,
|
|
583
|
+
subtree: true
|
|
584
|
+
});
|
|
585
|
+
};
|
|
586
|
+
const removeAllFor = (anchor, mountId) => {
|
|
587
|
+
const byMount = live.get(anchor);
|
|
588
|
+
if (byMount === void 0) return;
|
|
589
|
+
const ids = mountId === void 0 ? [...byMount.keys()] : [mountId];
|
|
590
|
+
for (const id of ids) {
|
|
591
|
+
const byHost = byMount.get(id);
|
|
592
|
+
if (byHost === void 0) continue;
|
|
593
|
+
for (const instance of byHost.values()) teardown(instance);
|
|
594
|
+
byHost.clear();
|
|
595
|
+
byMount.delete(id);
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
return {
|
|
599
|
+
defineAnchor(name, spec) {
|
|
600
|
+
anchors.set(name, spec);
|
|
601
|
+
ensureObserver();
|
|
602
|
+
schedule();
|
|
603
|
+
return () => {
|
|
604
|
+
removeAllFor(name);
|
|
605
|
+
anchors.delete(name);
|
|
606
|
+
mounts.delete(name);
|
|
607
|
+
live.delete(name);
|
|
608
|
+
fellBack.delete(name);
|
|
609
|
+
};
|
|
610
|
+
},
|
|
611
|
+
anchors() {
|
|
612
|
+
return [...anchors.keys()];
|
|
613
|
+
},
|
|
614
|
+
hosts(anchor) {
|
|
615
|
+
const spec = anchors.get(anchor);
|
|
616
|
+
return spec === void 0 ? [] : resolve(anchor, spec);
|
|
617
|
+
},
|
|
618
|
+
onDomSettled(listener) {
|
|
619
|
+
if (typeof listener !== "function") throw new TypeError("dshloader.ui.onDomSettled: listener must be a function");
|
|
620
|
+
settledListeners.add(listener);
|
|
621
|
+
ensureObserver();
|
|
622
|
+
schedule();
|
|
623
|
+
return () => {
|
|
624
|
+
settledListeners.delete(listener);
|
|
625
|
+
};
|
|
626
|
+
},
|
|
627
|
+
mount(anchor, spec) {
|
|
628
|
+
if (typeof spec.id !== "string" || spec.id.length === 0) throw new TypeError("dshloader.ui.mount: spec.id is required");
|
|
629
|
+
if (!anchors.has(anchor)) warn(`[dshloader.ui] mount "${spec.id}" targets unknown anchor "${anchor}" — known anchors: ${[...anchors.keys()].join(", ") || "(none)"}. The mount stays registered and activates if the anchor is defined later.`);
|
|
630
|
+
let specs = mounts.get(anchor);
|
|
631
|
+
if (specs === void 0) {
|
|
632
|
+
specs = /* @__PURE__ */ new Map();
|
|
633
|
+
mounts.set(anchor, specs);
|
|
634
|
+
}
|
|
635
|
+
if (specs.has(spec.id)) removeAllFor(anchor, spec.id);
|
|
636
|
+
specs.set(spec.id, spec);
|
|
637
|
+
ensureObserver();
|
|
638
|
+
schedule();
|
|
639
|
+
return () => {
|
|
640
|
+
removeAllFor(anchor, spec.id);
|
|
641
|
+
mounts.get(anchor)?.delete(spec.id);
|
|
642
|
+
};
|
|
643
|
+
},
|
|
644
|
+
mountReact(anchor, spec) {
|
|
645
|
+
const Component = spec.component;
|
|
646
|
+
return this.mount(anchor, {
|
|
647
|
+
id: spec.id,
|
|
648
|
+
when: spec.when,
|
|
649
|
+
render: (node, host) => {
|
|
650
|
+
let root;
|
|
651
|
+
try {
|
|
652
|
+
root = (0, react_dom_client.createRoot)(node);
|
|
653
|
+
root.render(react$1.createElement(Component, { host }));
|
|
654
|
+
} catch (error) {
|
|
655
|
+
warn(`[dshloader.ui] React mount "${spec.id}" failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
return () => {
|
|
659
|
+
try {
|
|
660
|
+
root?.unmount();
|
|
661
|
+
} catch {}
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
});
|
|
665
|
+
},
|
|
666
|
+
diagnose() {
|
|
667
|
+
const out = [];
|
|
668
|
+
for (const [name, spec] of anchors) {
|
|
669
|
+
const hosts = resolve(name, spec);
|
|
670
|
+
const specs = mounts.get(name);
|
|
671
|
+
let liveCount = 0;
|
|
672
|
+
const byMount = live.get(name);
|
|
673
|
+
if (byMount !== void 0) for (const byHost of byMount.values()) liveCount += byHost.size;
|
|
674
|
+
out.push({
|
|
675
|
+
anchor: name,
|
|
676
|
+
describe: spec.describe,
|
|
677
|
+
hosts: hosts.length,
|
|
678
|
+
usedFallback: fellBack.has(name),
|
|
679
|
+
mounts: specs === void 0 ? [] : [...specs.keys()],
|
|
680
|
+
live: liveCount
|
|
681
|
+
});
|
|
682
|
+
}
|
|
683
|
+
return out;
|
|
684
|
+
},
|
|
685
|
+
destroy() {
|
|
686
|
+
destroyed = true;
|
|
687
|
+
observer?.disconnect();
|
|
688
|
+
observer = void 0;
|
|
689
|
+
settledListeners.clear();
|
|
690
|
+
for (const anchor of [...live.keys()]) removeAllFor(anchor);
|
|
691
|
+
live.clear();
|
|
692
|
+
mounts.clear();
|
|
693
|
+
anchors.clear();
|
|
694
|
+
fellBack.clear();
|
|
695
|
+
}
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
//#endregion
|
|
699
|
+
//#region src/ui/style.ts
|
|
700
|
+
/**
|
|
701
|
+
* Design tokens and the idempotent stylesheet injector shared by every
|
|
702
|
+
* dshloader UI component.
|
|
703
|
+
*
|
|
704
|
+
* Tokens are the DSH shell's own CSS custom properties, each paired with a
|
|
705
|
+
* fallback so a component still renders sanely when the shell changes or the
|
|
706
|
+
* plugin is previewed outside it. The names were harvested from the shell
|
|
707
|
+
* styling the plugins in this family already rely on; when dsh renames one,
|
|
708
|
+
* this file is the single place to fix.
|
|
709
|
+
*
|
|
710
|
+
* @module @dsh-plugin/dsh-loader/ui/style
|
|
711
|
+
*/
|
|
712
|
+
/** `var(--name, fallback)` — a token reference that degrades instead of breaking. */
|
|
713
|
+
function token(name, fallback) {
|
|
714
|
+
return `var(${name}, ${fallback})`;
|
|
715
|
+
}
|
|
716
|
+
/** The DSH shell tokens dshloader components consume. */
|
|
717
|
+
const T = {
|
|
718
|
+
/** Primary body text. */
|
|
719
|
+
labelPrimary: token("--dsw-alias-label-primary", "#1a1a1a"),
|
|
720
|
+
/** Secondary / supporting text. */
|
|
721
|
+
labelSecondary: token("--dsw-alias-label-secondary", "#4a4a4a"),
|
|
722
|
+
/** Tertiary text (hints, units). */
|
|
723
|
+
labelTertiary: token("--dsw-alias-label-tertiary", "#8a8a8a"),
|
|
724
|
+
/** Caption / disabled text. */
|
|
725
|
+
labelCaption: token("--dsw-alias-label-caption", "#a8a8a8"),
|
|
726
|
+
/** Page / card background. */
|
|
727
|
+
bgBase: token("--dsw-alias-bg-base", "#ffffff"),
|
|
728
|
+
/** Raised surface inside a page (shell layer 1). */
|
|
729
|
+
bgLayer1: token("--dsw-alias-bg-layer-1", "rgba(127,127,127,0.06)"),
|
|
730
|
+
/** Subtle raised surface. */
|
|
731
|
+
bgSubtle: token("--dsw-alias-bg-subtle", "rgba(127,127,127,0.06)"),
|
|
732
|
+
/** Hover wash for interactive rows. */
|
|
733
|
+
bgHover: token("--dsw-alias-bg-hover", "rgba(127,127,127,0.10)"),
|
|
734
|
+
/** Default control border. */
|
|
735
|
+
border: token("--dsw-alias-border-l2", "#d9d9d9"),
|
|
736
|
+
/** Lighter divider. */
|
|
737
|
+
borderSubtle: token("--dsw-alias-border-l1", "#ececec"),
|
|
738
|
+
/** Primary button fill — the shell's own button colour, NOT the brand accent. */
|
|
739
|
+
buttonPrimaryFill: token("--dsw-alias-button-primary-fill", "#4f7cff"),
|
|
740
|
+
/** Text placed on top of {@link buttonPrimaryFill}. */
|
|
741
|
+
buttonPrimaryForeground: token("--dsw-alias-label-primary-foreground", "#ffffff"),
|
|
742
|
+
/** Brand accent (checked states, focus rings). */
|
|
743
|
+
accent: token("--dsw-alias-brand-primary", "#4f7cff"),
|
|
744
|
+
/** Accent text placed on top of the accent fill. */
|
|
745
|
+
accentOn: token("--dsw-alias-brand-on-primary", "#ffffff"),
|
|
746
|
+
/** Destructive accent. */
|
|
747
|
+
danger: token("--dsw-alias-status-danger", "#e5484d"),
|
|
748
|
+
/** Success state (saved confirmations). */
|
|
749
|
+
success: token("--dsw-alias-state-success-primary", "#2e7d32"),
|
|
750
|
+
/** Monospace stack for code / paths. */
|
|
751
|
+
fontCode: token("--ds-font-family-code", "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace")
|
|
752
|
+
};
|
|
753
|
+
/**
|
|
754
|
+
* Shared control geometry so every dshloader control lines up.
|
|
755
|
+
*
|
|
756
|
+
* The values mirror the shell's native settings-page metrics (as established by
|
|
757
|
+
* dsh-auxiliary's section): pill-shaped primary buttons at height 32, inputs at
|
|
758
|
+
* height 28 with radius 6, cards with radius 10 and padding 16.
|
|
759
|
+
*/
|
|
760
|
+
const G = {
|
|
761
|
+
/** Control height for inputs / selects. */
|
|
762
|
+
controlHeight: 28,
|
|
763
|
+
/** Compact control height. */
|
|
764
|
+
controlHeightSm: 24,
|
|
765
|
+
/** Primary button height (the shell's buttons run taller than inputs). */
|
|
766
|
+
buttonHeight: 32,
|
|
767
|
+
/** Standard corner radius (inputs). */
|
|
768
|
+
radius: 6,
|
|
769
|
+
/** Card corner radius. */
|
|
770
|
+
cardRadius: 10,
|
|
771
|
+
/** Pill radius (primary buttons, switches, chips). */
|
|
772
|
+
radiusPill: 999,
|
|
773
|
+
/** Horizontal padding inside an input. */
|
|
774
|
+
padX: 8,
|
|
775
|
+
/** Horizontal padding inside a primary button. */
|
|
776
|
+
padXButton: 14,
|
|
777
|
+
/** Standard row gap. */
|
|
778
|
+
gap: 8,
|
|
779
|
+
/** Base font size. */
|
|
780
|
+
fontSize: 13,
|
|
781
|
+
/** Small font size (descriptions). */
|
|
782
|
+
fontSizeSm: 12
|
|
783
|
+
};
|
|
784
|
+
/**
|
|
785
|
+
* Inject a stylesheet once, tagged with the DSH client-module ownership
|
|
786
|
+
* attributes (`data-plugin` / `data-plugin-css`) so the HMR driver can reclaim
|
|
787
|
+
* it. Calling this repeatedly with the same `cssId` is a no-op.
|
|
788
|
+
*
|
|
789
|
+
* @param pluginId - owning plugin id (package name), for `data-plugin`.
|
|
790
|
+
* @param cssId - stylesheet id within the plugin, e.g. `'ui/components.css'`.
|
|
791
|
+
* @param css - the stylesheet text.
|
|
792
|
+
* @returns a disposer removing the tag, for callers that want one.
|
|
793
|
+
*/
|
|
794
|
+
function injectStyle(pluginId, cssId, css) {
|
|
795
|
+
if (typeof document === "undefined") return () => {};
|
|
796
|
+
const tagId = `${pluginId}/${cssId}`;
|
|
797
|
+
const selector = `style[data-plugin-css="${tagId}"]`;
|
|
798
|
+
if (document.querySelector(selector) !== null) return () => {};
|
|
799
|
+
const style = document.createElement("style");
|
|
800
|
+
style.dataset.plugin = pluginId;
|
|
801
|
+
style.dataset.pluginCss = tagId;
|
|
802
|
+
style.textContent = css;
|
|
803
|
+
document.head.appendChild(style);
|
|
804
|
+
return () => {
|
|
805
|
+
if (style.parentNode !== null) style.parentNode.removeChild(style);
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
/** The class-name prefix every dshloader UI class carries. */
|
|
809
|
+
const CX = "dshl";
|
|
810
|
+
/** Join truthy class names. */
|
|
811
|
+
function cx(...parts) {
|
|
812
|
+
return parts.filter(Boolean).join(" ");
|
|
813
|
+
}
|
|
814
|
+
//#endregion
|
|
815
|
+
//#region node_modules/@icon-park/react/es/runtime/index.js
|
|
816
|
+
var _excluded = [
|
|
817
|
+
"size",
|
|
818
|
+
"strokeWidth",
|
|
819
|
+
"strokeLinecap",
|
|
820
|
+
"strokeLinejoin",
|
|
821
|
+
"theme",
|
|
822
|
+
"fill",
|
|
823
|
+
"className",
|
|
824
|
+
"spin"
|
|
825
|
+
];
|
|
826
|
+
function ownKeys(object, enumerableOnly) {
|
|
827
|
+
var keys = Object.keys(object);
|
|
828
|
+
if (Object.getOwnPropertySymbols) {
|
|
829
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
830
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
|
831
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
832
|
+
})), keys.push.apply(keys, symbols);
|
|
833
|
+
}
|
|
834
|
+
return keys;
|
|
835
|
+
}
|
|
836
|
+
function _objectSpread(target) {
|
|
837
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
838
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
839
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {
|
|
840
|
+
_defineProperty(target, key, source[key]);
|
|
841
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
|
|
842
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
return target;
|
|
846
|
+
}
|
|
847
|
+
function _defineProperty(obj, key, value) {
|
|
848
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
849
|
+
value,
|
|
850
|
+
enumerable: true,
|
|
851
|
+
configurable: true,
|
|
852
|
+
writable: true
|
|
853
|
+
});
|
|
854
|
+
else obj[key] = value;
|
|
855
|
+
return obj;
|
|
856
|
+
}
|
|
857
|
+
function _objectWithoutProperties(source, excluded) {
|
|
858
|
+
if (source == null) return {};
|
|
859
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
860
|
+
var key, i;
|
|
861
|
+
if (Object.getOwnPropertySymbols) {
|
|
862
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
863
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
864
|
+
key = sourceSymbolKeys[i];
|
|
865
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
866
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
867
|
+
target[key] = source[key];
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
return target;
|
|
871
|
+
}
|
|
872
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
873
|
+
if (source == null) return {};
|
|
874
|
+
var target = {};
|
|
875
|
+
var sourceKeys = Object.keys(source);
|
|
876
|
+
var key, i;
|
|
877
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
878
|
+
key = sourceKeys[i];
|
|
879
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
880
|
+
target[key] = source[key];
|
|
881
|
+
}
|
|
882
|
+
return target;
|
|
883
|
+
}
|
|
884
|
+
var DEFAULT_ICON_CONFIGS = {
|
|
885
|
+
size: "1em",
|
|
886
|
+
strokeWidth: 4,
|
|
887
|
+
strokeLinecap: "round",
|
|
888
|
+
strokeLinejoin: "round",
|
|
889
|
+
rtl: false,
|
|
890
|
+
theme: "outline",
|
|
891
|
+
colors: {
|
|
892
|
+
outline: {
|
|
893
|
+
fill: "#333",
|
|
894
|
+
background: "transparent"
|
|
895
|
+
},
|
|
896
|
+
filled: {
|
|
897
|
+
fill: "#333",
|
|
898
|
+
background: "#FFF"
|
|
899
|
+
},
|
|
900
|
+
twoTone: {
|
|
901
|
+
fill: "#333",
|
|
902
|
+
twoTone: "#2F88FF"
|
|
903
|
+
},
|
|
904
|
+
multiColor: {
|
|
905
|
+
outStrokeColor: "#333",
|
|
906
|
+
outFillColor: "#2F88FF",
|
|
907
|
+
innerStrokeColor: "#FFF",
|
|
908
|
+
innerFillColor: "#43CCF8"
|
|
909
|
+
}
|
|
910
|
+
},
|
|
911
|
+
prefix: "i"
|
|
912
|
+
};
|
|
913
|
+
function guid() {
|
|
914
|
+
return "icon-" + ((1 + Math.random()) * 4294967296 | 0).toString(16).substring(1);
|
|
915
|
+
}
|
|
916
|
+
function IconConverter(id, icon, config) {
|
|
917
|
+
var fill = typeof icon.fill === "string" ? [icon.fill] : icon.fill || [];
|
|
918
|
+
var colors = [];
|
|
919
|
+
switch (icon.theme || config.theme) {
|
|
920
|
+
case "outline":
|
|
921
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
922
|
+
colors.push("none");
|
|
923
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
924
|
+
colors.push("none");
|
|
925
|
+
break;
|
|
926
|
+
case "filled":
|
|
927
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
928
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
929
|
+
colors.push("#FFF");
|
|
930
|
+
colors.push("#FFF");
|
|
931
|
+
break;
|
|
932
|
+
case "two-tone":
|
|
933
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
934
|
+
colors.push(typeof fill[1] === "string" ? fill[1] : config.colors.twoTone.twoTone);
|
|
935
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
936
|
+
colors.push(typeof fill[1] === "string" ? fill[1] : config.colors.twoTone.twoTone);
|
|
937
|
+
break;
|
|
938
|
+
case "multi-color":
|
|
939
|
+
colors.push(typeof fill[0] === "string" ? fill[0] : "currentColor");
|
|
940
|
+
colors.push(typeof fill[1] === "string" ? fill[1] : config.colors.multiColor.outFillColor);
|
|
941
|
+
colors.push(typeof fill[2] === "string" ? fill[2] : config.colors.multiColor.innerStrokeColor);
|
|
942
|
+
colors.push(typeof fill[3] === "string" ? fill[3] : config.colors.multiColor.innerFillColor);
|
|
943
|
+
}
|
|
944
|
+
return {
|
|
945
|
+
size: icon.size || config.size,
|
|
946
|
+
strokeWidth: icon.strokeWidth || config.strokeWidth,
|
|
947
|
+
strokeLinecap: icon.strokeLinecap || config.strokeLinecap,
|
|
948
|
+
strokeLinejoin: icon.strokeLinejoin || config.strokeLinejoin,
|
|
949
|
+
colors,
|
|
950
|
+
id
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
var IconContext = /*#__PURE__*/ (0, react.createContext)(DEFAULT_ICON_CONFIGS);
|
|
954
|
+
var IconProvider = IconContext.Provider;
|
|
955
|
+
function IconWrapper(name, rtl, render) {
|
|
956
|
+
return function(props) {
|
|
957
|
+
var size = props.size, strokeWidth = props.strokeWidth, strokeLinecap = props.strokeLinecap, strokeLinejoin = props.strokeLinejoin, theme = props.theme, fill = props.fill, className = props.className, spin = props.spin, extra = _objectWithoutProperties(props, _excluded);
|
|
958
|
+
var ICON_CONFIGS = (0, react.useContext)(IconContext);
|
|
959
|
+
var svgProps = IconConverter((0, react.useMemo)(guid, []), {
|
|
960
|
+
size,
|
|
961
|
+
strokeWidth,
|
|
962
|
+
strokeLinecap,
|
|
963
|
+
strokeLinejoin,
|
|
964
|
+
theme,
|
|
965
|
+
fill
|
|
966
|
+
}, ICON_CONFIGS);
|
|
967
|
+
var cls = [ICON_CONFIGS.prefix + "-icon"];
|
|
968
|
+
cls.push(ICON_CONFIGS.prefix + "-icon-" + name);
|
|
969
|
+
if (rtl && ICON_CONFIGS.rtl) cls.push(ICON_CONFIGS.prefix + "-icon-rtl");
|
|
970
|
+
if (spin) cls.push(ICON_CONFIGS.prefix + "-icon-spin");
|
|
971
|
+
if (className) cls.push(className);
|
|
972
|
+
return /*#__PURE__*/ react.default.createElement("span", _objectSpread(_objectSpread({}, extra), {}, { className: cls.join(" ") }), render(svgProps));
|
|
973
|
+
};
|
|
974
|
+
}
|
|
975
|
+
//#endregion
|
|
976
|
+
//#region node_modules/@icon-park/react/es/icons/Add.js
|
|
977
|
+
var Add_default = IconWrapper("add", false, function(props) {
|
|
978
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
979
|
+
width: props.size,
|
|
980
|
+
height: props.size,
|
|
981
|
+
viewBox: "0 0 48 48",
|
|
982
|
+
fill: "none"
|
|
983
|
+
}, /*#__PURE__*/ react.default.createElement("rect", {
|
|
984
|
+
x: "6",
|
|
985
|
+
y: "6",
|
|
986
|
+
width: "36",
|
|
987
|
+
height: "36",
|
|
988
|
+
rx: "3",
|
|
989
|
+
fill: props.colors[1],
|
|
990
|
+
stroke: props.colors[0],
|
|
991
|
+
strokeWidth: props.strokeWidth,
|
|
992
|
+
strokeLinejoin: props.strokeLinejoin
|
|
993
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
994
|
+
d: "M24 16V32",
|
|
995
|
+
stroke: props.colors[2],
|
|
996
|
+
strokeWidth: props.strokeWidth,
|
|
997
|
+
strokeLinecap: props.strokeLinecap,
|
|
998
|
+
strokeLinejoin: props.strokeLinejoin
|
|
999
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1000
|
+
d: "M16 24L32 24",
|
|
1001
|
+
stroke: props.colors[2],
|
|
1002
|
+
strokeWidth: props.strokeWidth,
|
|
1003
|
+
strokeLinecap: props.strokeLinecap,
|
|
1004
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1005
|
+
}));
|
|
1006
|
+
});
|
|
1007
|
+
//#endregion
|
|
1008
|
+
//#region node_modules/@icon-park/react/es/icons/Alarm.js
|
|
1009
|
+
var Alarm_default = IconWrapper("alarm", true, function(props) {
|
|
1010
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1011
|
+
width: props.size,
|
|
1012
|
+
height: props.size,
|
|
1013
|
+
viewBox: "0 0 48 48",
|
|
1014
|
+
fill: "none"
|
|
1015
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1016
|
+
d: "M14 25C14 19.4772 18.4772 15 24 15C29.5228 15 34 19.4772 34 25V41H14V25Z",
|
|
1017
|
+
fill: props.colors[1],
|
|
1018
|
+
stroke: props.colors[0],
|
|
1019
|
+
strokeWidth: props.strokeWidth,
|
|
1020
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1021
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1022
|
+
d: "M24 5V8",
|
|
1023
|
+
stroke: props.colors[0],
|
|
1024
|
+
strokeWidth: props.strokeWidth,
|
|
1025
|
+
strokeLinecap: props.strokeLinecap,
|
|
1026
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1027
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1028
|
+
d: "M35.8918 9.32823L33.9634 11.6264",
|
|
1029
|
+
stroke: props.colors[0],
|
|
1030
|
+
strokeWidth: props.strokeWidth,
|
|
1031
|
+
strokeLinecap: props.strokeLinecap,
|
|
1032
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1033
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1034
|
+
d: "M42.2187 20.2873L39.2642 20.8083",
|
|
1035
|
+
stroke: props.colors[0],
|
|
1036
|
+
strokeWidth: props.strokeWidth,
|
|
1037
|
+
strokeLinecap: props.strokeLinecap,
|
|
1038
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1039
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1040
|
+
d: "M5.78116 20.2874L8.73558 20.8083",
|
|
1041
|
+
stroke: props.colors[0],
|
|
1042
|
+
strokeWidth: props.strokeWidth,
|
|
1043
|
+
strokeLinecap: props.strokeLinecap,
|
|
1044
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1045
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1046
|
+
d: "M12.1086 9.32802L14.037 11.6262",
|
|
1047
|
+
stroke: props.colors[0],
|
|
1048
|
+
strokeWidth: props.strokeWidth,
|
|
1049
|
+
strokeLinecap: props.strokeLinecap,
|
|
1050
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1051
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1052
|
+
d: "M6 41H43",
|
|
1053
|
+
stroke: props.colors[0],
|
|
1054
|
+
strokeWidth: props.strokeWidth,
|
|
1055
|
+
strokeLinecap: props.strokeLinecap,
|
|
1056
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1057
|
+
}));
|
|
1058
|
+
});
|
|
1059
|
+
//#endregion
|
|
1060
|
+
//#region node_modules/@icon-park/react/es/icons/AllApplication.js
|
|
1061
|
+
var AllApplication_default = IconWrapper("all-application", false, function(props) {
|
|
1062
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1063
|
+
width: props.size,
|
|
1064
|
+
height: props.size,
|
|
1065
|
+
viewBox: "0 0 48 48",
|
|
1066
|
+
fill: "none"
|
|
1067
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1068
|
+
d: "M18 6H8C6.89543 6 6 6.89543 6 8V18C6 19.1046 6.89543 20 8 20H18C19.1046 20 20 19.1046 20 18V8C20 6.89543 19.1046 6 18 6Z",
|
|
1069
|
+
fill: props.colors[1],
|
|
1070
|
+
stroke: props.colors[0],
|
|
1071
|
+
strokeWidth: props.strokeWidth,
|
|
1072
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1073
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1074
|
+
d: "M18 28H8C6.89543 28 6 28.8954 6 30V40C6 41.1046 6.89543 42 8 42H18C19.1046 42 20 41.1046 20 40V30C20 28.8954 19.1046 28 18 28Z",
|
|
1075
|
+
fill: props.colors[1],
|
|
1076
|
+
stroke: props.colors[0],
|
|
1077
|
+
strokeWidth: props.strokeWidth,
|
|
1078
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1079
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1080
|
+
d: "M40 6H30C28.8954 6 28 6.89543 28 8V18C28 19.1046 28.8954 20 30 20H40C41.1046 20 42 19.1046 42 18V8C42 6.89543 41.1046 6 40 6Z",
|
|
1081
|
+
fill: props.colors[1],
|
|
1082
|
+
stroke: props.colors[0],
|
|
1083
|
+
strokeWidth: props.strokeWidth,
|
|
1084
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1085
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1086
|
+
d: "M40 28H30C28.8954 28 28 28.8954 28 30V40C28 41.1046 28.8954 42 30 42H40C41.1046 42 42 41.1046 42 40V30C42 28.8954 41.1046 28 40 28Z",
|
|
1087
|
+
fill: props.colors[1],
|
|
1088
|
+
stroke: props.colors[0],
|
|
1089
|
+
strokeWidth: props.strokeWidth,
|
|
1090
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1091
|
+
}));
|
|
1092
|
+
});
|
|
1093
|
+
//#endregion
|
|
1094
|
+
//#region node_modules/@icon-park/react/es/icons/Attention.js
|
|
1095
|
+
var Attention_default = IconWrapper("attention", true, function(props) {
|
|
1096
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1097
|
+
width: props.size,
|
|
1098
|
+
height: props.size,
|
|
1099
|
+
viewBox: "0 0 48 48",
|
|
1100
|
+
fill: "none"
|
|
1101
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1102
|
+
d: "M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z",
|
|
1103
|
+
fill: props.colors[1],
|
|
1104
|
+
stroke: props.colors[0],
|
|
1105
|
+
strokeWidth: props.strokeWidth,
|
|
1106
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1107
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1108
|
+
fillRule: "evenodd",
|
|
1109
|
+
clipRule: "evenodd",
|
|
1110
|
+
d: "M24 37C25.3807 37 26.5 35.8807 26.5 34.5C26.5 33.1193 25.3807 32 24 32C22.6193 32 21.5 33.1193 21.5 34.5C21.5 35.8807 22.6193 37 24 37Z",
|
|
1111
|
+
fill: props.colors[2]
|
|
1112
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1113
|
+
d: "M24 12V28",
|
|
1114
|
+
stroke: props.colors[2],
|
|
1115
|
+
strokeWidth: props.strokeWidth,
|
|
1116
|
+
strokeLinecap: props.strokeLinecap,
|
|
1117
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1118
|
+
}));
|
|
1119
|
+
});
|
|
1120
|
+
//#endregion
|
|
1121
|
+
//#region node_modules/@icon-park/react/es/icons/Back.js
|
|
1122
|
+
var Back_default = IconWrapper("back", true, function(props) {
|
|
1123
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1124
|
+
width: props.size,
|
|
1125
|
+
height: props.size,
|
|
1126
|
+
viewBox: "0 0 48 48",
|
|
1127
|
+
fill: "none"
|
|
1128
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1129
|
+
fillRule: "evenodd",
|
|
1130
|
+
clipRule: "evenodd",
|
|
1131
|
+
d: "M44 40.8361C39.1069 34.8632 34.7617 31.4739 30.9644 30.6682C27.1671 29.8625 23.5517 29.7408 20.1182 30.303V41L4 23.5453L20.1182 7V17.167C26.4667 17.2172 31.8638 19.4948 36.3095 24C40.7553 28.5052 43.3187 34.1172 44 40.8361Z",
|
|
1132
|
+
fill: props.colors[1],
|
|
1133
|
+
stroke: props.colors[0],
|
|
1134
|
+
strokeWidth: props.strokeWidth,
|
|
1135
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1136
|
+
}));
|
|
1137
|
+
});
|
|
1138
|
+
//#endregion
|
|
1139
|
+
//#region node_modules/@icon-park/react/es/icons/Branch.js
|
|
1140
|
+
var Branch_default = IconWrapper("branch", true, function(props) {
|
|
1141
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1142
|
+
width: props.size,
|
|
1143
|
+
height: props.size,
|
|
1144
|
+
viewBox: "0 0 48 48",
|
|
1145
|
+
fill: "none"
|
|
1146
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1147
|
+
d: "M40 28C42.2091 28 44 26.2091 44 24C44 21.7909 42.2091 20 40 20C37.7909 20 36 21.7909 36 24C36 26.2091 37.7909 28 40 28Z",
|
|
1148
|
+
fill: props.colors[1],
|
|
1149
|
+
stroke: props.colors[0],
|
|
1150
|
+
strokeWidth: props.strokeWidth,
|
|
1151
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1152
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1153
|
+
d: "M9 12C11.2091 12 13 10.2091 13 8C13 5.79086 11.2091 4 9 4C6.79086 4 5 5.79086 5 8C5 10.2091 6.79086 12 9 12Z",
|
|
1154
|
+
fill: props.colors[1],
|
|
1155
|
+
stroke: props.colors[0],
|
|
1156
|
+
strokeWidth: props.strokeWidth,
|
|
1157
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1158
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1159
|
+
d: "M9 44C11.2091 44 13 42.2091 13 40C13 37.7909 11.2091 36 9 36C6.79086 36 5 37.7909 5 40C5 42.2091 6.79086 44 9 44Z",
|
|
1160
|
+
fill: props.colors[1],
|
|
1161
|
+
stroke: props.colors[0],
|
|
1162
|
+
strokeWidth: props.strokeWidth,
|
|
1163
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1164
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1165
|
+
d: "M9 12V36V24.0083H36",
|
|
1166
|
+
stroke: props.colors[0],
|
|
1167
|
+
strokeWidth: props.strokeWidth,
|
|
1168
|
+
strokeLinecap: props.strokeLinecap,
|
|
1169
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1170
|
+
}));
|
|
1171
|
+
});
|
|
1172
|
+
//#endregion
|
|
1173
|
+
//#region node_modules/@icon-park/react/es/icons/Browser.js
|
|
1174
|
+
var Browser_default = IconWrapper("browser", true, function(props) {
|
|
1175
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1176
|
+
width: props.size,
|
|
1177
|
+
height: props.size,
|
|
1178
|
+
viewBox: "0 0 48 48",
|
|
1179
|
+
fill: "none"
|
|
1180
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1181
|
+
d: "M42 18V40C42 41.1046 41.1046 42 40 42H8C6.89543 42 6 41.1046 6 40V18",
|
|
1182
|
+
stroke: props.colors[0],
|
|
1183
|
+
strokeWidth: props.strokeWidth,
|
|
1184
|
+
strokeLinecap: props.strokeLinecap,
|
|
1185
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1186
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1187
|
+
d: "M6 8C6 6.89543 6.89543 6 8 6H40C41.1046 6 42 6.89543 42 8V18H6V8Z",
|
|
1188
|
+
fill: props.colors[1],
|
|
1189
|
+
stroke: props.colors[0],
|
|
1190
|
+
strokeWidth: props.strokeWidth,
|
|
1191
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1192
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1193
|
+
fillRule: "evenodd",
|
|
1194
|
+
clipRule: "evenodd",
|
|
1195
|
+
d: "M12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14Z",
|
|
1196
|
+
fill: props.colors[2]
|
|
1197
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1198
|
+
fillRule: "evenodd",
|
|
1199
|
+
clipRule: "evenodd",
|
|
1200
|
+
d: "M18 14C19.1046 14 20 13.1046 20 12C20 10.8954 19.1046 10 18 10C16.8954 10 16 10.8954 16 12C16 13.1046 16.8954 14 18 14Z",
|
|
1201
|
+
fill: props.colors[2]
|
|
1202
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1203
|
+
fillRule: "evenodd",
|
|
1204
|
+
clipRule: "evenodd",
|
|
1205
|
+
d: "M24 14C25.1046 14 26 13.1046 26 12C26 10.8954 25.1046 10 24 10C22.8954 10 22 10.8954 22 12C22 13.1046 22.8954 14 24 14Z",
|
|
1206
|
+
fill: props.colors[2]
|
|
1207
|
+
}));
|
|
1208
|
+
});
|
|
1209
|
+
//#endregion
|
|
1210
|
+
//#region node_modules/@icon-park/react/es/icons/Check.js
|
|
1211
|
+
var Check_default = IconWrapper("check", true, function(props) {
|
|
1212
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1213
|
+
width: props.size,
|
|
1214
|
+
height: props.size,
|
|
1215
|
+
viewBox: "0 0 48 48",
|
|
1216
|
+
fill: "none"
|
|
1217
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1218
|
+
d: "M43 11L16.875 37L5 25.1818",
|
|
1219
|
+
stroke: props.colors[0],
|
|
1220
|
+
strokeWidth: props.strokeWidth,
|
|
1221
|
+
strokeLinecap: props.strokeLinecap,
|
|
1222
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1223
|
+
}));
|
|
1224
|
+
});
|
|
1225
|
+
//#endregion
|
|
1226
|
+
//#region node_modules/@icon-park/react/es/icons/CheckSmall.js
|
|
1227
|
+
var CheckSmall_default = IconWrapper("check-small", true, function(props) {
|
|
1228
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1229
|
+
width: props.size,
|
|
1230
|
+
height: props.size,
|
|
1231
|
+
viewBox: "0 0 48 48",
|
|
1232
|
+
fill: "none"
|
|
1233
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1234
|
+
d: "M10 24L20 34L40 14",
|
|
1235
|
+
stroke: props.colors[0],
|
|
1236
|
+
strokeWidth: props.strokeWidth,
|
|
1237
|
+
strokeLinecap: props.strokeLinecap,
|
|
1238
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1239
|
+
}));
|
|
1240
|
+
});
|
|
1241
|
+
//#endregion
|
|
1242
|
+
//#region node_modules/@icon-park/react/es/icons/Close.js
|
|
1243
|
+
var Close_default = IconWrapper("close", false, function(props) {
|
|
1244
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1245
|
+
width: props.size,
|
|
1246
|
+
height: props.size,
|
|
1247
|
+
viewBox: "0 0 48 48",
|
|
1248
|
+
fill: "none"
|
|
1249
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1250
|
+
d: "M8 8L40 40",
|
|
1251
|
+
stroke: props.colors[0],
|
|
1252
|
+
strokeWidth: props.strokeWidth,
|
|
1253
|
+
strokeLinecap: props.strokeLinecap,
|
|
1254
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1255
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1256
|
+
d: "M8 40L40 8",
|
|
1257
|
+
stroke: props.colors[0],
|
|
1258
|
+
strokeWidth: props.strokeWidth,
|
|
1259
|
+
strokeLinecap: props.strokeLinecap,
|
|
1260
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1261
|
+
}));
|
|
1262
|
+
});
|
|
1263
|
+
//#endregion
|
|
1264
|
+
//#region node_modules/@icon-park/react/es/icons/CloseSmall.js
|
|
1265
|
+
var CloseSmall_default = IconWrapper("close-small", false, function(props) {
|
|
1266
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1267
|
+
width: props.size,
|
|
1268
|
+
height: props.size,
|
|
1269
|
+
viewBox: "0 0 48 48",
|
|
1270
|
+
fill: "none"
|
|
1271
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1272
|
+
d: "M14 14L34 34",
|
|
1273
|
+
stroke: props.colors[0],
|
|
1274
|
+
strokeWidth: props.strokeWidth,
|
|
1275
|
+
strokeLinecap: props.strokeLinecap,
|
|
1276
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1277
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1278
|
+
d: "M14 34L34 14",
|
|
1279
|
+
stroke: props.colors[0],
|
|
1280
|
+
strokeWidth: props.strokeWidth,
|
|
1281
|
+
strokeLinecap: props.strokeLinecap,
|
|
1282
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1283
|
+
}));
|
|
1284
|
+
});
|
|
1285
|
+
//#endregion
|
|
1286
|
+
//#region node_modules/@icon-park/react/es/icons/Code.js
|
|
1287
|
+
var Code_default = IconWrapper("code", true, function(props) {
|
|
1288
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1289
|
+
width: props.size,
|
|
1290
|
+
height: props.size,
|
|
1291
|
+
viewBox: "0 0 48 48",
|
|
1292
|
+
fill: "none"
|
|
1293
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1294
|
+
d: "M16 13L4 25.4322L16 37",
|
|
1295
|
+
stroke: props.colors[0],
|
|
1296
|
+
strokeWidth: props.strokeWidth,
|
|
1297
|
+
strokeLinecap: props.strokeLinecap,
|
|
1298
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1299
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1300
|
+
d: "M32 13L44 25.4322L32 37",
|
|
1301
|
+
stroke: props.colors[0],
|
|
1302
|
+
strokeWidth: props.strokeWidth,
|
|
1303
|
+
strokeLinecap: props.strokeLinecap,
|
|
1304
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1305
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1306
|
+
d: "M28 4L21 44",
|
|
1307
|
+
stroke: props.colors[0],
|
|
1308
|
+
strokeWidth: props.strokeWidth,
|
|
1309
|
+
strokeLinecap: props.strokeLinecap
|
|
1310
|
+
}));
|
|
1311
|
+
});
|
|
1312
|
+
//#endregion
|
|
1313
|
+
//#region node_modules/@icon-park/react/es/icons/Config.js
|
|
1314
|
+
var Config_default = IconWrapper("config", false, function(props) {
|
|
1315
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1316
|
+
width: props.size,
|
|
1317
|
+
height: props.size,
|
|
1318
|
+
viewBox: "0 0 48 48",
|
|
1319
|
+
fill: "none"
|
|
1320
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1321
|
+
d: "M24 4L18 10H10V18L4 24L10 30V38H18L24 44L30 38H38V30L44 24L38 18V10H30L24 4Z",
|
|
1322
|
+
fill: props.colors[1],
|
|
1323
|
+
stroke: props.colors[0],
|
|
1324
|
+
strokeWidth: props.strokeWidth,
|
|
1325
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1326
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1327
|
+
d: "M24 30C27.3137 30 30 27.3137 30 24C30 20.6863 27.3137 18 24 18C20.6863 18 18 20.6863 18 24C18 27.3137 20.6863 30 24 30Z",
|
|
1328
|
+
fill: props.colors[3],
|
|
1329
|
+
stroke: props.colors[2],
|
|
1330
|
+
strokeWidth: props.strokeWidth,
|
|
1331
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1332
|
+
}));
|
|
1333
|
+
});
|
|
1334
|
+
//#endregion
|
|
1335
|
+
//#region node_modules/@icon-park/react/es/icons/Copy.js
|
|
1336
|
+
var Copy_default = IconWrapper("copy", true, function(props) {
|
|
1337
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1338
|
+
width: props.size,
|
|
1339
|
+
height: props.size,
|
|
1340
|
+
viewBox: "0 0 48 48",
|
|
1341
|
+
fill: "none"
|
|
1342
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1343
|
+
d: "M13 12.4316V7.8125C13 6.2592 14.2592 5 15.8125 5H40.1875C41.7408 5 43 6.2592 43 7.8125V32.1875C43 33.7408 41.7408 35 40.1875 35H35.5163",
|
|
1344
|
+
stroke: props.colors[0],
|
|
1345
|
+
strokeWidth: props.strokeWidth,
|
|
1346
|
+
strokeLinecap: props.strokeLinecap,
|
|
1347
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1348
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1349
|
+
d: "M32.1875 13H7.8125C6.2592 13 5 14.2592 5 15.8125V40.1875C5 41.7408 6.2592 43 7.8125 43H32.1875C33.7408 43 35 41.7408 35 40.1875V15.8125C35 14.2592 33.7408 13 32.1875 13Z",
|
|
1350
|
+
fill: props.colors[1],
|
|
1351
|
+
stroke: props.colors[0],
|
|
1352
|
+
strokeWidth: props.strokeWidth,
|
|
1353
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1354
|
+
}));
|
|
1355
|
+
});
|
|
1356
|
+
//#endregion
|
|
1357
|
+
//#region node_modules/@icon-park/react/es/icons/Delete.js
|
|
1358
|
+
var Delete_default = IconWrapper("delete", false, function(props) {
|
|
1359
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1360
|
+
width: props.size,
|
|
1361
|
+
height: props.size,
|
|
1362
|
+
viewBox: "0 0 48 48",
|
|
1363
|
+
fill: "none"
|
|
1364
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1365
|
+
d: "M9 10V44H39V10H9Z",
|
|
1366
|
+
fill: props.colors[1],
|
|
1367
|
+
stroke: props.colors[0],
|
|
1368
|
+
strokeWidth: props.strokeWidth,
|
|
1369
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1370
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1371
|
+
d: "M20 20V33",
|
|
1372
|
+
stroke: props.colors[2],
|
|
1373
|
+
strokeWidth: props.strokeWidth,
|
|
1374
|
+
strokeLinecap: props.strokeLinecap,
|
|
1375
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1376
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1377
|
+
d: "M28 20V33",
|
|
1378
|
+
stroke: props.colors[2],
|
|
1379
|
+
strokeWidth: props.strokeWidth,
|
|
1380
|
+
strokeLinecap: props.strokeLinecap,
|
|
1381
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1382
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1383
|
+
d: "M4 10H44",
|
|
1384
|
+
stroke: props.colors[0],
|
|
1385
|
+
strokeWidth: props.strokeWidth,
|
|
1386
|
+
strokeLinecap: props.strokeLinecap,
|
|
1387
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1388
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1389
|
+
d: "M16 10L19.289 4H28.7771L32 10H16Z",
|
|
1390
|
+
fill: props.colors[1],
|
|
1391
|
+
stroke: props.colors[0],
|
|
1392
|
+
strokeWidth: props.strokeWidth,
|
|
1393
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1394
|
+
}));
|
|
1395
|
+
});
|
|
1396
|
+
//#endregion
|
|
1397
|
+
//#region node_modules/@icon-park/react/es/icons/Diamond.js
|
|
1398
|
+
var Diamond_default = IconWrapper("diamond", false, function(props) {
|
|
1399
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1400
|
+
width: props.size,
|
|
1401
|
+
height: props.size,
|
|
1402
|
+
viewBox: "0 0 48 48",
|
|
1403
|
+
fill: "none"
|
|
1404
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1405
|
+
fillRule: "evenodd",
|
|
1406
|
+
clipRule: "evenodd",
|
|
1407
|
+
d: "M10.6364 5H37.3636L45 18.3L24 43L3 18.3L10.6364 5Z",
|
|
1408
|
+
stroke: props.colors[0],
|
|
1409
|
+
strokeWidth: props.strokeWidth,
|
|
1410
|
+
strokeLinecap: props.strokeLinecap,
|
|
1411
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1412
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1413
|
+
d: "M10.6362 5L23.9999 43L37.3635 5",
|
|
1414
|
+
stroke: props.colors[0],
|
|
1415
|
+
strokeWidth: props.strokeWidth,
|
|
1416
|
+
strokeLinecap: props.strokeLinecap,
|
|
1417
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1418
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1419
|
+
d: "M3 18.3H45",
|
|
1420
|
+
stroke: props.colors[0],
|
|
1421
|
+
strokeWidth: props.strokeWidth,
|
|
1422
|
+
strokeLinecap: props.strokeLinecap,
|
|
1423
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1424
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1425
|
+
d: "M15.4092 18.3L24.0001 5L32.591 18.3",
|
|
1426
|
+
stroke: props.colors[0],
|
|
1427
|
+
strokeWidth: props.strokeWidth,
|
|
1428
|
+
strokeLinecap: props.strokeLinecap,
|
|
1429
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1430
|
+
}));
|
|
1431
|
+
});
|
|
1432
|
+
//#endregion
|
|
1433
|
+
//#region node_modules/@icon-park/react/es/icons/Down.js
|
|
1434
|
+
var Down_default = IconWrapper("down", false, function(props) {
|
|
1435
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1436
|
+
width: props.size,
|
|
1437
|
+
height: props.size,
|
|
1438
|
+
viewBox: "0 0 48 48",
|
|
1439
|
+
fill: "none"
|
|
1440
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1441
|
+
d: "M36 18L24 30L12 18",
|
|
1442
|
+
stroke: props.colors[0],
|
|
1443
|
+
strokeWidth: props.strokeWidth,
|
|
1444
|
+
strokeLinecap: props.strokeLinecap,
|
|
1445
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1446
|
+
}));
|
|
1447
|
+
});
|
|
1448
|
+
//#endregion
|
|
1449
|
+
//#region node_modules/@icon-park/react/es/icons/Download.js
|
|
1450
|
+
var Download_default = IconWrapper("download", false, function(props) {
|
|
1451
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1452
|
+
width: props.size,
|
|
1453
|
+
height: props.size,
|
|
1454
|
+
viewBox: "0 0 48 48",
|
|
1455
|
+
fill: "none"
|
|
1456
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1457
|
+
d: "M6 24.0083V42H42V24",
|
|
1458
|
+
stroke: props.colors[0],
|
|
1459
|
+
strokeWidth: props.strokeWidth,
|
|
1460
|
+
strokeLinecap: props.strokeLinecap,
|
|
1461
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1462
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1463
|
+
d: "M33 23L24 32L15 23",
|
|
1464
|
+
stroke: props.colors[0],
|
|
1465
|
+
strokeWidth: props.strokeWidth,
|
|
1466
|
+
strokeLinecap: props.strokeLinecap,
|
|
1467
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1468
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1469
|
+
d: "M23.9917 6V32",
|
|
1470
|
+
stroke: props.colors[0],
|
|
1471
|
+
strokeWidth: props.strokeWidth,
|
|
1472
|
+
strokeLinecap: props.strokeLinecap,
|
|
1473
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1474
|
+
}));
|
|
1475
|
+
});
|
|
1476
|
+
//#endregion
|
|
1477
|
+
//#region node_modules/@icon-park/react/es/icons/Edit.js
|
|
1478
|
+
var Edit_default = IconWrapper("edit", true, function(props) {
|
|
1479
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1480
|
+
width: props.size,
|
|
1481
|
+
height: props.size,
|
|
1482
|
+
viewBox: "0 0 48 48",
|
|
1483
|
+
fill: "none"
|
|
1484
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1485
|
+
d: "M7 42H43",
|
|
1486
|
+
stroke: props.colors[0],
|
|
1487
|
+
strokeWidth: props.strokeWidth,
|
|
1488
|
+
strokeLinecap: props.strokeLinecap,
|
|
1489
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1490
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1491
|
+
d: "M11 26.7199V34H18.3172L39 13.3081L31.6951 6L11 26.7199Z",
|
|
1492
|
+
fill: props.colors[1],
|
|
1493
|
+
stroke: props.colors[0],
|
|
1494
|
+
strokeWidth: props.strokeWidth,
|
|
1495
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1496
|
+
}));
|
|
1497
|
+
});
|
|
1498
|
+
//#endregion
|
|
1499
|
+
//#region node_modules/@icon-park/react/es/icons/Error.js
|
|
1500
|
+
var Error_default = IconWrapper("error", false, function(props) {
|
|
1501
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1502
|
+
width: props.size,
|
|
1503
|
+
height: props.size,
|
|
1504
|
+
viewBox: "0 0 48 48",
|
|
1505
|
+
fill: "none"
|
|
1506
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1507
|
+
fillRule: "evenodd",
|
|
1508
|
+
clipRule: "evenodd",
|
|
1509
|
+
d: "M6 11L11 6L24 19L37 6L42 11L29 24L42 37L37 42L24 29L11 42L6 37L19 24L6 11Z",
|
|
1510
|
+
fill: props.colors[1],
|
|
1511
|
+
stroke: props.colors[0],
|
|
1512
|
+
strokeWidth: props.strokeWidth,
|
|
1513
|
+
strokeLinecap: props.strokeLinecap,
|
|
1514
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1515
|
+
}));
|
|
1516
|
+
});
|
|
1517
|
+
//#endregion
|
|
1518
|
+
//#region node_modules/@icon-park/react/es/icons/FileCode.js
|
|
1519
|
+
var FileCode_default = IconWrapper("file-code", true, function(props) {
|
|
1520
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1521
|
+
width: props.size,
|
|
1522
|
+
height: props.size,
|
|
1523
|
+
viewBox: "0 0 48 48",
|
|
1524
|
+
fill: "none"
|
|
1525
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1526
|
+
d: "M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z",
|
|
1527
|
+
fill: props.colors[1],
|
|
1528
|
+
stroke: props.colors[0],
|
|
1529
|
+
strokeWidth: props.strokeWidth,
|
|
1530
|
+
strokeLinecap: props.strokeLinecap,
|
|
1531
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1532
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1533
|
+
d: "M30 4L40 14",
|
|
1534
|
+
stroke: props.colors[0],
|
|
1535
|
+
strokeWidth: props.strokeWidth,
|
|
1536
|
+
strokeLinecap: props.strokeLinecap,
|
|
1537
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1538
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1539
|
+
d: "M27 24L32 29L27 34",
|
|
1540
|
+
stroke: props.colors[2],
|
|
1541
|
+
strokeWidth: props.strokeWidth,
|
|
1542
|
+
strokeLinecap: props.strokeLinecap,
|
|
1543
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1544
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1545
|
+
d: "M21 24L16 29L21 34",
|
|
1546
|
+
stroke: props.colors[2],
|
|
1547
|
+
strokeWidth: props.strokeWidth,
|
|
1548
|
+
strokeLinecap: props.strokeLinecap,
|
|
1549
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1550
|
+
}));
|
|
1551
|
+
});
|
|
1552
|
+
//#endregion
|
|
1553
|
+
//#region node_modules/@icon-park/react/es/icons/FileText.js
|
|
1554
|
+
var FileText_default = IconWrapper("file-text", true, function(props) {
|
|
1555
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1556
|
+
width: props.size,
|
|
1557
|
+
height: props.size,
|
|
1558
|
+
viewBox: "0 0 48 48",
|
|
1559
|
+
fill: "none"
|
|
1560
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1561
|
+
d: "M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z",
|
|
1562
|
+
fill: props.colors[1],
|
|
1563
|
+
stroke: props.colors[0],
|
|
1564
|
+
strokeWidth: props.strokeWidth,
|
|
1565
|
+
strokeLinecap: props.strokeLinecap,
|
|
1566
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1567
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1568
|
+
d: "M30 4L40 14",
|
|
1569
|
+
stroke: props.colors[0],
|
|
1570
|
+
strokeWidth: props.strokeWidth,
|
|
1571
|
+
strokeLinecap: props.strokeLinecap,
|
|
1572
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1573
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1574
|
+
d: "M24 22V36",
|
|
1575
|
+
stroke: props.colors[2],
|
|
1576
|
+
strokeWidth: props.strokeWidth,
|
|
1577
|
+
strokeLinecap: props.strokeLinecap,
|
|
1578
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1579
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1580
|
+
d: "M18 22H24L30 22",
|
|
1581
|
+
stroke: props.colors[2],
|
|
1582
|
+
strokeWidth: props.strokeWidth,
|
|
1583
|
+
strokeLinecap: props.strokeLinecap,
|
|
1584
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1585
|
+
}));
|
|
1586
|
+
});
|
|
1587
|
+
//#endregion
|
|
1588
|
+
//#region node_modules/@icon-park/react/es/icons/Folder.js
|
|
1589
|
+
var Folder_default = IconWrapper("folder", true, function(props) {
|
|
1590
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1591
|
+
width: props.size,
|
|
1592
|
+
height: props.size,
|
|
1593
|
+
viewBox: "0 0 48 48",
|
|
1594
|
+
fill: "none"
|
|
1595
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1596
|
+
d: "M7 6C7 4.89543 7.89543 4 9 4H39C40.1046 4 41 4.89543 41 6V42C41 43.1046 40.1046 44 39 44H9C7.89543 44 7 43.1046 7 42V6Z",
|
|
1597
|
+
fill: props.colors[1],
|
|
1598
|
+
stroke: props.colors[0],
|
|
1599
|
+
strokeWidth: props.strokeWidth,
|
|
1600
|
+
strokeLinecap: props.strokeLinecap,
|
|
1601
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1602
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1603
|
+
d: "M16 29H20",
|
|
1604
|
+
stroke: props.colors[2],
|
|
1605
|
+
strokeWidth: props.strokeWidth,
|
|
1606
|
+
strokeLinecap: props.strokeLinecap,
|
|
1607
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1608
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1609
|
+
d: "M16 35H26",
|
|
1610
|
+
stroke: props.colors[2],
|
|
1611
|
+
strokeWidth: props.strokeWidth,
|
|
1612
|
+
strokeLinecap: props.strokeLinecap,
|
|
1613
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1614
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1615
|
+
d: "M8 5C8 5 11.7647 18 24 18C36.2353 18 40 5 40 5",
|
|
1616
|
+
stroke: props.colors[2],
|
|
1617
|
+
strokeWidth: props.strokeWidth,
|
|
1618
|
+
strokeLinecap: props.strokeLinecap,
|
|
1619
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1620
|
+
}), /*#__PURE__*/ react.default.createElement("circle", {
|
|
1621
|
+
cx: "24",
|
|
1622
|
+
cy: "18",
|
|
1623
|
+
r: "4",
|
|
1624
|
+
fill: props.colors[3],
|
|
1625
|
+
stroke: props.colors[2],
|
|
1626
|
+
strokeWidth: props.strokeWidth,
|
|
1627
|
+
strokeLinecap: props.strokeLinecap,
|
|
1628
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1629
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1630
|
+
d: "M15 4H9C7.89543 4 7 4.89543 7 6V12",
|
|
1631
|
+
stroke: props.colors[0],
|
|
1632
|
+
strokeWidth: props.strokeWidth,
|
|
1633
|
+
strokeLinecap: props.strokeLinecap,
|
|
1634
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1635
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1636
|
+
d: "M33 4H39C40.1046 4 41 4.89543 41 6V12",
|
|
1637
|
+
stroke: props.colors[0],
|
|
1638
|
+
strokeWidth: props.strokeWidth,
|
|
1639
|
+
strokeLinecap: props.strokeLinecap,
|
|
1640
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1641
|
+
}));
|
|
1642
|
+
});
|
|
1643
|
+
//#endregion
|
|
1644
|
+
//#region node_modules/@icon-park/react/es/icons/FolderOpen.js
|
|
1645
|
+
var FolderOpen_default = IconWrapper("folder-open", true, function(props) {
|
|
1646
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1647
|
+
width: props.size,
|
|
1648
|
+
height: props.size,
|
|
1649
|
+
viewBox: "0 0 48 48",
|
|
1650
|
+
fill: "none"
|
|
1651
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1652
|
+
d: "M4 9V41L9 21H39.5V15C39.5 13.8954 38.6046 13 37.5 13H24L19 7H6C4.89543 7 4 7.89543 4 9Z",
|
|
1653
|
+
stroke: props.colors[0],
|
|
1654
|
+
strokeWidth: props.strokeWidth,
|
|
1655
|
+
strokeLinecap: props.strokeLinecap,
|
|
1656
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1657
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1658
|
+
d: "M40 41L44 21H8.8125L4 41H40Z",
|
|
1659
|
+
fill: props.colors[1],
|
|
1660
|
+
stroke: props.colors[0],
|
|
1661
|
+
strokeWidth: props.strokeWidth,
|
|
1662
|
+
strokeLinecap: props.strokeLinecap,
|
|
1663
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1664
|
+
}));
|
|
1665
|
+
});
|
|
1666
|
+
//#endregion
|
|
1667
|
+
//#region node_modules/@icon-park/react/es/icons/FullScreen.js
|
|
1668
|
+
var FullScreen_default = IconWrapper("full-screen", false, function(props) {
|
|
1669
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1670
|
+
width: props.size,
|
|
1671
|
+
height: props.size,
|
|
1672
|
+
viewBox: "0 0 48 48",
|
|
1673
|
+
fill: "none"
|
|
1674
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1675
|
+
d: "M33 6H42V15",
|
|
1676
|
+
stroke: props.colors[0],
|
|
1677
|
+
strokeWidth: props.strokeWidth,
|
|
1678
|
+
strokeLinecap: props.strokeLinecap,
|
|
1679
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1680
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1681
|
+
d: "M42 33V42H33",
|
|
1682
|
+
stroke: props.colors[0],
|
|
1683
|
+
strokeWidth: props.strokeWidth,
|
|
1684
|
+
strokeLinecap: props.strokeLinecap,
|
|
1685
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1686
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1687
|
+
d: "M15 42H6V33",
|
|
1688
|
+
stroke: props.colors[0],
|
|
1689
|
+
strokeWidth: props.strokeWidth,
|
|
1690
|
+
strokeLinecap: props.strokeLinecap,
|
|
1691
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1692
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1693
|
+
d: "M6 15V6H15",
|
|
1694
|
+
stroke: props.colors[0],
|
|
1695
|
+
strokeWidth: props.strokeWidth,
|
|
1696
|
+
strokeLinecap: props.strokeLinecap,
|
|
1697
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1698
|
+
}));
|
|
1699
|
+
});
|
|
1700
|
+
//#endregion
|
|
1701
|
+
//#region node_modules/@icon-park/react/es/icons/Globe.js
|
|
1702
|
+
var Globe_default = IconWrapper("globe", true, function(props) {
|
|
1703
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1704
|
+
width: props.size,
|
|
1705
|
+
height: props.size,
|
|
1706
|
+
viewBox: "0 0 48 48",
|
|
1707
|
+
fill: "none"
|
|
1708
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1709
|
+
d: "M37.8261 4C41.6276 7.58886 44 12.6753 44 18.3158C44 29.1871 35.1871 38 24.3158 38C18.6753 38 13.5889 35.6276 10 31.8261",
|
|
1710
|
+
stroke: props.colors[0],
|
|
1711
|
+
strokeWidth: props.strokeWidth,
|
|
1712
|
+
strokeLinecap: props.strokeLinecap,
|
|
1713
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1714
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1715
|
+
fillRule: "evenodd",
|
|
1716
|
+
clipRule: "evenodd",
|
|
1717
|
+
d: "M24 32C31.732 32 38 25.732 38 18C38 10.268 31.732 4 24 4C16.268 4 10 10.268 10 18C10 25.732 16.268 32 24 32Z",
|
|
1718
|
+
fill: props.colors[1],
|
|
1719
|
+
stroke: props.colors[0],
|
|
1720
|
+
strokeWidth: props.strokeWidth,
|
|
1721
|
+
strokeLinecap: props.strokeLinecap,
|
|
1722
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1723
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1724
|
+
d: "M24 38V44",
|
|
1725
|
+
stroke: props.colors[0],
|
|
1726
|
+
strokeWidth: props.strokeWidth,
|
|
1727
|
+
strokeLinecap: props.strokeLinecap,
|
|
1728
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1729
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1730
|
+
d: "M18 44H30",
|
|
1731
|
+
stroke: props.colors[0],
|
|
1732
|
+
strokeWidth: props.strokeWidth,
|
|
1733
|
+
strokeLinecap: props.strokeLinecap,
|
|
1734
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1735
|
+
}));
|
|
1736
|
+
});
|
|
1737
|
+
//#endregion
|
|
1738
|
+
//#region node_modules/@icon-park/react/es/icons/Help.js
|
|
1739
|
+
var Help_default = IconWrapper("help", true, function(props) {
|
|
1740
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1741
|
+
width: props.size,
|
|
1742
|
+
height: props.size,
|
|
1743
|
+
viewBox: "0 0 48 48",
|
|
1744
|
+
fill: "none"
|
|
1745
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1746
|
+
d: "M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z",
|
|
1747
|
+
fill: props.colors[1],
|
|
1748
|
+
stroke: props.colors[0],
|
|
1749
|
+
strokeWidth: props.strokeWidth,
|
|
1750
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1751
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1752
|
+
d: "M24 28.6248V24.6248C27.3137 24.6248 30 21.9385 30 18.6248C30 15.3111 27.3137 12.6248 24 12.6248C20.6863 12.6248 18 15.3111 18 18.6248",
|
|
1753
|
+
stroke: props.colors[2],
|
|
1754
|
+
strokeWidth: props.strokeWidth,
|
|
1755
|
+
strokeLinecap: props.strokeLinecap,
|
|
1756
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1757
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1758
|
+
fillRule: "evenodd",
|
|
1759
|
+
clipRule: "evenodd",
|
|
1760
|
+
d: "M24 37.6248C25.3807 37.6248 26.5 36.5055 26.5 35.1248C26.5 33.7441 25.3807 32.6248 24 32.6248C22.6193 32.6248 21.5 33.7441 21.5 35.1248C21.5 36.5055 22.6193 37.6248 24 37.6248Z",
|
|
1761
|
+
fill: props.colors[2]
|
|
1762
|
+
}));
|
|
1763
|
+
});
|
|
1764
|
+
//#endregion
|
|
1765
|
+
//#region node_modules/@icon-park/react/es/icons/Info.js
|
|
1766
|
+
var Info_default = IconWrapper("info", true, function(props) {
|
|
1767
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1768
|
+
width: props.size,
|
|
1769
|
+
height: props.size,
|
|
1770
|
+
viewBox: "0 0 48 48",
|
|
1771
|
+
fill: "none"
|
|
1772
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1773
|
+
d: "M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z",
|
|
1774
|
+
fill: props.colors[1],
|
|
1775
|
+
stroke: props.colors[0],
|
|
1776
|
+
strokeWidth: props.strokeWidth,
|
|
1777
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1778
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1779
|
+
fillRule: "evenodd",
|
|
1780
|
+
clipRule: "evenodd",
|
|
1781
|
+
d: "M24 11C25.3807 11 26.5 12.1193 26.5 13.5C26.5 14.8807 25.3807 16 24 16C22.6193 16 21.5 14.8807 21.5 13.5C21.5 12.1193 22.6193 11 24 11Z",
|
|
1782
|
+
fill: props.colors[2]
|
|
1783
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1784
|
+
d: "M24.5 34V20H23.5H22.5",
|
|
1785
|
+
stroke: props.colors[2],
|
|
1786
|
+
strokeWidth: props.strokeWidth,
|
|
1787
|
+
strokeLinecap: props.strokeLinecap,
|
|
1788
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1789
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1790
|
+
d: "M21 34H28",
|
|
1791
|
+
stroke: props.colors[2],
|
|
1792
|
+
strokeWidth: props.strokeWidth,
|
|
1793
|
+
strokeLinecap: props.strokeLinecap,
|
|
1794
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1795
|
+
}));
|
|
1796
|
+
});
|
|
1797
|
+
//#endregion
|
|
1798
|
+
//#region node_modules/@icon-park/react/es/icons/Left.js
|
|
1799
|
+
var Left_default = IconWrapper("left", true, function(props) {
|
|
1800
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1801
|
+
width: props.size,
|
|
1802
|
+
height: props.size,
|
|
1803
|
+
viewBox: "0 0 48 48",
|
|
1804
|
+
fill: "none"
|
|
1805
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1806
|
+
d: "M31 36L19 24L31 12",
|
|
1807
|
+
stroke: props.colors[0],
|
|
1808
|
+
strokeWidth: props.strokeWidth,
|
|
1809
|
+
strokeLinecap: props.strokeLinecap,
|
|
1810
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1811
|
+
}));
|
|
1812
|
+
});
|
|
1813
|
+
//#endregion
|
|
1814
|
+
//#region node_modules/@icon-park/react/es/icons/Link.js
|
|
1815
|
+
var Link_default = IconWrapper("link", true, function(props) {
|
|
1816
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1817
|
+
width: props.size,
|
|
1818
|
+
height: props.size,
|
|
1819
|
+
viewBox: "0 0 48 48",
|
|
1820
|
+
fill: "none"
|
|
1821
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1822
|
+
d: "M24.7073 9.56521L9.85801 24.4145C6.34329 27.9292 6.34329 33.6277 9.85801 37.1424V37.1424C13.3727 40.6571 19.0712 40.6571 22.5859 37.1424L40.2636 19.4647C42.6067 17.1216 42.6067 13.3226 40.2636 10.9794V10.9794C37.9205 8.63628 34.1215 8.63628 31.7783 10.9794L14.1007 28.6571C12.9291 29.8287 12.9291 31.7282 14.1007 32.8997V32.8997C15.2722 34.0713 17.1717 34.0713 18.3433 32.8997L33.1925 18.0505",
|
|
1823
|
+
stroke: props.colors[0],
|
|
1824
|
+
strokeWidth: props.strokeWidth,
|
|
1825
|
+
strokeLinecap: props.strokeLinecap,
|
|
1826
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1827
|
+
}));
|
|
1828
|
+
});
|
|
1829
|
+
//#endregion
|
|
1830
|
+
//#region node_modules/@icon-park/react/es/icons/Loading.js
|
|
1831
|
+
var Loading_default = IconWrapper("loading", true, function(props) {
|
|
1832
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1833
|
+
width: props.size,
|
|
1834
|
+
height: props.size,
|
|
1835
|
+
viewBox: "0 0 48 48",
|
|
1836
|
+
fill: "none"
|
|
1837
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1838
|
+
d: "M4 24C4 35.0457 12.9543 44 24 44V44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4",
|
|
1839
|
+
stroke: props.colors[0],
|
|
1840
|
+
strokeWidth: props.strokeWidth,
|
|
1841
|
+
strokeLinecap: props.strokeLinecap,
|
|
1842
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1843
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1844
|
+
d: "M36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36V36",
|
|
1845
|
+
stroke: props.colors[0],
|
|
1846
|
+
strokeWidth: props.strokeWidth,
|
|
1847
|
+
strokeLinecap: props.strokeLinecap,
|
|
1848
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1849
|
+
}));
|
|
1850
|
+
});
|
|
1851
|
+
//#endregion
|
|
1852
|
+
//#region node_modules/@icon-park/react/es/icons/Lock.js
|
|
1853
|
+
var Lock_default = IconWrapper("lock", false, function(props) {
|
|
1854
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1855
|
+
width: props.size,
|
|
1856
|
+
height: props.size,
|
|
1857
|
+
viewBox: "0 0 48 48",
|
|
1858
|
+
fill: "none"
|
|
1859
|
+
}, /*#__PURE__*/ react.default.createElement("rect", {
|
|
1860
|
+
x: "6",
|
|
1861
|
+
y: "22",
|
|
1862
|
+
width: "36",
|
|
1863
|
+
height: "22",
|
|
1864
|
+
rx: "2",
|
|
1865
|
+
fill: props.colors[1],
|
|
1866
|
+
stroke: props.colors[0],
|
|
1867
|
+
strokeWidth: props.strokeWidth,
|
|
1868
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1869
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1870
|
+
d: "M14 22V14C14 8.47715 18.4772 4 24 4C29.5228 4 34 8.47715 34 14V22",
|
|
1871
|
+
stroke: props.colors[0],
|
|
1872
|
+
strokeWidth: props.strokeWidth,
|
|
1873
|
+
strokeLinecap: props.strokeLinecap,
|
|
1874
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1875
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1876
|
+
d: "M24 30V36",
|
|
1877
|
+
stroke: props.colors[2],
|
|
1878
|
+
strokeWidth: props.strokeWidth,
|
|
1879
|
+
strokeLinecap: props.strokeLinecap,
|
|
1880
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1881
|
+
}));
|
|
1882
|
+
});
|
|
1883
|
+
//#endregion
|
|
1884
|
+
//#region node_modules/@icon-park/react/es/icons/More.js
|
|
1885
|
+
var More_default = IconWrapper("more", false, function(props) {
|
|
1886
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1887
|
+
width: props.size,
|
|
1888
|
+
height: props.size,
|
|
1889
|
+
viewBox: "0 0 48 48",
|
|
1890
|
+
fill: "none"
|
|
1891
|
+
}, /*#__PURE__*/ react.default.createElement("circle", {
|
|
1892
|
+
cx: "12",
|
|
1893
|
+
cy: "24",
|
|
1894
|
+
r: "3",
|
|
1895
|
+
fill: props.colors[0]
|
|
1896
|
+
}), /*#__PURE__*/ react.default.createElement("circle", {
|
|
1897
|
+
cx: "24",
|
|
1898
|
+
cy: "24",
|
|
1899
|
+
r: "3",
|
|
1900
|
+
fill: props.colors[0]
|
|
1901
|
+
}), /*#__PURE__*/ react.default.createElement("circle", {
|
|
1902
|
+
cx: "36",
|
|
1903
|
+
cy: "24",
|
|
1904
|
+
r: "3",
|
|
1905
|
+
fill: props.colors[0]
|
|
1906
|
+
}));
|
|
1907
|
+
});
|
|
1908
|
+
//#endregion
|
|
1909
|
+
//#region node_modules/@icon-park/react/es/icons/Pause.js
|
|
1910
|
+
var Pause_default = IconWrapper("pause", true, function(props) {
|
|
1911
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1912
|
+
width: props.size,
|
|
1913
|
+
height: props.size,
|
|
1914
|
+
viewBox: "0 0 48 48",
|
|
1915
|
+
fill: "none"
|
|
1916
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1917
|
+
d: "M16 12V36",
|
|
1918
|
+
stroke: props.colors[0],
|
|
1919
|
+
strokeWidth: props.strokeWidth,
|
|
1920
|
+
strokeLinecap: props.strokeLinecap,
|
|
1921
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1922
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1923
|
+
d: "M32 12V36",
|
|
1924
|
+
stroke: props.colors[0],
|
|
1925
|
+
strokeWidth: props.strokeWidth,
|
|
1926
|
+
strokeLinecap: props.strokeLinecap,
|
|
1927
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1928
|
+
}));
|
|
1929
|
+
});
|
|
1930
|
+
//#endregion
|
|
1931
|
+
//#region node_modules/@icon-park/react/es/icons/Play.js
|
|
1932
|
+
var Play_default = IconWrapper("play", true, function(props) {
|
|
1933
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1934
|
+
width: props.size,
|
|
1935
|
+
height: props.size,
|
|
1936
|
+
viewBox: "0 0 48 48",
|
|
1937
|
+
fill: "none"
|
|
1938
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1939
|
+
d: "M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z",
|
|
1940
|
+
fill: props.colors[1],
|
|
1941
|
+
stroke: props.colors[0],
|
|
1942
|
+
strokeWidth: props.strokeWidth,
|
|
1943
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1944
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1945
|
+
d: "M20 24V17.0718L26 20.5359L32 24L26 27.4641L20 30.9282V24Z",
|
|
1946
|
+
fill: props.colors[3],
|
|
1947
|
+
stroke: props.colors[2],
|
|
1948
|
+
strokeWidth: props.strokeWidth,
|
|
1949
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1950
|
+
}));
|
|
1951
|
+
});
|
|
1952
|
+
//#endregion
|
|
1953
|
+
//#region node_modules/@icon-park/react/es/icons/PreviewClose.js
|
|
1954
|
+
var PreviewClose_default = IconWrapper("preview-close", false, function(props) {
|
|
1955
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1956
|
+
width: props.size,
|
|
1957
|
+
height: props.size,
|
|
1958
|
+
viewBox: "0 0 48 48",
|
|
1959
|
+
fill: "none"
|
|
1960
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
1961
|
+
d: "M6 16C6.63472 17.2193 7.59646 18.3504 8.82276 19.3554C12.261 22.1733 17.779 24 24 24C30.221 24 35.739 22.1733 39.1772 19.3554C40.4035 18.3504 41.3653 17.2193 42 16",
|
|
1962
|
+
stroke: props.colors[0],
|
|
1963
|
+
strokeWidth: props.strokeWidth,
|
|
1964
|
+
strokeLinecap: props.strokeLinecap,
|
|
1965
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1966
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1967
|
+
d: "M28.9775 24L31.048 31.7274",
|
|
1968
|
+
stroke: props.colors[0],
|
|
1969
|
+
strokeWidth: props.strokeWidth,
|
|
1970
|
+
strokeLinecap: props.strokeLinecap,
|
|
1971
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1972
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1973
|
+
d: "M37.3535 21.3536L43.0103 27.0104",
|
|
1974
|
+
stroke: props.colors[0],
|
|
1975
|
+
strokeWidth: props.strokeWidth,
|
|
1976
|
+
strokeLinecap: props.strokeLinecap,
|
|
1977
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1978
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1979
|
+
d: "M5.00004 27.0103L10.6569 21.3534",
|
|
1980
|
+
stroke: props.colors[0],
|
|
1981
|
+
strokeWidth: props.strokeWidth,
|
|
1982
|
+
strokeLinecap: props.strokeLinecap,
|
|
1983
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1984
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
1985
|
+
d: "M16.9278 31.7276L18.9983 24.0001",
|
|
1986
|
+
stroke: props.colors[0],
|
|
1987
|
+
strokeWidth: props.strokeWidth,
|
|
1988
|
+
strokeLinecap: props.strokeLinecap,
|
|
1989
|
+
strokeLinejoin: props.strokeLinejoin
|
|
1990
|
+
}));
|
|
1991
|
+
});
|
|
1992
|
+
//#endregion
|
|
1993
|
+
//#region node_modules/@icon-park/react/es/icons/PreviewOpen.js
|
|
1994
|
+
var PreviewOpen_default = IconWrapper("preview-open", false, function(props) {
|
|
1995
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
1996
|
+
width: props.size,
|
|
1997
|
+
height: props.size,
|
|
1998
|
+
viewBox: "0 0 48 48",
|
|
1999
|
+
fill: "none"
|
|
2000
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2001
|
+
d: "M24 36C35.0457 36 44 24 44 24C44 24 35.0457 12 24 12C12.9543 12 4 24 4 24C4 24 12.9543 36 24 36Z",
|
|
2002
|
+
fill: props.colors[1],
|
|
2003
|
+
stroke: props.colors[0],
|
|
2004
|
+
strokeWidth: props.strokeWidth,
|
|
2005
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2006
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2007
|
+
d: "M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z",
|
|
2008
|
+
fill: props.colors[3],
|
|
2009
|
+
stroke: props.colors[2],
|
|
2010
|
+
strokeWidth: props.strokeWidth,
|
|
2011
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2012
|
+
}));
|
|
2013
|
+
});
|
|
2014
|
+
//#endregion
|
|
2015
|
+
//#region node_modules/@icon-park/react/es/icons/Redo.js
|
|
2016
|
+
var Redo_default = IconWrapper("redo", true, function(props) {
|
|
2017
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2018
|
+
width: props.size,
|
|
2019
|
+
height: props.size,
|
|
2020
|
+
viewBox: "0 0 48 48",
|
|
2021
|
+
fill: "none"
|
|
2022
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2023
|
+
d: "M36.7279 36.7279C33.4706 39.9853 28.9706 42 24 42C14.0589 42 6 33.9411 6 24C6 14.0589 14.0589 6 24 6C28.9706 6 33.4706 8.01472 36.7279 11.2721C38.3859 12.9301 42 17 42 17",
|
|
2024
|
+
stroke: props.colors[0],
|
|
2025
|
+
strokeWidth: props.strokeWidth,
|
|
2026
|
+
strokeLinecap: props.strokeLinecap,
|
|
2027
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2028
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2029
|
+
d: "M42 8V17H33",
|
|
2030
|
+
stroke: props.colors[0],
|
|
2031
|
+
strokeWidth: props.strokeWidth,
|
|
2032
|
+
strokeLinecap: props.strokeLinecap,
|
|
2033
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2034
|
+
}));
|
|
2035
|
+
});
|
|
2036
|
+
//#endregion
|
|
2037
|
+
//#region node_modules/@icon-park/react/es/icons/Refresh.js
|
|
2038
|
+
var Refresh_default = IconWrapper("refresh", true, function(props) {
|
|
2039
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2040
|
+
width: props.size,
|
|
2041
|
+
height: props.size,
|
|
2042
|
+
viewBox: "0 0 48 48",
|
|
2043
|
+
fill: "none"
|
|
2044
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2045
|
+
d: "M42 8V24",
|
|
2046
|
+
stroke: props.colors[0],
|
|
2047
|
+
strokeWidth: props.strokeWidth,
|
|
2048
|
+
strokeLinecap: props.strokeLinecap,
|
|
2049
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2050
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2051
|
+
d: "M6 24L6 40",
|
|
2052
|
+
stroke: props.colors[0],
|
|
2053
|
+
strokeWidth: props.strokeWidth,
|
|
2054
|
+
strokeLinecap: props.strokeLinecap,
|
|
2055
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2056
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2057
|
+
d: "M42 24C42 14.0589 33.9411 6 24 6C18.9145 6 14.3216 8.10896 11.0481 11.5M6 24C6 33.9411 14.0589 42 24 42C28.8556 42 33.2622 40.0774 36.5 36.9519",
|
|
2058
|
+
stroke: props.colors[0],
|
|
2059
|
+
strokeWidth: props.strokeWidth,
|
|
2060
|
+
strokeLinecap: props.strokeLinecap,
|
|
2061
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2062
|
+
}));
|
|
2063
|
+
});
|
|
2064
|
+
//#endregion
|
|
2065
|
+
//#region node_modules/@icon-park/react/es/icons/Right.js
|
|
2066
|
+
var Right_default = IconWrapper("right", true, function(props) {
|
|
2067
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2068
|
+
width: props.size,
|
|
2069
|
+
height: props.size,
|
|
2070
|
+
viewBox: "0 0 48 48",
|
|
2071
|
+
fill: "none"
|
|
2072
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2073
|
+
d: "M19 12L31 24L19 36",
|
|
2074
|
+
stroke: props.colors[0],
|
|
2075
|
+
strokeWidth: props.strokeWidth,
|
|
2076
|
+
strokeLinecap: props.strokeLinecap,
|
|
2077
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2078
|
+
}));
|
|
2079
|
+
});
|
|
2080
|
+
//#endregion
|
|
2081
|
+
//#region node_modules/@icon-park/react/es/icons/Save.js
|
|
2082
|
+
var Save_default = IconWrapper("save", true, function(props) {
|
|
2083
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2084
|
+
width: props.size,
|
|
2085
|
+
height: props.size,
|
|
2086
|
+
viewBox: "0 0 48 48",
|
|
2087
|
+
fill: "none"
|
|
2088
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2089
|
+
d: "M6 9C6 7.34315 7.34315 6 9 6H34.2814L42 13.2065V39C42 40.6569 40.6569 42 39 42H9C7.34315 42 6 40.6569 6 39V9Z",
|
|
2090
|
+
fill: props.colors[1],
|
|
2091
|
+
stroke: props.colors[0],
|
|
2092
|
+
strokeWidth: props.strokeWidth,
|
|
2093
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2094
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2095
|
+
fillRule: "evenodd",
|
|
2096
|
+
clipRule: "evenodd",
|
|
2097
|
+
d: "M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6",
|
|
2098
|
+
fill: props.colors[3]
|
|
2099
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2100
|
+
d: "M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6H24.0083Z",
|
|
2101
|
+
stroke: props.colors[2],
|
|
2102
|
+
strokeWidth: props.strokeWidth,
|
|
2103
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2104
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2105
|
+
d: "M9 6H34.2814",
|
|
2106
|
+
stroke: props.colors[0],
|
|
2107
|
+
strokeWidth: props.strokeWidth,
|
|
2108
|
+
strokeLinecap: props.strokeLinecap,
|
|
2109
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2110
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2111
|
+
d: "M14 26H34",
|
|
2112
|
+
stroke: props.colors[2],
|
|
2113
|
+
strokeWidth: props.strokeWidth,
|
|
2114
|
+
strokeLinecap: props.strokeLinecap,
|
|
2115
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2116
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2117
|
+
d: "M14 34H24.0083",
|
|
2118
|
+
stroke: props.colors[2],
|
|
2119
|
+
strokeWidth: props.strokeWidth,
|
|
2120
|
+
strokeLinecap: props.strokeLinecap,
|
|
2121
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2122
|
+
}));
|
|
2123
|
+
});
|
|
2124
|
+
//#endregion
|
|
2125
|
+
//#region node_modules/@icon-park/react/es/icons/Search.js
|
|
2126
|
+
var Search_default = IconWrapper("search", true, function(props) {
|
|
2127
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2128
|
+
width: props.size,
|
|
2129
|
+
height: props.size,
|
|
2130
|
+
viewBox: "0 0 48 48",
|
|
2131
|
+
fill: "none"
|
|
2132
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2133
|
+
d: "M21 38C30.3888 38 38 30.3888 38 21C38 11.6112 30.3888 4 21 4C11.6112 4 4 11.6112 4 21C4 30.3888 11.6112 38 21 38Z",
|
|
2134
|
+
fill: props.colors[1],
|
|
2135
|
+
stroke: props.colors[0],
|
|
2136
|
+
strokeWidth: props.strokeWidth,
|
|
2137
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2138
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2139
|
+
d: "M26.657 14.3431C25.2093 12.8954 23.2093 12 21.0001 12C18.791 12 16.791 12.8954 15.3433 14.3431",
|
|
2140
|
+
stroke: props.colors[2],
|
|
2141
|
+
strokeWidth: props.strokeWidth,
|
|
2142
|
+
strokeLinecap: props.strokeLinecap,
|
|
2143
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2144
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2145
|
+
d: "M33.2216 33.2217L41.7069 41.707",
|
|
2146
|
+
stroke: props.colors[0],
|
|
2147
|
+
strokeWidth: props.strokeWidth,
|
|
2148
|
+
strokeLinecap: props.strokeLinecap,
|
|
2149
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2150
|
+
}));
|
|
2151
|
+
});
|
|
2152
|
+
//#endregion
|
|
2153
|
+
//#region node_modules/@icon-park/react/es/icons/Setting.js
|
|
2154
|
+
var Setting_default = IconWrapper("setting", false, function(props) {
|
|
2155
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2156
|
+
width: props.size,
|
|
2157
|
+
height: props.size,
|
|
2158
|
+
viewBox: "0 0 48 48",
|
|
2159
|
+
fill: "none"
|
|
2160
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2161
|
+
d: "M36.686 15.171C37.9364 16.9643 38.8163 19.0352 39.2147 21.2727H44V26.7273H39.2147C38.8163 28.9648 37.9364 31.0357 36.686 32.829L40.0706 36.2137L36.2137 40.0706L32.829 36.686C31.0357 37.9364 28.9648 38.8163 26.7273 39.2147V44H21.2727V39.2147C19.0352 38.8163 16.9643 37.9364 15.171 36.686L11.7863 40.0706L7.92939 36.2137L11.314 32.829C10.0636 31.0357 9.18372 28.9648 8.78533 26.7273H4V21.2727H8.78533C9.18372 19.0352 10.0636 16.9643 11.314 15.171L7.92939 11.7863L11.7863 7.92939L15.171 11.314C16.9643 10.0636 19.0352 9.18372 21.2727 8.78533V4H26.7273V8.78533C28.9648 9.18372 31.0357 10.0636 32.829 11.314L36.2137 7.92939L40.0706 11.7863L36.686 15.171Z",
|
|
2162
|
+
fill: props.colors[1],
|
|
2163
|
+
stroke: props.colors[0],
|
|
2164
|
+
strokeWidth: props.strokeWidth,
|
|
2165
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2166
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2167
|
+
d: "M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z",
|
|
2168
|
+
fill: props.colors[3],
|
|
2169
|
+
stroke: props.colors[2],
|
|
2170
|
+
strokeWidth: props.strokeWidth,
|
|
2171
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2172
|
+
}));
|
|
2173
|
+
});
|
|
2174
|
+
//#endregion
|
|
2175
|
+
//#region node_modules/@icon-park/react/es/icons/SettingTwo.js
|
|
2176
|
+
var SettingTwo_default = IconWrapper("setting-two", false, function(props) {
|
|
2177
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2178
|
+
width: props.size,
|
|
2179
|
+
height: props.size,
|
|
2180
|
+
viewBox: "0 0 48 48",
|
|
2181
|
+
fill: "none"
|
|
2182
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2183
|
+
d: "M18.2838 43.1713C14.9327 42.1736 11.9498 40.3213 9.58787 37.867C10.469 36.8227 11 35.4734 11 34.0001C11 30.6864 8.31371 28.0001 5 28.0001C4.79955 28.0001 4.60139 28.01 4.40599 28.0292C4.13979 26.7277 4 25.3803 4 24.0001C4 21.9095 4.32077 19.8938 4.91579 17.9995C4.94381 17.9999 4.97188 18.0001 5 18.0001C8.31371 18.0001 11 15.3138 11 12.0001C11 11.0488 10.7786 10.1493 10.3846 9.35011C12.6975 7.1995 15.5205 5.59002 18.6521 4.72314C19.6444 6.66819 21.6667 8.00013 24 8.00013C26.3333 8.00013 28.3556 6.66819 29.3479 4.72314C32.4795 5.59002 35.3025 7.1995 37.6154 9.35011C37.2214 10.1493 37 11.0488 37 12.0001C37 15.3138 39.6863 18.0001 43 18.0001C43.0281 18.0001 43.0562 17.9999 43.0842 17.9995C43.6792 19.8938 44 21.9095 44 24.0001C44 25.3803 43.8602 26.7277 43.594 28.0292C43.3986 28.01 43.2005 28.0001 43 28.0001C39.6863 28.0001 37 30.6864 37 34.0001C37 35.4734 37.531 36.8227 38.4121 37.867C36.0502 40.3213 33.0673 42.1736 29.7162 43.1713C28.9428 40.752 26.676 39.0001 24 39.0001C21.324 39.0001 19.0572 40.752 18.2838 43.1713Z",
|
|
2184
|
+
fill: props.colors[1],
|
|
2185
|
+
stroke: props.colors[0],
|
|
2186
|
+
strokeWidth: props.strokeWidth,
|
|
2187
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2188
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2189
|
+
d: "M24 31C27.866 31 31 27.866 31 24C31 20.134 27.866 17 24 17C20.134 17 17 20.134 17 24C17 27.866 20.134 31 24 31Z",
|
|
2190
|
+
fill: props.colors[3],
|
|
2191
|
+
stroke: props.colors[2],
|
|
2192
|
+
strokeWidth: props.strokeWidth,
|
|
2193
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2194
|
+
}));
|
|
2195
|
+
});
|
|
2196
|
+
//#endregion
|
|
2197
|
+
//#region node_modules/@icon-park/react/es/icons/Sort.js
|
|
2198
|
+
var Sort_default = IconWrapper("sort", false, function(props) {
|
|
2199
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2200
|
+
width: props.size,
|
|
2201
|
+
height: props.size,
|
|
2202
|
+
viewBox: "0 0 48 48",
|
|
2203
|
+
fill: "none"
|
|
2204
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2205
|
+
d: "M24 42L15 29H33L24 42Z",
|
|
2206
|
+
fill: props.colors[1],
|
|
2207
|
+
stroke: props.colors[0],
|
|
2208
|
+
strokeWidth: props.strokeWidth,
|
|
2209
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2210
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2211
|
+
d: "M24 6L15 19H33L24 6Z",
|
|
2212
|
+
fill: props.colors[1],
|
|
2213
|
+
stroke: props.colors[0],
|
|
2214
|
+
strokeWidth: props.strokeWidth,
|
|
2215
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2216
|
+
}));
|
|
2217
|
+
});
|
|
2218
|
+
//#endregion
|
|
2219
|
+
//#region node_modules/@icon-park/react/es/icons/Success.js
|
|
2220
|
+
var Success_default = IconWrapper("success", true, function(props) {
|
|
2221
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2222
|
+
width: props.size,
|
|
2223
|
+
height: props.size,
|
|
2224
|
+
viewBox: "0 0 48 48",
|
|
2225
|
+
fill: "none"
|
|
2226
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2227
|
+
d: "M24 4L29.2533 7.83204L35.7557 7.81966L37.7533 14.0077L43.0211 17.8197L41 24L43.0211 30.1803L37.7533 33.9923L35.7557 40.1803L29.2533 40.168L24 44L18.7467 40.168L12.2443 40.1803L10.2467 33.9923L4.97887 30.1803L7 24L4.97887 17.8197L10.2467 14.0077L12.2443 7.81966L18.7467 7.83204L24 4Z",
|
|
2228
|
+
fill: props.colors[1],
|
|
2229
|
+
stroke: props.colors[0],
|
|
2230
|
+
strokeWidth: props.strokeWidth,
|
|
2231
|
+
strokeLinecap: props.strokeLinecap,
|
|
2232
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2233
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2234
|
+
d: "M17 24L22 29L32 19",
|
|
2235
|
+
stroke: props.colors[2],
|
|
2236
|
+
strokeWidth: props.strokeWidth,
|
|
2237
|
+
strokeLinecap: props.strokeLinecap,
|
|
2238
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2239
|
+
}));
|
|
2240
|
+
});
|
|
2241
|
+
//#endregion
|
|
2242
|
+
//#region node_modules/@icon-park/react/es/icons/Terminal.js
|
|
2243
|
+
var Terminal_default = IconWrapper("terminal", true, function(props) {
|
|
2244
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2245
|
+
width: props.size,
|
|
2246
|
+
height: props.size,
|
|
2247
|
+
viewBox: "0 0 48 48",
|
|
2248
|
+
fill: "none"
|
|
2249
|
+
}, /*#__PURE__*/ react.default.createElement("rect", {
|
|
2250
|
+
x: "4",
|
|
2251
|
+
y: "8",
|
|
2252
|
+
width: "40",
|
|
2253
|
+
height: "32",
|
|
2254
|
+
rx: "2",
|
|
2255
|
+
fill: props.colors[1],
|
|
2256
|
+
stroke: props.colors[0],
|
|
2257
|
+
strokeWidth: props.strokeWidth,
|
|
2258
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2259
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2260
|
+
d: "M12 18L19 24L12 30",
|
|
2261
|
+
stroke: props.colors[2],
|
|
2262
|
+
strokeWidth: props.strokeWidth,
|
|
2263
|
+
strokeLinecap: props.strokeLinecap,
|
|
2264
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2265
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2266
|
+
d: "M23 32H36",
|
|
2267
|
+
stroke: props.colors[2],
|
|
2268
|
+
strokeWidth: props.strokeWidth,
|
|
2269
|
+
strokeLinecap: props.strokeLinecap,
|
|
2270
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2271
|
+
}));
|
|
2272
|
+
});
|
|
2273
|
+
//#endregion
|
|
2274
|
+
//#region node_modules/@icon-park/react/es/icons/Undo.js
|
|
2275
|
+
var Undo_default = IconWrapper("undo", true, function(props) {
|
|
2276
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2277
|
+
width: props.size,
|
|
2278
|
+
height: props.size,
|
|
2279
|
+
viewBox: "0 0 48 48",
|
|
2280
|
+
fill: "none"
|
|
2281
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2282
|
+
d: "M11.2721 36.7279C14.5294 39.9853 19.0294 42 24 42C33.9411 42 42 33.9411 42 24C42 14.0589 33.9411 6 24 6C19.0294 6 14.5294 8.01472 11.2721 11.2721C9.61407 12.9301 6 17 6 17",
|
|
2283
|
+
stroke: props.colors[0],
|
|
2284
|
+
strokeWidth: props.strokeWidth,
|
|
2285
|
+
strokeLinecap: props.strokeLinecap,
|
|
2286
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2287
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2288
|
+
d: "M6 9V17H14",
|
|
2289
|
+
stroke: props.colors[0],
|
|
2290
|
+
strokeWidth: props.strokeWidth,
|
|
2291
|
+
strokeLinecap: props.strokeLinecap,
|
|
2292
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2293
|
+
}));
|
|
2294
|
+
});
|
|
2295
|
+
//#endregion
|
|
2296
|
+
//#region node_modules/@icon-park/react/es/icons/Unlock.js
|
|
2297
|
+
var Unlock_default = IconWrapper("unlock", true, function(props) {
|
|
2298
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2299
|
+
width: props.size,
|
|
2300
|
+
height: props.size,
|
|
2301
|
+
viewBox: "0 0 48 48",
|
|
2302
|
+
fill: "none"
|
|
2303
|
+
}, /*#__PURE__*/ react.default.createElement("rect", {
|
|
2304
|
+
x: "7",
|
|
2305
|
+
y: "22.0476",
|
|
2306
|
+
width: "34",
|
|
2307
|
+
height: "22",
|
|
2308
|
+
rx: "2",
|
|
2309
|
+
fill: props.colors[1],
|
|
2310
|
+
stroke: props.colors[0],
|
|
2311
|
+
strokeWidth: props.strokeWidth,
|
|
2312
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2313
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2314
|
+
d: "M14 22V14.0047C13.9948 8.87022 17.9227 4.56718 23.0859 4.05117C28.249 3.53516 32.9673 6.97408 34 12.0059",
|
|
2315
|
+
stroke: props.colors[0],
|
|
2316
|
+
strokeWidth: props.strokeWidth,
|
|
2317
|
+
strokeLinecap: props.strokeLinecap,
|
|
2318
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2319
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2320
|
+
d: "M24 30V36",
|
|
2321
|
+
stroke: props.colors[2],
|
|
2322
|
+
strokeWidth: props.strokeWidth,
|
|
2323
|
+
strokeLinecap: props.strokeLinecap,
|
|
2324
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2325
|
+
}));
|
|
2326
|
+
});
|
|
2327
|
+
//#endregion
|
|
2328
|
+
//#region node_modules/@icon-park/react/es/icons/Up.js
|
|
2329
|
+
var Up_default = IconWrapper("up", false, function(props) {
|
|
2330
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2331
|
+
width: props.size,
|
|
2332
|
+
height: props.size,
|
|
2333
|
+
viewBox: "0 0 48 48",
|
|
2334
|
+
fill: "none"
|
|
2335
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2336
|
+
d: "M13 30L25 18L37 30",
|
|
2337
|
+
stroke: props.colors[0],
|
|
2338
|
+
strokeWidth: props.strokeWidth,
|
|
2339
|
+
strokeLinecap: props.strokeLinecap,
|
|
2340
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2341
|
+
}));
|
|
2342
|
+
});
|
|
2343
|
+
//#endregion
|
|
2344
|
+
//#region node_modules/@icon-park/react/es/icons/Upload.js
|
|
2345
|
+
var Upload_default = IconWrapper("upload", false, function(props) {
|
|
2346
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2347
|
+
width: props.size,
|
|
2348
|
+
height: props.size,
|
|
2349
|
+
viewBox: "0 0 48 48",
|
|
2350
|
+
fill: "none"
|
|
2351
|
+
}, /*#__PURE__*/ react.default.createElement("mask", {
|
|
2352
|
+
id: props.id + "7070702c",
|
|
2353
|
+
maskUnits: "userSpaceOnUse",
|
|
2354
|
+
x: "0",
|
|
2355
|
+
y: "0",
|
|
2356
|
+
width: "48",
|
|
2357
|
+
height: "48",
|
|
2358
|
+
style: { maskType: "alpha" }
|
|
2359
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2360
|
+
d: "M48 0H0V48H48V0Z",
|
|
2361
|
+
fill: props.colors[2]
|
|
2362
|
+
})), /*#__PURE__*/ react.default.createElement("g", { mask: "url(#" + props.id + "7070702c)" }, /*#__PURE__*/ react.default.createElement("path", {
|
|
2363
|
+
d: "M6 24.0083V42H42V24",
|
|
2364
|
+
stroke: props.colors[0],
|
|
2365
|
+
strokeWidth: props.strokeWidth,
|
|
2366
|
+
strokeLinecap: props.strokeLinecap,
|
|
2367
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2368
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2369
|
+
d: "M33 15L24 6L15 15",
|
|
2370
|
+
stroke: props.colors[0],
|
|
2371
|
+
strokeWidth: props.strokeWidth,
|
|
2372
|
+
strokeLinecap: props.strokeLinecap,
|
|
2373
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2374
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2375
|
+
d: "M23.9917 32V6",
|
|
2376
|
+
stroke: props.colors[0],
|
|
2377
|
+
strokeWidth: props.strokeWidth,
|
|
2378
|
+
strokeLinecap: props.strokeLinecap,
|
|
2379
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2380
|
+
})));
|
|
2381
|
+
});
|
|
2382
|
+
//#endregion
|
|
2383
|
+
//#region src/ui/icons.tsx
|
|
2384
|
+
/**
|
|
2385
|
+
* The curated dshloader ICON SET.
|
|
2386
|
+
*
|
|
2387
|
+
* Sourced from `@icon-park/react` so no plugin hand-maintains SVG path data
|
|
2388
|
+
* again (dsh-better-sidebar's `src/client/icons.tsx` keeps 10 icons by hand
|
|
2389
|
+
* today; every entry here replaces one of those or a
|
|
2390
|
+
* `@deepseek-ai/dsh-client-ui-primitives` icon import).
|
|
2391
|
+
*
|
|
2392
|
+
* WHY A SUBSET, NOT `export *`: IconPark ships ~2000 icons. dshloader's client
|
|
2393
|
+
* bundle is materialised through the DSH client module table, and a runtime
|
|
2394
|
+
* module boundary cannot be tree-shaken — re-exporting everything would put all
|
|
2395
|
+
* ~2000 icons into one bundle every plugin pays for. Naming a subset keeps the
|
|
2396
|
+
* cost proportional (only the icons listed here are bundled), and a plugin that
|
|
2397
|
+
* needs an exotic glyph can still depend on `@icon-park/react` directly.
|
|
2398
|
+
*
|
|
2399
|
+
* Adding an icon: import it below and add it to the export block. That is the
|
|
2400
|
+
* only change needed — no SVG, no viewBox, no stroke bookkeeping.
|
|
2401
|
+
*
|
|
2402
|
+
* @module @dsh-plugin/dsh-loader/ui/icons
|
|
2403
|
+
*/
|
|
2404
|
+
/**
|
|
2405
|
+
* The curated set, grouped by purpose. Names are intent-based (`Settings`,
|
|
2406
|
+
* `Warning`) rather than IconPark's raw names so a glyph can be swapped without
|
|
2407
|
+
* touching consumers.
|
|
2408
|
+
*/
|
|
2409
|
+
const Icons = {
|
|
2410
|
+
ChevronUp: Up_default,
|
|
2411
|
+
ChevronDown: Down_default,
|
|
2412
|
+
ChevronLeft: Left_default,
|
|
2413
|
+
ChevronRight: Right_default,
|
|
2414
|
+
Back: Back_default,
|
|
2415
|
+
Expand: FullScreen_default,
|
|
2416
|
+
More: More_default,
|
|
2417
|
+
Sort: Sort_default,
|
|
2418
|
+
Add: Add_default,
|
|
2419
|
+
Edit: Edit_default,
|
|
2420
|
+
Write: IconWrapper("write", true, function(props) {
|
|
2421
|
+
return /*#__PURE__*/ react.default.createElement("svg", {
|
|
2422
|
+
width: props.size,
|
|
2423
|
+
height: props.size,
|
|
2424
|
+
viewBox: "0 0 48 48",
|
|
2425
|
+
fill: "none"
|
|
2426
|
+
}, /*#__PURE__*/ react.default.createElement("path", {
|
|
2427
|
+
d: "M5.32497 43.4996L13.81 43.4998L44.9227 12.3871L36.4374 3.90186L5.32471 35.0146L5.32497 43.4996Z",
|
|
2428
|
+
fill: props.colors[1],
|
|
2429
|
+
stroke: props.colors[0],
|
|
2430
|
+
strokeWidth: props.strokeWidth,
|
|
2431
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2432
|
+
}), /*#__PURE__*/ react.default.createElement("path", {
|
|
2433
|
+
d: "M27.9521 12.3872L36.4374 20.8725",
|
|
2434
|
+
stroke: props.colors[0],
|
|
2435
|
+
strokeWidth: props.strokeWidth,
|
|
2436
|
+
strokeLinecap: props.strokeLinecap,
|
|
2437
|
+
strokeLinejoin: props.strokeLinejoin
|
|
2438
|
+
}));
|
|
2439
|
+
}),
|
|
2440
|
+
Delete: Delete_default,
|
|
2441
|
+
Copy: Copy_default,
|
|
2442
|
+
Save: Save_default,
|
|
2443
|
+
Search: Search_default,
|
|
2444
|
+
Refresh: Refresh_default,
|
|
2445
|
+
Download: Download_default,
|
|
2446
|
+
Upload: Upload_default,
|
|
2447
|
+
Undo: Undo_default,
|
|
2448
|
+
Redo: Redo_default,
|
|
2449
|
+
Play: Play_default,
|
|
2450
|
+
Stop: Pause_default,
|
|
2451
|
+
Close: Close_default,
|
|
2452
|
+
CloseSmall: CloseSmall_default,
|
|
2453
|
+
Check: Check_default,
|
|
2454
|
+
CheckSmall: CheckSmall_default,
|
|
2455
|
+
Info: Info_default,
|
|
2456
|
+
Warning: Attention_default,
|
|
2457
|
+
Error: Error_default,
|
|
2458
|
+
Success: Success_default,
|
|
2459
|
+
Loading: Loading_default,
|
|
2460
|
+
Help: Help_default,
|
|
2461
|
+
Settings: Setting_default,
|
|
2462
|
+
SettingsAlt: SettingTwo_default,
|
|
2463
|
+
Config: Config_default,
|
|
2464
|
+
Terminal: Terminal_default,
|
|
2465
|
+
Code: Code_default,
|
|
2466
|
+
FileCode: FileCode_default,
|
|
2467
|
+
Doc: FileText_default,
|
|
2468
|
+
Folder: Folder_default,
|
|
2469
|
+
FolderOpen: FolderOpen_default,
|
|
2470
|
+
GitBranch: Branch_default,
|
|
2471
|
+
Link: Link_default,
|
|
2472
|
+
Web: Globe_default,
|
|
2473
|
+
Browser: Browser_default,
|
|
2474
|
+
Lock: Lock_default,
|
|
2475
|
+
Unlock: Unlock_default,
|
|
2476
|
+
EyeOpen: PreviewOpen_default,
|
|
2477
|
+
EyeClosed: PreviewClose_default,
|
|
2478
|
+
Alarm: Alarm_default,
|
|
2479
|
+
Diamond: Diamond_default,
|
|
2480
|
+
Apps: AllApplication_default
|
|
2481
|
+
};
|
|
2482
|
+
/** Every curated icon name, for pickers and tests. */
|
|
2483
|
+
const ICON_NAMES = Object.keys(Icons);
|
|
2484
|
+
/**
|
|
2485
|
+
* Look one icon up by name. Unknown names resolve to `Help` rather than
|
|
2486
|
+
* throwing, so a stale name degrades to a visible placeholder.
|
|
2487
|
+
*/
|
|
2488
|
+
function icon(name) {
|
|
2489
|
+
return Icons[name] ?? Icons.Help;
|
|
2490
|
+
}
|
|
2491
|
+
/**
|
|
2492
|
+
* `<Icon name="Settings" />` — the ergonomic form for data-driven icon choices
|
|
2493
|
+
* (menu descriptors, settings rows) where a component reference is awkward.
|
|
2494
|
+
*/
|
|
2495
|
+
function Icon({ name, ...rest }) {
|
|
2496
|
+
const Component = icon(name);
|
|
2497
|
+
return react$1.createElement(Component, rest);
|
|
2498
|
+
}
|
|
2499
|
+
/** The icon defaults dshloader components render with. */
|
|
2500
|
+
const DSH_ICON_CONFIG = {
|
|
2501
|
+
...DEFAULT_ICON_CONFIGS,
|
|
2502
|
+
size: G.fontSize + 3,
|
|
2503
|
+
strokeWidth: 3,
|
|
2504
|
+
theme: "outline",
|
|
2505
|
+
colors: {
|
|
2506
|
+
...DEFAULT_ICON_CONFIGS.colors,
|
|
2507
|
+
outline: {
|
|
2508
|
+
fill: "currentColor",
|
|
2509
|
+
background: "transparent"
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2512
|
+
};
|
|
2513
|
+
/**
|
|
2514
|
+
* Wrap a subtree so every dshloader icon inside inherits the DSH defaults
|
|
2515
|
+
* (outline theme, `currentColor` fill, matching size). Plugins that render
|
|
2516
|
+
* dshloader components inside their own React tree should mount this once near
|
|
2517
|
+
* the root; the components in `./components.js` do not require it, but they look
|
|
2518
|
+
* consistent with the rest of DSH when it is present.
|
|
2519
|
+
*/
|
|
2520
|
+
function DshIconProvider({ children }) {
|
|
2521
|
+
return react$1.createElement(IconProvider, { value: DSH_ICON_CONFIG }, children);
|
|
2522
|
+
}
|
|
2523
|
+
//#endregion
|
|
2524
|
+
//#region src/ui/menu.tsx
|
|
2525
|
+
/** Whether the platform primitive is already known to be missing. */
|
|
2526
|
+
let platformMissing = false;
|
|
2527
|
+
/**
|
|
2528
|
+
* The stable menu surface for dshloader consumers.
|
|
2529
|
+
*
|
|
2530
|
+
* Forwards every prop verbatim to the platform primitive — this wrapper's job
|
|
2531
|
+
* is ISOLATION (one import site, hand-owned types), not behaviour change. When
|
|
2532
|
+
* the platform evolves, adaptation code goes here and consumers stay put.
|
|
2533
|
+
*/
|
|
2534
|
+
function DshMenu(props) {
|
|
2535
|
+
if (platformMissing) return null;
|
|
2536
|
+
try {
|
|
2537
|
+
return (0, _deepseek_ai_dsh_client_ui_primitives.Menu)(props);
|
|
2538
|
+
} catch (error) {
|
|
2539
|
+
platformMissing = true;
|
|
2540
|
+
console.warn(`[dshloader] DshMenu: the platform menu primitive failed (${error instanceof Error ? error.message : String(error)}); rendering nothing. Update src/ui/menu.tsx to adapt to the new platform contract.`);
|
|
2541
|
+
return null;
|
|
2542
|
+
}
|
|
2543
|
+
}
|
|
2544
|
+
//#endregion
|
|
2545
|
+
//#region src/ui/components.tsx
|
|
2546
|
+
/**
|
|
2547
|
+
* The dshloader BASE CONTROLS.
|
|
2548
|
+
*
|
|
2549
|
+
* A small, deliberately unopinionated control set so every plugin in this family
|
|
2550
|
+
* renders the same design language instead of each hand-rolling inline styles
|
|
2551
|
+
* (dsh-network-settings alone carries ~40 inline style objects today, and
|
|
2552
|
+
* dsh-auxiliary / dsh-code-review each maintain their own button and input
|
|
2553
|
+
* looks).
|
|
2554
|
+
*
|
|
2555
|
+
* Design rules:
|
|
2556
|
+
* - Styling is ONE injected stylesheet with `dshl-` prefixed classes, tagged
|
|
2557
|
+
* with the DSH `data-plugin` / `data-plugin-css` ownership attributes so HMR
|
|
2558
|
+
* can reclaim it. No CSS Modules, so consumers need no build-time CSS setup.
|
|
2559
|
+
* - Every colour is a DSH token with a fallback (see `./style.js`), so controls
|
|
2560
|
+
* follow the shell's theme, including dark mode, with no JS theme plumbing.
|
|
2561
|
+
* - Icons come from the curated set and inherit `currentColor`.
|
|
2562
|
+
* - Every control forwards native props and `className`, so a plugin can always
|
|
2563
|
+
* escape the defaults without forking the component.
|
|
2564
|
+
*
|
|
2565
|
+
* @module @dsh-plugin/dsh-loader/ui/components
|
|
2566
|
+
*/
|
|
2567
|
+
/** Owner id used on the injected `<style>` tag. */
|
|
2568
|
+
const OWNER = "@dsh-plugin/dsh-loader";
|
|
2569
|
+
/** The single stylesheet backing every control. */
|
|
2570
|
+
const CSS = `
|
|
2571
|
+
.${CX}-row{display:flex;align-items:center;gap:${G.gap}px}
|
|
2572
|
+
.${CX}-col{display:flex;flex-direction:column;gap:${G.gap}px}
|
|
2573
|
+
.${CX}-btn{
|
|
2574
|
+
display:inline-flex;align-items:center;justify-content:center;gap:6px;
|
|
2575
|
+
height:${G.buttonHeight}px;padding:0 ${G.padXButton}px;
|
|
2576
|
+
font-size:14px;font-family:inherit;line-height:22px;
|
|
2577
|
+
border-radius:${G.radiusPill}px;border:none;
|
|
2578
|
+
background:${T.bgBase};color:${T.labelPrimary};
|
|
2579
|
+
cursor:pointer;box-sizing:border-box;white-space:nowrap;
|
|
2580
|
+
transition:background .12s ease,border-color .12s ease,opacity .12s ease;
|
|
2581
|
+
}
|
|
2582
|
+
.${CX}-btn:hover:not(:disabled){background:${T.bgHover}}
|
|
2583
|
+
.${CX}-btn:disabled{opacity:.5;cursor:not-allowed}
|
|
2584
|
+
.${CX}-btn--primary{
|
|
2585
|
+
background:${T.buttonPrimaryFill};
|
|
2586
|
+
color:${T.buttonPrimaryForeground};
|
|
2587
|
+
}
|
|
2588
|
+
.${CX}-btn--primary:hover:not(:disabled){filter:brightness(1.07);background:${T.buttonPrimaryFill}}
|
|
2589
|
+
.${CX}-btn--ghost{background:transparent;border-color:transparent;color:${T.labelSecondary}}
|
|
2590
|
+
.${CX}-btn--ghost:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}
|
|
2591
|
+
.${CX}-btn--danger{background:transparent;border:1px solid ${T.danger};color:${T.danger};border-radius:${G.radius}px}
|
|
2592
|
+
.${CX}-btn--sm{height:${G.controlHeightSm}px;padding:0 ${G.padX + 2}px;font-size:${G.fontSizeSm}px;border-radius:${G.radius}px}
|
|
2593
|
+
.${CX}-iconbtn{
|
|
2594
|
+
display:inline-flex;align-items:center;justify-content:center;
|
|
2595
|
+
width:${G.controlHeight}px;height:${G.controlHeight}px;padding:0;
|
|
2596
|
+
border-radius:${G.radius}px;border:1px solid transparent;
|
|
2597
|
+
background:transparent;color:${T.labelSecondary};cursor:pointer;
|
|
2598
|
+
}
|
|
2599
|
+
.${CX}-iconbtn:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}
|
|
2600
|
+
.${CX}-iconbtn:disabled{opacity:.5;cursor:not-allowed}
|
|
2601
|
+
.${CX}-input,.${CX}-textarea,.${CX}-select{
|
|
2602
|
+
width:100%;box-sizing:border-box;font-family:inherit;font-size:${G.fontSize}px;
|
|
2603
|
+
color:${T.labelPrimary};background:${T.bgLayer1};
|
|
2604
|
+
border:1px solid ${T.border};border-radius:${G.radius}px;
|
|
2605
|
+
padding:0 ${G.padX}px;height:${G.controlHeight}px;
|
|
2606
|
+
transition:border-color .12s ease;
|
|
2607
|
+
}
|
|
2608
|
+
.${CX}-textarea{height:auto;min-height:72px;padding:7px ${G.padX}px;line-height:1.5;resize:vertical}
|
|
2609
|
+
.${CX}-input:focus,.${CX}-textarea:focus,.${CX}-select:focus{outline:none;border-color:${T.accent}}
|
|
2610
|
+
.${CX}-input:disabled,.${CX}-textarea:disabled,.${CX}-select:disabled{opacity:.55;cursor:not-allowed}
|
|
2611
|
+
.${CX}-input--mono,.${CX}-textarea--mono{font-family:${T.fontCode}}
|
|
2612
|
+
.${CX}-input--invalid,.${CX}-textarea--invalid{border-color:${T.danger}}
|
|
2613
|
+
.${CX}-select{appearance:none;padding-right:26px;cursor:pointer;background-color:${T.bgBase}}
|
|
2614
|
+
.${CX}-selectwrap{position:relative;display:block;width:100%}
|
|
2615
|
+
.${CX}-selectwrap>.${CX}-caret{
|
|
2616
|
+
position:absolute;right:8px;top:50%;transform:translateY(-50%);
|
|
2617
|
+
pointer-events:none;color:${T.labelTertiary};display:inline-flex;
|
|
2618
|
+
}
|
|
2619
|
+
.${CX}-mselect{position:relative;width:100%}
|
|
2620
|
+
.${CX}-mselect__trigger{
|
|
2621
|
+
display:flex;align-items:center;justify-content:space-between;gap:8px;
|
|
2622
|
+
width:100%;box-sizing:border-box;min-height:36px;padding:7px 10px;
|
|
2623
|
+
font-family:inherit;font-size:14px;line-height:20px;text-align:left;
|
|
2624
|
+
color:${T.labelPrimary};background:${T.bgLayer1};
|
|
2625
|
+
border:1px solid ${T.border};border-radius:8px;cursor:pointer;appearance:none;
|
|
2626
|
+
}
|
|
2627
|
+
.${CX}-mselect__trigger:disabled{opacity:.45;cursor:not-allowed}
|
|
2628
|
+
.${CX}-mselect__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
2629
|
+
.${CX}-mselect__text--ph{color:${T.labelTertiary}}
|
|
2630
|
+
.${CX}-mselect__caret{display:inline-flex;align-items:center;flex:none;color:${T.labelTertiary}}
|
|
2631
|
+
.${CX}-check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:13px;color:${T.labelPrimary};line-height:20px}
|
|
2632
|
+
.${CX}-check input{
|
|
2633
|
+
position:relative;margin:0;width:16px;height:16px;flex:none;
|
|
2634
|
+
appearance:auto;-webkit-appearance:checkbox;cursor:pointer;
|
|
2635
|
+
accent-color:${T.accent};
|
|
2636
|
+
}
|
|
2637
|
+
.${CX}-check input[disabled]{cursor:not-allowed}
|
|
2638
|
+
.${CX}-check--disabled{opacity:.55;cursor:not-allowed}
|
|
2639
|
+
.${CX}-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:${G.fontSize}px;color:${T.labelPrimary}}
|
|
2640
|
+
.${CX}-switch input{position:absolute;opacity:0;width:0;height:0}
|
|
2641
|
+
.${CX}-switch__track{
|
|
2642
|
+
position:relative;flex:none;width:34px;height:20px;border-radius:${G.radiusPill}px;
|
|
2643
|
+
background:${T.border};transition:background .16s ease;
|
|
2644
|
+
}
|
|
2645
|
+
.${CX}-switch__knob{
|
|
2646
|
+
position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;
|
|
2647
|
+
background:${T.bgBase};box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .16s ease;
|
|
2648
|
+
}
|
|
2649
|
+
.${CX}-switch input:checked+.${CX}-switch__track{background:${T.accent}}
|
|
2650
|
+
.${CX}-switch input:checked+.${CX}-switch__track>.${CX}-switch__knob{transform:translateX(14px)}
|
|
2651
|
+
.${CX}-switch input:focus-visible+.${CX}-switch__track{box-shadow:0 0 0 2px ${T.accent}55}
|
|
2652
|
+
.${CX}-switch--disabled{opacity:.55;cursor:not-allowed}
|
|
2653
|
+
.${CX}-field{display:flex;flex-direction:column;gap:6px}
|
|
2654
|
+
.${CX}-field__label{font-size:12px;font-weight:500;color:${T.labelSecondary};line-height:18px}
|
|
2655
|
+
.${CX}-field__desc{font-size:${G.fontSizeSm}px;color:${T.labelTertiary};line-height:18px}
|
|
2656
|
+
.${CX}-field__error{font-size:${G.fontSizeSm}px;color:${T.danger}}
|
|
2657
|
+
.${CX}-card{
|
|
2658
|
+
display:flex;flex-direction:column;gap:10px;
|
|
2659
|
+
padding:16px;border:1px solid ${T.border};border-radius:${G.cardRadius}px;
|
|
2660
|
+
background:transparent;box-sizing:border-box;
|
|
2661
|
+
}
|
|
2662
|
+
.${CX}-card__title{margin:0;font-size:15px;font-weight:500;line-height:22px;color:${T.labelPrimary}}
|
|
2663
|
+
.${CX}-spin{display:inline-flex;animation:${CX}-spin 1s linear infinite}
|
|
2664
|
+
@keyframes ${CX}-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
|
|
2665
|
+
@media (prefers-reduced-motion:reduce){
|
|
2666
|
+
.${CX}-spin{animation:none}
|
|
2667
|
+
.${CX}-btn,.${CX}-input,.${CX}-switch__track,.${CX}-switch__knob,.${CX}-check__box{transition:none}
|
|
2668
|
+
}
|
|
2669
|
+
`;
|
|
2670
|
+
/** Inject the control stylesheet once (idempotent, safe to call from any component). */
|
|
2671
|
+
function ensureStyles() {
|
|
2672
|
+
injectStyle(OWNER, "ui/controls.css", CSS);
|
|
2673
|
+
}
|
|
2674
|
+
/** Call `ensureStyles` on first render of any control. */
|
|
2675
|
+
function useStyles() {
|
|
2676
|
+
ensureStyles();
|
|
2677
|
+
}
|
|
2678
|
+
/** A button in the DSH design language. */
|
|
2679
|
+
const Button = react$1.forwardRef(function Button({ variant = "default", small, icon, loading, className, children, disabled, ...rest }, ref) {
|
|
2680
|
+
useStyles();
|
|
2681
|
+
return react$1.createElement("button", {
|
|
2682
|
+
ref,
|
|
2683
|
+
type: rest.type ?? "button",
|
|
2684
|
+
className: cx(`${CX}-btn`, variant !== "default" && `dshl-btn--${variant}`, small && `dshl-btn--sm`, className),
|
|
2685
|
+
disabled: disabled === true || loading === true,
|
|
2686
|
+
...rest
|
|
2687
|
+
}, loading === true ? react$1.createElement("span", {
|
|
2688
|
+
className: `${CX}-spin`,
|
|
2689
|
+
key: "spin"
|
|
2690
|
+
}, react$1.createElement(Icon, { name: "Loading" })) : icon !== void 0 ? react$1.createElement(Icon, {
|
|
2691
|
+
name: icon,
|
|
2692
|
+
key: "icon"
|
|
2693
|
+
}) : null, children);
|
|
2694
|
+
});
|
|
2695
|
+
/** A square icon-only button. `label` becomes its accessible name. */
|
|
2696
|
+
const IconButton = react$1.forwardRef(function IconButton({ icon, label, className, ...rest }, ref) {
|
|
2697
|
+
useStyles();
|
|
2698
|
+
return react$1.createElement("button", {
|
|
2699
|
+
ref,
|
|
2700
|
+
type: rest.type ?? "button",
|
|
2701
|
+
className: cx(`${CX}-iconbtn`, className),
|
|
2702
|
+
"aria-label": label,
|
|
2703
|
+
title: rest.title ?? label,
|
|
2704
|
+
...rest
|
|
2705
|
+
}, react$1.createElement(Icon, { name: icon }));
|
|
2706
|
+
});
|
|
2707
|
+
/** A single-line text input. */
|
|
2708
|
+
const TextInput = react$1.forwardRef(function TextInput({ mono, invalid, className, ...rest }, ref) {
|
|
2709
|
+
useStyles();
|
|
2710
|
+
return react$1.createElement("input", {
|
|
2711
|
+
ref,
|
|
2712
|
+
type: rest.type ?? "text",
|
|
2713
|
+
className: cx(`${CX}-input`, mono && `dshl-input--mono`, invalid && `dshl-input--invalid`, className),
|
|
2714
|
+
"aria-invalid": invalid === true ? true : void 0,
|
|
2715
|
+
...rest
|
|
2716
|
+
});
|
|
2717
|
+
});
|
|
2718
|
+
/** A multi-line text area. */
|
|
2719
|
+
const Textarea = react$1.forwardRef(function Textarea({ mono, invalid, className, ...rest }, ref) {
|
|
2720
|
+
useStyles();
|
|
2721
|
+
return react$1.createElement("textarea", {
|
|
2722
|
+
ref,
|
|
2723
|
+
className: cx(`${CX}-textarea`, mono && `dshl-textarea--mono`, invalid && `dshl-textarea--invalid`, className),
|
|
2724
|
+
"aria-invalid": invalid === true ? true : void 0,
|
|
2725
|
+
...rest
|
|
2726
|
+
});
|
|
2727
|
+
});
|
|
2728
|
+
/**
|
|
2729
|
+
* A dropdown built on the native `<select>`.
|
|
2730
|
+
*
|
|
2731
|
+
* Native on purpose: it inherits the platform's keyboard handling, mobile
|
|
2732
|
+
* pickers, and accessibility for free. Plugins needing DSH's rich popup should
|
|
2733
|
+
* use `Menu` from `@dsh-plugin/dsh-loader/ui-primitives` instead.
|
|
2734
|
+
*/
|
|
2735
|
+
const Select = react$1.forwardRef(function Select({ options, placeholder, className, value, ...rest }, ref) {
|
|
2736
|
+
useStyles();
|
|
2737
|
+
return react$1.createElement("span", { className: `${CX}-selectwrap` }, react$1.createElement("select", {
|
|
2738
|
+
ref,
|
|
2739
|
+
className: cx(`${CX}-select`, className),
|
|
2740
|
+
value,
|
|
2741
|
+
...rest
|
|
2742
|
+
}, placeholder !== void 0 ? react$1.createElement("option", {
|
|
2743
|
+
key: "__ph",
|
|
2744
|
+
value: "",
|
|
2745
|
+
disabled: true
|
|
2746
|
+
}, placeholder) : null, options.map((option) => react$1.createElement("option", {
|
|
2747
|
+
key: option.value,
|
|
2748
|
+
value: option.value,
|
|
2749
|
+
disabled: option.disabled
|
|
2750
|
+
}, option.label))), react$1.createElement("span", { className: `${CX}-caret` }, react$1.createElement(Icon, { name: "ChevronDown" })));
|
|
2751
|
+
});
|
|
2752
|
+
/** Height budget used when deciding whether the popup opens above the trigger. */
|
|
2753
|
+
const MENU_SELECT_MAX_HEIGHT = 264;
|
|
2754
|
+
/**
|
|
2755
|
+
* A dropdown whose trigger and popup match the shell's own pickers (the
|
|
2756
|
+
* dsh-auxiliary model picker look): a bordered layer-1 trigger button plus the
|
|
2757
|
+
* platform menu popup via {@link DshMenu}.
|
|
2758
|
+
*
|
|
2759
|
+
* Prefer this over {@link Select} on settings pages: the native `<select>`
|
|
2760
|
+
* popup is OS-styled and cannot follow the shell theme, which is exactly the
|
|
2761
|
+
* visual drift this component removes. `Select` remains for dense/inline forms
|
|
2762
|
+
* where the native control's compactness matters.
|
|
2763
|
+
*/
|
|
2764
|
+
function MenuSelect({ options, value, placeholder, disabled, onChange, id, label, className }) {
|
|
2765
|
+
useStyles();
|
|
2766
|
+
const [open, setOpen] = react$1.useState(false);
|
|
2767
|
+
const [side, setSide] = react$1.useState("bottom");
|
|
2768
|
+
const triggerRef = react$1.useRef(null);
|
|
2769
|
+
const updateSide = react$1.useCallback(() => {
|
|
2770
|
+
const trigger = triggerRef.current;
|
|
2771
|
+
if (trigger === null) return;
|
|
2772
|
+
const rect = trigger.getBoundingClientRect();
|
|
2773
|
+
const below = window.innerHeight - rect.bottom - 12;
|
|
2774
|
+
const above = rect.top - 12;
|
|
2775
|
+
setSide(below >= Math.min(MENU_SELECT_MAX_HEIGHT, above) ? "bottom" : "top");
|
|
2776
|
+
}, []);
|
|
2777
|
+
react$1.useEffect(() => {
|
|
2778
|
+
if (!open) return void 0;
|
|
2779
|
+
updateSide();
|
|
2780
|
+
window.addEventListener("scroll", updateSide, true);
|
|
2781
|
+
window.addEventListener("resize", updateSide);
|
|
2782
|
+
return () => {
|
|
2783
|
+
window.removeEventListener("scroll", updateSide, true);
|
|
2784
|
+
window.removeEventListener("resize", updateSide);
|
|
2785
|
+
};
|
|
2786
|
+
}, [open, updateSide]);
|
|
2787
|
+
const selected = options.find((option) => option.value === value);
|
|
2788
|
+
const text = selected !== void 0 ? selected.label : placeholder ?? "";
|
|
2789
|
+
const items = react$1.useMemo(() => options.map((option) => ({
|
|
2790
|
+
id: option.value,
|
|
2791
|
+
label: option.label,
|
|
2792
|
+
disabled: option.disabled
|
|
2793
|
+
})), [options]);
|
|
2794
|
+
return react$1.createElement("div", { className: cx(`${CX}-mselect`, className) }, react$1.createElement(DshMenu, {
|
|
2795
|
+
open,
|
|
2796
|
+
anchor: react$1.createElement("button", {
|
|
2797
|
+
ref: triggerRef,
|
|
2798
|
+
type: "button",
|
|
2799
|
+
id,
|
|
2800
|
+
disabled: disabled === true,
|
|
2801
|
+
className: `${CX}-mselect__trigger`,
|
|
2802
|
+
"aria-label": label !== void 0 ? `${label}: ${text}` : text,
|
|
2803
|
+
"aria-haspopup": "menu",
|
|
2804
|
+
"aria-expanded": open,
|
|
2805
|
+
title: text,
|
|
2806
|
+
onClick: () => setOpen((previous) => !previous)
|
|
2807
|
+
}, react$1.createElement("span", { className: cx(`${CX}-mselect__text`, selected === void 0 && `dshl-mselect__text--ph`) }, text), react$1.createElement("span", {
|
|
2808
|
+
className: `${CX}-mselect__caret`,
|
|
2809
|
+
"aria-hidden": true
|
|
2810
|
+
}, react$1.createElement(Icon, {
|
|
2811
|
+
name: "ChevronDown",
|
|
2812
|
+
size: 14
|
|
2813
|
+
}))),
|
|
2814
|
+
items,
|
|
2815
|
+
selectedId: value,
|
|
2816
|
+
onSelect: (chosen) => {
|
|
2817
|
+
onChange?.(chosen);
|
|
2818
|
+
setOpen(false);
|
|
2819
|
+
},
|
|
2820
|
+
onClose: () => setOpen(false),
|
|
2821
|
+
align: "start",
|
|
2822
|
+
side,
|
|
2823
|
+
dense: true
|
|
2824
|
+
}));
|
|
2825
|
+
}
|
|
2826
|
+
/** A checkbox with an optional label. Native input styled via `accent-color`,
|
|
2827
|
+
* matching the shell's own settings pages. */
|
|
2828
|
+
const Checkbox = react$1.forwardRef(function Checkbox({ label, className, disabled, ...rest }, ref) {
|
|
2829
|
+
useStyles();
|
|
2830
|
+
return react$1.createElement("label", { className: cx(`${CX}-check`, disabled === true && `dshl-check--disabled`, className) }, react$1.createElement("input", {
|
|
2831
|
+
ref,
|
|
2832
|
+
type: "checkbox",
|
|
2833
|
+
disabled,
|
|
2834
|
+
...rest
|
|
2835
|
+
}), label === void 0 ? null : react$1.createElement("span", null, label));
|
|
2836
|
+
});
|
|
2837
|
+
/** A toggle switch — use for "applies immediately" settings. */
|
|
2838
|
+
const Switch = react$1.forwardRef(function Switch({ label, className, disabled, ...rest }, ref) {
|
|
2839
|
+
useStyles();
|
|
2840
|
+
return react$1.createElement("label", { className: cx(`${CX}-switch`, disabled === true && `dshl-switch--disabled`, className) }, react$1.createElement("input", {
|
|
2841
|
+
ref,
|
|
2842
|
+
type: "checkbox",
|
|
2843
|
+
role: "switch",
|
|
2844
|
+
disabled,
|
|
2845
|
+
...rest
|
|
2846
|
+
}), react$1.createElement("span", {
|
|
2847
|
+
className: `${CX}-switch__track`,
|
|
2848
|
+
"aria-hidden": true
|
|
2849
|
+
}, react$1.createElement("span", { className: `${CX}-switch__knob` })), label === void 0 ? null : react$1.createElement("span", null, label));
|
|
2850
|
+
});
|
|
2851
|
+
/** Label + control + description/error, the standard settings row. */
|
|
2852
|
+
function Field({ label, description, error, htmlFor, children, className }) {
|
|
2853
|
+
useStyles();
|
|
2854
|
+
return react$1.createElement("div", { className: cx(`${CX}-field`, className) }, label === void 0 ? null : react$1.createElement("label", {
|
|
2855
|
+
className: `${CX}-field__label`,
|
|
2856
|
+
htmlFor
|
|
2857
|
+
}, label), children, description === void 0 ? null : react$1.createElement("span", { className: `${CX}-field__desc` }, description), error === void 0 || error === null || error === false ? null : react$1.createElement("span", {
|
|
2858
|
+
className: `${CX}-field__error`,
|
|
2859
|
+
role: "alert"
|
|
2860
|
+
}, error));
|
|
2861
|
+
}
|
|
2862
|
+
/** A bordered section container — the settings-page card look. */
|
|
2863
|
+
function Card({ title, children, className }) {
|
|
2864
|
+
useStyles();
|
|
2865
|
+
return react$1.createElement("section", { className: cx(`${CX}-card`, className) }, title === void 0 ? null : react$1.createElement("h3", { className: `${CX}-card__title` }, title), children);
|
|
2866
|
+
}
|
|
2867
|
+
/** A horizontal flex row with the standard gap. */
|
|
2868
|
+
function Row({ children, className }) {
|
|
2869
|
+
useStyles();
|
|
2870
|
+
return react$1.createElement("div", { className: cx(`${CX}-row`, className) }, children);
|
|
2871
|
+
}
|
|
2872
|
+
/** A vertical flex column with the standard gap. */
|
|
2873
|
+
function Col({ children, className }) {
|
|
2874
|
+
useStyles();
|
|
2875
|
+
return react$1.createElement("div", { className: cx(`${CX}-col`, className) }, children);
|
|
2876
|
+
}
|
|
2877
|
+
/** An inline spinner. */
|
|
2878
|
+
function Spinner({ size }) {
|
|
2879
|
+
useStyles();
|
|
2880
|
+
return react$1.createElement("span", {
|
|
2881
|
+
className: `${CX}-spin`,
|
|
2882
|
+
role: "status",
|
|
2883
|
+
"aria-label": "loading"
|
|
2884
|
+
}, react$1.createElement(Icon, {
|
|
2885
|
+
name: "Loading",
|
|
2886
|
+
size
|
|
2887
|
+
}));
|
|
2888
|
+
}
|
|
2889
|
+
//#endregion
|
|
2890
|
+
//#region src/ui/index.ts
|
|
2891
|
+
/**
|
|
2892
|
+
* The dshloader UI surface: virtual slots, the curated icon set, and the base
|
|
2893
|
+
* controls, wrapped as one `ui` facade.
|
|
2894
|
+
*
|
|
2895
|
+
* Consumers reach this at runtime through `@dsh-plugin/dsh-loader/client`, which
|
|
2896
|
+
* the DSH client module table resolves by stripping the `/client` suffix to
|
|
2897
|
+
* dshloader's registered bundle id — so no alias and no load-order coordination
|
|
2898
|
+
* is needed (see docs/ui.md).
|
|
2899
|
+
*
|
|
2900
|
+
* @module @dsh-plugin/dsh-loader/ui
|
|
2901
|
+
*/
|
|
2902
|
+
/**
|
|
2903
|
+
* Build the UI facade and seed it with the dsh 1.x anchor table.
|
|
2904
|
+
*
|
|
2905
|
+
* @param options - forwarded to {@link createUiAPI} (observe root, warn sink).
|
|
2906
|
+
*/
|
|
2907
|
+
function createUi(options = {}) {
|
|
2908
|
+
const api = createUiAPI(options);
|
|
2909
|
+
for (const [name, spec] of Object.entries(BUILTIN_ANCHORS)) api.defineAnchor(name, spec);
|
|
2910
|
+
return {
|
|
2911
|
+
...api,
|
|
2912
|
+
mount: api.mount.bind(api),
|
|
2913
|
+
mountReact: api.mountReact.bind(api),
|
|
2914
|
+
defineAnchor: api.defineAnchor.bind(api),
|
|
2915
|
+
anchors: api.anchors.bind(api),
|
|
2916
|
+
hosts: api.hosts.bind(api),
|
|
2917
|
+
onDomSettled: api.onDomSettled.bind(api),
|
|
2918
|
+
diagnose: api.diagnose.bind(api),
|
|
2919
|
+
destroy: api.destroy.bind(api),
|
|
2920
|
+
layoutFrame() {
|
|
2921
|
+
const [host] = api.hosts("layout.frame");
|
|
2922
|
+
return host === void 0 ? void 0 : readLayoutFrame(host);
|
|
2923
|
+
}
|
|
2924
|
+
};
|
|
2925
|
+
}
|
|
2926
|
+
//#endregion
|
|
2927
|
+
//#region src/client-ui.tsx
|
|
2928
|
+
/**
|
|
2929
|
+
* dshloader BROWSER BUNDLE ENTRY.
|
|
2930
|
+
*
|
|
2931
|
+
* Composes the two browser halves of dshloader:
|
|
2932
|
+
*
|
|
2933
|
+
* 1. the compatibility infrastructure in `./client.ts` — `window.__dshLoader__`,
|
|
2934
|
+
* the `__ModuleLoader__.load` wrapper that applies package aliases, the
|
|
2935
|
+
* module-alias factories, and the optional settings fetch interceptor;
|
|
2936
|
+
* 2. the UI surface in `./ui/` — the virtual slot engine, the curated icon set,
|
|
2937
|
+
* and the base controls.
|
|
2938
|
+
*
|
|
2939
|
+
* WHY A SEPARATE ENTRY FROM `client.ts`: `client.ts` must keep compiling in the
|
|
2940
|
+
* NODE program (`tsconfig.build.json` → `dist/client.js`), because the client
|
|
2941
|
+
* unit tests import it from there. The UI modules need `lib.dom` and JSX, which
|
|
2942
|
+
* that program does not have. Keeping the entry separate lets each half compile
|
|
2943
|
+
* under the program that suits it while both land in one bundle.
|
|
2944
|
+
*
|
|
2945
|
+
* Consumers import from `@dsh-plugin/dsh-loader/client`, marked external in
|
|
2946
|
+
* their bundler: the DSH client module table strips the `/client` suffix to
|
|
2947
|
+
* dshloader's registered bundle id and materialises this module recursively, so
|
|
2948
|
+
* no package alias and no load-order coordination is required.
|
|
2949
|
+
*
|
|
2950
|
+
* @module @dsh-plugin/dsh-loader/client
|
|
2951
|
+
*/
|
|
2952
|
+
/** cordis plugin name (matches the npm package name and the bundle id). */
|
|
263
2953
|
const name = "@dsh-plugin/dsh-loader";
|
|
2954
|
+
/** dshloader consumes no cordis service; it only provides. */
|
|
264
2955
|
const inject = [];
|
|
2956
|
+
/** The live UI facade, once `apply` has run. */
|
|
2957
|
+
let ui;
|
|
2958
|
+
/**
|
|
2959
|
+
* The UI facade for callers that reach dshloader through the module table rather
|
|
2960
|
+
* than `window.__dshLoader__`.
|
|
2961
|
+
*
|
|
2962
|
+
* @returns the facade, or `undefined` before the client plugin has applied.
|
|
2963
|
+
*/
|
|
2964
|
+
function getUi() {
|
|
2965
|
+
return ui;
|
|
2966
|
+
}
|
|
2967
|
+
/** The browser `window`, read off `globalThis` so no DOM lib is assumed here. */
|
|
2968
|
+
function ambientWindow() {
|
|
2969
|
+
const found = globalThis.window;
|
|
2970
|
+
return typeof found === "object" && found !== null ? found : void 0;
|
|
2971
|
+
}
|
|
2972
|
+
/**
|
|
2973
|
+
* The cordis client service name dshloader publishes its UI facade under.
|
|
2974
|
+
*
|
|
2975
|
+
* Consumers should declare `inject: ['dshLoaderUi']` and read `ctx.dshLoaderUi`:
|
|
2976
|
+
* cordis then activates them only after dshloader's client half has applied,
|
|
2977
|
+
* which is the only ordering guarantee available on the browser side.
|
|
2978
|
+
* `dsh.client.immediately` guarantees the bundle's factory is REGISTERED early,
|
|
2979
|
+
* not that its `apply` has run — so a plugin that reads
|
|
2980
|
+
* `window.__dshLoader__.ui` without injecting can observe `undefined`.
|
|
2981
|
+
*/
|
|
2982
|
+
const UI_SERVICE = "dshLoaderUi";
|
|
2983
|
+
/**
|
|
2984
|
+
* cordis client-plugin entry.
|
|
2985
|
+
*
|
|
2986
|
+
* Mounts the infrastructure first (so the `__ModuleLoader__` wrapper is in place
|
|
2987
|
+
* before any sibling bundle materialises), then the UI facade, then publishes it
|
|
2988
|
+
* both as the `dshLoaderUi` cordis service (ordered access) and on
|
|
2989
|
+
* `window.__dshLoader__.ui` (ad-hoc access from non-cordis code).
|
|
2990
|
+
*/
|
|
265
2991
|
function apply(ctx) {
|
|
266
|
-
|
|
267
|
-
|
|
2992
|
+
const win = ambientWindow();
|
|
2993
|
+
if (win === void 0) return;
|
|
2994
|
+
const api = installClient({
|
|
2995
|
+
window: win,
|
|
268
2996
|
clientCtx: ctx
|
|
269
2997
|
});
|
|
2998
|
+
ui = createUi();
|
|
2999
|
+
if (api !== void 0) api.ui = ui;
|
|
3000
|
+
else if (win.__dshLoader__ !== void 0) win.__dshLoader__.ui = ui;
|
|
3001
|
+
ctx.provide?.(UI_SERVICE, ui);
|
|
3002
|
+
ctx.effect?.(() => () => {
|
|
3003
|
+
ui?.destroy();
|
|
3004
|
+
ui = void 0;
|
|
3005
|
+
});
|
|
270
3006
|
}
|
|
271
3007
|
//#endregion
|
|
3008
|
+
exports.ANCHOR_NAMES = ANCHOR_NAMES;
|
|
3009
|
+
exports.BUILTIN_ANCHORS = BUILTIN_ANCHORS;
|
|
3010
|
+
exports.Button = Button;
|
|
3011
|
+
exports.CX = CX;
|
|
3012
|
+
exports.Card = Card;
|
|
3013
|
+
exports.Checkbox = Checkbox;
|
|
3014
|
+
exports.Col = Col;
|
|
3015
|
+
exports.DSH_ICON_CONFIG = DSH_ICON_CONFIG;
|
|
3016
|
+
exports.DshIconProvider = DshIconProvider;
|
|
3017
|
+
exports.DshMenu = DshMenu;
|
|
3018
|
+
exports.Field = Field;
|
|
3019
|
+
exports.G = G;
|
|
3020
|
+
exports.ICON_NAMES = ICON_NAMES;
|
|
3021
|
+
exports.Icon = Icon;
|
|
3022
|
+
exports.IconButton = IconButton;
|
|
3023
|
+
exports.IconProvider = IconProvider;
|
|
3024
|
+
exports.Icons = Icons;
|
|
3025
|
+
exports.MenuSelect = MenuSelect;
|
|
272
3026
|
exports.ModuleNotFoundError = ModuleNotFoundError;
|
|
3027
|
+
exports.Row = Row;
|
|
3028
|
+
exports.Select = Select;
|
|
3029
|
+
exports.Spinner = Spinner;
|
|
3030
|
+
exports.Switch = Switch;
|
|
3031
|
+
exports.T = T;
|
|
3032
|
+
exports.TextInput = TextInput;
|
|
3033
|
+
exports.Textarea = Textarea;
|
|
3034
|
+
exports.UI_SERVICE = UI_SERVICE;
|
|
273
3035
|
exports.apply = apply;
|
|
274
3036
|
exports.createClientAPI = createClientAPI;
|
|
3037
|
+
exports.createUi = createUi;
|
|
3038
|
+
exports.createUiAPI = createUiAPI;
|
|
3039
|
+
exports.cx = cx;
|
|
3040
|
+
exports.ensureStyles = ensureStyles;
|
|
3041
|
+
exports.getUi = getUi;
|
|
3042
|
+
exports.icon = icon;
|
|
275
3043
|
exports.inject = inject;
|
|
3044
|
+
exports.injectStyle = injectStyle;
|
|
276
3045
|
exports.installClient = installClient;
|
|
277
3046
|
exports.installSettingsFetchInterceptor = installSettingsFetchInterceptor;
|
|
278
3047
|
exports.name = name;
|
|
3048
|
+
exports.readLayoutFrame = readLayoutFrame;
|
|
3049
|
+
exports.token = token;
|
|
279
3050
|
return module.exports;
|
|
280
3051
|
}
|
|
281
3052
|
});
|