dshmarket 1.55.0 → 1.57.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/client/client.js +842 -347
- package/lib/http.js +43 -3
- package/lib/restart.js +9 -1
- package/lib/types/http.d.ts +18 -0
- package/package.json +1 -1
- package/src/client/Diagnostics.tsx +7 -1
- package/src/client/InstallToast.tsx +2 -1
- package/src/client/Market.module.css +43 -7
- package/src/client/MarketSection.tsx +451 -148
- package/src/client/OperationsPanel.tsx +2 -2
- package/src/client/RecoveryPanel.tsx +2 -1
- package/src/client/SearchInput.tsx +2 -1
- package/src/client/SettingsCard.tsx +2 -1
- package/src/client/icons.ts +130 -0
- package/src/client/index.ts +11 -1
- package/src/client/locales.ts +62 -8
- package/src/client/primitives.d.ts +32 -0
- package/src/http.ts +42 -2
- package/src/restart.ts +8 -1
package/client/client.js
CHANGED
|
@@ -31,6 +31,164 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
31
31
|
_deepseek_ai_dsh_client_ui_primitives = __toESM(_deepseek_ai_dsh_client_ui_primitives, 1);
|
|
32
32
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
33
33
|
let react_dom = require("react-dom");
|
|
34
|
+
//#region src/client/icons.ts
|
|
35
|
+
/**
|
|
36
|
+
* Each entry: the name this package imports, then the 0.1.7+ Regular export,
|
|
37
|
+
* then the pre-0.1.7 size-suffixed export.
|
|
38
|
+
*/
|
|
39
|
+
const ICON_ALIASES = [
|
|
40
|
+
[
|
|
41
|
+
"IconCheckOutline16",
|
|
42
|
+
"IconCheckOutlineRegular",
|
|
43
|
+
"IconCheckOutline16"
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
"IconChevronDownOutline14",
|
|
47
|
+
"IconChevronDownOutlineRegular",
|
|
48
|
+
"IconChevronDownOutline14"
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
"IconChevronLeftOutline14",
|
|
52
|
+
"IconChevronLeftOutlineRegular",
|
|
53
|
+
"IconChevronLeftOutline14"
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
"IconChevronRightOutline14",
|
|
57
|
+
"IconChevronRightOutlineRegular",
|
|
58
|
+
"IconChevronRightOutline14"
|
|
59
|
+
],
|
|
60
|
+
[
|
|
61
|
+
"IconChevronUpOutline14",
|
|
62
|
+
"IconChevronUpOutlineRegular",
|
|
63
|
+
"IconChevronUpOutline14"
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
"IconCodeOutline16",
|
|
67
|
+
"IconCodeOutlineRegular",
|
|
68
|
+
"IconCodeOutline16"
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
"IconCordisPluginOutline14",
|
|
72
|
+
"IconCordisPluginOutlineRegular",
|
|
73
|
+
"IconCordisPluginOutline14"
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
"IconDownloadOutline16",
|
|
77
|
+
"IconDownloadOutlineRegular",
|
|
78
|
+
"IconDownloadOutline16"
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
"IconFolderOpen16",
|
|
82
|
+
"IconFolderOpenRegular",
|
|
83
|
+
"IconFolderOpen16"
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
"IconFullscreenOutline16",
|
|
87
|
+
"IconFullscreenOutlineRegular",
|
|
88
|
+
"IconFullscreenOutline16"
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
"IconLinkOutline14",
|
|
92
|
+
"IconLinkOutlineRegular",
|
|
93
|
+
"IconLinkOutline14"
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"IconLoadingOutline16",
|
|
97
|
+
"IconLoadingOutlineRegular",
|
|
98
|
+
"IconLoadingOutline16"
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
"IconQuestionOutline14",
|
|
102
|
+
"IconQuestionOutlineRegular",
|
|
103
|
+
"IconQuestionOutline14"
|
|
104
|
+
],
|
|
105
|
+
[
|
|
106
|
+
"IconRefreshOutline14",
|
|
107
|
+
"IconRefreshOutlineRegular",
|
|
108
|
+
"IconRefreshOutline14"
|
|
109
|
+
],
|
|
110
|
+
[
|
|
111
|
+
"IconSearchOutline16",
|
|
112
|
+
"IconSearchOutlineRegular",
|
|
113
|
+
"IconSearchOutline16"
|
|
114
|
+
],
|
|
115
|
+
[
|
|
116
|
+
"IconSparkle16",
|
|
117
|
+
"IconSparkleRegular",
|
|
118
|
+
"IconSparkle16"
|
|
119
|
+
],
|
|
120
|
+
[
|
|
121
|
+
"IconWarningOutline16",
|
|
122
|
+
"IconWarningOutlineRegular",
|
|
123
|
+
"IconWarningOutline16"
|
|
124
|
+
]
|
|
125
|
+
];
|
|
126
|
+
/**
|
|
127
|
+
* True for a value React will accept as an element type. Plain functions are
|
|
128
|
+
* the common case today; memo / forwardRef wrappers are objects tagged with
|
|
129
|
+
* $$typeof and must not be treated as "missing".
|
|
130
|
+
*/
|
|
131
|
+
function isIconComponent(value) {
|
|
132
|
+
if (typeof value === "function") return true;
|
|
133
|
+
if (typeof value !== "object" || value === null) return false;
|
|
134
|
+
return typeof value.$$typeof === "symbol";
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Read one name out of a primitives-shaped table. A strict namespace proxy may
|
|
138
|
+
* throw on unknown keys; that must not be what blanks the market.
|
|
139
|
+
*/
|
|
140
|
+
function fromHost(mod, name) {
|
|
141
|
+
try {
|
|
142
|
+
return mod[name];
|
|
143
|
+
} catch {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Resolve one icon from a primitives-shaped module; null when both names are absent. */
|
|
148
|
+
function resolveIcon(mod, newer, older) {
|
|
149
|
+
const candidate = fromHost(mod, newer) ?? fromHost(mod, older);
|
|
150
|
+
return isIconComponent(candidate) ? candidate : null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Names for which neither the 0.1.7 nor the pre-0.1.7 export exists.
|
|
154
|
+
* Informational — apply() does not disable the market for these; pickIcon
|
|
155
|
+
* renders nothing instead so a rename costs one glyph, not the page.
|
|
156
|
+
*/
|
|
157
|
+
function missingIcons(mod) {
|
|
158
|
+
const gaps = [];
|
|
159
|
+
for (const [stable, newer, older] of ICON_ALIASES) if (resolveIcon(mod, newer, older) === null) gaps.push(stable);
|
|
160
|
+
return gaps;
|
|
161
|
+
}
|
|
162
|
+
/** Rendered when a host exports neither spelling — see the module comment. */
|
|
163
|
+
function renderNothing() {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
function pickIcon(newer, older) {
|
|
167
|
+
const resolved = resolveIcon(_deepseek_ai_dsh_client_ui_primitives, newer, older);
|
|
168
|
+
if (resolved === null) {
|
|
169
|
+
console.warn(`[dsh-market] host ui-primitives missing ${newer} / ${older} — icon skipped`);
|
|
170
|
+
return renderNothing;
|
|
171
|
+
}
|
|
172
|
+
return resolved;
|
|
173
|
+
}
|
|
174
|
+
const IconCheckOutline16 = pickIcon("IconCheckOutlineRegular", "IconCheckOutline16");
|
|
175
|
+
const IconChevronDownOutline14 = pickIcon("IconChevronDownOutlineRegular", "IconChevronDownOutline14");
|
|
176
|
+
const IconChevronLeftOutline14 = pickIcon("IconChevronLeftOutlineRegular", "IconChevronLeftOutline14");
|
|
177
|
+
const IconChevronRightOutline14 = pickIcon("IconChevronRightOutlineRegular", "IconChevronRightOutline14");
|
|
178
|
+
const IconChevronUpOutline14 = pickIcon("IconChevronUpOutlineRegular", "IconChevronUpOutline14");
|
|
179
|
+
const IconCodeOutline16 = pickIcon("IconCodeOutlineRegular", "IconCodeOutline16");
|
|
180
|
+
const IconCordisPluginOutline14 = pickIcon("IconCordisPluginOutlineRegular", "IconCordisPluginOutline14");
|
|
181
|
+
const IconDownloadOutline16 = pickIcon("IconDownloadOutlineRegular", "IconDownloadOutline16");
|
|
182
|
+
const IconFolderOpen16 = pickIcon("IconFolderOpenRegular", "IconFolderOpen16");
|
|
183
|
+
const IconFullscreenOutline16 = pickIcon("IconFullscreenOutlineRegular", "IconFullscreenOutline16");
|
|
184
|
+
const IconLinkOutline14 = pickIcon("IconLinkOutlineRegular", "IconLinkOutline14");
|
|
185
|
+
const IconLoadingOutline16 = pickIcon("IconLoadingOutlineRegular", "IconLoadingOutline16");
|
|
186
|
+
const IconQuestionOutline14 = pickIcon("IconQuestionOutlineRegular", "IconQuestionOutline14");
|
|
187
|
+
const IconRefreshOutline14 = pickIcon("IconRefreshOutlineRegular", "IconRefreshOutline14");
|
|
188
|
+
const IconSearchOutline16 = pickIcon("IconSearchOutlineRegular", "IconSearchOutline16");
|
|
189
|
+
const IconSparkle16 = pickIcon("IconSparkleRegular", "IconSparkle16");
|
|
190
|
+
const IconWarningOutline16 = pickIcon("IconWarningOutlineRegular", "IconWarningOutline16");
|
|
191
|
+
//#endregion
|
|
34
192
|
//#region src/client/locales.ts
|
|
35
193
|
/** zh/en dictionaries for the Market settings section and install toast. */
|
|
36
194
|
const zh = {
|
|
@@ -418,16 +576,43 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
418
576
|
groupRename: "重命名",
|
|
419
577
|
groupDelete: "删除分组",
|
|
420
578
|
groupConfirmDelete: "确认删除?",
|
|
579
|
+
groupExpand: "展开 {0}",
|
|
580
|
+
groupFold: "收起 {0}",
|
|
581
|
+
groupThemeTaken: "已有主题",
|
|
582
|
+
groupSearchEmpty: "没有匹配的插件",
|
|
583
|
+
groupStateInert: "未生效",
|
|
584
|
+
groupStateRestart: "重启后生效",
|
|
585
|
+
groupStateBroken: "校验未通过",
|
|
421
586
|
ungrouped: "未分组",
|
|
422
|
-
groupAssign: "
|
|
587
|
+
groupAssign: "分配到",
|
|
423
588
|
groupRemove: "移出",
|
|
424
589
|
groupEmpty: "该组暂无成员",
|
|
425
590
|
groupMixed: "部分启用",
|
|
426
591
|
noGroups: "尚无分组,请先新建",
|
|
427
592
|
groupCreate: "创建",
|
|
428
|
-
groupAdd: "
|
|
429
|
-
|
|
430
|
-
|
|
593
|
+
groupAdd: "添加成员",
|
|
594
|
+
groupAddEmpty: "没有未分组的插件可加入",
|
|
595
|
+
groupAddPick: "加入",
|
|
596
|
+
groupAddSearchPh: "搜索插件…",
|
|
597
|
+
groupAddTitle: "添加到「{0}」",
|
|
598
|
+
groupAddSelected: "已选择 {0} 项",
|
|
599
|
+
groupAddConfirm: "添加 {0} 项",
|
|
600
|
+
groupAddHint: "加入分组不会自动启用插件",
|
|
601
|
+
groupPickTheme: "选择主题",
|
|
602
|
+
groupChangeTheme: "更换主题",
|
|
603
|
+
groupThemeTitle: "为「{0}」选择主题",
|
|
604
|
+
groupThemeUse: "使用",
|
|
605
|
+
groupThemeEmpty: "没有未分组的主题",
|
|
606
|
+
groupThemeHint: "一组只有一个主题。选择不会启用它,更换会把原来的主题移出该组。",
|
|
607
|
+
groupThemeCurrent: "当前",
|
|
608
|
+
groupThemeRemove: "移出主题",
|
|
609
|
+
groupThemeBadge: "主题",
|
|
610
|
+
groupOrgHint: "分组仅用于整理,不会改变插件启用状态",
|
|
611
|
+
groupMembersMeta: "{0} 个 · {1} 个已启用",
|
|
612
|
+
groupMore: "更多",
|
|
613
|
+
groupRenameSave: "保存",
|
|
614
|
+
groupRenameTitle: "重命名分组",
|
|
615
|
+
groupRenameHint: "只改分组名称,组内插件与启用状态不受影响",
|
|
431
616
|
tabDiagnostics: "诊断",
|
|
432
617
|
checkIssues: "发现问题",
|
|
433
618
|
checkErrors: "错误",
|
|
@@ -979,16 +1164,43 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
979
1164
|
groupRename: "Rename",
|
|
980
1165
|
groupDelete: "Delete group",
|
|
981
1166
|
groupConfirmDelete: "Delete group?",
|
|
1167
|
+
groupExpand: "Expand {0}",
|
|
1168
|
+
groupFold: "Collapse {0}",
|
|
1169
|
+
groupThemeTaken: "Already has a theme",
|
|
1170
|
+
groupSearchEmpty: "No matching plugins",
|
|
1171
|
+
groupStateInert: "Not active",
|
|
1172
|
+
groupStateRestart: "Restart to apply",
|
|
1173
|
+
groupStateBroken: "Verification failed",
|
|
982
1174
|
ungrouped: "Ungrouped",
|
|
983
|
-
groupAssign: "Assign",
|
|
1175
|
+
groupAssign: "Assign to",
|
|
984
1176
|
groupRemove: "Remove",
|
|
985
1177
|
groupEmpty: "No members yet",
|
|
986
1178
|
groupMixed: "Partially enabled",
|
|
987
1179
|
noGroups: "No groups yet. Create one to begin.",
|
|
988
1180
|
groupCreate: "Create",
|
|
989
|
-
groupAdd: "Add
|
|
990
|
-
|
|
991
|
-
|
|
1181
|
+
groupAdd: "Add members",
|
|
1182
|
+
groupAddEmpty: "No ungrouped plugin available to add",
|
|
1183
|
+
groupAddPick: "Add",
|
|
1184
|
+
groupAddSearchPh: "Search plugins…",
|
|
1185
|
+
groupAddTitle: "Add to “{0}”",
|
|
1186
|
+
groupAddSelected: "{0} selected",
|
|
1187
|
+
groupAddConfirm: "Add {0}",
|
|
1188
|
+
groupAddHint: "Adding to a group does not enable plugins",
|
|
1189
|
+
groupPickTheme: "Choose theme",
|
|
1190
|
+
groupChangeTheme: "Change theme",
|
|
1191
|
+
groupThemeTitle: "Choose a theme for “{0}”",
|
|
1192
|
+
groupThemeUse: "Use",
|
|
1193
|
+
groupThemeEmpty: "No ungrouped theme",
|
|
1194
|
+
groupThemeHint: "A group holds one theme. Choosing one does not enable it. Replacing moves the previous theme out of the group.",
|
|
1195
|
+
groupThemeCurrent: "Current",
|
|
1196
|
+
groupThemeRemove: "Remove theme",
|
|
1197
|
+
groupThemeBadge: "Theme",
|
|
1198
|
+
groupOrgHint: "Groups are for organization only and do not change enable state",
|
|
1199
|
+
groupMembersMeta: "{0} · {1} enabled",
|
|
1200
|
+
groupMore: "More",
|
|
1201
|
+
groupRenameSave: "Save",
|
|
1202
|
+
groupRenameTitle: "Rename group",
|
|
1203
|
+
groupRenameHint: "Only the group name changes — members and enable state stay the same",
|
|
992
1204
|
tabDiagnostics: "Diagnostics",
|
|
993
1205
|
checkIssues: "Issues found",
|
|
994
1206
|
checkErrors: "Errors",
|
|
@@ -2260,7 +2472,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2260
2472
|
if (names.length === 0) return null;
|
|
2261
2473
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
2262
2474
|
text: names.join(", ") + " " + t(mode === "theme" ? "toastTheme" : "toastReady"),
|
|
2263
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
2475
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSparkle16, { size: 14 }),
|
|
2264
2476
|
onDone: () => setNames([])
|
|
2265
2477
|
});
|
|
2266
2478
|
}
|
|
@@ -2380,7 +2592,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2380
2592
|
};
|
|
2381
2593
|
//#endregion
|
|
2382
2594
|
//#region \0dsh-css:src/client/Market.module.css.mjs
|
|
2383
|
-
const css = ".nUhMVa_root{min-width:0;height:100%;color:var(--dsw-alias-label-primary,#1f2328);flex-direction:column;display:flex;position:relative;container-type:inline-size}.nUhMVa_head{flex-direction:column;gap:12px;padding:4px 4px 6px;display:flex}.nUhMVa_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.nUhMVa_sub{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:8px;margin:0;font-size:12px;line-height:18px;display:flex}.nUhMVa_submitLink{color:var(--dsw-alias-label-tertiary,#8b93a1);white-space:nowrap;font-size:11px;line-height:18px;text-decoration:none}.nUhMVa_submitLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_tabs{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-end;gap:2px;display:flex}.nUhMVa_tab{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 12px;font-size:13px}.nUhMVa_tab.nUhMVa_on{color:var(--dsw-alias-brand-primary,#4f6ef7);border-bottom-color:var(--dsw-alias-brand-primary,#4f6ef7);font-weight:600}.nUhMVa_subTabs{align-items:flex-end;gap:2px;margin:-4px 0 4px;display:flex}.nUhMVa_banner{background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;align-items:center;gap:8px;margin:0;padding:8px 12px;font-size:12px;display:flex}.nUhMVa_bannerIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0}.nUhMVa_bannerHint{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:help;display:inline-flex}.nUhMVa_body{overflow-anchor:none;flex:1;padding:12px 4px 24px;overflow-x:hidden;overflow-y:auto}.nUhMVa_stickyHead{z-index:5;background:var(--dsw-alias-bg-layer-2,#f7f8fa);position:sticky;top:-1px}.nUhMVa_stickyHead:before{content:\"\";background:inherit;pointer-events:none;height:14px;position:absolute;bottom:100%;left:0;right:0}.nUhMVa_cats{margin:0 -4px 2px;padding:12px 4px 4px}.nUhMVa_catsRow{align-items:flex-start;gap:8px;display:flex;position:relative}.nUhMVa_star{color:var(--dsw-alias-label-secondary,#9ca3af);white-space:nowrap;flex:none;font-size:11px}.nUhMVa_top{z-index:20;background:var(--dsw-alias-bg-layer-1,#fff);box-shadow:var(--dsw-shadow-lv1,0 4px 12px #1f232814);border-radius:99px;display:inline-flex;position:absolute;bottom:18px;right:18px}.nUhMVa_topBtn{border-radius:99px;width:38px;height:38px;padding:0}.nUhMVa_tag{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:11px;line-height:16px}.nUhMVa_hostRequirement{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;min-width:0;max-width:100%;padding:1px 6px;font-size:11px;line-height:16px;overflow:hidden}.nUhMVa_hostRequirementBad{border-color:var(--dsw-alias-state-error-primary,#dc2626);color:var(--dsw-alias-state-error-primary,#dc2626);background:#dc262614}.nUhMVa_hostFilterNote{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:6px;font-size:11px;line-height:16px}.nUhMVa_okState{color:var(--dsw-alias-state-success-primary,#16a34a);white-space:nowrap;font-size:12px;font-weight:600}.nUhMVa_catsWrap{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.nUhMVa_catsCollapsed{max-height:62px;overflow:hidden}.nUhMVa_catsToggle.nUhMVa_catsToggle{height:26px;min-height:26px;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.nUhMVa_shots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:8px;margin:6px 0 8px;padding:2px 0 6px;display:flex;overflow-x:auto}.nUhMVa_shot{object-fit:cover;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);cursor:pointer;border-radius:8px;flex:none;width:220px;height:150px}.nUhMVa_cardShots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:6px;margin:0 0 6px;padding:0 0 2px;display:flex;overflow-x:auto}.nUhMVa_cardShot{object-fit:contain;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);cursor:pointer;border-radius:8px;flex:none;width:132px;height:88px;display:block}.nUhMVa_lightbox{z-index:10000;cursor:zoom-out;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.nUhMVa_lightboxImg{object-fit:contain;cursor:default;border-radius:4px;max-width:90vw;max-height:85vh}.nUhMVa_lightboxClose{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:99px;place-items:center;width:36px;height:36px;font-size:22px;line-height:1;display:grid;position:absolute;top:16px;right:16px}.nUhMVa_lightboxClose:hover{background:#ffffff38}.nUhMVa_lightboxNav{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:99px;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.nUhMVa_lightboxNav:hover{background:#ffffff38}.nUhMVa_lightboxPrev{left:16px}.nUhMVa_lightboxNext{right:16px}.nUhMVa_lightboxDots{gap:8px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.nUhMVa_lightboxDot{cursor:pointer;background:#fff6;border-radius:99px;width:7px;height:7px}.nUhMVa_lightboxDotOn{background:#fff}.nUhMVa_cmd{background:var(--dsw-alias-bg-layer-2,#f3f4f6);word-break:break-all;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:18px}.nUhMVa_warnLine{color:var(--dsw-alias-state-warn-primary,#b45309);flex-wrap:wrap;align-items:center;gap:4px;margin:0;font-size:12px;font-weight:600;line-height:18px;display:flex}.nUhMVa_modalNote{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:4px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}.nUhMVa_grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;display:grid}.nUhMVa_masonry{align-items:flex-start;gap:10px;display:flex}.nUhMVa_masonryCol{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.nUhMVa_masonry>.nUhMVa_masonryCol>*{align-self:stretch;min-width:0}@media (max-width:680px){.nUhMVa_masonry{flex-direction:column}.nUhMVa_masonryCol{width:100%}.nUhMVa_grid{grid-template-columns:minmax(0,1fr)}}.nUhMVa_swatches{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;gap:0;height:34px;display:flex;overflow:hidden}.nUhMVa_themesGrid{margin-bottom:12px}.nUhMVa_swatches i{flex:1}.nUhMVa_themeToolbar{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 4px 12px;display:grid}.nUhMVa_themeSearch{box-sizing:border-box;width:100%;min-width:0}.nUhMVa_themeToolbarActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.nUhMVa_themeFullscreenBtn.nUhMVa_themeFullscreenBtn{width:28px;min-width:28px;padding:0}.nUhMVa_themeResultBar{min-height:24px;color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;padding:0 4px 8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_favoritesSectionHead{color:var(--dsw-alias-label-primary,#1f2328);margin:16px 0 8px;padding:0 4px;font-size:13px;font-weight:600;line-height:20px}.nUhMVa_favoritesSectionHead:first-of-type{margin-top:0}.nUhMVa_favoritesStaleBar{border:1px solid var(--dsw-alias-state-warn-tertiary,#b4530933);background:var(--dsw-alias-state-warn-tertiary,#b453090f);color:var(--dsw-alias-state-warn-primary,#b45309);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_favoritesStaleOnly{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.nUhMVa_themeGallery{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:10px;display:grid}.nUhMVa_themeCard{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;flex-direction:column;min-width:0;transition:border-color .16s cubic-bezier(.16,1,.3,1),box-shadow .16s cubic-bezier(.16,1,.3,1),transform .16s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden}.nUhMVa_themeCard:hover{border-color:var(--dsw-alias-border-l3,#d9dde3);box-shadow:var(--dsw-shadow-lv1,0 4px 12px #1f232814);transform:translateY(-1px)}.nUhMVa_themeCover{aspect-ratio:16/10;border:0;border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);width:100%;color:var(--dsw-alias-label-secondary,#6b7280);cursor:zoom-in;border-radius:0;padding:0;display:block;position:relative;overflow:hidden}.nUhMVa_themeCover img{object-fit:contain;background:var(--dsw-alias-bg-layer-2,#f3f4f6);width:100%;height:100%;transition:transform .18s cubic-bezier(.16,1,.3,1);display:block}.nUhMVa_themeCover:hover img{transform:scale(1.012)}.nUhMVa_themeCover:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#4f6ef7);outline-offset:-3px}.nUhMVa_themeCoverEmpty{cursor:default;color:var(--dsw-alias-label-tertiary,#8b93a1);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_themePreviewAction,.nUhMVa_themePreviewCount{color:#fff;-webkit-backdrop-filter:blur(8px);background:#14181fc7;border:1px solid #ffffff57;border-radius:4px;align-items:center;height:24px;padding:0 8px;font-size:11px;line-height:16px;display:inline-flex;position:absolute;bottom:8px}.nUhMVa_themePreviewAction{gap:4px;right:8px}.nUhMVa_themePreviewCount{left:8px}.nUhMVa_themeCardBody{flex-direction:column;flex:1;gap:8px;padding:12px;display:flex}.nUhMVa_themeCardHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.nUhMVa_themeIdentity{flex:1;min-width:0}.nUhMVa_themeStatus,.nUhMVa_themeStatusMuted{white-space:nowrap;border-radius:4px;flex:none;align-items:center;min-height:22px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_themeStatus{background:var(--dsw-alias-state-success-tertiary,#16a34a1a);color:var(--dsw-alias-state-success-primary,#15803d)}.nUhMVa_themeStatusMuted{background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280)}.nUhMVa_themeDescription{min-height:36px;color:var(--dsw-alias-label-tertiary,#8b93a1);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.nUhMVa_themeCardFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:4px;display:flex}.nUhMVa_themeLifecycle{min-width:0;color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:18px;overflow:hidden}.nUhMVa_themeActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}@container (width<=900px){.nUhMVa_themeGallery{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (width<=680px){.nUhMVa_themeGallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=460px){.nUhMVa_themeGallery{grid-template-columns:minmax(0,1fr)}}@container (width<=420px){.nUhMVa_sub{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2px 8px;display:grid}.nUhMVa_sub>span:first-child{grid-area:1/1}.nUhMVa_sub>.nUhMVa_grow{display:none}.nUhMVa_submitLink{grid-area:2/1}.nUhMVa_exportLogBtn{flex-shrink:0;grid-area:1/2/span 2}.nUhMVa_themeToolbar{grid-template-columns:minmax(0,1fr)}.nUhMVa_themeCardHead{flex-wrap:wrap}.nUhMVa_themeStatus,.nUhMVa_themeStatusMuted{order:3}}@container (width<=280px){.nUhMVa_themeCardFooter{flex-direction:column;align-items:flex-start}.nUhMVa_themeActions{justify-content:flex-start;width:100%;margin-left:0}}@media (max-width:560px){[role=dialog]:has([data-dsh-market-root])>nav{display:none}[role=dialog]:has([data-dsh-market-root])>div{flex:100%;width:100%;min-width:0}}[role=dialog]:has([data-dsh-market-fullscreen=true]){border-radius:0;width:100vw;max-width:none;height:100vh;max-height:none;position:fixed;top:0;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){.nUhMVa_themeCard,.nUhMVa_themeCover img{transition:none}.nUhMVa_themeCard:hover{transform:none}}.nUhMVa_card{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;align-self:start;gap:12px;padding:12px 14px;display:flex}.nUhMVa_row1{align-items:flex-start;gap:10px;min-width:0;display:flex}.nUhMVa_cardAction{flex-shrink:0;align-items:center;display:inline-flex}.nUhMVa_installBtn.nUhMVa_installBtn{min-width:64px}.nUhMVa_av{color:#fff;object-fit:cover;background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;flex-shrink:0;place-items:center;width:16px;height:16px;font-size:9px;font-weight:700;display:grid}.nUhMVa_nm{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;line-height:22px;overflow:hidden}.nUhMVa_nmLink{color:inherit;text-decoration:none;display:block}.nUhMVa_nmLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_repoMark{color:var(--dsw-alias-label-secondary,#6b7280);vertical-align:-1px;flex-shrink:0;margin-left:5px;display:inline-block}.nUhMVa_nmLink:hover .nUhMVa_repoMark{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_byline{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin-top:2px;display:flex}.nUhMVa_meta{color:var(--dsw-alias-label-secondary,#9ca3af);margin-top:2px;font-size:11px}.nUhMVa_metaInline{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.nUhMVa_owner{color:var(--dsw-alias-label-secondary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:44px;font-size:11px;overflow:hidden}.nUhMVa_desc{color:var(--dsw-alias-label-tertiary,#8b93a1);margin:0;font-size:12px;line-height:18px}.nUhMVa_descClamp{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.nUhMVa_descToggle{width:20px;height:16px;color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin-top:2px;padding:0;display:flex}.nUhMVa_descToggle:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_foot{flex-wrap:nowrap;align-items:flex-end;gap:8px;display:flex}.nUhMVa_foot .nUhMVa_metaInline,.nUhMVa_foot .nUhMVa_src{white-space:nowrap}.nUhMVa_footTags{flex-wrap:wrap;flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_grow{flex:1}.nUhMVa_titleRow{align-items:center;gap:10px;display:flex}.nUhMVa_version{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px;line-height:20px}.nUhMVa_repoLink{color:var(--dsw-alias-label-tertiary,#8b93a1);flex-shrink:0;font-size:12px;line-height:20px;text-decoration:none}.nUhMVa_repoLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_noteRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.nUhMVa_desc.nUhMVa_noteRow,.nUhMVa_desc.nUhMVa_noteRow+.nUhMVa_noteRow,.nUhMVa_noteEdit+.nUhMVa_noteRow{margin-top:6px}.nUhMVa_noteMine{color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_noteToggle{font:inherit;color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex-shrink:0;padding:0;font-size:11px;line-height:16px}.nUhMVa_noteToggle:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_noteAction{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:4px;align-items:center;padding:0 5px;font-weight:600;text-decoration:none;display:inline-flex}.nUhMVa_noteAction:hover{color:var(--dsw-alias-label-primary,#1f2328);border-color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:none}.nUhMVa_noteEdit{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin-top:6px;display:flex}.nUhMVa_noteInput{flex:1;min-width:160px}.nUhMVa_descTight{min-height:0}.nUhMVa_src{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px;text-decoration:none}.nUhMVa_src:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_dot{vertical-align:2px;margin-left:5px}.nUhMVa_act{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:11px;display:flex}.nUhMVa_actLive{color:var(--dsw-alias-state-success-primary,#16a34a);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actWarn{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actBroken{color:var(--dsw-alias-state-error-primary,#dc2626);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actWhy{color:var(--dsw-alias-label-secondary,#6b7280);margin-top:2px}.nUhMVa_loading{color:var(--dsw-alias-label-secondary,#9ca3af);flex-direction:column;align-items:center;gap:12px;padding:48px;font-size:13px;display:flex}.nUhMVa_spin{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;animation:.8s linear infinite nUhMVa_sp;display:inline-flex}.nUhMVa_logoMark{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;display:inline-flex}.nUhMVa_logoPlug{transform-box:fill-box;transform-origin:50%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite nUhMVa_dshmPlug}@keyframes nUhMVa_dshmPlug{0%,12%{transform:rotate(9deg)}45%,62%{transform:translate(-1.28px,1.27px)rotate(0)}95%,to{transform:rotate(9deg)}}@media (prefers-reduced-motion:reduce){.nUhMVa_logoPlug,.nUhMVa_spin{animation:1.5s ease-in-out infinite nUhMVa_dshmPlugFade}}@keyframes nUhMVa_dshmPlugFade{0%,to{opacity:1}50%{opacity:.35}}@keyframes nUhMVa_sp{to{transform:rotate(360deg)}}.nUhMVa_progress{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:8px;flex-wrap:wrap;align-items:center;gap:9px;margin:0;padding:8px 12px;font-size:12px;display:flex}.nUhMVa_bar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:99px;width:100%;height:4px;overflow:hidden}.nUhMVa_barFill{background:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:99px;height:100%;transition:width .6s}.nUhMVa_barWave{width:30%;animation:1.2s ease-in-out infinite nUhMVa_dshmSlide}@keyframes nUhMVa_dshmSlide{0%{margin-left:-30%}to{margin-left:100%}}.nUhMVa_irow .nUhMVa_progress{margin-top:8px}.nUhMVa_progress code{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.nUhMVa_empty{color:var(--dsw-alias-label-secondary,#9ca3af);text-align:center;padding:32px;font-size:13px}.nUhMVa_err{color:var(--dsw-alias-state-error-primary,#dc2626);white-space:pre-wrap;word-break:break-all;margin:8px 0;font-size:12px}.nUhMVa_cardBlocked{border-color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_conflictHead{align-items:flex-start;gap:8px;display:flex}.nUhMVa_conflictIcon{color:var(--dsw-alias-state-error-primary,#dc2626);flex-shrink:0;margin-top:1px}.nUhMVa_conflictTitle{color:var(--dsw-alias-state-error-primary,#dc2626);font-size:13px;font-weight:600;line-height:18px}.nUhMVa_conflictBody{margin:0;font-size:12px;line-height:19px}.nUhMVa_roster{background:var(--dsw-alias-border-l2,#e5e7eb);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-direction:column;gap:1px;display:flex;overflow:hidden}.nUhMVa_rosterRow{background:var(--dsw-alias-bg-layer-1,#fff);align-items:center;gap:8px;padding:7px 10px;display:flex}.nUhMVa_rosterMain{flex-direction:column;min-width:0;display:flex}.nUhMVa_rosterName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:600;overflow:hidden}.nUhMVa_rosterAuthor{color:var(--dsw-alias-label-secondary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.nUhMVa_rosterTag{border-radius:4px;flex-shrink:0;margin-left:auto;padding:1px 6px;font-size:10.5px;font-weight:600}.nUhMVa_rosterTagKeep{color:var(--dsw-alias-state-success-primary,#16a34a);background:#16a34a1f}.nUhMVa_rosterTagDrop{color:var(--dsw-alias-state-error-primary,#dc2626);background:#dc26261f}.nUhMVa_rosterRowOut .nUhMVa_rosterName{text-decoration:line-through}.nUhMVa_rosterRowOut{opacity:.62}.nUhMVa_rosterSplit{background:var(--dsw-alias-border-l2,#e5e7eb);height:1px}.nUhMVa_reassure{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:5px;margin:0;font-size:11.5px;line-height:17px;display:flex}.nUhMVa_reassureOk{color:var(--dsw-alias-state-success-primary,#16a34a);flex-shrink:0}.nUhMVa_conflictWhy{color:var(--dsw-alias-label-tertiary,#8b93a1);overflow-wrap:anywhere;margin-top:2px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:17px}.nUhMVa_conflictWhyText{margin-top:5px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}.nUhMVa_choices{flex-direction:column;gap:7px;display:flex}.nUhMVa_choice{text-align:left;font:inherit;cursor:pointer;background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:9px;align-items:flex-start;gap:9px;padding:9px 11px;display:flex}.nUhMVa_choice:has(input:disabled){cursor:default;opacity:.6}.nUhMVa_choiceOn{border-color:var(--dsw-alias-brand-primary,#4f6ef7);background:var(--dsw-alias-bg-layer-2,#f5f7ff)}.nUhMVa_choiceRadio{width:13px;height:13px;accent-color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;margin:2px 0 0}.nUhMVa_choiceMain{flex-direction:column;gap:3px;min-width:0;display:flex}.nUhMVa_choiceTitle{font-size:12px;font-weight:600;line-height:17px}.nUhMVa_choiceNote{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px;line-height:16px}.nUhMVa_choiceSafe{color:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_stateTag{white-space:nowrap;background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-height:20px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:5px;flex-shrink:0;align-items:center;gap:5px;padding:1px 7px;font-size:11px;line-height:16px;display:inline-flex}.nUhMVa_stateTag[data-on=true]{color:var(--dsw-alias-state-success-primary,#16a34a);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#16a34a) 10%, transparent)}.nUhMVa_stateDot{background:var(--dsw-alias-label-tertiary,#8b93a1);border-radius:999px;flex:none;width:6px;height:6px}.nUhMVa_stateDot[data-on=true]{background:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_metaTag{text-overflow:ellipsis;white-space:nowrap;background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:0;max-width:100%;min-height:20px;color:var(--dsw-alias-label-tertiary,#8b93a1);border-radius:5px;flex-shrink:1;padding:1px 7px;font-size:11px;line-height:18px;display:inline-block;overflow:hidden}.nUhMVa_metaTagOk{color:var(--dsw-alias-state-success-primary,#16a34a);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#16a34a) 10%, transparent)}.nUhMVa_metaTagAction{font-family:inherit;font-size:11px;line-height:18px;font-weight:inherit;cursor:pointer;background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border:none;border-radius:5px;flex-shrink:0;padding:1px 7px}.nUhMVa_metaTagAction:hover:not(:disabled){color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_metaTagAction:disabled{opacity:.5;cursor:default}.nUhMVa_irowHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.nUhMVa_irowHead .nUhMVa_irowName{flex:1 1 0;min-width:0}.nUhMVa_irowDevTag{letter-spacing:.02em;white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;color:var(--dsw-alias-label-tertiary,#8b93a1);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#4f6ef7) 9%, var(--dsw-alias-bg-layer-2,#f3f4f6));border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:600;line-height:14px}.nUhMVa_nameLink{color:inherit;text-decoration:none}.nUhMVa_irowName{text-overflow:clip;flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex;overflow:visible}.nUhMVa_irowNameText{overflow-wrap:anywhere;white-space:normal;min-width:0}.nUhMVa_irowName>.nUhMVa_owner{flex:none}.nUhMVa_nameLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_opWrap{flex-shrink:0;margin-bottom:6px;display:inline-flex;position:relative}.nUhMVa_opEntry{font:inherit;cursor:pointer;white-space:nowrap;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:7px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex;position:relative}.nUhMVa_opEntryQuiet{color:var(--dsw-alias-label-secondary,#6b7280);background:0 0;border-color:#0000}.nUhMVa_opEntryAlert{border-color:var(--dsw-alias-state-error-primary,#dc2626);color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_opDot{background:var(--dsw-alias-state-error-primary,#dc2626);border-radius:99px;width:8px;height:8px;position:absolute;top:-3px;right:-3px}.nUhMVa_opPanel{z-index:40;background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:12px;width:460px;max-width:86vw;max-height:70vh;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 20px 52px #00000047}.nUhMVa_opHead{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:center;gap:8px;padding:9px 14px;display:flex}.nUhMVa_opPanelTitle{font-size:12.5px;font-weight:600}.nUhMVa_opCloseBtn.nUhMVa_opCloseBtn{min-width:0;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.nUhMVa_opAggregate{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f8fa);padding:9px 14px}.nUhMVa_opAggregateTop{font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.nUhMVa_opAggregateHint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:4px;font-size:10.5px}.nUhMVa_opRow{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-start;gap:9px;padding:9px 14px;display:flex}.nUhMVa_opRow:last-child{border-bottom:none}.nUhMVa_opRowAlert{background:#dc26260f}.nUhMVa_opIcon{flex-shrink:0;place-items:center;width:14px;margin-top:1px;display:grid}.nUhMVa_opQueuedIcon{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:12px}.nUhMVa_opMain{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.nUhMVa_opTop{align-items:baseline;gap:6px;min-width:0;display:flex}.nUhMVa_opVerb{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:12px}.nUhMVa_opName{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.nUhMVa_opStatus{color:var(--dsw-alias-label-tertiary,#8b93a1);overflow-wrap:anywhere;font-size:10.5px;line-height:16px}.nUhMVa_opStatusBad{color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_opActions{flex-shrink:0;align-items:center;gap:6px;margin-top:1px;display:flex}.nUhMVa_opDecision{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:8px;margin-top:8px;padding-top:8px;display:flex}.nUhMVa_opDecisionFoot{align-items:center;gap:8px;display:flex}.nUhMVa_conflictDetailsToggle{font:inherit;cursor:pointer;color:var(--dsw-alias-label-tertiary,#8b93a1);background:0 0;border:none;align-items:center;gap:4px;padding:2px 0;font-size:11px;display:inline-flex}.nUhMVa_conflictDetailsToggle:hover{color:var(--dsw-alias-label-secondary,#6b7280)}.nUhMVa_opEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);padding:30px 14px;font-size:12px}.nUhMVa_opEmptyHint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:4px;font-size:11px}.nUhMVa_cardBlockedMark{font:inherit;cursor:pointer;color:var(--dsw-alias-state-error-primary,#dc2626);border:1px solid var(--dsw-alias-state-error-primary,#dc2626);background:#dc262614;border-radius:7px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;display:inline-flex}.nUhMVa_dangerBtn.nUhMVa_dangerBtn{color:var(--dsw-alias-state-error-primary,#dc2626);border-color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_dangerBtn.nUhMVa_dangerBtn:hover:not(:disabled){background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff}.nUhMVa_dangerArmed.nUhMVa_dangerArmed{background:var(--dsw-alias-state-error-primary,#dc2626);border-color:var(--dsw-alias-state-error-primary,#dc2626);color:#fff}.nUhMVa_retryBtn{margin-top:4px}.nUhMVa_irow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:10px;flex-direction:column;gap:10px;min-width:0;padding:12px 14px;display:flex}.nUhMVa_irowActions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_irowTrailing{flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:8px;min-width:0;display:inline-flex}.nUhMVa_irowTrailing .nUhMVa_metaTag{flex-shrink:1;min-width:0}.nUhMVa_irowTrailing .nUhMVa_metaTagAction{flex-shrink:0}.nUhMVa_irowMissing{filter:grayscale();opacity:.5}.nUhMVa_irow>.nUhMVa_src,.nUhMVa_irow>.nUhMVa_owner,.nUhMVa_irow button{white-space:nowrap;flex-shrink:0}.nUhMVa_tabSearchRow{padding:0 4px 6px;display:flex}.nUhMVa_tabSearch{width:100%}.nUhMVa_spec{color:var(--dsw-alias-label-secondary,#9ca3af);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:11px}.nUhMVa_specTag{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;height:16px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.nUhMVa_specTagGit{color:#0b7285;background:#12a3c41f}.nUhMVa_specTagFile{color:#b07d1b;background:#f0b42924}.nUhMVa_backupCheckList .nUhMVa_grow{white-space:nowrap;text-overflow:ellipsis;flex:70%;min-width:0;overflow:hidden}.nUhMVa_backupCheckList .nUhMVa_spec{text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:0 30%;max-width:30%;overflow:hidden}.nUhMVa_staleAction{word-break:normal;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.nUhMVa_pct{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:11px;font-weight:600}.nUhMVa_pager{flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:8px;margin:16px 0 4px;display:flex}.nUhMVa_pagerPages{flex-wrap:nowrap;flex:1;justify-content:center;align-items:center;gap:4px;min-width:0;display:flex}.nUhMVa_pagerMeta{flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.nUhMVa_pagerPages button,.nUhMVa_pagerMeta button{min-width:0;padding:0 8px}.nUhMVa_pageEllipsis{color:var(--dsw-alias-label-secondary,#9ca3af);padding:0 1px;font-size:12px}.nUhMVa_pageInfo{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;font-size:12px}@container (width<=544px){.nUhMVa_pager{flex-wrap:wrap;justify-content:center;gap:8px}.nUhMVa_pagerPages{flex-basis:100%}}.nUhMVa_depBadge{border:1px solid var(--dsw-alias-state-warn-primary,#b45309);color:var(--dsw-alias-state-warn-primary,#b45309);white-space:nowrap;border-radius:4px;flex-shrink:0;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;line-height:16px}.nUhMVa_deprecate{color:var(--dsw-alias-state-warn-primary,#b45309);background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.nUhMVa_deprecate a{color:var(--dsw-alias-state-warn-primary,#b45309);text-decoration:underline}.nUhMVa_deprecate .nUhMVa_src{margin-left:8px}.nUhMVa_depLine{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nUhMVa_switch{border:1px solid var(--dsw-alias-border-l2,#d9dde3);background:var(--dsw-alias-bg-layer-2,#e5e7eb);cursor:pointer;border-radius:99px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s,border-color .15s;position:relative}.nUhMVa_switchOn{background:var(--dsw-alias-state-success-primary,#16a34a);border-color:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_switchMixed{background:var(--dsw-alias-state-warn-primary,#b45309);border-color:var(--dsw-alias-state-warn-primary,#b45309)}.nUhMVa_switchKnob{background:#fff;border-radius:99px;width:16px;height:16px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.nUhMVa_switchOn .nUhMVa_switchKnob,.nUhMVa_switchMixed .nUhMVa_switchKnob{left:18px}.nUhMVa_switch:disabled{opacity:.5;cursor:default}.nUhMVa_viewBar{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;align-items:center;gap:2px;width:fit-content;margin-bottom:12px;padding:2px;display:flex}.nUhMVa_viewBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 10px;font-size:12px;line-height:18px}.nUhMVa_viewBtn:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_viewOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.nUhMVa_groupRow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;margin-bottom:10px;padding:12px 14px}.nUhMVa_groupHead{align-items:center;gap:10px;min-width:0;display:flex}.nUhMVa_groupName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.nUhMVa_groupActions{flex-shrink:0;align-items:center;gap:6px;display:flex}.nUhMVa_groupMembers{flex-direction:column;gap:6px;margin-top:10px;display:flex}.nUhMVa_groupMember{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_groupMember .nUhMVa_nm{flex:1;min-width:0;font-size:12px}.nUhMVa_groupAddPanel{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;display:flex}.nUhMVa_groupCreate{align-items:center;gap:8px;margin-bottom:10px;display:flex}.nUhMVa_inlineInput{flex:1;min-width:120px}.nUhMVa_assignRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nUhMVa_assignSelect{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);font:inherit;border-radius:6px;padding:3px 6px;font-size:12px;line-height:18px}.nUhMVa_groupHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px}.nUhMVa_sectAction{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:8px;margin:14px 2px 8px;font-size:12px;font-weight:600;display:flex}.nUhMVa_backupGrid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.nUhMVa_backupCard{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.nUhMVa_backupCard h3{margin:0;font-size:14px}.nUhMVa_backupCard p{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.nUhMVa_backupActions{flex-wrap:wrap;gap:8px;display:flex;position:relative}.nUhMVa_hiddenFile{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.nUhMVa_backupInput{box-sizing:border-box;width:100%}.nUhMVa_backupCheck{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.nUhMVa_backupWarn{margin:0;font-size:12px;line-height:18px;color:var(--dsw-alias-state-warn-primary,#b45309)!important}.nUhMVa_backupMessage{color:var(--dsw-alias-label-secondary,#6b7280);grid-column:1/-1;font-size:12px}.nUhMVa_backupCheckList{flex-direction:column;gap:6px;max-height:260px;margin:10px 0 4px;padding-right:4px;display:flex;overflow-y:auto}.nUhMVa_backupCheckList .nUhMVa_backupCheck{justify-content:space-between;gap:8px}.nUhMVa_diagPage{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow-y:auto}.nUhMVa_diagSummary{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.nUhMVa_diagSummaryItem{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.nUhMVa_diagSummaryMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.nUhMVa_diagSection{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.nUhMVa_diagSection h3{color:var(--dsw-alias-label-primary,#1f2328);margin:0;font-size:13px;font-weight:600}.nUhMVa_diagCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px;font-weight:400}.nUhMVa_diagEmpty{color:var(--dsw-alias-label-secondary,#9ca3af);padding:8px 0;font-size:12px}.nUhMVa_diagBundle{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);flex-direction:column;gap:6px;padding-top:8px;display:flex}.nUhMVa_diagBundle:first-of-type{border-top:none;padding-top:0}.nUhMVa_diagRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.nUhMVa_diagMeta{align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.nUhMVa_diagKey{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;min-width:64px;font-size:11px}.nUhMVa_diagVal{color:var(--dsw-alias-label-primary,#1f2328);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:500}.nUhMVa_diagIndex{background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:18px;height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.nUhMVa_diagBadgeOfficial{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeCommunity{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.nUhMVa_diagBadgeShadow{background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeWarn{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeInfo{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.nUhMVa_diagList{flex-direction:column;gap:6px;display:flex}.nUhMVa_sectionOverview{color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:2px 0 6px;font-size:12px;line-height:18px;overflow:hidden}.nUhMVa_diagAlert{color:var(--dsw-alias-state-warn-primary,#b45309)}.nUhMVa_ovRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_ovArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.nUhMVa_ovByTag{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;max-width:260px;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex;overflow:hidden}.nUhMVa_ovFrom{color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.nUhMVa_orphRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_orphBadge{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_dragHandle{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;line-height:20px;display:inline-flex}.nUhMVa_dragOver{outline:2px dashed var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:2px;background:var(--dsw-alias-bg-layer-2,#f0f2f8);border-radius:8px}.nUhMVa_dragging{opacity:.45;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.nUhMVa_collapseHead{font:inherit;color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;font-size:13px;font-weight:600;display:flex}.nUhMVa_collapseIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;display:inline-flex}.nUhMVa_collapseTitle{flex:1;min-width:0}.nUhMVa_collapseBody{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);overflow-wrap:anywhere;flex-direction:column;gap:10px;min-width:0;margin-top:8px;padding-top:10px;display:flex}.nUhMVa_orderPanel{flex-direction:column;gap:10px;min-width:0;display:flex}.nUhMVa_panelNote{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.nUhMVa_panelActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nUhMVa_presetList{flex-direction:column;gap:6px;min-width:0;display:flex}.nUhMVa_presetRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;min-width:0;max-width:100%;padding:8px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_presetName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.nUhMVa_snapList{flex-direction:column;gap:6px;min-width:0;display:flex}.nUhMVa_snapRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px;font-size:12px;line-height:18px;display:flex}.nUhMVa_snapMeta{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_snapConfirmText{color:var(--dsw-alias-state-warn-primary,#b45309);margin:0;font-size:12px;line-height:18px}.nUhMVa_confirmRow{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.nUhMVa_fixFallback{flex-direction:column;gap:6px;margin:8px 0;display:flex}.nUhMVa_fixFallbackText{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);resize:vertical;white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:16px}.nUhMVa_setCard{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.nUhMVa_setCard:hover{border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}.nUhMVa_setCardOpen{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}.nUhMVa_setHeader{-webkit-appearance:none;appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.nUhMVa_setHeader:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:-2px}.nUhMVa_setHeadText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.nUhMVa_setName{color:var(--dsw-alias-label-primary,#1f2328);font-size:15px;font-weight:600;line-height:1.4}.nUhMVa_setDesc{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:13px;line-height:1.5}.nUhMVa_setChevron{color:var(--dsw-alias-label-tertiary,#8b93a1);flex:none;transition:transform .16s;display:inline-flex}.nUhMVa_setChevronOpen{transform:rotate(180deg)}.nUhMVa_setBody{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);margin:0 16px;padding-bottom:8px}.nUhMVa_setRow{align-items:center;gap:12px;padding:12px 0;display:flex}.nUhMVa_setRow+.nUhMVa_setRow{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb)}.nUhMVa_setLabelBox{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.nUhMVa_setLabel{font-size:13px;line-height:20px}.nUhMVa_setHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:12px;line-height:18px}.nUhMVa_setConfirm{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:8px;padding:12px 0 4px;display:flex}.nUhMVa_setCheck{cursor:pointer;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_setActions{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}.nUhMVa_setInlineActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.nUhMVa_setProxyEditor{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px 0;display:flex}.nUhMVa_setProxyLabel{min-width:180px;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;gap:5px;font-size:12px;line-height:18px;display:flex}.nUhMVa_setProxyInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);width:100%;min-width:0;color:var(--dsw-alias-label-primary,#1f2328);font:inherit;border-radius:7px;padding:6px 8px;font-size:12px;line-height:18px}.nUhMVa_setProxyInput:focus{border-color:var(--dsw-alias-brand-primary,#4f6ef7);outline:2px solid color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 18%,transparent)}.nUhMVa_setDanger{color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_setSeg{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-shrink:0;gap:2px;padding:2px;display:inline-flex}.nUhMVa_setSegBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:3px 10px;font-size:12px;line-height:18px}.nUhMVa_setSegBtn:disabled{cursor:default;opacity:.5}.nUhMVa_setSegOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.nUhMVa_setBetaTag{background:var(--dsw-alias-bg-module-platform,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:17px}.nUhMVa_commentsLink{cursor:pointer;white-space:nowrap;color:var(--dsw-alias-label-secondary,#9ca3af);background:0 0;border:0;padding:0;font-size:11px;line-height:16px}.nUhMVa_commentsLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_footActions{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.nUhMVa_favoriteBtn{cursor:pointer;color:var(--dsw-alias-label-secondary,#9ca3af);background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.nUhMVa_favoriteBtn:hover,.nUhMVa_favoriteOn{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_commentsNote{color:var(--dsw-alias-label-secondary,#9ca3af);margin:0 0 8px;font-size:11px;line-height:16px}.nUhMVa_commentsGithubPrompt{border:1px solid color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 24%,transparent);background:color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 6%,transparent);border-radius:8px;margin:0 0 10px;padding:10px}.nUhMVa_commentsGithubHint{color:var(--dsw-alias-label-primary,#1f2328);margin:0 0 8px;font-size:12px;line-height:17px}.nUhMVa_commentsGithubAction{box-sizing:border-box;border:1px solid var(--dsw-alias-brand-primary,#4f6ef7);min-height:28px;color:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:6px;justify-content:center;align-items:center;padding:5px 10px;font-size:12px;font-weight:600;line-height:16px;text-decoration:none;display:inline-flex}.nUhMVa_commentsGithubAction:hover{background:color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 9%,transparent)}.nUhMVa_commentsStatus{color:var(--dsw-alias-label-secondary,#9ca3af);margin:0;font-size:12px}.nUhMVa_commentsStatus:empty{display:none}.nUhMVa_commentsError{color:var(--dsw-alias-label-primary,#1f2328);margin:0 0 8px;font-size:12px}.nUhMVa_commentsFail{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 0;display:flex}.nUhMVa_commentsMount{width:100%;min-height:240px;max-height:56vh;overflow:auto}.nUhMVa_commentsMount iframe{width:100%}.nUhMVa_notesLink{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;text-align:left;background:0 0;border:none;margin:2px 0 0;padding:0;font-size:12px;line-height:18px;display:block}.nUhMVa_notesLink:hover{color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_notesModalWide{width:min(640px,92vw);max-width:min(640px,92vw)}.nUhMVa_notesBody{overscroll-behavior:contain;flex-direction:column;flex:0 auto;gap:10px;min-width:0;max-height:min(60vh,520px);padding:0 2px 8px 0;display:flex;overflow-y:auto}.nUhMVa_notesRange{align-items:center;gap:8px;margin-bottom:4px;font-size:12px;line-height:18px;display:flex}.nUhMVa_notesArrow{color:var(--dsw-alias-label-tertiary,#8b93a1)}.nUhMVa_notesMeta{letter-spacing:.02em;text-transform:uppercase;color:var(--dsw-alias-label-secondary,#6b7280);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:4px;font-size:12px;line-height:18px;display:flex}.nUhMVa_notesBody>.nUhMVa_notesMeta:first-child{margin-top:0}.nUhMVa_notesPre{white-space:pre-wrap;word-break:break-word;background:var(--dsw-alias-bg-layer-2,#eef0f4);border-radius:8px;max-height:40vh;margin:0;padding:10px 12px;font-size:13px;line-height:20px;overflow:auto}.nUhMVa_notesRendered{flex-direction:column;gap:8px;min-width:0;display:flex}.nUhMVa_notesImg{border-radius:6px;max-width:100%;height:auto;margin:4px 0;display:block}.nUhMVa_notesH{margin-top:4px;font-size:13px;font-weight:650;line-height:20px}.nUhMVa_notesP{font-size:13px;line-height:20px}.nUhMVa_notesQuote{border-left:3px solid var(--dsw-alias-border-l3,#d9dde3);background:var(--dsw-alias-bg-layer-2,#f7f8fa);color:var(--dsw-alias-label-primary,#1f2328);border-radius:0 6px 6px 0;margin:0;padding:8px 10px;font-size:13px;line-height:20px}.nUhMVa_notesFence{background:var(--dsw-alias-bg-layer-2,#eef0f4);font-family:var(--dsw-alias-font-mono,ui-monospace,Menlo,monospace);white-space:pre;border-radius:8px;margin:0;padding:10px 12px;font-size:12px;line-height:18px;overflow-x:auto}.nUhMVa_notesFence code{font:inherit;background:0 0;padding:0}.nUhMVa_notesBullets{flex-direction:column;gap:4px;margin:0;padding-left:18px;font-size:13px;line-height:20px;display:flex}.nUhMVa_notesA{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:none}.nUhMVa_notesA:hover{text-decoration:underline}.nUhMVa_notesCode{font-family:var(--dsw-alias-font-mono,ui-monospace,monospace);background:var(--dsw-alias-bg-layer-2,#eef0f4);border-radius:5px;padding:1px 5px;font-size:12px}.nUhMVa_notesList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.nUhMVa_notesRow{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:baseline;gap:12px;padding:6px 0;display:flex}.nUhMVa_notesRow:last-child{border-bottom:none}.nUhMVa_notesDate{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.nUhMVa_notesMsg{word-break:break-word;word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;min-width:0;font-size:13px;line-height:20px;display:-webkit-box;overflow:hidden}.nUhMVa_notesSha{color:var(--dsw-alias-label-secondary,#6b7280);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:12px;text-decoration:none}.nUhMVa_recoverySummary{color:var(--dsw-alias-state-error-primary,#dc2626);word-break:break-word;align-items:flex-start;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.nUhMVa_recoveryHint{color:var(--dsw-alias-label-secondary,#6b7280);margin:8px 0;font-size:12px}.nUhMVa_recoveryList{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-direction:column;max-height:320px;display:flex;overflow-x:hidden;overflow-y:auto}.nUhMVa_recoveryRow{border-top:1px solid var(--dsw-alias-border-l2,#eef0f4);align-items:flex-start;gap:8px;padding:6px 10px;font-size:12px;display:flex}.nUhMVa_recoveryRow:first-child{border-top:none}.nUhMVa_recoveryBlamed{box-shadow:inset 3px 0 0 var(--dsw-alias-state-error-primary,#dc2626);background:#dc262612}.nUhMVa_recoveryMuted{opacity:.6}.nUhMVa_recoveryName{word-break:break-word;flex-direction:column;gap:2px;min-width:0;display:flex}.nUhMVa_recoveryReason{color:var(--dsw-alias-state-error-primary,#dc2626);word-break:break-word;font-size:11px}.nUhMVa_recoveryNote{color:var(--dsw-alias-label-tertiary,#8b93a1);word-break:break-word;margin-top:8px;font-size:11px}.nUhMVa_recoveryBadge{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:5px;margin-left:6px;padding:0 5px;font-size:10px}.nUhMVa_recoveryLog{color:var(--dsw-alias-label-secondary,#6b7280);margin:4px 0 8px;font-size:11px}.nUhMVa_recoveryLog pre{white-space:pre-wrap;word-break:break-word;max-height:180px;margin:6px 0 0;overflow:auto}.nUhMVa_notesSha:hover{color:var(--dsw-alias-label-primary,#1f2328);text-decoration:underline}.nUhMVa_notesVer{color:inherit;font-weight:600;text-decoration:none}.nUhMVa_notesVer:hover{text-decoration:underline}.nUhMVa_migrationSources{flex-direction:column;gap:8px;margin-top:4px;display:flex}.nUhMVa_migrationSource{border:1px solid var(--dsw-alias-border-default,#e5e7eb);border-radius:8px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.nUhMVa_migrationSource code{overflow-wrap:anywhere;font-family:ui-monospace,Menlo,monospace;font-size:12px}.nUhMVa_migrationLabel{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.nUhMVa_migrationArrow{text-align:center;color:var(--dsw-alias-label-secondary,#9ca3af)}.nUhMVa_migrationWarning{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:flex-start;gap:6px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}";
|
|
2595
|
+
const css = ".nUhMVa_root{min-width:0;height:100%;color:var(--dsw-alias-label-primary,#1f2328);flex-direction:column;display:flex;position:relative;container-type:inline-size}.nUhMVa_head{flex-direction:column;gap:12px;padding:4px 4px 6px;display:flex}.nUhMVa_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.nUhMVa_sub{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:8px;margin:0;font-size:12px;line-height:18px;display:flex}.nUhMVa_submitLink{color:var(--dsw-alias-label-tertiary,#8b93a1);white-space:nowrap;font-size:11px;line-height:18px;text-decoration:none}.nUhMVa_submitLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_tabs{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-end;gap:2px;display:flex}.nUhMVa_tab{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 12px;font-size:13px}.nUhMVa_tab.nUhMVa_on{color:var(--dsw-alias-brand-primary,#4f6ef7);border-bottom-color:var(--dsw-alias-brand-primary,#4f6ef7);font-weight:600}.nUhMVa_subTabs{align-items:flex-end;gap:2px;margin:-4px 0 4px;display:flex}.nUhMVa_banner{background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;align-items:center;gap:8px;margin:0;padding:8px 12px;font-size:12px;display:flex}.nUhMVa_bannerIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0}.nUhMVa_bannerHint{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:help;display:inline-flex}.nUhMVa_body{overflow-anchor:none;flex:1;padding:12px 4px 24px;overflow-x:hidden;overflow-y:auto}.nUhMVa_stickyHead{z-index:5;background:var(--dsw-alias-bg-layer-2,#f7f8fa);position:sticky;top:-1px}.nUhMVa_stickyHead:before{content:\"\";background:inherit;pointer-events:none;height:14px;position:absolute;bottom:100%;left:0;right:0}.nUhMVa_cats{margin:0 -4px 2px;padding:12px 4px 4px}.nUhMVa_catsRow{align-items:flex-start;gap:8px;display:flex;position:relative}.nUhMVa_star{color:var(--dsw-alias-label-secondary,#9ca3af);white-space:nowrap;flex:none;font-size:11px}.nUhMVa_top{z-index:20;background:var(--dsw-alias-bg-layer-1,#fff);box-shadow:var(--dsw-shadow-lv1,0 4px 12px #1f232814);border-radius:99px;display:inline-flex;position:absolute;bottom:18px;right:18px}.nUhMVa_topBtn{border-radius:99px;width:38px;height:38px;padding:0}.nUhMVa_tag{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:11px;line-height:16px}.nUhMVa_hostRequirement{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;min-width:0;max-width:100%;padding:1px 6px;font-size:11px;line-height:16px;overflow:hidden}.nUhMVa_hostRequirementBad{border-color:var(--dsw-alias-state-error-primary,#dc2626);color:var(--dsw-alias-state-error-primary,#dc2626);background:#dc262614}.nUhMVa_hostFilterNote{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:6px;font-size:11px;line-height:16px}.nUhMVa_okState{color:var(--dsw-alias-state-success-primary,#16a34a);white-space:nowrap;font-size:12px;font-weight:600}.nUhMVa_catsWrap{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.nUhMVa_catsCollapsed{max-height:62px;overflow:hidden}.nUhMVa_catsToggle.nUhMVa_catsToggle{height:26px;min-height:26px;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.nUhMVa_shots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:8px;margin:6px 0 8px;padding:2px 0 6px;display:flex;overflow-x:auto}.nUhMVa_shot{object-fit:cover;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);cursor:pointer;border-radius:8px;flex:none;width:220px;height:150px}.nUhMVa_cardShots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:6px;margin:0 0 6px;padding:0 0 2px;display:flex;overflow-x:auto}.nUhMVa_cardShot{object-fit:contain;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);cursor:pointer;border-radius:8px;flex:none;width:132px;height:88px;display:block}.nUhMVa_lightbox{z-index:10000;cursor:zoom-out;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.nUhMVa_lightboxImg{object-fit:contain;cursor:default;border-radius:4px;max-width:90vw;max-height:85vh}.nUhMVa_lightboxClose{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:99px;place-items:center;width:36px;height:36px;font-size:22px;line-height:1;display:grid;position:absolute;top:16px;right:16px}.nUhMVa_lightboxClose:hover{background:#ffffff38}.nUhMVa_lightboxNav{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:99px;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.nUhMVa_lightboxNav:hover{background:#ffffff38}.nUhMVa_lightboxPrev{left:16px}.nUhMVa_lightboxNext{right:16px}.nUhMVa_lightboxDots{gap:8px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.nUhMVa_lightboxDot{cursor:pointer;background:#fff6;border-radius:99px;width:7px;height:7px}.nUhMVa_lightboxDotOn{background:#fff}.nUhMVa_cmd{background:var(--dsw-alias-bg-layer-2,#f3f4f6);word-break:break-all;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:18px}.nUhMVa_warnLine{color:var(--dsw-alias-state-warn-primary,#b45309);flex-wrap:wrap;align-items:center;gap:4px;margin:0;font-size:12px;font-weight:600;line-height:18px;display:flex}.nUhMVa_modalNote{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:4px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}.nUhMVa_grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;display:grid}.nUhMVa_masonry{align-items:flex-start;gap:10px;display:flex}.nUhMVa_masonryCol{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.nUhMVa_masonry>.nUhMVa_masonryCol>*{align-self:stretch;min-width:0}@media (max-width:680px){.nUhMVa_masonry{flex-direction:column}.nUhMVa_masonryCol{width:100%}.nUhMVa_grid{grid-template-columns:minmax(0,1fr)}}.nUhMVa_swatches{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;gap:0;height:34px;display:flex;overflow:hidden}.nUhMVa_themesGrid{margin-bottom:12px}.nUhMVa_swatches i{flex:1}.nUhMVa_themeToolbar{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 4px 12px;display:grid}.nUhMVa_themeSearch{box-sizing:border-box;width:100%;min-width:0}.nUhMVa_themeToolbarActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.nUhMVa_themeFullscreenBtn.nUhMVa_themeFullscreenBtn{width:28px;min-width:28px;padding:0}.nUhMVa_themeResultBar{min-height:24px;color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;padding:0 4px 8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_favoritesSectionHead{color:var(--dsw-alias-label-primary,#1f2328);margin:16px 0 8px;padding:0 4px;font-size:13px;font-weight:600;line-height:20px}.nUhMVa_favoritesSectionHead:first-of-type{margin-top:0}.nUhMVa_favoritesStaleBar{border:1px solid var(--dsw-alias-state-warn-tertiary,#b4530933);background:var(--dsw-alias-state-warn-tertiary,#b453090f);color:var(--dsw-alias-state-warn-primary,#b45309);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_favoritesStaleOnly{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.nUhMVa_themeGallery{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:10px;display:grid}.nUhMVa_themeCard{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;flex-direction:column;min-width:0;transition:border-color .16s cubic-bezier(.16,1,.3,1),box-shadow .16s cubic-bezier(.16,1,.3,1),transform .16s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden}.nUhMVa_themeCard:hover{border-color:var(--dsw-alias-border-l3,#d9dde3);box-shadow:var(--dsw-shadow-lv1,0 4px 12px #1f232814);transform:translateY(-1px)}.nUhMVa_themeCover{aspect-ratio:16/10;border:0;border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);width:100%;color:var(--dsw-alias-label-secondary,#6b7280);cursor:zoom-in;border-radius:0;padding:0;display:block;position:relative;overflow:hidden}.nUhMVa_themeCover img{object-fit:contain;background:var(--dsw-alias-bg-layer-2,#f3f4f6);width:100%;height:100%;transition:transform .18s cubic-bezier(.16,1,.3,1);display:block}.nUhMVa_themeCover:hover img{transform:scale(1.012)}.nUhMVa_themeCover:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#4f6ef7);outline-offset:-3px}.nUhMVa_themeCoverEmpty{cursor:default;color:var(--dsw-alias-label-tertiary,#8b93a1);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_themePreviewAction,.nUhMVa_themePreviewCount{color:#fff;-webkit-backdrop-filter:blur(8px);background:#14181fc7;border:1px solid #ffffff57;border-radius:4px;align-items:center;height:24px;padding:0 8px;font-size:11px;line-height:16px;display:inline-flex;position:absolute;bottom:8px}.nUhMVa_themePreviewAction{gap:4px;right:8px}.nUhMVa_themePreviewCount{left:8px}.nUhMVa_themeCardBody{flex-direction:column;flex:1;gap:8px;padding:12px;display:flex}.nUhMVa_themeCardHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.nUhMVa_themeIdentity{flex:1;min-width:0}.nUhMVa_themeStatus,.nUhMVa_themeStatusMuted{white-space:nowrap;border-radius:4px;flex:none;align-items:center;min-height:22px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_themeStatus{background:var(--dsw-alias-state-success-tertiary,#16a34a1a);color:var(--dsw-alias-state-success-primary,#15803d)}.nUhMVa_themeStatusMuted{background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280)}.nUhMVa_themeDescription{min-height:36px;color:var(--dsw-alias-label-tertiary,#8b93a1);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.nUhMVa_themeCardFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:4px;display:flex}.nUhMVa_themeLifecycle{min-width:0;color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:18px;overflow:hidden}.nUhMVa_themeActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}@container (width<=900px){.nUhMVa_themeGallery{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (width<=680px){.nUhMVa_themeGallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=460px){.nUhMVa_themeGallery{grid-template-columns:minmax(0,1fr)}}@container (width<=420px){.nUhMVa_sub{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2px 8px;display:grid}.nUhMVa_sub>span:first-child{grid-area:1/1}.nUhMVa_sub>.nUhMVa_grow{display:none}.nUhMVa_submitLink{grid-area:2/1}.nUhMVa_exportLogBtn{flex-shrink:0;grid-area:1/2/span 2}.nUhMVa_themeToolbar{grid-template-columns:minmax(0,1fr)}.nUhMVa_themeCardHead{flex-wrap:wrap}.nUhMVa_themeStatus,.nUhMVa_themeStatusMuted{order:3}}@container (width<=280px){.nUhMVa_themeCardFooter{flex-direction:column;align-items:flex-start}.nUhMVa_themeActions{justify-content:flex-start;width:100%;margin-left:0}}@media (max-width:560px){[role=dialog]:has([data-dsh-market-root])>nav{display:none}[role=dialog]:has([data-dsh-market-root])>div{flex:100%;width:100%;min-width:0}}[role=dialog]:has([data-dsh-market-fullscreen=true]){border-radius:0;width:100vw;max-width:none;height:100vh;max-height:none;position:fixed;top:0;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){.nUhMVa_themeCard,.nUhMVa_themeCover img{transition:none}.nUhMVa_themeCard:hover{transform:none}}.nUhMVa_card{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;align-self:start;gap:12px;padding:12px 14px;display:flex}.nUhMVa_row1{align-items:flex-start;gap:10px;min-width:0;display:flex}.nUhMVa_cardAction{flex-shrink:0;align-items:center;display:inline-flex}.nUhMVa_installBtn.nUhMVa_installBtn{min-width:64px}.nUhMVa_av{color:#fff;object-fit:cover;background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;flex-shrink:0;place-items:center;width:16px;height:16px;font-size:9px;font-weight:700;display:grid}.nUhMVa_nm{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;line-height:22px;overflow:hidden}.nUhMVa_nmLink{color:inherit;text-decoration:none;display:block}.nUhMVa_nmLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_repoMark{color:var(--dsw-alias-label-secondary,#6b7280);vertical-align:-1px;flex-shrink:0;margin-left:5px;display:inline-block}.nUhMVa_nmLink:hover .nUhMVa_repoMark{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_byline{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin-top:2px;display:flex}.nUhMVa_meta{color:var(--dsw-alias-label-secondary,#9ca3af);margin-top:2px;font-size:11px}.nUhMVa_metaInline{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.nUhMVa_owner{color:var(--dsw-alias-label-secondary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:44px;font-size:11px;overflow:hidden}.nUhMVa_desc{color:var(--dsw-alias-label-tertiary,#8b93a1);margin:0;font-size:12px;line-height:18px}.nUhMVa_descClamp{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.nUhMVa_descToggle{width:20px;height:16px;color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin-top:2px;padding:0;display:flex}.nUhMVa_descToggle:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_foot{flex-wrap:nowrap;align-items:flex-end;gap:8px;display:flex}.nUhMVa_foot .nUhMVa_metaInline,.nUhMVa_foot .nUhMVa_src{white-space:nowrap}.nUhMVa_footTags{flex-wrap:wrap;flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_grow{flex:1}.nUhMVa_titleRow{align-items:center;gap:10px;display:flex}.nUhMVa_version{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px;line-height:20px}.nUhMVa_repoLink{color:var(--dsw-alias-label-tertiary,#8b93a1);flex-shrink:0;font-size:12px;line-height:20px;text-decoration:none}.nUhMVa_repoLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_noteRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.nUhMVa_desc.nUhMVa_noteRow,.nUhMVa_desc.nUhMVa_noteRow+.nUhMVa_noteRow,.nUhMVa_noteEdit+.nUhMVa_noteRow{margin-top:6px}.nUhMVa_noteMine{color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_noteToggle{font:inherit;color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex-shrink:0;padding:0;font-size:11px;line-height:16px}.nUhMVa_noteToggle:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_noteAction{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:4px;align-items:center;padding:0 5px;font-weight:600;text-decoration:none;display:inline-flex}.nUhMVa_noteAction:hover{color:var(--dsw-alias-label-primary,#1f2328);border-color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:none}.nUhMVa_noteEdit{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin-top:6px;display:flex}.nUhMVa_noteInput{flex:1;min-width:160px}.nUhMVa_descTight{min-height:0}.nUhMVa_src{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px;text-decoration:none}.nUhMVa_src:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_dot{vertical-align:2px;margin-left:5px}.nUhMVa_act{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:11px;display:flex}.nUhMVa_actLive{color:var(--dsw-alias-state-success-primary,#16a34a);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actWarn{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actBroken{color:var(--dsw-alias-state-error-primary,#dc2626);align-items:center;gap:4px;font-weight:600;display:inline-flex}.nUhMVa_actWhy{color:var(--dsw-alias-label-secondary,#6b7280);margin-top:2px}.nUhMVa_loading{color:var(--dsw-alias-label-secondary,#9ca3af);flex-direction:column;align-items:center;gap:12px;padding:48px;font-size:13px;display:flex}.nUhMVa_spin{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;animation:.8s linear infinite nUhMVa_sp;display:inline-flex}.nUhMVa_logoMark{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;display:inline-flex}.nUhMVa_logoPlug{transform-box:fill-box;transform-origin:50%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite nUhMVa_dshmPlug}@keyframes nUhMVa_dshmPlug{0%,12%{transform:rotate(9deg)}45%,62%{transform:translate(-1.28px,1.27px)rotate(0)}95%,to{transform:rotate(9deg)}}@media (prefers-reduced-motion:reduce){.nUhMVa_logoPlug,.nUhMVa_spin{animation:1.5s ease-in-out infinite nUhMVa_dshmPlugFade}}@keyframes nUhMVa_dshmPlugFade{0%,to{opacity:1}50%{opacity:.35}}@keyframes nUhMVa_sp{to{transform:rotate(360deg)}}.nUhMVa_progress{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:8px;flex-wrap:wrap;align-items:center;gap:9px;margin:0;padding:8px 12px;font-size:12px;display:flex}.nUhMVa_bar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:99px;width:100%;height:4px;overflow:hidden}.nUhMVa_barFill{background:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:99px;height:100%;transition:width .6s}.nUhMVa_barWave{width:30%;animation:1.2s ease-in-out infinite nUhMVa_dshmSlide}@keyframes nUhMVa_dshmSlide{0%{margin-left:-30%}to{margin-left:100%}}.nUhMVa_irow .nUhMVa_progress{margin-top:8px}.nUhMVa_progress code{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.nUhMVa_empty{color:var(--dsw-alias-label-secondary,#9ca3af);text-align:center;padding:32px;font-size:13px}.nUhMVa_err{color:var(--dsw-alias-state-error-primary,#dc2626);white-space:pre-wrap;word-break:break-all;margin:8px 0;font-size:12px}.nUhMVa_cardBlocked{border-color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_conflictHead{align-items:flex-start;gap:8px;display:flex}.nUhMVa_conflictIcon{color:var(--dsw-alias-state-error-primary,#dc2626);flex-shrink:0;margin-top:1px}.nUhMVa_conflictTitle{color:var(--dsw-alias-state-error-primary,#dc2626);font-size:13px;font-weight:600;line-height:18px}.nUhMVa_conflictBody{margin:0;font-size:12px;line-height:19px}.nUhMVa_roster{background:var(--dsw-alias-border-l2,#e5e7eb);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-direction:column;gap:1px;display:flex;overflow:hidden}.nUhMVa_rosterRow{background:var(--dsw-alias-bg-layer-1,#fff);align-items:center;gap:8px;padding:7px 10px;display:flex}.nUhMVa_rosterMain{flex-direction:column;min-width:0;display:flex}.nUhMVa_rosterName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:600;overflow:hidden}.nUhMVa_rosterAuthor{color:var(--dsw-alias-label-secondary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.nUhMVa_rosterTag{border-radius:4px;flex-shrink:0;margin-left:auto;padding:1px 6px;font-size:10.5px;font-weight:600}.nUhMVa_rosterTagKeep{color:var(--dsw-alias-state-success-primary,#16a34a);background:#16a34a1f}.nUhMVa_rosterTagDrop{color:var(--dsw-alias-state-error-primary,#dc2626);background:#dc26261f}.nUhMVa_rosterRowOut .nUhMVa_rosterName{text-decoration:line-through}.nUhMVa_rosterRowOut{opacity:.62}.nUhMVa_rosterSplit{background:var(--dsw-alias-border-l2,#e5e7eb);height:1px}.nUhMVa_reassure{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:5px;margin:0;font-size:11.5px;line-height:17px;display:flex}.nUhMVa_reassureOk{color:var(--dsw-alias-state-success-primary,#16a34a);flex-shrink:0}.nUhMVa_conflictWhy{color:var(--dsw-alias-label-tertiary,#8b93a1);overflow-wrap:anywhere;margin-top:2px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:17px}.nUhMVa_conflictWhyText{margin-top:5px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}.nUhMVa_choices{flex-direction:column;gap:7px;display:flex}.nUhMVa_choice{text-align:left;font:inherit;cursor:pointer;background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:9px;align-items:flex-start;gap:9px;padding:9px 11px;display:flex}.nUhMVa_choice:has(input:disabled){cursor:default;opacity:.6}.nUhMVa_choiceOn{border-color:var(--dsw-alias-brand-primary,#4f6ef7);background:var(--dsw-alias-bg-layer-2,#f5f7ff)}.nUhMVa_choiceRadio{width:13px;height:13px;accent-color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;margin:2px 0 0}.nUhMVa_choiceMain{flex-direction:column;gap:3px;min-width:0;display:flex}.nUhMVa_choiceTitle{font-size:12px;font-weight:600;line-height:17px}.nUhMVa_choiceNote{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px;line-height:16px}.nUhMVa_choiceSafe{color:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_stateTag{white-space:nowrap;background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-height:20px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:5px;flex-shrink:0;align-items:center;gap:5px;padding:1px 7px;font-size:11px;line-height:16px;display:inline-flex}.nUhMVa_stateTag[data-on=true]{color:var(--dsw-alias-state-success-primary,#16a34a);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#16a34a) 10%, transparent)}.nUhMVa_stateDot{background:var(--dsw-alias-label-tertiary,#8b93a1);border-radius:999px;flex:none;width:6px;height:6px}.nUhMVa_stateDot[data-on=true]{background:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_metaTag{text-overflow:ellipsis;white-space:nowrap;background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:0;max-width:100%;min-height:20px;color:var(--dsw-alias-label-tertiary,#8b93a1);border-radius:5px;flex-shrink:1;padding:1px 7px;font-size:11px;line-height:18px;display:inline-block;overflow:hidden}.nUhMVa_metaTagOk{color:var(--dsw-alias-state-success-primary,#16a34a);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#16a34a) 10%, transparent)}.nUhMVa_metaTagAction{font-family:inherit;font-size:11px;line-height:18px;font-weight:inherit;cursor:pointer;background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border:none;border-radius:5px;flex-shrink:0;padding:1px 7px}.nUhMVa_metaTagAction:hover:not(:disabled){color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_metaTagAction:disabled{opacity:.5;cursor:default}.nUhMVa_irowHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.nUhMVa_irowHead .nUhMVa_irowName{flex:1 1 0;min-width:0}.nUhMVa_irowDevTag{letter-spacing:.02em;white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;color:var(--dsw-alias-label-tertiary,#8b93a1);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#4f6ef7) 9%, var(--dsw-alias-bg-layer-2,#f3f4f6));border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:600;line-height:14px}.nUhMVa_nameLink{color:inherit;text-decoration:none}.nUhMVa_irowName{text-overflow:clip;flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex;overflow:visible}.nUhMVa_irowNameText{overflow-wrap:anywhere;white-space:normal;min-width:0}.nUhMVa_irowName>.nUhMVa_owner{flex:none}.nUhMVa_nameLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:underline}.nUhMVa_opWrap{flex-shrink:0;margin-bottom:6px;display:inline-flex;position:relative}.nUhMVa_opEntry{font:inherit;cursor:pointer;white-space:nowrap;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:7px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex;position:relative}.nUhMVa_opEntryQuiet{color:var(--dsw-alias-label-secondary,#6b7280);background:0 0;border-color:#0000}.nUhMVa_opEntryAlert{border-color:var(--dsw-alias-state-error-primary,#dc2626);color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_opDot{background:var(--dsw-alias-state-error-primary,#dc2626);border-radius:99px;width:8px;height:8px;position:absolute;top:-3px;right:-3px}.nUhMVa_opPanel{z-index:40;background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l3,#d9dde3);border-radius:12px;width:460px;max-width:86vw;max-height:70vh;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 20px 52px #00000047}.nUhMVa_opHead{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:center;gap:8px;padding:9px 14px;display:flex}.nUhMVa_opPanelTitle{font-size:12.5px;font-weight:600}.nUhMVa_opCloseBtn.nUhMVa_opCloseBtn{min-width:0;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.nUhMVa_opAggregate{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f8fa);padding:9px 14px}.nUhMVa_opAggregateTop{font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.nUhMVa_opAggregateHint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:4px;font-size:10.5px}.nUhMVa_opRow{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-start;gap:9px;padding:9px 14px;display:flex}.nUhMVa_opRow:last-child{border-bottom:none}.nUhMVa_opRowAlert{background:#dc26260f}.nUhMVa_opIcon{flex-shrink:0;place-items:center;width:14px;margin-top:1px;display:grid}.nUhMVa_opQueuedIcon{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:12px}.nUhMVa_opMain{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.nUhMVa_opTop{align-items:baseline;gap:6px;min-width:0;display:flex}.nUhMVa_opVerb{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:12px}.nUhMVa_opName{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.nUhMVa_opStatus{color:var(--dsw-alias-label-tertiary,#8b93a1);overflow-wrap:anywhere;font-size:10.5px;line-height:16px}.nUhMVa_opStatusBad{color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_opActions{flex-shrink:0;align-items:center;gap:6px;margin-top:1px;display:flex}.nUhMVa_opDecision{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:8px;margin-top:8px;padding-top:8px;display:flex}.nUhMVa_opDecisionFoot{align-items:center;gap:8px;display:flex}.nUhMVa_conflictDetailsToggle{font:inherit;cursor:pointer;color:var(--dsw-alias-label-tertiary,#8b93a1);background:0 0;border:none;align-items:center;gap:4px;padding:2px 0;font-size:11px;display:inline-flex}.nUhMVa_conflictDetailsToggle:hover{color:var(--dsw-alias-label-secondary,#6b7280)}.nUhMVa_opEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);padding:30px 14px;font-size:12px}.nUhMVa_opEmptyHint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin-top:4px;font-size:11px}.nUhMVa_cardBlockedMark{font:inherit;cursor:pointer;color:var(--dsw-alias-state-error-primary,#dc2626);border:1px solid var(--dsw-alias-state-error-primary,#dc2626);background:#dc262614;border-radius:7px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;display:inline-flex}.nUhMVa_dangerBtn.nUhMVa_dangerBtn{color:var(--dsw-alias-state-error-primary,#dc2626);border-color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_dangerBtn.nUhMVa_dangerBtn:hover:not(:disabled){background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff}.nUhMVa_dangerArmed.nUhMVa_dangerArmed{background:var(--dsw-alias-state-error-primary,#dc2626);border-color:var(--dsw-alias-state-error-primary,#dc2626);color:#fff}.nUhMVa_retryBtn{margin-top:4px}.nUhMVa_irow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:10px;flex-direction:column;gap:10px;min-width:0;padding:12px 14px;display:flex}.nUhMVa_irowActions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_irowTrailing{flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:8px;min-width:0;display:inline-flex}.nUhMVa_irowTrailing .nUhMVa_metaTag{flex-shrink:1;min-width:0}.nUhMVa_irowTrailing .nUhMVa_metaTagAction{flex-shrink:0}.nUhMVa_irowMissing{filter:grayscale();opacity:.5}.nUhMVa_irow>.nUhMVa_src,.nUhMVa_irow>.nUhMVa_owner,.nUhMVa_irow button{white-space:nowrap;flex-shrink:0}.nUhMVa_tabSearchRow{align-items:center;gap:8px;padding:0 4px 12px;display:flex}.nUhMVa_tabSearch{flex:1;min-width:0}.nUhMVa_spec{color:var(--dsw-alias-label-secondary,#9ca3af);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:11px}.nUhMVa_specTag{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;height:16px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.nUhMVa_specTagGit{color:#0b7285;background:#12a3c41f}.nUhMVa_specTagFile{color:#b07d1b;background:#f0b42924}.nUhMVa_backupCheckList .nUhMVa_grow{white-space:nowrap;text-overflow:ellipsis;flex:70%;min-width:0;overflow:hidden}.nUhMVa_backupCheckList .nUhMVa_spec{text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:0 30%;max-width:30%;overflow:hidden}.nUhMVa_staleAction{word-break:normal;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.nUhMVa_pct{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:11px;font-weight:600}.nUhMVa_pager{flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:8px;margin:16px 0 4px;display:flex}.nUhMVa_pagerPages{flex-wrap:nowrap;flex:1;justify-content:center;align-items:center;gap:4px;min-width:0;display:flex}.nUhMVa_pagerMeta{flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.nUhMVa_pagerPages button,.nUhMVa_pagerMeta button{min-width:0;padding:0 8px}.nUhMVa_pageEllipsis{color:var(--dsw-alias-label-secondary,#9ca3af);padding:0 1px;font-size:12px}.nUhMVa_pageInfo{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;font-size:12px}@container (width<=544px){.nUhMVa_pager{flex-wrap:wrap;justify-content:center;gap:8px}.nUhMVa_pagerPages{flex-basis:100%}}.nUhMVa_depBadge{border:1px solid var(--dsw-alias-state-warn-primary,#b45309);color:var(--dsw-alias-state-warn-primary,#b45309);white-space:nowrap;border-radius:4px;flex-shrink:0;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;line-height:16px}.nUhMVa_deprecate{color:var(--dsw-alias-state-warn-primary,#b45309);background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.nUhMVa_deprecate a{color:var(--dsw-alias-state-warn-primary,#b45309);text-decoration:underline}.nUhMVa_deprecate .nUhMVa_src{margin-left:8px}.nUhMVa_depLine{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nUhMVa_switch{border:1px solid var(--dsw-alias-border-l2,#d9dde3);background:var(--dsw-alias-bg-layer-2,#e5e7eb);cursor:pointer;border-radius:99px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s,border-color .15s;position:relative}.nUhMVa_switchOn{background:var(--dsw-alias-state-success-primary,#16a34a);border-color:var(--dsw-alias-state-success-primary,#16a34a)}.nUhMVa_switchMixed{background:var(--dsw-alias-state-warn-primary,#b45309);border-color:var(--dsw-alias-state-warn-primary,#b45309)}.nUhMVa_switchKnob{background:#fff;border-radius:99px;width:16px;height:16px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.nUhMVa_switchOn .nUhMVa_switchKnob,.nUhMVa_switchMixed .nUhMVa_switchKnob{left:18px}.nUhMVa_switch:disabled{opacity:.5;cursor:default}.nUhMVa_viewBar{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;align-items:center;gap:2px;width:fit-content;margin-bottom:12px;padding:2px;display:flex}.nUhMVa_viewBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 10px;font-size:12px;line-height:18px}.nUhMVa_viewBtn:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_viewOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.nUhMVa_groupRow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;margin-bottom:10px;padding:12px 14px}.nUhMVa_groupHead{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.nUhMVa_groupCollapse{width:22px;height:22px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.nUhMVa_groupCollapse:hover{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_groupTitle{flex-direction:column;flex:auto;gap:1px;min-width:0;display:flex}.nUhMVa_groupTitle .nUhMVa_groupHint{margin-top:0}.nUhMVa_groupName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.nUhMVa_groupMeta{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px;line-height:16px}.nUhMVa_groupActions{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.nUhMVa_groupMembers{flex-direction:column;gap:6px;margin-top:10px;display:flex}.nUhMVa_groupMember{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;align-items:center;gap:8px;min-width:0;padding:6px 8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_groupMember .nUhMVa_nm{flex:1;min-width:0;font-size:12px}.nUhMVa_memberName{flex:auto;align-items:center;gap:6px;min-width:0;display:flex}.nUhMVa_memberName .nUhMVa_nm{flex:0 auto;min-width:0}.nUhMVa_memberKind{color:var(--dsw-alias-label-tertiary,#8b93a1);white-space:nowrap;flex:none;font-size:11px;line-height:16px}.nUhMVa_themeSlot{box-shadow:inset 0 -1px 0 var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px 8px 0 0;margin-bottom:4px}.nUhMVa_groupMember>.nUhMVa_switch,.nUhMVa_groupMember>button{flex-shrink:0}.nUhMVa_groupMemberAction{flex:none;margin-left:auto}.nUhMVa_groupMemberAction button{white-space:nowrap}.nUhMVa_groupAddPanel{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;display:flex}.nUhMVa_groupAddModalBody{flex-direction:column;gap:10px;min-width:0;display:flex}.nUhMVa_groupAddFilters{flex-wrap:wrap;gap:6px;display:flex}.nUhMVa_groupAddModalList{flex-direction:column;gap:6px;max-height:min(50vh,360px);padding-right:2px;display:flex;overflow-y:auto}.nUhMVa_groupAddModalHint{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.nUhMVa_groupAddPick{background:var(--dsw-alias-bg-layer-2,#f7f8fa);cursor:pointer;border-radius:8px;align-items:center;gap:8px;min-width:0;padding:8px 10px;display:flex}.nUhMVa_groupAddPick:hover{background:var(--dsw-alias-bg-layer-2,#eef0f4)}.nUhMVa_groupAddPick input{flex-shrink:0;margin:0}.nUhMVa_groupAddPick .nUhMVa_nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.nUhMVa_groupAddFooterMeta{color:var(--dsw-alias-label-secondary,#6b7280);align-self:center;margin-right:auto;font-size:12px;line-height:18px}.nUhMVa_groupOrgHint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin:4px 0 0;font-size:11px;line-height:16px}.nUhMVa_groupRenameField{flex-direction:column;gap:6px;min-width:min(100%,320px);display:flex}.nUhMVa_groupRenameField label{color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px;line-height:18px}.nUhMVa_groupRenameField .nUhMVa_inlineInput{width:100%}.nUhMVa_groupCreate{align-items:center;gap:8px;margin-bottom:10px;display:flex}.nUhMVa_groupCreateInline{flex-shrink:0;align-items:center;gap:8px;display:flex}.nUhMVa_groupCreateInline .nUhMVa_inlineInput{flex:none;width:160px}.nUhMVa_inlineInput{flex:1;min-width:120px}.nUhMVa_ungroupedRow{flex-wrap:nowrap}.nUhMVa_ungroupedRow>.nUhMVa_nm{flex:0 auto;max-width:42%;font-size:12px;line-height:18px}.nUhMVa_ungroupedState{flex:0 auto;align-items:center;min-width:0;max-width:46%;margin:0;display:inline-flex}.nUhMVa_ungroupedState>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nUhMVa_ungroupedDesc{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary,#8b93a1);flex:1 1 0;font-size:12px;line-height:18px;overflow:hidden}.nUhMVa_ungroupedDesc.nUhMVa_noteMine{color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_groupHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px}.nUhMVa_sect{color:var(--dsw-alias-label-secondary,#6b7280);margin:14px 2px 8px;font-size:12px;font-weight:600}.nUhMVa_sectAction{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:8px;margin:14px 2px 8px;font-size:12px;font-weight:600;display:flex}.nUhMVa_backupGrid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.nUhMVa_backupCard{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.nUhMVa_backupCard h3{margin:0;font-size:14px}.nUhMVa_backupCard p{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.nUhMVa_backupActions{flex-wrap:wrap;gap:8px;display:flex;position:relative}.nUhMVa_hiddenFile{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.nUhMVa_backupInput{box-sizing:border-box;width:100%}.nUhMVa_backupCheck{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.nUhMVa_backupWarn{margin:0;font-size:12px;line-height:18px;color:var(--dsw-alias-state-warn-primary,#b45309)!important}.nUhMVa_backupMessage{color:var(--dsw-alias-label-secondary,#6b7280);grid-column:1/-1;font-size:12px}.nUhMVa_backupCheckList{flex-direction:column;gap:6px;max-height:260px;margin:10px 0 4px;padding-right:4px;display:flex;overflow-y:auto}.nUhMVa_backupCheckList .nUhMVa_backupCheck{justify-content:space-between;gap:8px}.nUhMVa_diagPage{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow-y:auto}.nUhMVa_diagSummary{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.nUhMVa_diagSummaryItem{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.nUhMVa_diagSummaryMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.nUhMVa_diagSection{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.nUhMVa_diagSection h3{color:var(--dsw-alias-label-primary,#1f2328);margin:0;font-size:13px;font-weight:600}.nUhMVa_diagCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px;font-weight:400}.nUhMVa_diagEmpty{color:var(--dsw-alias-label-secondary,#9ca3af);padding:8px 0;font-size:12px}.nUhMVa_diagBundle{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);flex-direction:column;gap:6px;padding-top:8px;display:flex}.nUhMVa_diagBundle:first-of-type{border-top:none;padding-top:0}.nUhMVa_diagRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.nUhMVa_diagMeta{align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.nUhMVa_diagKey{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;min-width:64px;font-size:11px}.nUhMVa_diagVal{color:var(--dsw-alias-label-primary,#1f2328);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:500}.nUhMVa_diagIndex{background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:18px;height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.nUhMVa_diagBadgeOfficial{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeCommunity{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.nUhMVa_diagBadgeShadow{background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeWarn{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_diagBadgeInfo{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.nUhMVa_diagList{flex-direction:column;gap:6px;display:flex}.nUhMVa_sectionOverview{color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:2px 0 6px;font-size:12px;line-height:18px;overflow:hidden}.nUhMVa_diagAlert{color:var(--dsw-alias-state-warn-primary,#b45309)}.nUhMVa_ovRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_ovArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.nUhMVa_ovByTag{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;max-width:260px;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex;overflow:hidden}.nUhMVa_ovFrom{color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.nUhMVa_orphRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_orphBadge{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nUhMVa_dragHandle{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;line-height:20px;display:inline-flex}.nUhMVa_dragOver{outline:2px dashed var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:2px;background:var(--dsw-alias-bg-layer-2,#f0f2f8);border-radius:8px}.nUhMVa_dragging{opacity:.45;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.nUhMVa_collapseHead{font:inherit;color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;font-size:13px;font-weight:600;display:flex}.nUhMVa_collapseIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;display:inline-flex}.nUhMVa_collapseTitle{flex:1;min-width:0}.nUhMVa_collapseBody{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);overflow-wrap:anywhere;flex-direction:column;gap:10px;min-width:0;margin-top:8px;padding-top:10px;display:flex}.nUhMVa_orderPanel{flex-direction:column;gap:10px;min-width:0;display:flex}.nUhMVa_panelNote{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.nUhMVa_panelActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nUhMVa_presetList{flex-direction:column;gap:6px;min-width:0;display:flex}.nUhMVa_presetRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;min-width:0;max-width:100%;padding:8px 10px;font-size:12px;line-height:18px;display:flex}.nUhMVa_presetName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.nUhMVa_snapList{flex-direction:column;gap:6px;min-width:0;display:flex}.nUhMVa_snapRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px;font-size:12px;line-height:18px;display:flex}.nUhMVa_snapMeta{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.nUhMVa_snapConfirmText{color:var(--dsw-alias-state-warn-primary,#b45309);margin:0;font-size:12px;line-height:18px}.nUhMVa_confirmRow{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.nUhMVa_fixFallback{flex-direction:column;gap:6px;margin:8px 0;display:flex}.nUhMVa_fixFallbackText{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);resize:vertical;white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:16px}.nUhMVa_setCard{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.nUhMVa_setCard:hover{border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}.nUhMVa_setCardOpen{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}.nUhMVa_setHeader{-webkit-appearance:none;appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.nUhMVa_setHeader:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:-2px}.nUhMVa_setHeadText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.nUhMVa_setName{color:var(--dsw-alias-label-primary,#1f2328);font-size:15px;font-weight:600;line-height:1.4}.nUhMVa_setDesc{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:13px;line-height:1.5}.nUhMVa_setChevron{color:var(--dsw-alias-label-tertiary,#8b93a1);flex:none;transition:transform .16s;display:inline-flex}.nUhMVa_setChevronOpen{transform:rotate(180deg)}.nUhMVa_setBody{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);margin:0 16px;padding-bottom:8px}.nUhMVa_setRow{align-items:center;gap:12px;padding:12px 0;display:flex}.nUhMVa_setRow+.nUhMVa_setRow{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb)}.nUhMVa_setLabelBox{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.nUhMVa_setLabel{font-size:13px;line-height:20px}.nUhMVa_setHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:12px;line-height:18px}.nUhMVa_setConfirm{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:8px;padding:12px 0 4px;display:flex}.nUhMVa_setCheck{cursor:pointer;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.nUhMVa_setActions{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}.nUhMVa_setInlineActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.nUhMVa_setProxyEditor{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px 0;display:flex}.nUhMVa_setProxyLabel{min-width:180px;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;gap:5px;font-size:12px;line-height:18px;display:flex}.nUhMVa_setProxyInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);width:100%;min-width:0;color:var(--dsw-alias-label-primary,#1f2328);font:inherit;border-radius:7px;padding:6px 8px;font-size:12px;line-height:18px}.nUhMVa_setProxyInput:focus{border-color:var(--dsw-alias-brand-primary,#4f6ef7);outline:2px solid color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 18%,transparent)}.nUhMVa_setDanger{color:var(--dsw-alias-state-error-primary,#dc2626)}.nUhMVa_setSeg{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-shrink:0;gap:2px;padding:2px;display:inline-flex}.nUhMVa_setSegBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:3px 10px;font-size:12px;line-height:18px}.nUhMVa_setSegBtn:disabled{cursor:default;opacity:.5}.nUhMVa_setSegOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.nUhMVa_setBetaTag{background:var(--dsw-alias-bg-module-platform,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:17px}.nUhMVa_commentsLink{cursor:pointer;white-space:nowrap;color:var(--dsw-alias-label-secondary,#9ca3af);background:0 0;border:0;padding:0;font-size:11px;line-height:16px}.nUhMVa_commentsLink:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_footActions{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.nUhMVa_favoriteBtn{cursor:pointer;color:var(--dsw-alias-label-secondary,#9ca3af);background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.nUhMVa_favoriteBtn:hover,.nUhMVa_favoriteOn{color:var(--dsw-alias-brand-primary,#4f6ef7)}.nUhMVa_commentsNote{color:var(--dsw-alias-label-secondary,#9ca3af);margin:0 0 8px;font-size:11px;line-height:16px}.nUhMVa_commentsGithubPrompt{border:1px solid color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 24%,transparent);background:color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 6%,transparent);border-radius:8px;margin:0 0 10px;padding:10px}.nUhMVa_commentsGithubHint{color:var(--dsw-alias-label-primary,#1f2328);margin:0 0 8px;font-size:12px;line-height:17px}.nUhMVa_commentsGithubAction{box-sizing:border-box;border:1px solid var(--dsw-alias-brand-primary,#4f6ef7);min-height:28px;color:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:6px;justify-content:center;align-items:center;padding:5px 10px;font-size:12px;font-weight:600;line-height:16px;text-decoration:none;display:inline-flex}.nUhMVa_commentsGithubAction:hover{background:color-mix(in srgb,var(--dsw-alias-brand-primary,#4f6ef7) 9%,transparent)}.nUhMVa_commentsStatus{color:var(--dsw-alias-label-secondary,#9ca3af);margin:0;font-size:12px}.nUhMVa_commentsStatus:empty{display:none}.nUhMVa_commentsError{color:var(--dsw-alias-label-primary,#1f2328);margin:0 0 8px;font-size:12px}.nUhMVa_commentsFail{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 0;display:flex}.nUhMVa_commentsMount{width:100%;min-height:240px;max-height:56vh;overflow:auto}.nUhMVa_commentsMount iframe{width:100%}.nUhMVa_notesLink{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;text-align:left;background:0 0;border:none;margin:2px 0 0;padding:0;font-size:12px;line-height:18px;display:block}.nUhMVa_notesLink:hover{color:var(--dsw-alias-label-primary,#1f2328)}.nUhMVa_notesModalWide{width:min(640px,92vw);max-width:min(640px,92vw)}.nUhMVa_notesBody{overscroll-behavior:contain;flex-direction:column;flex:0 auto;gap:10px;min-width:0;max-height:min(60vh,520px);padding:0 2px 8px 0;display:flex;overflow-y:auto}.nUhMVa_notesRange{align-items:center;gap:8px;margin-bottom:4px;font-size:12px;line-height:18px;display:flex}.nUhMVa_notesArrow{color:var(--dsw-alias-label-tertiary,#8b93a1)}.nUhMVa_notesMeta{letter-spacing:.02em;text-transform:uppercase;color:var(--dsw-alias-label-secondary,#6b7280);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:4px;font-size:12px;line-height:18px;display:flex}.nUhMVa_notesBody>.nUhMVa_notesMeta:first-child{margin-top:0}.nUhMVa_notesPre{white-space:pre-wrap;word-break:break-word;background:var(--dsw-alias-bg-layer-2,#eef0f4);border-radius:8px;max-height:40vh;margin:0;padding:10px 12px;font-size:13px;line-height:20px;overflow:auto}.nUhMVa_notesRendered{flex-direction:column;gap:8px;min-width:0;display:flex}.nUhMVa_notesImg{border-radius:6px;max-width:100%;height:auto;margin:4px 0;display:block}.nUhMVa_notesH{margin-top:4px;font-size:13px;font-weight:650;line-height:20px}.nUhMVa_notesP{font-size:13px;line-height:20px}.nUhMVa_notesQuote{border-left:3px solid var(--dsw-alias-border-l3,#d9dde3);background:var(--dsw-alias-bg-layer-2,#f7f8fa);color:var(--dsw-alias-label-primary,#1f2328);border-radius:0 6px 6px 0;margin:0;padding:8px 10px;font-size:13px;line-height:20px}.nUhMVa_notesFence{background:var(--dsw-alias-bg-layer-2,#eef0f4);font-family:var(--dsw-alias-font-mono,ui-monospace,Menlo,monospace);white-space:pre;border-radius:8px;margin:0;padding:10px 12px;font-size:12px;line-height:18px;overflow-x:auto}.nUhMVa_notesFence code{font:inherit;background:0 0;padding:0}.nUhMVa_notesBullets{flex-direction:column;gap:4px;margin:0;padding-left:18px;font-size:13px;line-height:20px;display:flex}.nUhMVa_notesA{color:var(--dsw-alias-brand-primary,#4f6ef7);text-decoration:none}.nUhMVa_notesA:hover{text-decoration:underline}.nUhMVa_notesCode{font-family:var(--dsw-alias-font-mono,ui-monospace,monospace);background:var(--dsw-alias-bg-layer-2,#eef0f4);border-radius:5px;padding:1px 5px;font-size:12px}.nUhMVa_notesList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.nUhMVa_notesRow{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:baseline;gap:12px;padding:6px 0;display:flex}.nUhMVa_notesRow:last-child{border-bottom:none}.nUhMVa_notesDate{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.nUhMVa_notesMsg{word-break:break-word;word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;min-width:0;font-size:13px;line-height:20px;display:-webkit-box;overflow:hidden}.nUhMVa_notesSha{color:var(--dsw-alias-label-secondary,#6b7280);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:12px;text-decoration:none}.nUhMVa_recoverySummary{color:var(--dsw-alias-state-error-primary,#dc2626);word-break:break-word;align-items:flex-start;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.nUhMVa_recoveryHint{color:var(--dsw-alias-label-secondary,#6b7280);margin:8px 0;font-size:12px}.nUhMVa_recoveryList{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;flex-direction:column;max-height:320px;display:flex;overflow-x:hidden;overflow-y:auto}.nUhMVa_recoveryRow{border-top:1px solid var(--dsw-alias-border-l2,#eef0f4);align-items:flex-start;gap:8px;padding:6px 10px;font-size:12px;display:flex}.nUhMVa_recoveryRow:first-child{border-top:none}.nUhMVa_recoveryBlamed{box-shadow:inset 3px 0 0 var(--dsw-alias-state-error-primary,#dc2626);background:#dc262612}.nUhMVa_recoveryMuted{opacity:.6}.nUhMVa_recoveryName{word-break:break-word;flex-direction:column;gap:2px;min-width:0;display:flex}.nUhMVa_recoveryReason{color:var(--dsw-alias-state-error-primary,#dc2626);word-break:break-word;font-size:11px}.nUhMVa_recoveryNote{color:var(--dsw-alias-label-tertiary,#8b93a1);word-break:break-word;margin-top:8px;font-size:11px}.nUhMVa_recoveryBadge{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:5px;margin-left:6px;padding:0 5px;font-size:10px}.nUhMVa_recoveryLog{color:var(--dsw-alias-label-secondary,#6b7280);margin:4px 0 8px;font-size:11px}.nUhMVa_recoveryLog pre{white-space:pre-wrap;word-break:break-word;max-height:180px;margin:6px 0 0;overflow:auto}.nUhMVa_notesSha:hover{color:var(--dsw-alias-label-primary,#1f2328);text-decoration:underline}.nUhMVa_notesVer{color:inherit;font-weight:600;text-decoration:none}.nUhMVa_notesVer:hover{text-decoration:underline}.nUhMVa_migrationSources{flex-direction:column;gap:8px;margin-top:4px;display:flex}.nUhMVa_migrationSource{border:1px solid var(--dsw-alias-border-default,#e5e7eb);border-radius:8px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.nUhMVa_migrationSource code{overflow-wrap:anywhere;font-family:ui-monospace,Menlo,monospace;font-size:12px}.nUhMVa_migrationLabel{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.nUhMVa_migrationArrow{text-align:center;color:var(--dsw-alias-label-secondary,#9ca3af)}.nUhMVa_migrationWarning{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:flex-start;gap:6px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}";
|
|
2384
2596
|
const tagId = "dshmarket/Market.module.css";
|
|
2385
2597
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
2386
2598
|
const tag = document.createElement("style");
|
|
@@ -2395,8 +2607,6 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2395
2607
|
"actLive": "nUhMVa_actLive",
|
|
2396
2608
|
"actWarn": "nUhMVa_actWarn",
|
|
2397
2609
|
"actWhy": "nUhMVa_actWhy",
|
|
2398
|
-
"assignRow": "nUhMVa_assignRow",
|
|
2399
|
-
"assignSelect": "nUhMVa_assignSelect",
|
|
2400
2610
|
"av": "nUhMVa_av",
|
|
2401
2611
|
"backupActions": "nUhMVa_backupActions",
|
|
2402
2612
|
"backupCard": "nUhMVa_backupCard",
|
|
@@ -2507,14 +2717,27 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2507
2717
|
"footTags": "nUhMVa_footTags",
|
|
2508
2718
|
"grid": "nUhMVa_grid",
|
|
2509
2719
|
"groupActions": "nUhMVa_groupActions",
|
|
2720
|
+
"groupAddFilters": "nUhMVa_groupAddFilters",
|
|
2721
|
+
"groupAddFooterMeta": "nUhMVa_groupAddFooterMeta",
|
|
2722
|
+
"groupAddModalBody": "nUhMVa_groupAddModalBody",
|
|
2723
|
+
"groupAddModalHint": "nUhMVa_groupAddModalHint",
|
|
2724
|
+
"groupAddModalList": "nUhMVa_groupAddModalList",
|
|
2510
2725
|
"groupAddPanel": "nUhMVa_groupAddPanel",
|
|
2726
|
+
"groupAddPick": "nUhMVa_groupAddPick",
|
|
2727
|
+
"groupCollapse": "nUhMVa_groupCollapse",
|
|
2511
2728
|
"groupCreate": "nUhMVa_groupCreate",
|
|
2729
|
+
"groupCreateInline": "nUhMVa_groupCreateInline",
|
|
2512
2730
|
"groupHead": "nUhMVa_groupHead",
|
|
2513
2731
|
"groupHint": "nUhMVa_groupHint",
|
|
2514
2732
|
"groupMember": "nUhMVa_groupMember",
|
|
2733
|
+
"groupMemberAction": "nUhMVa_groupMemberAction",
|
|
2515
2734
|
"groupMembers": "nUhMVa_groupMembers",
|
|
2735
|
+
"groupMeta": "nUhMVa_groupMeta",
|
|
2516
2736
|
"groupName": "nUhMVa_groupName",
|
|
2737
|
+
"groupOrgHint": "nUhMVa_groupOrgHint",
|
|
2738
|
+
"groupRenameField": "nUhMVa_groupRenameField",
|
|
2517
2739
|
"groupRow": "nUhMVa_groupRow",
|
|
2740
|
+
"groupTitle": "nUhMVa_groupTitle",
|
|
2518
2741
|
"grow": "nUhMVa_grow",
|
|
2519
2742
|
"head": "nUhMVa_head",
|
|
2520
2743
|
"hiddenFile": "nUhMVa_hiddenFile",
|
|
@@ -2545,6 +2768,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2545
2768
|
"logoPlug": "nUhMVa_logoPlug",
|
|
2546
2769
|
"masonry": "nUhMVa_masonry",
|
|
2547
2770
|
"masonryCol": "nUhMVa_masonryCol",
|
|
2771
|
+
"memberKind": "nUhMVa_memberKind",
|
|
2772
|
+
"memberName": "nUhMVa_memberName",
|
|
2548
2773
|
"meta": "nUhMVa_meta",
|
|
2549
2774
|
"metaInline": "nUhMVa_metaInline",
|
|
2550
2775
|
"metaTag": "nUhMVa_metaTag",
|
|
@@ -2664,6 +2889,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2664
2889
|
"rosterTagDrop": "nUhMVa_rosterTagDrop",
|
|
2665
2890
|
"rosterTagKeep": "nUhMVa_rosterTagKeep",
|
|
2666
2891
|
"row1": "nUhMVa_row1",
|
|
2892
|
+
"sect": "nUhMVa_sect",
|
|
2667
2893
|
"sectAction": "nUhMVa_sectAction",
|
|
2668
2894
|
"sectionOverview": "nUhMVa_sectionOverview",
|
|
2669
2895
|
"setActions": "nUhMVa_setActions",
|
|
@@ -2739,6 +2965,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2739
2965
|
"themeResultBar": "nUhMVa_themeResultBar",
|
|
2740
2966
|
"themeSearch": "nUhMVa_themeSearch",
|
|
2741
2967
|
"themesGrid": "nUhMVa_themesGrid",
|
|
2968
|
+
"themeSlot": "nUhMVa_themeSlot",
|
|
2742
2969
|
"themeStatus": "nUhMVa_themeStatus",
|
|
2743
2970
|
"themeStatusMuted": "nUhMVa_themeStatusMuted",
|
|
2744
2971
|
"themeToolbar": "nUhMVa_themeToolbar",
|
|
@@ -2747,6 +2974,9 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
2747
2974
|
"titleRow": "nUhMVa_titleRow",
|
|
2748
2975
|
"top": "nUhMVa_top",
|
|
2749
2976
|
"topBtn": "nUhMVa_topBtn",
|
|
2977
|
+
"ungroupedDesc": "nUhMVa_ungroupedDesc",
|
|
2978
|
+
"ungroupedRow": "nUhMVa_ungroupedRow",
|
|
2979
|
+
"ungroupedState": "nUhMVa_ungroupedState",
|
|
2750
2980
|
"version": "nUhMVa_version",
|
|
2751
2981
|
"viewBar": "nUhMVa_viewBar",
|
|
2752
2982
|
"viewBtn": "nUhMVa_viewBtn",
|
|
@@ -3031,7 +3261,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3031
3261
|
(0, react.useEffect)(() => cancel, [cancel]);
|
|
3032
3262
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
3033
3263
|
className,
|
|
3034
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3264
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSearchOutline16, { size: 14 }),
|
|
3035
3265
|
placeholder,
|
|
3036
3266
|
value: draft,
|
|
3037
3267
|
onChange: (event) => {
|
|
@@ -3284,7 +3514,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3284
3514
|
className: Market_module_css_default.conflictDetailsToggle,
|
|
3285
3515
|
"aria-expanded": whyOpen,
|
|
3286
3516
|
onClick: () => setWhyOpen((open) => !open),
|
|
3287
|
-
children: [t("conflictDetails"), whyOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3517
|
+
children: [t("conflictDetails"), whyOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 12 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 12 })]
|
|
3288
3518
|
}),
|
|
3289
3519
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.grow }),
|
|
3290
3520
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
@@ -3316,16 +3546,16 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3316
3546
|
const bucket = bucketOf(props.record.state);
|
|
3317
3547
|
if (bucket === "busy") return props.record.state === "running" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3318
3548
|
className: Market_module_css_default.spin,
|
|
3319
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3549
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 13 })
|
|
3320
3550
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3321
3551
|
className: Market_module_css_default.opQueuedIcon,
|
|
3322
3552
|
children: "⋯"
|
|
3323
3553
|
});
|
|
3324
|
-
if (bucket === "ok") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3554
|
+
if (bucket === "ok") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutline16, {
|
|
3325
3555
|
size: 13,
|
|
3326
3556
|
className: Market_module_css_default.reassureOk
|
|
3327
3557
|
});
|
|
3328
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3558
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
3329
3559
|
size: 14,
|
|
3330
3560
|
className: Market_module_css_default.conflictIcon
|
|
3331
3561
|
});
|
|
@@ -3376,7 +3606,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3376
3606
|
children: [
|
|
3377
3607
|
!quiet && busy && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3378
3608
|
className: Market_module_css_default.spin,
|
|
3379
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3609
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 12 })
|
|
3380
3610
|
}),
|
|
3381
3611
|
quiet ? t("opTitle") : label,
|
|
3382
3612
|
!quiet && summary.attention > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.opDot })
|
|
@@ -3405,7 +3635,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3405
3635
|
title: t("opClose"),
|
|
3406
3636
|
className: Market_module_css_default.opCloseBtn,
|
|
3407
3637
|
onClick: () => setOpen(false),
|
|
3408
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3638
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 14 })
|
|
3409
3639
|
})
|
|
3410
3640
|
]
|
|
3411
3641
|
}),
|
|
@@ -3696,14 +3926,14 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
3696
3926
|
children: [
|
|
3697
3927
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3698
3928
|
className: Market_module_css_default.recoverySummary,
|
|
3699
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3929
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
3700
3930
|
size: 14,
|
|
3701
3931
|
className: Market_module_css_default.bannerIcon
|
|
3702
3932
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: view.failure.summary || t("recoveryNoSummary") })]
|
|
3703
3933
|
}),
|
|
3704
3934
|
view.lastErrors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3705
3935
|
className: Market_module_css_default.recoverySummary,
|
|
3706
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
3936
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
3707
3937
|
size: 14,
|
|
3708
3938
|
className: Market_module_css_default.bannerIcon
|
|
3709
3939
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [t("recoveryWriteFailed"), view.lastErrors.join("; ")] })]
|
|
@@ -4357,7 +4587,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4357
4587
|
children: [
|
|
4358
4588
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4359
4589
|
className: Market_module_css_default.collapseIcon,
|
|
4360
|
-
children: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
4590
|
+
children: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronRightOutline14, { size: 14 })
|
|
4361
4591
|
}),
|
|
4362
4592
|
alert && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4363
4593
|
className: Market_module_css_default.diagAlert,
|
|
@@ -4410,7 +4640,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4410
4640
|
children: [
|
|
4411
4641
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4412
4642
|
className: Market_module_css_default.collapseIcon,
|
|
4413
|
-
children: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
4643
|
+
children: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronRightOutline14, { size: 14 })
|
|
4414
4644
|
}),
|
|
4415
4645
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4416
4646
|
className: Market_module_css_default.collapseTitle,
|
|
@@ -4601,7 +4831,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4601
4831
|
className: Market_module_css_default.loading,
|
|
4602
4832
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4603
4833
|
className: Market_module_css_default.spin,
|
|
4604
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
4834
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 22 })
|
|
4605
4835
|
}), t("checkLoading")]
|
|
4606
4836
|
});
|
|
4607
4837
|
const summary = report.summary;
|
|
@@ -4772,7 +5002,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4772
5002
|
size: "sm",
|
|
4773
5003
|
"aria-label": t("checkRefresh"),
|
|
4774
5004
|
onClick: refresh,
|
|
4775
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
5005
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconRefreshOutline14, { size: 14 })
|
|
4776
5006
|
}),
|
|
4777
5007
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
4778
5008
|
className: Market_module_css_default.diagSummaryMeta,
|
|
@@ -5595,7 +5825,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5595
5825
|
const remaining = findings.length - preview.length;
|
|
5596
5826
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5597
5827
|
className: Market_module_css_default.banner,
|
|
5598
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
5828
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
5599
5829
|
size: 14,
|
|
5600
5830
|
className: Market_module_css_default.bannerIcon
|
|
5601
5831
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
@@ -5790,7 +6020,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5790
6020
|
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
5791
6021
|
variant: "outline",
|
|
5792
6022
|
size: "sm",
|
|
5793
|
-
icon: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6023
|
+
icon: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }),
|
|
5794
6024
|
onClick: () => setOpen((o) => !o),
|
|
5795
6025
|
children: t("filter")
|
|
5796
6026
|
}),
|
|
@@ -5820,7 +6050,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5820
6050
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
5821
6051
|
variant: "outline",
|
|
5822
6052
|
size: "sm",
|
|
5823
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6053
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronLeftOutline14, { size: 14 }),
|
|
5824
6054
|
disabled: currentPage === 1,
|
|
5825
6055
|
onClick: () => onGoToPage(currentPage - 1),
|
|
5826
6056
|
children: t("prevPage")
|
|
@@ -5839,7 +6069,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5839
6069
|
size: "sm",
|
|
5840
6070
|
disabled: currentPage === totalPages,
|
|
5841
6071
|
onClick: () => onGoToPage(currentPage + 1),
|
|
5842
|
-
children: [t("nextPage"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6072
|
+
children: [t("nextPage"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronRightOutline14, { size: 14 })]
|
|
5843
6073
|
})
|
|
5844
6074
|
] })
|
|
5845
6075
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -5860,7 +6090,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5860
6090
|
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
5861
6091
|
variant: "outline",
|
|
5862
6092
|
size: "sm",
|
|
5863
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6093
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }),
|
|
5864
6094
|
onClick: () => setSizeOpen((o) => !o),
|
|
5865
6095
|
children: t("perPage") + " " + pageSize
|
|
5866
6096
|
}),
|
|
@@ -5984,7 +6214,6 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5984
6214
|
flushFence();
|
|
5985
6215
|
return out;
|
|
5986
6216
|
}
|
|
5987
|
-
/** Avatar fallback advances one service route at a time before using initials. */
|
|
5988
6217
|
function OwnerAvatar({ name, owner }) {
|
|
5989
6218
|
const [failed, setFailed] = (0, react.useState)(false);
|
|
5990
6219
|
const [routeIndex, setRouteIndex] = (0, react.useState)(0);
|
|
@@ -6276,8 +6505,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6276
6505
|
disabled: true,
|
|
6277
6506
|
children: [fallback.loading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6278
6507
|
className: Market_module_css_default.spin,
|
|
6279
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6280
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6508
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 20 })
|
|
6509
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSparkle16, { size: 20 }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: fallback.loading ? t("themePreviewLoading") : t("themePreviewMissing") })]
|
|
6281
6510
|
});
|
|
6282
6511
|
const src = visible[0];
|
|
6283
6512
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -6298,7 +6527,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6298
6527
|
}),
|
|
6299
6528
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
6300
6529
|
className: Market_module_css_default.themePreviewAction,
|
|
6301
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6530
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSearchOutline16, { size: 14 }), t("themePreview")]
|
|
6302
6531
|
}),
|
|
6303
6532
|
visible.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6304
6533
|
className: Market_module_css_default.themePreviewCount,
|
|
@@ -6382,7 +6611,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6382
6611
|
className: Market_module_css_default.descToggle,
|
|
6383
6612
|
"aria-label": expanded ? t("descCollapse") : t("descExpand"),
|
|
6384
6613
|
onClick: () => setExpanded((e) => !e),
|
|
6385
|
-
children: expanded ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6614
|
+
children: expanded ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 })
|
|
6386
6615
|
})] });
|
|
6387
6616
|
}
|
|
6388
6617
|
/**
|
|
@@ -6435,7 +6664,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6435
6664
|
e.stopPropagation();
|
|
6436
6665
|
setIndex(index - 1);
|
|
6437
6666
|
},
|
|
6438
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6667
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronLeftOutline14, { size: 18 })
|
|
6439
6668
|
}),
|
|
6440
6669
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
6441
6670
|
className: `${Market_module_css_default.lightboxNav} ${Market_module_css_default.lightboxNext}`,
|
|
@@ -6444,7 +6673,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6444
6673
|
e.stopPropagation();
|
|
6445
6674
|
setIndex(index + 1);
|
|
6446
6675
|
},
|
|
6447
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6676
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronRightOutline14, { size: 18 })
|
|
6448
6677
|
}),
|
|
6449
6678
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6450
6679
|
className: Market_module_css_default.lightboxDots,
|
|
@@ -6921,10 +7150,16 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
6921
7150
|
const [renamingGroup, setRenamingGroup] = (0, react.useState)(null);
|
|
6922
7151
|
const [renamingValue, setRenamingValue] = (0, react.useState)("");
|
|
6923
7152
|
const [deletingGroup, setDeletingGroup] = (0, react.useState)(null);
|
|
6924
|
-
/** Open
|
|
7153
|
+
/** Open add-members picker for this group name. Plugins only. */
|
|
6925
7154
|
const [addPanel, setAddPanel] = (0, react.useState)(null);
|
|
7155
|
+
const [addQuery, setAddQuery] = (0, react.useState)("");
|
|
7156
|
+
const [addSelected, setAddSelected] = (0, react.useState)([]);
|
|
7157
|
+
/** Group whose single theme slot is being chosen. */
|
|
7158
|
+
const [themePanel, setThemePanel] = (0, react.useState)(null);
|
|
7159
|
+
const [themePick, setThemePick] = (0, react.useState)(null);
|
|
7160
|
+
const [groupMenuFor, setGroupMenuFor] = (0, react.useState)(null);
|
|
7161
|
+
const [collapsedGroups, setCollapsedGroups] = (0, react.useState)(() => /* @__PURE__ */ new Set());
|
|
6926
7162
|
const [assignFor, setAssignFor] = (0, react.useState)(null);
|
|
6927
|
-
const [assignTarget, setAssignTarget] = (0, react.useState)("");
|
|
6928
7163
|
/** Structured progress from pnpm ndjson (P1-6). */
|
|
6929
7164
|
const [progressPhase, setProgressPhase] = (0, react.useState)(null);
|
|
6930
7165
|
const [progressCurrent, setProgressCurrent] = (0, react.useState)(null);
|
|
@@ -8433,6 +8668,10 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8433
8668
|
enabled
|
|
8434
8669
|
});
|
|
8435
8670
|
}, [doGroupAction]);
|
|
8671
|
+
const cancelCreateGroup = (0, react.useCallback)(() => {
|
|
8672
|
+
setCreatingGroup(false);
|
|
8673
|
+
setNewGroupName("");
|
|
8674
|
+
}, []);
|
|
8436
8675
|
const doCreateGroup = (0, react.useCallback)(() => {
|
|
8437
8676
|
const name = newGroupName.trim();
|
|
8438
8677
|
if (name === "") return;
|
|
@@ -8440,12 +8679,13 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8440
8679
|
action: "create",
|
|
8441
8680
|
name
|
|
8442
8681
|
}).then((ok) => {
|
|
8443
|
-
if (ok)
|
|
8444
|
-
setCreatingGroup(false);
|
|
8445
|
-
setNewGroupName("");
|
|
8446
|
-
}
|
|
8682
|
+
if (ok) cancelCreateGroup();
|
|
8447
8683
|
});
|
|
8448
|
-
}, [
|
|
8684
|
+
}, [
|
|
8685
|
+
cancelCreateGroup,
|
|
8686
|
+
doGroupAction,
|
|
8687
|
+
newGroupName
|
|
8688
|
+
]);
|
|
8449
8689
|
const doRenameGroup = (0, react.useCallback)((name) => {
|
|
8450
8690
|
const newName = renamingValue.trim();
|
|
8451
8691
|
if (newName === "" || newName === name) {
|
|
@@ -8471,8 +8711,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8471
8711
|
if (ok) setDeletingGroup(null);
|
|
8472
8712
|
});
|
|
8473
8713
|
}, [doGroupAction]);
|
|
8474
|
-
const doAssign = (0, react.useCallback)((name) => {
|
|
8475
|
-
const group = assignTarget;
|
|
8714
|
+
const doAssign = (0, react.useCallback)((name, group) => {
|
|
8476
8715
|
if (group === "") return;
|
|
8477
8716
|
const members = groups[group] ?? [];
|
|
8478
8717
|
doGroupAction({
|
|
@@ -8480,16 +8719,9 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8480
8719
|
name: group,
|
|
8481
8720
|
members: [...members, name]
|
|
8482
8721
|
}).then((ok) => {
|
|
8483
|
-
if (ok)
|
|
8484
|
-
setAssignFor(null);
|
|
8485
|
-
setAssignTarget("");
|
|
8486
|
-
}
|
|
8722
|
+
if (ok) setAssignFor(null);
|
|
8487
8723
|
});
|
|
8488
|
-
}, [
|
|
8489
|
-
assignTarget,
|
|
8490
|
-
doGroupAction,
|
|
8491
|
-
groups
|
|
8492
|
-
]);
|
|
8724
|
+
}, [doGroupAction, groups]);
|
|
8493
8725
|
const doRemoveMember = (0, react.useCallback)((group, name) => {
|
|
8494
8726
|
const members = (groups[group] ?? []).filter((member) => member !== name);
|
|
8495
8727
|
doGroupAction({
|
|
@@ -8498,15 +8730,42 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8498
8730
|
members
|
|
8499
8731
|
});
|
|
8500
8732
|
}, [doGroupAction, groups]);
|
|
8501
|
-
/**
|
|
8502
|
-
const
|
|
8503
|
-
|
|
8733
|
+
/** Open the multi-select add-members dialog for a group. Plugins only. */
|
|
8734
|
+
const openAddPanel = (0, react.useCallback)((group) => {
|
|
8735
|
+
setRenamingGroup(null);
|
|
8736
|
+
setDeletingGroup(null);
|
|
8737
|
+
setGroupMenuFor(null);
|
|
8738
|
+
setThemePanel(null);
|
|
8739
|
+
setAddQuery("");
|
|
8740
|
+
setAddSelected([]);
|
|
8741
|
+
setAddPanel(group);
|
|
8742
|
+
}, []);
|
|
8743
|
+
/** Commit the current multi-select into the open group. */
|
|
8744
|
+
const doAddSelectedMembers = (0, react.useCallback)(() => {
|
|
8745
|
+
if (addPanel === null || addSelected.length === 0) return;
|
|
8746
|
+
const next = [...groups[addPanel] ?? []];
|
|
8747
|
+
for (const name of addSelected) if (!next.includes(name)) next.push(name);
|
|
8504
8748
|
doGroupAction({
|
|
8505
8749
|
action: "set-members",
|
|
8506
|
-
name:
|
|
8507
|
-
members:
|
|
8750
|
+
name: addPanel,
|
|
8751
|
+
members: next
|
|
8752
|
+
}).then((ok) => {
|
|
8753
|
+
if (ok) setAddPanel(null);
|
|
8508
8754
|
});
|
|
8509
|
-
}, [
|
|
8755
|
+
}, [
|
|
8756
|
+
addPanel,
|
|
8757
|
+
addSelected,
|
|
8758
|
+
doGroupAction,
|
|
8759
|
+
groups
|
|
8760
|
+
]);
|
|
8761
|
+
const toggleCollapsedGroup = (0, react.useCallback)((gid) => {
|
|
8762
|
+
setCollapsedGroups((prev) => {
|
|
8763
|
+
const next = new Set(prev);
|
|
8764
|
+
if (next.has(gid)) next.delete(gid);
|
|
8765
|
+
else next.add(gid);
|
|
8766
|
+
return next;
|
|
8767
|
+
});
|
|
8768
|
+
}, []);
|
|
8510
8769
|
const selfName = installed["dshmarket"] !== void 0 ? "dshmarket" : "dsh-market";
|
|
8511
8770
|
const updatableNames = Object.keys(installed).filter((name) => name !== selfName && !updatedNames.includes(name) && !effectiveDisabledSet.has(name) && updates[name] && updates[name].updateAvailable);
|
|
8512
8771
|
const batchUpdatableNames = updatableNames.filter((name) => updates[name]?.restoreRequired !== true);
|
|
@@ -8889,7 +9148,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8889
9148
|
type: "button",
|
|
8890
9149
|
className: Market_module_css_default.cardBlockedMark,
|
|
8891
9150
|
onClick: openOperations,
|
|
8892
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9151
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("opBlockedCard")]
|
|
8893
9152
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
8894
9153
|
variant: "primary",
|
|
8895
9154
|
size: "sm",
|
|
@@ -8950,7 +9209,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
8950
9209
|
children: [
|
|
8951
9210
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8952
9211
|
className: Market_module_css_default.spin,
|
|
8953
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9212
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 14 })
|
|
8954
9213
|
}),
|
|
8955
9214
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
8956
9215
|
className: Market_module_css_default.grow,
|
|
@@ -9105,7 +9364,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9105
9364
|
type: "button",
|
|
9106
9365
|
className: Market_module_css_default.cardBlockedMark,
|
|
9107
9366
|
onClick: openOperations,
|
|
9108
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9367
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("opBlockedCard")]
|
|
9109
9368
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9110
9369
|
variant: "primary",
|
|
9111
9370
|
size: "sm",
|
|
@@ -9143,7 +9402,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9143
9402
|
children: [
|
|
9144
9403
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9145
9404
|
className: Market_module_css_default.spin,
|
|
9146
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9405
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 14 })
|
|
9147
9406
|
}),
|
|
9148
9407
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
9149
9408
|
className: Market_module_css_default.grow,
|
|
@@ -9272,6 +9531,34 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9272
9531
|
/** Names already inside some group; everything else shows under "ungrouped". */
|
|
9273
9532
|
const groupedNames = (0, react.useMemo)(() => new Set(Object.values(groups).flat()), [groups]);
|
|
9274
9533
|
const ungroupedNames = groupableNames.filter((name) => !groupedNames.has(name));
|
|
9534
|
+
const groupQuery = qInstalled.trim().toLowerCase();
|
|
9535
|
+
const matchesInstalledQuery = (0, react.useCallback)((name) => {
|
|
9536
|
+
if (groupQuery === "") return true;
|
|
9537
|
+
if (name.toLowerCase().includes(groupQuery)) return true;
|
|
9538
|
+
const note = notes[name];
|
|
9539
|
+
if (note !== void 0 && note.toLowerCase().includes(groupQuery)) return true;
|
|
9540
|
+
const spec = installed[name];
|
|
9541
|
+
if (spec !== void 0 && String(spec).toLowerCase().includes(groupQuery)) return true;
|
|
9542
|
+
if (data !== null && spec !== void 0) {
|
|
9543
|
+
const entry = catalogEntryForInstalled(data.plugins, name, String(spec), repoIdentities[name], repoHints[name]);
|
|
9544
|
+
if ((entry?.description && (entry.description[lang] || entry.description.en) || "").toLowerCase().includes(groupQuery)) return true;
|
|
9545
|
+
}
|
|
9546
|
+
return false;
|
|
9547
|
+
}, [
|
|
9548
|
+
data,
|
|
9549
|
+
groupQuery,
|
|
9550
|
+
installed,
|
|
9551
|
+
lang,
|
|
9552
|
+
notes,
|
|
9553
|
+
repoHints,
|
|
9554
|
+
repoIdentities
|
|
9555
|
+
]);
|
|
9556
|
+
const visibleUngrouped = ungroupedNames.filter(matchesInstalledQuery);
|
|
9557
|
+
const visibleGroupIds = groupOrder.filter((gid) => {
|
|
9558
|
+
if (groupQuery === "") return true;
|
|
9559
|
+
if (gid.toLowerCase().includes(groupQuery)) return true;
|
|
9560
|
+
return (groups[gid] ?? []).some(matchesInstalledQuery);
|
|
9561
|
+
});
|
|
9275
9562
|
/** Installed package names the catalog classifies as themes (client-side
|
|
9276
9563
|
* mirror of the server's classification; themes are exclusive per group). */
|
|
9277
9564
|
const installedThemeNames = (0, react.useMemo)(() => {
|
|
@@ -9288,6 +9575,31 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9288
9575
|
repoIdentities,
|
|
9289
9576
|
repoHints
|
|
9290
9577
|
]);
|
|
9578
|
+
const openThemePanel = (0, react.useCallback)((group) => {
|
|
9579
|
+
const current = (groups[group] ?? []).find((name) => installedThemeNames.has(name)) ?? null;
|
|
9580
|
+
setAddPanel(null);
|
|
9581
|
+
setRenamingGroup(null);
|
|
9582
|
+
setDeletingGroup(null);
|
|
9583
|
+
setGroupMenuFor(null);
|
|
9584
|
+
setThemePick(current);
|
|
9585
|
+
setThemePanel(group);
|
|
9586
|
+
}, [groups, installedThemeNames]);
|
|
9587
|
+
/** Set or clear the single theme slot. The previous theme leaves this group. */
|
|
9588
|
+
const applyGroupTheme = (0, react.useCallback)((group, themeName) => {
|
|
9589
|
+
const without = (groups[group] ?? []).filter((name) => !installedThemeNames.has(name));
|
|
9590
|
+
const next = themeName === null ? without : [...without, themeName];
|
|
9591
|
+
doGroupAction({
|
|
9592
|
+
action: "set-members",
|
|
9593
|
+
name: group,
|
|
9594
|
+
members: next
|
|
9595
|
+
}).then((ok) => {
|
|
9596
|
+
if (ok) setThemePanel(null);
|
|
9597
|
+
});
|
|
9598
|
+
}, [
|
|
9599
|
+
doGroupAction,
|
|
9600
|
+
groups,
|
|
9601
|
+
installedThemeNames
|
|
9602
|
+
]);
|
|
9291
9603
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9292
9604
|
className: `${Market_module_css_default.root} notranslate`,
|
|
9293
9605
|
"data-dsh-market-root": true,
|
|
@@ -9371,7 +9683,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9371
9683
|
variant: "outline",
|
|
9372
9684
|
size: "sm",
|
|
9373
9685
|
className: Market_module_css_default.exportLogBtn,
|
|
9374
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9686
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconDownloadOutline16, { size: 14 }),
|
|
9375
9687
|
disabled: exportState === "busy",
|
|
9376
9688
|
onClick: doExportLog,
|
|
9377
9689
|
children: exportState === "busy" ? t("exportingLog") : t("exportLog")
|
|
@@ -9462,7 +9774,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9462
9774
|
!envReady && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9463
9775
|
className: Market_module_css_default.banner,
|
|
9464
9776
|
children: [
|
|
9465
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9777
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCordisPluginOutline14, {
|
|
9466
9778
|
size: 14,
|
|
9467
9779
|
className: Market_module_css_default.bannerIcon
|
|
9468
9780
|
}),
|
|
@@ -9485,7 +9797,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9485
9797
|
}),
|
|
9486
9798
|
restoreErrors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9487
9799
|
className: Market_module_css_default.banner,
|
|
9488
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9800
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
9489
9801
|
size: 14,
|
|
9490
9802
|
className: Market_module_css_default.bannerIcon
|
|
9491
9803
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
@@ -9499,7 +9811,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9499
9811
|
tab === "installed" && pendingBackup !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9500
9812
|
className: Market_module_css_default.banner,
|
|
9501
9813
|
children: [
|
|
9502
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9814
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconRefreshOutline14, {
|
|
9503
9815
|
size: 14,
|
|
9504
9816
|
className: Market_module_css_default.bannerIcon
|
|
9505
9817
|
}),
|
|
@@ -9519,7 +9831,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9519
9831
|
pendingRefreshNames.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9520
9832
|
className: Market_module_css_default.banner,
|
|
9521
9833
|
children: [
|
|
9522
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9834
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSparkle16, {
|
|
9523
9835
|
size: 14,
|
|
9524
9836
|
className: Market_module_css_default.bannerIcon
|
|
9525
9837
|
}),
|
|
@@ -9546,7 +9858,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9546
9858
|
pendingRestart > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9547
9859
|
className: Market_module_css_default.banner,
|
|
9548
9860
|
children: [
|
|
9549
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9861
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconRefreshOutline14, {
|
|
9550
9862
|
size: 14,
|
|
9551
9863
|
className: Market_module_css_default.bannerIcon
|
|
9552
9864
|
}),
|
|
@@ -9563,7 +9875,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9563
9875
|
side: "bottom",
|
|
9564
9876
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9565
9877
|
className: Market_module_css_default.bannerHint,
|
|
9566
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9878
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconQuestionOutline14, { size: 14 })
|
|
9567
9879
|
})
|
|
9568
9880
|
}),
|
|
9569
9881
|
restartEnabled && debuggerLatch === null && recovery === null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
@@ -9589,7 +9901,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9589
9901
|
}),
|
|
9590
9902
|
activationWarnings.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9591
9903
|
className: Market_module_css_default.banner,
|
|
9592
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9904
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
9593
9905
|
size: 14,
|
|
9594
9906
|
className: Market_module_css_default.bannerIcon
|
|
9595
9907
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -9618,7 +9930,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9618
9930
|
buildsSkipped !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9619
9931
|
className: Market_module_css_default.banner,
|
|
9620
9932
|
children: [
|
|
9621
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
9933
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
9622
9934
|
size: 14,
|
|
9623
9935
|
className: Market_module_css_default.bannerIcon
|
|
9624
9936
|
}),
|
|
@@ -9705,7 +10017,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9705
10017
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9706
10018
|
size: "sm",
|
|
9707
10019
|
variant: "outline",
|
|
9708
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10020
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconDownloadOutline16, { size: 14 }),
|
|
9709
10021
|
disabled: exportState === "busy",
|
|
9710
10022
|
onClick: doExportLog,
|
|
9711
10023
|
children: exportState === "busy" ? t("exportingLog") : t("exportLog")
|
|
@@ -9738,7 +10050,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9738
10050
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9739
10051
|
variant: "primary",
|
|
9740
10052
|
size: "sm",
|
|
9741
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10053
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconDownloadOutline16, { size: 14 }),
|
|
9742
10054
|
disabled: backupBusy,
|
|
9743
10055
|
onClick: () => downloadFile(api("/dsh-market/backup"), "dsh-profile-backup.json"),
|
|
9744
10056
|
children: backupBusy ? t("backupWorking") : t("backupDownload")
|
|
@@ -9746,7 +10058,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9746
10058
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9747
10059
|
variant: "outline",
|
|
9748
10060
|
size: "sm",
|
|
9749
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10061
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconFolderOpen16, { size: 14 }),
|
|
9750
10062
|
disabled: backupBusy,
|
|
9751
10063
|
onClick: () => fileInputRef.current?.click(),
|
|
9752
10064
|
children: backupBusy ? t("backupWorking") : t("backupImport")
|
|
@@ -9788,7 +10100,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9788
10100
|
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9789
10101
|
variant: "outline",
|
|
9790
10102
|
size: "sm",
|
|
9791
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10103
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }),
|
|
9792
10104
|
onClick: () => setPresetOpen((o) => !o),
|
|
9793
10105
|
children: t("webdavPreset")
|
|
9794
10106
|
}),
|
|
@@ -9813,7 +10125,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9813
10125
|
}),
|
|
9814
10126
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
9815
10127
|
className: Market_module_css_default.backupInput,
|
|
9816
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10128
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLinkOutline14, { size: 14 }),
|
|
9817
10129
|
type: "url",
|
|
9818
10130
|
value: webdavUrl,
|
|
9819
10131
|
placeholder: t("webdavUrl"),
|
|
@@ -9879,7 +10191,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
9879
10191
|
}),
|
|
9880
10192
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
9881
10193
|
className: Market_module_css_default.backupInput,
|
|
9882
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10194
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLinkOutline14, { size: 14 }),
|
|
9883
10195
|
value: gistId,
|
|
9884
10196
|
placeholder: t("gistId"),
|
|
9885
10197
|
onChange: (e) => setGistId(e.target.value)
|
|
@@ -10020,7 +10332,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10020
10332
|
variant: "ghost",
|
|
10021
10333
|
size: "sm",
|
|
10022
10334
|
className: Market_module_css_default.catsToggle,
|
|
10023
|
-
icon: catsExpanded ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10335
|
+
icon: catsExpanded ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }),
|
|
10024
10336
|
"aria-label": catsExpanded ? t("catsLess") : t("catsMore"),
|
|
10025
10337
|
onClick: () => {
|
|
10026
10338
|
const next = !catsExpanded;
|
|
@@ -10184,7 +10496,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10184
10496
|
variant: "outline",
|
|
10185
10497
|
size: "sm",
|
|
10186
10498
|
className: Market_module_css_default.themeFullscreenBtn,
|
|
10187
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10499
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconFullscreenOutline16, { size: 16 }),
|
|
10188
10500
|
"aria-label": themesFullscreen ? t("themeExitFullscreen") : t("themeFullscreen"),
|
|
10189
10501
|
"aria-pressed": themesFullscreen,
|
|
10190
10502
|
onClick: () => setThemesFullscreen((value) => !value)
|
|
@@ -10247,20 +10559,22 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10247
10559
|
children: t("tabGroups")
|
|
10248
10560
|
})]
|
|
10249
10561
|
}),
|
|
10250
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
10562
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10251
10563
|
className: Market_module_css_default.tabSearchRow,
|
|
10252
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, {
|
|
10564
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, {
|
|
10253
10565
|
resetToken: installedSearchReset,
|
|
10254
10566
|
className: Market_module_css_default.tabSearch,
|
|
10255
10567
|
placeholder: t("searchPh"),
|
|
10256
10568
|
value: qInstalled,
|
|
10257
10569
|
onCommit: setQInstalled
|
|
10258
|
-
}, "installed")
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10570
|
+
}, "installed"), installedView === "groups" && (creatingGroup ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10571
|
+
className: Market_module_css_default.groupCreateInline,
|
|
10572
|
+
onBlur: (event) => {
|
|
10573
|
+
const next = event.relatedTarget;
|
|
10574
|
+
if (next instanceof Node && event.currentTarget.contains(next)) return;
|
|
10575
|
+
cancelCreateGroup();
|
|
10576
|
+
},
|
|
10577
|
+
children: [
|
|
10264
10578
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
10265
10579
|
className: Market_module_css_default.inlineInput,
|
|
10266
10580
|
placeholder: t("groupNamePh"),
|
|
@@ -10268,6 +10582,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10268
10582
|
onChange: (e) => setNewGroupName(e.target.value),
|
|
10269
10583
|
onKeyDown: (e) => {
|
|
10270
10584
|
if (e.key === "Enter") doCreateGroup();
|
|
10585
|
+
if (e.key === "Escape") cancelCreateGroup();
|
|
10271
10586
|
},
|
|
10272
10587
|
autoFocus: true
|
|
10273
10588
|
}),
|
|
@@ -10280,275 +10595,283 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10280
10595
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10281
10596
|
variant: "ghost",
|
|
10282
10597
|
size: "sm",
|
|
10283
|
-
onClick:
|
|
10284
|
-
setCreatingGroup(false);
|
|
10285
|
-
setNewGroupName("");
|
|
10286
|
-
},
|
|
10598
|
+
onClick: cancelCreateGroup,
|
|
10287
10599
|
children: t("cancel")
|
|
10288
10600
|
})
|
|
10289
|
-
]
|
|
10290
|
-
|
|
10291
|
-
|
|
10292
|
-
|
|
10293
|
-
|
|
10294
|
-
|
|
10295
|
-
})
|
|
10296
|
-
|
|
10601
|
+
]
|
|
10602
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10603
|
+
variant: "outline",
|
|
10604
|
+
size: "sm",
|
|
10605
|
+
onClick: () => setCreatingGroup(true),
|
|
10606
|
+
children: t("groupNew")
|
|
10607
|
+
}))]
|
|
10608
|
+
}),
|
|
10609
|
+
installedView === "groups" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
10610
|
+
groupQuery === "" && groupOrder.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10297
10611
|
className: Market_module_css_default.empty,
|
|
10298
10612
|
children: t("noGroups")
|
|
10299
|
-
}) :
|
|
10613
|
+
}) : visibleGroupIds.map((gid) => {
|
|
10300
10614
|
const members = groups[gid] ?? [];
|
|
10615
|
+
const nameHit = groupQuery !== "" && gid.toLowerCase().includes(groupQuery);
|
|
10616
|
+
const visibleMembers = (groupQuery === "" || nameHit ? members : members.filter(matchesInstalledQuery)).slice().sort((a, b) => Number(installedThemeNames.has(b)) - Number(installedThemeNames.has(a)));
|
|
10617
|
+
const themeSlot = visibleMembers.some((name) => installedThemeNames.has(name)) && visibleMembers.some((name) => !installedThemeNames.has(name));
|
|
10618
|
+
if (groupQuery !== "" && !nameHit && visibleMembers.length === 0) return null;
|
|
10301
10619
|
const sw = groupSwitchState(members, effectiveDisabledSet);
|
|
10620
|
+
const enabledCount = members.filter((member) => !effectiveDisabledSet.has(member)).length;
|
|
10621
|
+
const collapsed = groupQuery === "" && collapsedGroups.has(gid);
|
|
10622
|
+
const meta = t("groupMembersMeta").replace("{0}", String(members.length)).replace("{1}", String(enabledCount));
|
|
10302
10623
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10303
10624
|
className: Market_module_css_default.groupRow,
|
|
10304
|
-
children: [
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
|
|
10308
|
-
|
|
10309
|
-
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10328
|
-
className: Market_module_css_default.groupActions,
|
|
10329
|
-
children: [
|
|
10330
|
-
renamingGroup === gid ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
10331
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
10332
|
-
className: Market_module_css_default.inlineInput,
|
|
10333
|
-
placeholder: t("groupNamePh"),
|
|
10334
|
-
value: renamingValue,
|
|
10335
|
-
onChange: (e) => setRenamingValue(e.target.value),
|
|
10336
|
-
onKeyDown: (e) => {
|
|
10337
|
-
if (e.key === "Enter") doRenameGroup(gid);
|
|
10338
|
-
},
|
|
10339
|
-
autoFocus: true
|
|
10340
|
-
}),
|
|
10341
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10342
|
-
variant: "primary",
|
|
10343
|
-
size: "sm",
|
|
10344
|
-
onClick: () => doRenameGroup(gid),
|
|
10345
|
-
children: t("groupRename")
|
|
10346
|
-
}),
|
|
10347
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10348
|
-
variant: "ghost",
|
|
10349
|
-
size: "sm",
|
|
10350
|
-
onClick: () => {
|
|
10351
|
-
setRenamingGroup(null);
|
|
10352
|
-
setRenamingValue("");
|
|
10353
|
-
},
|
|
10354
|
-
children: t("cancel")
|
|
10355
|
-
})
|
|
10356
|
-
] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10357
|
-
variant: "ghost",
|
|
10358
|
-
size: "sm",
|
|
10359
|
-
onClick: () => {
|
|
10360
|
-
setRenamingGroup(gid);
|
|
10361
|
-
setRenamingValue(gid);
|
|
10362
|
-
},
|
|
10363
|
-
children: t("groupRename")
|
|
10364
|
-
}),
|
|
10365
|
-
deletingGroup === gid ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10366
|
-
variant: "primary",
|
|
10367
|
-
size: "sm",
|
|
10368
|
-
className: Market_module_css_default.dangerArmed,
|
|
10369
|
-
onClick: () => doDeleteGroup(gid),
|
|
10370
|
-
children: t("groupConfirmDelete")
|
|
10371
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10372
|
-
variant: "outline",
|
|
10373
|
-
size: "sm",
|
|
10374
|
-
className: Market_module_css_default.dangerBtn,
|
|
10375
|
-
onClick: () => setDeletingGroup(gid),
|
|
10376
|
-
children: t("groupDelete")
|
|
10377
|
-
}),
|
|
10378
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10379
|
-
variant: "outline",
|
|
10380
|
-
size: "sm",
|
|
10381
|
-
onClick: () => setAddPanel(addPanel !== null && addPanel.group === gid && addPanel.kind === "plugin" ? null : {
|
|
10382
|
-
group: gid,
|
|
10383
|
-
kind: "plugin"
|
|
10384
|
-
}),
|
|
10385
|
-
children: t("groupAdd")
|
|
10386
|
-
}),
|
|
10387
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10388
|
-
variant: "outline",
|
|
10389
|
-
size: "sm",
|
|
10390
|
-
disabled: members.some((member) => installedThemeNames.has(member)),
|
|
10391
|
-
onClick: () => setAddPanel(addPanel !== null && addPanel.group === gid && addPanel.kind === "theme" ? null : {
|
|
10392
|
-
group: gid,
|
|
10393
|
-
kind: "theme"
|
|
10394
|
-
}),
|
|
10395
|
-
children: t("groupAddTheme")
|
|
10396
|
-
})
|
|
10397
|
-
]
|
|
10398
|
-
})
|
|
10399
|
-
]
|
|
10400
|
-
}),
|
|
10401
|
-
addPanel !== null && addPanel.group === gid && (() => {
|
|
10402
|
-
const candidates = addPanel.kind === "theme" ? [...installedThemeNames].filter((name) => !members.includes(name)) : groupableNames.filter((name) => !members.includes(name) && !installedThemeNames.has(name));
|
|
10403
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10404
|
-
className: Market_module_css_default.groupAddPanel,
|
|
10405
|
-
children: candidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10406
|
-
className: Market_module_css_default.groupHint,
|
|
10407
|
-
children: t("groupAddEmpty")
|
|
10408
|
-
}) : candidates.map((name) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10409
|
-
className: Market_module_css_default.groupMember,
|
|
10410
|
-
children: [
|
|
10411
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10412
|
-
className: Market_module_css_default.nm,
|
|
10413
|
-
children: name
|
|
10414
|
-
}),
|
|
10415
|
-
effectiveDisabledSet.has(name) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10416
|
-
className: Market_module_css_default.spec,
|
|
10417
|
-
children: t("disabledState")
|
|
10418
|
-
}),
|
|
10419
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.grow }),
|
|
10420
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10421
|
-
variant: "outline",
|
|
10422
|
-
size: "sm",
|
|
10423
|
-
onClick: () => doAddMember(gid, name),
|
|
10424
|
-
children: addPanel.kind === "theme" ? t("groupAddTheme") : t("groupAdd")
|
|
10425
|
-
})
|
|
10426
|
-
]
|
|
10427
|
-
}, name))
|
|
10428
|
-
});
|
|
10429
|
-
})(),
|
|
10430
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10431
|
-
className: Market_module_css_default.groupMembers,
|
|
10432
|
-
children: [members.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10433
|
-
className: Market_module_css_default.groupHint,
|
|
10434
|
-
children: t("groupEmpty")
|
|
10435
|
-
}), members.map((member) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10436
|
-
className: Market_module_css_default.groupMember,
|
|
10625
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10626
|
+
className: Market_module_css_default.groupHead,
|
|
10627
|
+
children: [
|
|
10628
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
10629
|
+
type: "button",
|
|
10630
|
+
className: Market_module_css_default.groupCollapse,
|
|
10631
|
+
"aria-expanded": !collapsed,
|
|
10632
|
+
"aria-label": (collapsed ? t("groupExpand") : t("groupFold")).replace("{0}", gid),
|
|
10633
|
+
onClick: () => toggleCollapsedGroup(gid),
|
|
10634
|
+
children: collapsed ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronRightOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 })
|
|
10635
|
+
}),
|
|
10636
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
10637
|
+
type: "button",
|
|
10638
|
+
role: "switch",
|
|
10639
|
+
"aria-checked": sw === "on" ? true : sw === "off" ? false : "mixed",
|
|
10640
|
+
"aria-label": (sw !== "on" ? t("enable") : t("disable")) + " " + gid,
|
|
10641
|
+
className: sw === "on" ? `${Market_module_css_default.switch} ${Market_module_css_default.switchOn}` : sw === "mixed" ? `${Market_module_css_default.switch} ${Market_module_css_default.switchMixed}` : Market_module_css_default.switch,
|
|
10642
|
+
disabled: togglingName !== null || sw === "empty",
|
|
10643
|
+
onClick: () => doGroupToggle(gid, sw !== "on"),
|
|
10644
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.switchKnob })
|
|
10645
|
+
}),
|
|
10646
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10647
|
+
className: Market_module_css_default.groupTitle,
|
|
10437
10648
|
children: [
|
|
10438
10649
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10439
|
-
className: Market_module_css_default.
|
|
10440
|
-
children:
|
|
10650
|
+
className: Market_module_css_default.groupName,
|
|
10651
|
+
children: gid
|
|
10441
10652
|
}),
|
|
10442
|
-
|
|
10443
|
-
className: Market_module_css_default.
|
|
10444
|
-
children:
|
|
10653
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10654
|
+
className: Market_module_css_default.groupMeta,
|
|
10655
|
+
children: meta
|
|
10445
10656
|
}),
|
|
10446
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10447
|
-
|
|
10448
|
-
|
|
10449
|
-
|
|
10450
|
-
|
|
10451
|
-
|
|
10452
|
-
|
|
10453
|
-
|
|
10454
|
-
|
|
10455
|
-
|
|
10657
|
+
sw === "mixed" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10658
|
+
className: Market_module_css_default.groupHint,
|
|
10659
|
+
children: t("groupMixed")
|
|
10660
|
+
})
|
|
10661
|
+
]
|
|
10662
|
+
}),
|
|
10663
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10664
|
+
className: Market_module_css_default.groupActions,
|
|
10665
|
+
children: [
|
|
10666
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10667
|
+
variant: "outline",
|
|
10668
|
+
size: "sm",
|
|
10669
|
+
onClick: () => openThemePanel(gid),
|
|
10670
|
+
children: members.some((member) => installedThemeNames.has(member)) ? t("groupChangeTheme") : t("groupPickTheme")
|
|
10456
10671
|
}),
|
|
10457
10672
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10673
|
+
variant: "outline",
|
|
10674
|
+
size: "sm",
|
|
10675
|
+
onClick: () => openAddPanel(gid),
|
|
10676
|
+
children: t("groupAdd")
|
|
10677
|
+
}),
|
|
10678
|
+
deletingGroup === gid ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10679
|
+
variant: "primary",
|
|
10680
|
+
size: "sm",
|
|
10681
|
+
className: Market_module_css_default.dangerArmed,
|
|
10682
|
+
onClick: () => doDeleteGroup(gid),
|
|
10683
|
+
children: t("groupConfirmDelete")
|
|
10684
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10458
10685
|
variant: "ghost",
|
|
10459
10686
|
size: "sm",
|
|
10460
|
-
onClick: () =>
|
|
10461
|
-
children: t("
|
|
10687
|
+
onClick: () => setDeletingGroup(null),
|
|
10688
|
+
children: t("cancel")
|
|
10689
|
+
})] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
10690
|
+
open: groupMenuFor === gid,
|
|
10691
|
+
onClose: () => setGroupMenuFor(null),
|
|
10692
|
+
onSelect: (id) => {
|
|
10693
|
+
setGroupMenuFor(null);
|
|
10694
|
+
if (id === "rename") {
|
|
10695
|
+
setAddPanel(null);
|
|
10696
|
+
setDeletingGroup(null);
|
|
10697
|
+
setRenamingGroup(gid);
|
|
10698
|
+
setRenamingValue(gid);
|
|
10699
|
+
} else if (id === "delete") {
|
|
10700
|
+
setAddPanel(null);
|
|
10701
|
+
setRenamingGroup(null);
|
|
10702
|
+
setDeletingGroup(gid);
|
|
10703
|
+
}
|
|
10704
|
+
},
|
|
10705
|
+
align: "end",
|
|
10706
|
+
portal: true,
|
|
10707
|
+
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10708
|
+
variant: "ghost",
|
|
10709
|
+
size: "sm",
|
|
10710
|
+
"aria-label": t("groupMore"),
|
|
10711
|
+
onClick: () => setGroupMenuFor((open) => open === gid ? null : gid),
|
|
10712
|
+
children: "···"
|
|
10713
|
+
}),
|
|
10714
|
+
items: [{
|
|
10715
|
+
id: "rename",
|
|
10716
|
+
label: t("groupRename")
|
|
10717
|
+
}, {
|
|
10718
|
+
id: "delete",
|
|
10719
|
+
label: t("groupDelete")
|
|
10720
|
+
}]
|
|
10462
10721
|
})
|
|
10463
10722
|
]
|
|
10464
|
-
}
|
|
10465
|
-
|
|
10466
|
-
|
|
10467
|
-
|
|
10468
|
-
|
|
10469
|
-
|
|
10470
|
-
|
|
10471
|
-
|
|
10472
|
-
|
|
10473
|
-
ungroupedNames.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10474
|
-
className: Market_module_css_default.empty,
|
|
10475
|
-
children: t("installedEmpty")
|
|
10476
|
-
}) : ungroupedNames.map((name) => {
|
|
10477
|
-
const entry = data === null ? void 0 : catalogEntryForInstalled(data.plugins, name, String(installed[name]), repoIdentities[name], repoHints[name]);
|
|
10478
|
-
const off = effectiveDisabledSet.has(name);
|
|
10479
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10480
|
-
className: Market_module_css_default.irow,
|
|
10481
|
-
children: [
|
|
10482
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10483
|
-
style: { minWidth: 0 },
|
|
10484
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10485
|
-
className: Market_module_css_default.nm,
|
|
10486
|
-
children: [name, entry?.deprecated === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10487
|
-
className: Market_module_css_default.depBadge,
|
|
10488
|
-
children: t("deprecatedBadge")
|
|
10489
|
-
})]
|
|
10490
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10491
|
-
className: Market_module_css_default.act,
|
|
10492
|
-
children: off ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10493
|
-
className: Market_module_css_default.actWarn,
|
|
10494
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
10495
|
-
state: "warning",
|
|
10496
|
-
size: 7
|
|
10497
|
-
}), t("disabledState")]
|
|
10498
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10499
|
-
className: Market_module_css_default.actLive,
|
|
10500
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
10501
|
-
state: "done",
|
|
10502
|
-
size: 7
|
|
10503
|
-
}), t("stateLive")]
|
|
10504
|
-
})
|
|
10505
|
-
})]
|
|
10506
|
-
}),
|
|
10507
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.grow }),
|
|
10508
|
-
assignFor === name ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10509
|
-
className: Market_module_css_default.assignRow,
|
|
10723
|
+
})
|
|
10724
|
+
]
|
|
10725
|
+
}), !collapsed && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10726
|
+
className: Market_module_css_default.groupMembers,
|
|
10727
|
+
children: [members.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10728
|
+
className: Market_module_css_default.groupHint,
|
|
10729
|
+
children: t("groupEmpty")
|
|
10730
|
+
}), visibleMembers.map((member) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10731
|
+
className: installedThemeNames.has(member) && themeSlot ? `${Market_module_css_default.groupMember} ${Market_module_css_default.themeSlot}` : Market_module_css_default.groupMember,
|
|
10510
10732
|
children: [
|
|
10511
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
10512
|
-
className: Market_module_css_default.
|
|
10513
|
-
|
|
10514
|
-
|
|
10515
|
-
|
|
10516
|
-
|
|
10517
|
-
|
|
10518
|
-
|
|
10519
|
-
|
|
10520
|
-
children: gid
|
|
10521
|
-
}, gid))]
|
|
10733
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10734
|
+
className: Market_module_css_default.memberName,
|
|
10735
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10736
|
+
className: Market_module_css_default.nm,
|
|
10737
|
+
children: member
|
|
10738
|
+
}), installedThemeNames.has(member) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10739
|
+
className: Market_module_css_default.memberKind,
|
|
10740
|
+
children: ["· ", t("groupThemeBadge")]
|
|
10741
|
+
})]
|
|
10522
10742
|
}),
|
|
10523
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
10524
|
-
|
|
10525
|
-
|
|
10526
|
-
|
|
10527
|
-
|
|
10528
|
-
|
|
10743
|
+
effectiveDisabledSet.has(member) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10744
|
+
className: Market_module_css_default.spec,
|
|
10745
|
+
children: t("disabledState")
|
|
10746
|
+
}),
|
|
10747
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
10748
|
+
type: "button",
|
|
10749
|
+
role: "switch",
|
|
10750
|
+
"aria-checked": !effectiveDisabledSet.has(member),
|
|
10751
|
+
"aria-label": (effectiveDisabledSet.has(member) ? t("enable") : t("disable")) + " " + member,
|
|
10752
|
+
className: effectiveDisabledSet.has(member) ? Market_module_css_default.switch : `${Market_module_css_default.switch} ${Market_module_css_default.switchOn}`,
|
|
10753
|
+
disabled: togglingName !== null,
|
|
10754
|
+
onClick: () => doToggle(member, effectiveDisabledSet.has(member)),
|
|
10755
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.switchKnob })
|
|
10529
10756
|
}),
|
|
10530
10757
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10531
10758
|
variant: "ghost",
|
|
10532
10759
|
size: "sm",
|
|
10533
|
-
onClick: () =>
|
|
10534
|
-
|
|
10535
|
-
setAssignTarget("");
|
|
10536
|
-
},
|
|
10537
|
-
children: t("cancel")
|
|
10760
|
+
onClick: () => doRemoveMember(gid, member),
|
|
10761
|
+
children: t("groupRemove")
|
|
10538
10762
|
})
|
|
10539
10763
|
]
|
|
10540
|
-
}
|
|
10541
|
-
|
|
10542
|
-
|
|
10543
|
-
|
|
10544
|
-
|
|
10545
|
-
|
|
10546
|
-
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
|
|
10551
|
-
|
|
10764
|
+
}, member))]
|
|
10765
|
+
})]
|
|
10766
|
+
}, gid);
|
|
10767
|
+
}),
|
|
10768
|
+
(groupQuery === "" || visibleUngrouped.length > 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10769
|
+
className: Market_module_css_default.groupRow,
|
|
10770
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10771
|
+
className: Market_module_css_default.groupHead,
|
|
10772
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10773
|
+
className: Market_module_css_default.groupTitle,
|
|
10774
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10775
|
+
className: Market_module_css_default.groupName,
|
|
10776
|
+
children: t("ungrouped")
|
|
10777
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10778
|
+
className: Market_module_css_default.groupMeta,
|
|
10779
|
+
children: t("groupMembersMeta").replace("{0}", String((groupQuery === "" ? ungroupedNames : visibleUngrouped).length)).replace("{1}", String((groupQuery === "" ? ungroupedNames : visibleUngrouped).filter((name) => !effectiveDisabledSet.has(name)).length))
|
|
10780
|
+
})]
|
|
10781
|
+
})
|
|
10782
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10783
|
+
className: Market_module_css_default.groupMembers,
|
|
10784
|
+
children: (groupQuery === "" ? ungroupedNames : visibleUngrouped).length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10785
|
+
className: Market_module_css_default.empty,
|
|
10786
|
+
children: t("installedEmpty")
|
|
10787
|
+
}) : visibleUngrouped.map((name) => {
|
|
10788
|
+
const entry = data === null ? void 0 : catalogEntryForInstalled(data.plugins, name, String(installed[name]), repoIdentities[name], repoHints[name]);
|
|
10789
|
+
const off = effectiveDisabledSet.has(name);
|
|
10790
|
+
const act = activations[name];
|
|
10791
|
+
const meta = !off && act !== void 0 ? activationMeta(act.state, t, act.dependencyOf) : null;
|
|
10792
|
+
const note = notes[name];
|
|
10793
|
+
const authored = entry?.description && (entry.description[lang] || entry.description.en) || "";
|
|
10794
|
+
const shown = note ?? authored;
|
|
10795
|
+
const stateLabel = off ? t("disabledState") : act?.state === "inert" && act.dependencyOf === void 0 ? t("groupStateInert") : act?.state === "restart" ? t("groupStateRestart") : act?.state === "broken" ? t("groupStateBroken") : meta?.label;
|
|
10796
|
+
const stateDot = off ? "warning" : meta?.dot === "error" ? "error" : meta?.dot === "warning" ? "warning" : "done";
|
|
10797
|
+
const stateClass = stateDot === "error" ? Market_module_css_default.actBroken : stateDot === "warning" ? Market_module_css_default.actWarn : Market_module_css_default.actLive;
|
|
10798
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10799
|
+
className: `${Market_module_css_default.groupMember} ${Market_module_css_default.ungroupedRow}`,
|
|
10800
|
+
children: [
|
|
10801
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10802
|
+
className: Market_module_css_default.nm,
|
|
10803
|
+
title: name,
|
|
10804
|
+
children: [name, entry?.deprecated === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10805
|
+
className: Market_module_css_default.depBadge,
|
|
10806
|
+
children: t("deprecatedBadge")
|
|
10807
|
+
})]
|
|
10808
|
+
}),
|
|
10809
|
+
installedThemeNames.has(name) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10810
|
+
className: Market_module_css_default.memberKind,
|
|
10811
|
+
children: ["· ", t("groupThemeBadge")]
|
|
10812
|
+
}),
|
|
10813
|
+
stateLabel !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10814
|
+
className: Market_module_css_default.ungroupedState,
|
|
10815
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10816
|
+
className: stateClass,
|
|
10817
|
+
title: stateLabel,
|
|
10818
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
10819
|
+
state: stateDot,
|
|
10820
|
+
size: 7
|
|
10821
|
+
}), stateLabel]
|
|
10822
|
+
})
|
|
10823
|
+
}),
|
|
10824
|
+
shown !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
10825
|
+
label: shown,
|
|
10826
|
+
side: "top",
|
|
10827
|
+
maxWidth: 320,
|
|
10828
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10829
|
+
className: note !== void 0 ? `${Market_module_css_default.ungroupedDesc} ${Market_module_css_default.noteMine}` : Market_module_css_default.ungroupedDesc,
|
|
10830
|
+
children: shown
|
|
10831
|
+
})
|
|
10832
|
+
}),
|
|
10833
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10834
|
+
className: Market_module_css_default.groupMemberAction,
|
|
10835
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
10836
|
+
open: assignFor === name,
|
|
10837
|
+
onClose: () => setAssignFor(null),
|
|
10838
|
+
onSelect: (id) => {
|
|
10839
|
+
if (installedThemeNames.has(name) && (groups[id] ?? []).some((member) => installedThemeNames.has(member))) return;
|
|
10840
|
+
setAssignFor(null);
|
|
10841
|
+
doAssign(name, id);
|
|
10842
|
+
},
|
|
10843
|
+
align: "end",
|
|
10844
|
+
portal: true,
|
|
10845
|
+
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10846
|
+
variant: "outline",
|
|
10847
|
+
size: "sm",
|
|
10848
|
+
disabled: groupOrder.length === 0,
|
|
10849
|
+
icon: assignFor === name ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutline14, { size: 14 }),
|
|
10850
|
+
onClick: () => setAssignFor((open) => open === name ? null : name),
|
|
10851
|
+
children: t("groupAssign")
|
|
10852
|
+
}),
|
|
10853
|
+
items: groupOrder.map((gid) => {
|
|
10854
|
+
const blocked = installedThemeNames.has(name) && (groups[gid] ?? []).some((member) => installedThemeNames.has(member));
|
|
10855
|
+
return {
|
|
10856
|
+
id: gid,
|
|
10857
|
+
disabled: blocked,
|
|
10858
|
+
label: blocked ? gid + " · " + t("groupThemeTaken") : gid
|
|
10859
|
+
};
|
|
10860
|
+
})
|
|
10861
|
+
})
|
|
10862
|
+
})
|
|
10863
|
+
]
|
|
10864
|
+
}, "ug-" + name);
|
|
10865
|
+
})
|
|
10866
|
+
})]
|
|
10867
|
+
}),
|
|
10868
|
+
groupQuery !== "" && visibleGroupIds.length === 0 && visibleUngrouped.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10869
|
+
className: Market_module_css_default.empty,
|
|
10870
|
+
children: t("groupSearchEmpty")
|
|
10871
|
+
}),
|
|
10872
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10873
|
+
className: Market_module_css_default.groupOrgHint,
|
|
10874
|
+
children: t("groupOrgHint")
|
|
10552
10875
|
})
|
|
10553
10876
|
] }) : Object.keys(displayedInstalled).filter((name) => name !== selfName).length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10554
10877
|
className: Market_module_css_default.empty,
|
|
@@ -10720,7 +11043,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10720
11043
|
size: 7
|
|
10721
11044
|
}), meta.label]
|
|
10722
11045
|
}), act.state !== "live" && act.reasons.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
10723
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11046
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconQuestionOutline14, { size: 14 }),
|
|
10724
11047
|
title: t("actWhy"),
|
|
10725
11048
|
open: whyOpen === name,
|
|
10726
11049
|
expandable: true,
|
|
@@ -10749,7 +11072,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10749
11072
|
children: [
|
|
10750
11073
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10751
11074
|
className: Market_module_css_default.spin,
|
|
10752
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11075
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLoadingOutline16, { size: 14 })
|
|
10753
11076
|
}),
|
|
10754
11077
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
10755
11078
|
className: Market_module_css_default.grow,
|
|
@@ -10905,10 +11228,179 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10905
11228
|
behavior: "smooth"
|
|
10906
11229
|
});
|
|
10907
11230
|
},
|
|
10908
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11231
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronUpOutline14, { size: 16 })
|
|
10909
11232
|
})
|
|
10910
11233
|
})
|
|
10911
11234
|
}),
|
|
11235
|
+
renamingGroup !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
11236
|
+
open: true,
|
|
11237
|
+
onClose: () => {
|
|
11238
|
+
setRenamingGroup(null);
|
|
11239
|
+
setRenamingValue("");
|
|
11240
|
+
},
|
|
11241
|
+
title: t("groupRenameTitle"),
|
|
11242
|
+
description: t("groupRenameHint"),
|
|
11243
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11244
|
+
variant: "ghost",
|
|
11245
|
+
onClick: () => {
|
|
11246
|
+
setRenamingGroup(null);
|
|
11247
|
+
setRenamingValue("");
|
|
11248
|
+
},
|
|
11249
|
+
children: t("cancel")
|
|
11250
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11251
|
+
variant: "primary",
|
|
11252
|
+
disabled: renamingValue.trim() === "" || renamingValue.trim() === renamingGroup,
|
|
11253
|
+
onClick: () => doRenameGroup(renamingGroup),
|
|
11254
|
+
children: t("groupRenameSave")
|
|
11255
|
+
})] }),
|
|
11256
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11257
|
+
className: Market_module_css_default.groupRenameField,
|
|
11258
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
11259
|
+
htmlFor: "dsh-market-group-rename",
|
|
11260
|
+
children: t("groupNamePh")
|
|
11261
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
11262
|
+
id: "dsh-market-group-rename",
|
|
11263
|
+
className: Market_module_css_default.inlineInput,
|
|
11264
|
+
placeholder: t("groupNamePh"),
|
|
11265
|
+
value: renamingValue,
|
|
11266
|
+
onChange: (e) => setRenamingValue(e.target.value),
|
|
11267
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
11268
|
+
onKeyDown: (e) => {
|
|
11269
|
+
if (e.key === "Enter") doRenameGroup(renamingGroup);
|
|
11270
|
+
},
|
|
11271
|
+
autoFocus: true
|
|
11272
|
+
})]
|
|
11273
|
+
})
|
|
11274
|
+
}),
|
|
11275
|
+
addPanel !== null && (() => {
|
|
11276
|
+
const members = groups[addPanel] ?? [];
|
|
11277
|
+
const pluginCandidates = ungroupedNames.filter((name) => !installedThemeNames.has(name) && !members.includes(name));
|
|
11278
|
+
const needle = addQuery.trim().toLowerCase();
|
|
11279
|
+
const candidates = needle === "" ? pluginCandidates : pluginCandidates.filter((name) => name.toLowerCase().includes(needle));
|
|
11280
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
11281
|
+
open: true,
|
|
11282
|
+
onClose: () => setAddPanel(null),
|
|
11283
|
+
title: t("groupAddTitle").replace("{0}", addPanel),
|
|
11284
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
11285
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11286
|
+
className: Market_module_css_default.groupAddFooterMeta,
|
|
11287
|
+
children: t("groupAddSelected").replace("{0}", String(addSelected.length))
|
|
11288
|
+
}),
|
|
11289
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11290
|
+
variant: "ghost",
|
|
11291
|
+
onClick: () => setAddPanel(null),
|
|
11292
|
+
children: t("cancel")
|
|
11293
|
+
}),
|
|
11294
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11295
|
+
variant: "primary",
|
|
11296
|
+
disabled: addSelected.length === 0,
|
|
11297
|
+
onClick: doAddSelectedMembers,
|
|
11298
|
+
children: t("groupAddConfirm").replace("{0}", String(addSelected.length))
|
|
11299
|
+
})
|
|
11300
|
+
] }),
|
|
11301
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11302
|
+
className: Market_module_css_default.groupAddModalBody,
|
|
11303
|
+
children: [
|
|
11304
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, {
|
|
11305
|
+
value: addQuery,
|
|
11306
|
+
onCommit: setAddQuery,
|
|
11307
|
+
placeholder: t("groupAddSearchPh")
|
|
11308
|
+
}),
|
|
11309
|
+
candidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11310
|
+
className: Market_module_css_default.groupAddModalHint,
|
|
11311
|
+
children: t("groupAddEmpty")
|
|
11312
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
11313
|
+
className: Market_module_css_default.groupAddModalList,
|
|
11314
|
+
children: candidates.map((name) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
11315
|
+
className: Market_module_css_default.groupAddPick,
|
|
11316
|
+
children: [
|
|
11317
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
11318
|
+
type: "checkbox",
|
|
11319
|
+
checked: addSelected.includes(name),
|
|
11320
|
+
onChange: () => setAddSelected((prev) => prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name])
|
|
11321
|
+
}),
|
|
11322
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11323
|
+
className: Market_module_css_default.nm,
|
|
11324
|
+
children: name
|
|
11325
|
+
}),
|
|
11326
|
+
effectiveDisabledSet.has(name) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11327
|
+
className: Market_module_css_default.spec,
|
|
11328
|
+
children: t("disabledState")
|
|
11329
|
+
})
|
|
11330
|
+
]
|
|
11331
|
+
}, name))
|
|
11332
|
+
}),
|
|
11333
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11334
|
+
className: Market_module_css_default.groupAddModalHint,
|
|
11335
|
+
children: t("groupAddHint")
|
|
11336
|
+
})
|
|
11337
|
+
]
|
|
11338
|
+
})
|
|
11339
|
+
});
|
|
11340
|
+
})(),
|
|
11341
|
+
themePanel !== null && (() => {
|
|
11342
|
+
const current = (groups[themePanel] ?? []).find((name) => installedThemeNames.has(name)) ?? null;
|
|
11343
|
+
const choices = [...current !== null ? [current] : [], ...ungroupedNames.filter((name) => installedThemeNames.has(name))];
|
|
11344
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
11345
|
+
open: true,
|
|
11346
|
+
onClose: () => setThemePanel(null),
|
|
11347
|
+
title: t("groupThemeTitle").replace("{0}", themePanel),
|
|
11348
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
11349
|
+
current !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11350
|
+
variant: "ghost",
|
|
11351
|
+
onClick: () => applyGroupTheme(themePanel, null),
|
|
11352
|
+
children: t("groupThemeRemove")
|
|
11353
|
+
}),
|
|
11354
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: Market_module_css_default.groupAddFooterMeta }),
|
|
11355
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11356
|
+
variant: "ghost",
|
|
11357
|
+
onClick: () => setThemePanel(null),
|
|
11358
|
+
children: t("cancel")
|
|
11359
|
+
}),
|
|
11360
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11361
|
+
variant: "primary",
|
|
11362
|
+
disabled: themePick === null || themePick === current,
|
|
11363
|
+
onClick: () => {
|
|
11364
|
+
if (themePick !== null) applyGroupTheme(themePanel, themePick);
|
|
11365
|
+
},
|
|
11366
|
+
children: t("groupThemeUse")
|
|
11367
|
+
})
|
|
11368
|
+
] }),
|
|
11369
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11370
|
+
className: Market_module_css_default.groupAddModalBody,
|
|
11371
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11372
|
+
className: Market_module_css_default.groupAddModalHint,
|
|
11373
|
+
children: t("groupThemeHint")
|
|
11374
|
+
}), choices.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11375
|
+
className: Market_module_css_default.groupAddModalHint,
|
|
11376
|
+
children: t("groupThemeEmpty")
|
|
11377
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
11378
|
+
className: Market_module_css_default.groupAddModalList,
|
|
11379
|
+
role: "radiogroup",
|
|
11380
|
+
"aria-label": t("groupPickTheme"),
|
|
11381
|
+
children: choices.map((name) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
11382
|
+
className: Market_module_css_default.groupAddPick,
|
|
11383
|
+
children: [
|
|
11384
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
11385
|
+
type: "radio",
|
|
11386
|
+
name: "dsh-market-group-theme",
|
|
11387
|
+
checked: themePick === name,
|
|
11388
|
+
onChange: () => setThemePick(name)
|
|
11389
|
+
}),
|
|
11390
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11391
|
+
className: Market_module_css_default.nm,
|
|
11392
|
+
children: name
|
|
11393
|
+
}),
|
|
11394
|
+
name === current && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11395
|
+
className: Market_module_css_default.spec,
|
|
11396
|
+
children: t("groupThemeCurrent")
|
|
11397
|
+
})
|
|
11398
|
+
]
|
|
11399
|
+
}, name))
|
|
11400
|
+
})]
|
|
11401
|
+
})
|
|
11402
|
+
});
|
|
11403
|
+
})(),
|
|
10912
11404
|
confirming !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
10913
11405
|
open: true,
|
|
10914
11406
|
onClose: () => {
|
|
@@ -10981,7 +11473,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10981
11473
|
onOpen: openLightbox
|
|
10982
11474
|
}),
|
|
10983
11475
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
10984
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11476
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCodeOutline16, { size: 16 }),
|
|
10985
11477
|
title: t("cmdDetails"),
|
|
10986
11478
|
open: cmdOpen,
|
|
10987
11479
|
expandable: true,
|
|
@@ -10995,7 +11487,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
10995
11487
|
looksTerminal(confirming, lang) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
10996
11488
|
className: Market_module_css_default.warnLine,
|
|
10997
11489
|
children: [
|
|
10998
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11490
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
10999
11491
|
size: 14,
|
|
11000
11492
|
className: Market_module_css_default.bannerIcon
|
|
11001
11493
|
}),
|
|
@@ -11027,7 +11519,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
11027
11519
|
})(),
|
|
11028
11520
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
11029
11521
|
className: Market_module_css_default.modalNote,
|
|
11030
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11522
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
|
|
11031
11523
|
size: 14,
|
|
11032
11524
|
className: Market_module_css_default.bannerIcon
|
|
11033
11525
|
}), " " + t("confirmWarn")]
|
|
@@ -11103,7 +11595,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
11103
11595
|
]
|
|
11104
11596
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
11105
11597
|
className: Market_module_css_default.migrationWarning,
|
|
11106
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11598
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }), t("migrateWarning")]
|
|
11107
11599
|
})]
|
|
11108
11600
|
}),
|
|
11109
11601
|
removeConfirm !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
@@ -11390,22 +11882,22 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
11390
11882
|
}),
|
|
11391
11883
|
exportState === "done" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
11392
11884
|
text: t("exportedLog"),
|
|
11393
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11885
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutline16, { size: 14 }),
|
|
11394
11886
|
onDone: exportToastDone
|
|
11395
11887
|
}),
|
|
11396
11888
|
exportState === "fail" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
11397
11889
|
text: t("exportLogFail"),
|
|
11398
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11890
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
|
|
11399
11891
|
onDone: exportToastDone
|
|
11400
11892
|
}),
|
|
11401
11893
|
favoriteError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
11402
11894
|
text: localizeBilingual(favoriteError, lang),
|
|
11403
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11895
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
|
|
11404
11896
|
onDone: favoriteErrorDone
|
|
11405
11897
|
}),
|
|
11406
11898
|
toggled !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
11407
11899
|
text: toggled.name + " " + t(toggled.enabled ? "toastToggledOn" : "toastToggledOff"),
|
|
11408
|
-
icon: toggled.enabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11900
|
+
icon: toggled.enabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutline16, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
|
|
11409
11901
|
onDone: toggledDone
|
|
11410
11902
|
})
|
|
11411
11903
|
]
|
|
@@ -11923,7 +12415,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
11923
12415
|
size: "sm",
|
|
11924
12416
|
className: Market_module_css_default.setDanger,
|
|
11925
12417
|
disabled: busy,
|
|
11926
|
-
icon: busy ? (0, react.createElement)("span", { className: Market_module_css_default.spin }, (0, react.createElement)(
|
|
12418
|
+
icon: busy ? (0, react.createElement)("span", { className: Market_module_css_default.spin }, (0, react.createElement)(IconLoadingOutline16, { size: 16 })) : void 0,
|
|
11927
12419
|
onClick: onRemove
|
|
11928
12420
|
}, busy ? t("setSelfWorking") : t("setSelfRemoveConfirm")))) : null, error !== null ? (0, react.createElement)("div", { className: Market_module_css_default.err }, error) : null, stale ? (0, react.createElement)("div", { className: Market_module_css_default.setActions }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11929
12421
|
variant: "primary",
|
|
@@ -11937,7 +12429,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
11937
12429
|
onClick: () => {
|
|
11938
12430
|
setOpen(!open);
|
|
11939
12431
|
}
|
|
11940
|
-
}, (0, react.createElement)("div", { className: Market_module_css_default.setHeadText }, (0, react.createElement)("div", { className: Market_module_css_default.setName }, t("nav"), version !== null ? (0, react.createElement)("span", { className: Market_module_css_default.version }, ` v${version}`) : null, prerelease ? (0, react.createElement)("span", { className: Market_module_css_default.setBetaTag }, t("setChannelBeta")) : null), (0, react.createElement)("div", { className: Market_module_css_default.setDesc }, t("setCardDesc"))), (0, react.createElement)("span", { className: open ? `${Market_module_css_default.setChevron} ${Market_module_css_default.setChevronOpen}` : Market_module_css_default.setChevron }, (0, react.createElement)(
|
|
12432
|
+
}, (0, react.createElement)("div", { className: Market_module_css_default.setHeadText }, (0, react.createElement)("div", { className: Market_module_css_default.setName }, t("nav"), version !== null ? (0, react.createElement)("span", { className: Market_module_css_default.version }, ` v${version}`) : null, prerelease ? (0, react.createElement)("span", { className: Market_module_css_default.setBetaTag }, t("setChannelBeta")) : null), (0, react.createElement)("div", { className: Market_module_css_default.setDesc }, t("setCardDesc"))), (0, react.createElement)("span", { className: open ? `${Market_module_css_default.setChevron} ${Market_module_css_default.setChevronOpen}` : Market_module_css_default.setChevron }, (0, react.createElement)(IconChevronDownOutline14, { size: 14 }))), open ? (0, react.createElement)("div", { className: Market_module_css_default.setBody }, body) : null);
|
|
11941
12433
|
}
|
|
11942
12434
|
//#endregion
|
|
11943
12435
|
//#region src/client/settings-nav-icon.ts
|
|
@@ -12107,11 +12599,14 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
12107
12599
|
"theme"
|
|
12108
12600
|
];
|
|
12109
12601
|
function apply(ctx) {
|
|
12110
|
-
const
|
|
12602
|
+
const mod = _deepseek_ai_dsh_client_ui_primitives;
|
|
12603
|
+
const gaps = missingPrimitives(mod);
|
|
12111
12604
|
if (gaps.length > 0) {
|
|
12112
12605
|
console.warn("[dsh-market] host ui-primitives missing " + gaps.join(", ") + " — market section disabled (dsh web >= 0.1.0-rc.6 required)");
|
|
12113
12606
|
return;
|
|
12114
12607
|
}
|
|
12608
|
+
const iconGaps = missingIcons(mod);
|
|
12609
|
+
if (iconGaps.length > 0) console.warn("[dsh-market] host ui-primitives missing icons " + iconGaps.join(", ") + " — rendering without them");
|
|
12115
12610
|
ctx.effect(() => ctx.locale.register(NS, {
|
|
12116
12611
|
zh,
|
|
12117
12612
|
en
|