@xrxs-ai/dsh-xrxs-plugins-store 0.2.8 → 0.2.9
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/lib/client.js +78 -23
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -773,18 +773,18 @@ function ensureAdminStyles() {
|
|
|
773
773
|
|
|
774
774
|
// src/client/pages/market/colors.ts
|
|
775
775
|
var GRADIENTS = [
|
|
776
|
+
["#3370ff", "#7ba7ff"],
|
|
777
|
+
// 品牌蓝
|
|
778
|
+
["#5a6dff", "#8a95ff"],
|
|
779
|
+
// 靛蓝
|
|
780
|
+
["#6a54e8", "#9a8af2"],
|
|
781
|
+
// 蓝紫
|
|
776
782
|
["#7b61ff", "#a58bff"],
|
|
777
783
|
// 紫
|
|
778
|
-
["#
|
|
779
|
-
//
|
|
780
|
-
["#
|
|
781
|
-
//
|
|
782
|
-
["#3370ff", "#7ba7ff"],
|
|
783
|
-
// 蓝
|
|
784
|
-
["#e34d8c", "#f289b3"],
|
|
785
|
-
// 粉
|
|
786
|
-
["#0891b2", "#3ec6dd"]
|
|
787
|
-
// 青
|
|
784
|
+
["#4f3fd6", "#7f70ea"],
|
|
785
|
+
// 深紫
|
|
786
|
+
["#d97706", "#f0a640"]
|
|
787
|
+
// 琥珀(暖色点睛,少量出现)
|
|
788
788
|
];
|
|
789
789
|
function hashIndex(text, mod) {
|
|
790
790
|
let h = 0;
|
|
@@ -892,25 +892,57 @@ var MARKET_CSS = `
|
|
|
892
892
|
.xps-mk-list { display: flex; flex-direction: column; }
|
|
893
893
|
.xps-mk-row {
|
|
894
894
|
display: flex; align-items: center; gap: 12px;
|
|
895
|
-
padding: 10px 8px; cursor: pointer;
|
|
895
|
+
padding: 10px 8px 10px 12px; cursor: pointer;
|
|
896
896
|
border: none;
|
|
897
897
|
border-bottom: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);
|
|
898
898
|
border-radius: 0;
|
|
899
|
+
position: relative;
|
|
899
900
|
transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,
|
|
900
901
|
opacity 0.15s ease;
|
|
901
902
|
}
|
|
902
903
|
.xps-mk-row:last-child { border-bottom: none; }
|
|
903
|
-
/*
|
|
904
|
+
/* \u5DE6\u4FA7\u54C1\u724C\u84DD\u6307\u793A\u6761:hover \u65F6\u9732\u51FA,\u7ED9\u7528\u6237\u660E\u786E\u7684\u53EF\u70B9\u51FB\u4FE1\u53F7;
|
|
905
|
+
\u5BBD\u5EA6 2px\u3001r1\u3001inset \u4E0A\u4E0B\u5404\u7559 10px,\u8BA9\u884C\u8FD8\u662F\u90A3\u884C,\u53EA\u662F\u591A\u4E86\u4E00\u9053"\u6307\u9488" */
|
|
906
|
+
.xps-mk-row::before {
|
|
907
|
+
content: '';
|
|
908
|
+
position: absolute;
|
|
909
|
+
left: 0; top: 10px; bottom: 10px;
|
|
910
|
+
width: 2px;
|
|
911
|
+
border-radius: 1px;
|
|
912
|
+
background: var(--dsw-alias-brand-primary, #3370ff);
|
|
913
|
+
opacity: 0;
|
|
914
|
+
transform: scaleY(0.6);
|
|
915
|
+
transition: opacity 0.15s ease, transform 0.15s ease;
|
|
916
|
+
pointer-events: none;
|
|
917
|
+
}
|
|
918
|
+
/* hover / \u6309\u538B\u4E0E\u5DF2\u88C5\u9875\u884C\u540C\u5C42\u7EA7(\u540C\u4E3A\u80CC\u666F\u8F7B\u62AC,\u4E0D\u4E00\u5904\u6D6E\u8D77\u4E00\u5904\u52A0\u6DF1);
|
|
919
|
+
\u540C\u65F6\u70B9\u4EAE\u5DE6\u4FA7\u6307\u793A\u6761 */
|
|
904
920
|
.xps-mk-row:hover {
|
|
905
921
|
background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));
|
|
906
922
|
}
|
|
923
|
+
.xps-mk-row:hover::before {
|
|
924
|
+
opacity: 1;
|
|
925
|
+
transform: scaleY(1);
|
|
926
|
+
}
|
|
907
927
|
.xps-mk-row:active {
|
|
908
928
|
background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));
|
|
909
929
|
}
|
|
930
|
+
.xps-mk-row:active::before {
|
|
931
|
+
opacity: 1;
|
|
932
|
+
transform: scaleY(0.85);
|
|
933
|
+
}
|
|
910
934
|
.xps-mk-row:focus-visible {
|
|
911
935
|
outline: 2px solid var(--dsw-alias-brand-primary, #3370ff);
|
|
912
936
|
outline-offset: -2px;
|
|
913
937
|
}
|
|
938
|
+
.xps-mk-row:focus-visible::before {
|
|
939
|
+
opacity: 1;
|
|
940
|
+
transform: scaleY(1);
|
|
941
|
+
}
|
|
942
|
+
.xps-mk-row:hover .xps-mk-icon {
|
|
943
|
+
transform: scale(1.05);
|
|
944
|
+
box-shadow: 0 2px 6px rgba(31, 35, 41, 0.08);
|
|
945
|
+
}
|
|
914
946
|
.xps-mk-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
915
947
|
.xps-mk-row-title { display: flex; align-items: center; gap: 8px; min-width: 0; }
|
|
916
948
|
/* \u884C\u9898 14/20/500(\u4E0E\u5DF2\u88C5\u9875 .xps-row-title\u3001\u5F00\u53D1\u8005\u9875 .xps-dev-name \u540C\u4E00\u89C4\u683C) */
|
|
@@ -963,6 +995,7 @@ var MARKET_CSS = `
|
|
|
963
995
|
border: none;
|
|
964
996
|
border-radius: 10px; object-fit: cover; overflow: hidden;
|
|
965
997
|
color: var(--dsw-alias-label-secondary, #646a73);
|
|
998
|
+
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
966
999
|
}
|
|
967
1000
|
.xps-mk-icon-fallback {
|
|
968
1001
|
background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, var(--dsw-alias-bg-layer-1, #ffffff));
|
|
@@ -2403,7 +2436,7 @@ function InstalledPage() {
|
|
|
2403
2436
|
Button,
|
|
2404
2437
|
{
|
|
2405
2438
|
size: "small",
|
|
2406
|
-
variant: "
|
|
2439
|
+
variant: "ghost",
|
|
2407
2440
|
onClick: () => setConfirm({ action: "uninstall", plugin }),
|
|
2408
2441
|
children: "\u5378\u8F7D"
|
|
2409
2442
|
}
|
|
@@ -2785,6 +2818,11 @@ function PluginRow(props) {
|
|
|
2785
2818
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
2786
2819
|
var PAGE_SIZE = 10;
|
|
2787
2820
|
var MAX_FULL_PAGES = 7;
|
|
2821
|
+
var cachedQuery = null;
|
|
2822
|
+
var cachedKeyword = "";
|
|
2823
|
+
var cachedItems = null;
|
|
2824
|
+
var cachedTotal = 0;
|
|
2825
|
+
var cachedCategories = null;
|
|
2788
2826
|
function pageSequence(current, totalPages) {
|
|
2789
2827
|
if (totalPages <= 0) return [];
|
|
2790
2828
|
if (totalPages <= MAX_FULL_PAGES) return Array.from({ length: totalPages }, (_, i) => i + 1);
|
|
@@ -2863,18 +2901,20 @@ function MarketPager(props) {
|
|
|
2863
2901
|
}
|
|
2864
2902
|
function MarketPage(props) {
|
|
2865
2903
|
ensureMarketStyles();
|
|
2866
|
-
const [keyword, setKeyword] = (0, import_react7.useState)(
|
|
2867
|
-
const [query, setQuery] = (0, import_react7.useState)(
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
const [
|
|
2871
|
-
const [
|
|
2904
|
+
const [keyword, setKeyword] = (0, import_react7.useState)(cachedKeyword);
|
|
2905
|
+
const [query, setQuery] = (0, import_react7.useState)(
|
|
2906
|
+
cachedQuery ?? { keyword: "", category: "", sort: "downloads", page: 1 }
|
|
2907
|
+
);
|
|
2908
|
+
const [categories, setCategories] = (0, import_react7.useState)(cachedCategories);
|
|
2909
|
+
const [items, setItems] = (0, import_react7.useState)(cachedItems ?? []);
|
|
2910
|
+
const [total, setTotal] = (0, import_react7.useState)(cachedTotal);
|
|
2911
|
+
const [status, setStatus] = (0, import_react7.useState)(cachedItems !== null ? "ready" : "loading");
|
|
2872
2912
|
const [refreshing, setRefreshing] = (0, import_react7.useState)(false);
|
|
2873
2913
|
const [reloadFlag, setReloadFlag] = (0, import_react7.useState)(0);
|
|
2874
2914
|
const [dshVersion, setDshVersion] = (0, import_react7.useState)(null);
|
|
2875
2915
|
const [installedMap, setInstalledMap] = (0, import_react7.useState)(/* @__PURE__ */ new Map());
|
|
2876
2916
|
const seqRef = (0, import_react7.useRef)(0);
|
|
2877
|
-
const itemsRef = (0, import_react7.useRef)([]);
|
|
2917
|
+
const itemsRef = (0, import_react7.useRef)(cachedItems ?? []);
|
|
2878
2918
|
const rootRef = (0, import_react7.useRef)(null);
|
|
2879
2919
|
const scrolledPageRef = (0, import_react7.useRef)(1);
|
|
2880
2920
|
const toasts = useToasts();
|
|
@@ -2898,6 +2938,7 @@ function MarketPage(props) {
|
|
|
2898
2938
|
(0, import_react7.useEffect)(() => {
|
|
2899
2939
|
let alive = true;
|
|
2900
2940
|
getCategories().then((list) => {
|
|
2941
|
+
cachedCategories = list;
|
|
2901
2942
|
if (alive) setCategories(list);
|
|
2902
2943
|
}).catch(() => {
|
|
2903
2944
|
if (alive) setCategories([]);
|
|
@@ -2936,6 +2977,10 @@ function MarketPage(props) {
|
|
|
2936
2977
|
return;
|
|
2937
2978
|
}
|
|
2938
2979
|
itemsRef.current = res.list;
|
|
2980
|
+
cachedQuery = query;
|
|
2981
|
+
cachedKeyword = query.keyword;
|
|
2982
|
+
cachedItems = res.list;
|
|
2983
|
+
cachedTotal = res.total;
|
|
2939
2984
|
setItems(res.list);
|
|
2940
2985
|
setTotal(res.total);
|
|
2941
2986
|
setStatus("ready");
|
|
@@ -3494,7 +3539,7 @@ function PluginDetailPage(props) {
|
|
|
3494
3539
|
}
|
|
3495
3540
|
|
|
3496
3541
|
// src/client/theme.css
|
|
3497
|
-
var theme_default = "/* \u85AA\u4EBA\u85AA\u4E8B\u5E02\u573A client \u4E3B\u9898:\u5BF9\u6807\u5BBF\u4E3B\u5B98\u65B9\u63D2\u4EF6\u7BA1\u7406\u5668(PluginManagerPage.module.css)\u89C6\u89C9\u8BED\u8A00,\n * \u5168\u90E8\u8D70\u5BBF\u4E3B --dsw-alias-* token(\u5E26\u515C\u5E95\u503C,token \u7F3A\u5931\u65F6\u53EF\u72EC\u7ACB\u9884\u89C8)\u3002 */\n\n/* ---------- \u9875\u9762\u9AA8\u67B6 ---------- */\n\n.xps-app {\n display: flex;\n width: 100%;\n height: 100%;\n background: var(--dsw-alias-bg-layer-1, #ffffff);\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n}\n\n/* \u5DE6\u4FA7\u4E8C\u7EA7\u5BFC\u822A(B \xB7 \u56FE\u6807\u5C45\u4E0A\u84DD\u8C03\u7EC6\u7EBF\u98CE:\u5706\u89D2\u5757 r10,\u9009\u4E2D\u6D45\u84DD\u5E95+\u54C1\u724C\u84DD\u5B57) */\n.xps-nav {\n flex: none;\n width: 92px;\n box-sizing: border-box;\n padding: 16px 10px;\n display: flex;\n flex-direction: column;\n gap: 3px;\n border-right: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n}\n\n.xps-nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 3px;\n padding: 9px 0 7px;\n border: none;\n border-radius: 10px;\n background: transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary, #646a73);\n font-family: inherit;\n font-size: 12px;\n line-height: 18px;\n}\n\n.xps-nav-item:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));\n}\n\n.xps-nav-item-active,\n.xps-nav-item-active:hover {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n color: var(--dsw-alias-brand-primary, #3370ff);\n font-weight: 600;\n}\n\n.xps-nav-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n\n.xps-nav-label {\n white-space: nowrap;\n}\n\n/* \u5185\u5BB9\u533A:\u5B98\u65B9\u9875\u540C\u6B3E\u5C45\u4E2D\u5217(28px \u9876 / clamp \u4FA7 / 48px \u5E95,960 \u4E0A\u9650) */\n.xps-content {\n flex: 1;\n min-width: 0;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 28px clamp(24px, 4vw, 48px) 48px;\n}\n\n.xps-content > * {\n width: 100%;\n max-width: 960px;\n box-sizing: border-box;\n}\n\n/* \u9875\u5934:flex space-between,\u6807\u9898 20/28/500,\u526F\u9898 13/20 secondary */\n.xps-page-head {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.xps-page-title {\n margin: 0;\n font-size: 20px;\n line-height: 28px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u6807\u9898\u884C\u5185\u6302\u5FBD\u6807(\u8BA1\u6570\u7B49\u72B6\u6001\u4FE1\u606F\u8DDF\u968F\u6807\u9898,\u4E0D\u6DF7\u8FDB\u53F3\u4E0A\u89D2\u64CD\u4F5C\u533A) */\n.xps-title-with-badges {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.xps-page-intro {\n margin: 4px 0 0;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-page-actions {\n flex: none;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* \u533A\u5757\u9898 14/22/500 */\n.xps-section-title {\n margin: 0;\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* ---------- \u6587\u5B57\u8272\u9636\u5DE5\u5177\u7C7B ---------- */\n\n.xps-text-secondary {\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n/* \u8BF4\u660E/\u8BA1\u6570:12/18 tertiary */\n.xps-text-caption {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u5305\u540D/\u7248\u672C\u53F7\u7B49 mono */\n.xps-mono {\n font-family: var(--dsw-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n}\n\n/* ---------- \u6309\u94AE(\u80F6\u56CA) ---------- */\n\n.xps-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n height: 32px;\n box-sizing: border-box;\n padding: 0 14px;\n border-radius: 16px;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n background: transparent;\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.xps-btn:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n\n.xps-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* \u4E3B\u6309\u94AE(B \u65B9\u5411\u8BC6\u522B\u8272):\u5B9E\u5FC3\u54C1\u724C\u84DD + \u767D\u5B57,hover \u52A0\u6DF1 */\n.xps-btn-primary {\n background: var(--dsw-alias-brand-primary, #3370ff);\n border-color: transparent;\n color: var(--dsw-alias-label-primary-foreground, #ffffff);\n}\n\n.xps-btn-primary:hover:not(:disabled) {\n background: var(--dsw-alias-button-primary-hover, color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 85%, #000000));\n}\n\n/* \u63CF\u8FB9\u4E3B\u6309\u94AE(\u5DF2\u5B89\u88C5/\u66F4\u65B0\u6001):\u54C1\u724C\u84DD\u63CF\u8FB9 + \u84DD\u5B57\u900F\u660E\u5E95 */\n.xps-btn-outline {\n border: 1px solid var(--dsw-alias-brand-primary, #3370ff);\n background: transparent;\n color: var(--dsw-alias-brand-primary, #3370ff);\n}\n\n.xps-btn-outline:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 8%, transparent);\n}\n\n/* \u66F4\u65B0\u6309\u94AE:\u4E0E\u300C\u2191 \u53EF\u66F4\u65B0\u300D\u5FBD\u6807\u540C\u6E90\u7684\u6A59\u8272\u63CF\u8FB9(\u4E0D\u8DDF\u4E3B\u9898 primary \u8D70,\u9ED1\u8272\u4E3B\u9898\u4E0B\u4E5F\u80FD\u548C\u5B89\u88C5\u62C9\u5F00) */\n.xps-btn-update {\n border: 1px solid var(--dsw-alias-state-warn-primary, #d98708);\n background: transparent;\n color: var(--dsw-alias-state-warn-primary, #d98708);\n}\n\n.xps-btn-update:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 10%, transparent);\n}\n\n/* \u5371\u9669\u6309\u94AE:\u590D\u7528\u6B21\u6309\u94AE,\u7EA2\u5B57 + 30% \u7EA2\u6846,hover \u6362\u7EA2 wash */\n.xps-btn-danger {\n color: var(--dsw-alias-state-error-primary, #d83931);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n}\n\n.xps-btn-danger:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 8%, transparent);\n}\n\n.xps-btn-ghost {\n border-color: transparent;\n background: transparent;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-btn-ghost:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-btn-sm {\n height: 26px;\n padding: 0 10px;\n font-size: 12px;\n line-height: 18px;\n border-radius: 13px;\n}\n\n/* \u56FE\u6807\u6309\u94AE:28\xD728 \u5168\u5706 */\n/* \u56FE\u6807\u6309\u94AE:\u4E0E .xps-btn \u540C\u9AD8(32px)\u3001\u540C 0.5px \u8FB9\u6846,\u73AF\u5F62\u5237\u65B0\u7B49\u56FE\u6807\u6309\u94AE\u4E0E\u6587\u5B57\u6309\u94AE\u5E76\u6392\u65F6\u6BD4\u4F8B\u4E00\u81F4 */\n.xps-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n flex: none;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n border-radius: 999px;\n background: transparent;\n color: var(--dsw-alias-label-secondary, #646a73);\n cursor: pointer;\n font-family: inherit;\n font-size: 14px;\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n.xps-icon-btn:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n border-color: var(--dsw-alias-border-l4, #a8abb2);\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-icon-btn:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n transform: scale(0.96);\n}\n\n.xps-icon-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* ---------- \u8F93\u5165\u6846 ---------- */\n\n.xps-input {\n width: 100%;\n box-sizing: border-box;\n height: 32px;\n padding: 0 10px;\n border-radius: 8px;\n border: 0.5px solid var(--dsw-alias-border-l4, #c9cdd4);\n background: var(--dsw-alias-bg-layer-1, #ffffff);\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n outline: none;\n}\n\n.xps-input::placeholder {\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u8F93\u5165\u6846 hover:\u8FB9\u6846\u8F7B\u62AC\u4E00\u6863,\u4E0E focus \u7684\u54C1\u724C\u84DD\u533A\u5206 */\n.xps-input:hover:not(:disabled):not(:focus) {\n border-color: var(--dsw-alias-border-l4, #a8abb2);\n}\n\n.xps-input:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.xps-input:focus {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-brand-primary, #3370ff);\n}\n\n/* ---------- \u5FBD\u6807(\u80F6\u56CA 11/17/500) ---------- */\n\n.xps-badge {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: 999px;\n border: 0.5px solid var(--dsw-alias-border-l3, #dee0e3);\n font-size: 11px;\n line-height: 17px;\n font-weight: 500;\n white-space: nowrap;\n background: var(--dsw-alias-bg-layer-2, #f5f6f7);\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-badge-success {\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 30%, transparent);\n color: var(--dsw-alias-state-success-primary, #1f9d55);\n}\n\n.xps-badge-warning {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 30%, transparent);\n color: var(--dsw-alias-state-warn-primary, #d98708);\n}\n\n.xps-badge-error {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n color: var(--dsw-alias-state-error-primary, #d83931);\n}\n\n.xps-badge-info {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 30%, transparent);\n color: var(--dsw-alias-brand-primary, #3370ff);\n}\n\n/* ---------- \u5217\u8868\u884C(\u53D1\u4E1D\u7EBF\u6E05\u5355\u5F0F:\u4E0E\u5E02\u573A\u884C .xps-mk-row\u3001\u5F00\u53D1\u8005\u884C .xps-dev-item \u540C\u8303\u5F0F) ---------- */\n\n.xps-row-list {\n display: flex;\n flex-direction: column;\n}\n\n.xps-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 8px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 0;\n background: transparent;\n cursor: pointer;\n min-width: 0;\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n/* \u6E05\u5355\u672B\u884C\u53BB\u53D1\u4E1D\u7EBF(\u4E0E .xps-dev-item:last-child \u540C\u505A\u6CD5) */\n.xps-row-list > .xps-row:last-child {\n border-bottom: none;\n}\n\n/* \u884C hover:\u6574\u884C\u80CC\u666F\u8F7B\u62AC,\u4E0E\u5E02\u573A\u884C\u540C\u5C42\u7EA7 */\n.xps-row:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n\n/* \u56FE\u6807\u6846 40\xD740\u30010.5px hairline\u3001r10 */\n.xps-row-icon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n border-radius: 10px;\n color: var(--dsw-alias-label-secondary, #646a73);\n font-size: 18px;\n line-height: 1;\n}\n\n.xps-row-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.xps-row-title {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n/* \u884C\u9898 14/20/500(\u5B98\u65B9\u884C\u6807\u9898\u89C4\u683C)\u3002\u5C55\u793A\u540D\u4E0E\u300C\u56DE\u9000\u7684\u5305\u540D\u300D\u90FD\u7528\u666E\u901A\u5B57\u4F53:\n * \u6807\u8BC6\u7B26\u53EA\u5728\u540E\u9762\u7684 .xps-row-pkg \u91CC\u8D70\u7B49\u5BBD,\u4E0E\u5E02\u573A/\u5F00\u53D1\u8005\u9875\u540C\u4E00\u89C4\u5219\u3002 */\n.xps-row-name {\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u5C55\u793A\u540D\u4E4B\u540E\u7684\u5305\u540D(\u6807\u8BC6\u7B26,\u7B49\u5BBD\u5C0F\u5B57 11px;\u4E0E .xps-mk-row-pkg / .xps-dev-pkg \u540C\u89C4\u683C) */\n.xps-row-pkg {\n flex: none;\n font-size: 11px;\n line-height: 17px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u884C\u63CF\u8FF0 13/18 tertiary + \u5355\u884C\u622A\u65AD */\n.xps-row-desc {\n font-size: 13px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.xps-row-end {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------- \u6A2A\u5E45/\u63D0\u793A\u6761 ---------- */\n\n.xps-banner {\n margin: 0 0 12px;\n padding: 8px 12px;\n border-radius: 10px;\n font-size: 12px;\n line-height: 18px;\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 12%, var(--dsw-alias-bg-layer-1, #ffffff));\n border: 0.5px solid color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 30%, transparent);\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-banner-error {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n color: var(--dsw-alias-state-error-primary, #d83931);\n}\n\n/* ---------- \u7A7A\u6001(dashed 0.5px l2 + r8 + pad 18 \u5C45\u4E2D 13 tertiary) ---------- */\n\n.xps-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n /* \u56FE\u6807 / \u6807\u9898 / \u63CF\u8FF0\u7EDF\u4E00 8px \u8282\u594F */\n gap: 8px;\n padding: 18px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n font-size: 13px;\n line-height: 20px;\n text-align: center;\n}\n\n.xps-empty-icon {\n font-size: 24px;\n line-height: 1;\n}\n\n.xps-empty-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u6309\u94AE\u4E0E\u4E0A\u65B9\u6587\u6848\u5408\u8BA1 12px(\u7236\u7EA7 gap 8 + \u8FD9\u91CC 4) */\n.xps-empty-action {\n margin-top: 4px;\n}\n\n/* \u300C\u6211\u7684\u300D\u9875\u672A\u767B\u5F55\u5F15\u5BFC\u5361:\u6D41\u7A0B\u8BF4\u660E + \u524D\u5F80\u5F00\u53D1\u8005\u5E73\u53F0(\u65E0\u4EE4\u724C\u8F93\u5165\u5165\u53E3,\u767B\u5F55\u53EA\u5728\u8BBE\u7F6E\u91CC) */\n.xps-guide {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px 24px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n}\n\n.xps-guide-title {\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-guide-desc {\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-guide-steps {\n margin: 0;\n padding-left: 20px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-guide-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n\n.xps-guide-url {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n word-break: break-all;\n}\n\n/* ---------- \u4E0A\u4F20\u8868\u5355(\u6253\u5305\u63D0\u4EA4) ---------- */\n\n/* \u62D6\u5165 / \u9009\u62E9\u533A:dashed \u5927\u9776\u533A;\u62D6\u60AC\u65F6\u6574\u533A\u54C1\u724C\u84DD\u63CF\u8FB9 + \u6D45\u84DD wash(.xps-up-drop-over) */\n.xps-up-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 28px 16px;\n margin-bottom: 12px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l4, #c9cdd4);\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-drop:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.04));\n}\n\n.xps-up-drop-over,\n.xps-up-drop-over:hover {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 8%, transparent);\n}\n\n.xps-up-drop-icon {\n font-size: 28px;\n line-height: 1;\n}\n\n.xps-up-drop-title {\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-drop-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n\n/* \u5206\u7EC4\u5361\u7247:\u8BC6\u522B\u7ED3\u679C / \u63D2\u4EF6\u4FE1\u606F\u5404\u4E00\u5F20,\u66FF\u4EE3\u6563\u843D\u7684\u884C\u5185\u8FB9\u8DDD */\n.xps-up-card {\n padding: 14px 16px;\n margin-bottom: 12px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 10px;\n}\n\n.xps-up-card-actions {\n margin-left: auto;\n display: flex;\n gap: 4px;\n}\n\n/* \u4E0A\u4F20\u9875\u53CC\u680F:\u5DE6\u300C\u9009\u62E9\u5185\u5BB9 + \u8BC6\u522B\u7ED3\u679C\u300D\u53F3\u300C\u63D2\u4EF6\u4FE1\u606F + \u63D0\u4EA4\u300D,\u4E0E\u5176\u4ED6\u9875\u5171\u7528\u6807\u51C6 960 \u5217\u3002\n * \u5B50\u5143\u7D20\u76F4\u63A5\u505A grid item \u5E76\u663E\u5F0F\u5B9A\u4F4D:\u5DE6\u680F 1 \u5217\u4E09\u4E2A\u5757,\u53F3\u680F 2 \u5217\u4E24\u4E2A\u5757(r2-5 \u62C9\u4F38),\n * \u4E24\u680F\u5E95\u8FB9\u5929\u7136\u5BF9\u9F50;\u7A84\u5C4F(<880px)\u9000\u5316\u4E3A\u5355\u5217\u3001\u6309 DOM \u987A\u5E8F\u5806\u53E0 */\n.xps-up-layout {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);\n gap: 16px 16px;\n align-items: stretch;\n}\n\n/* \u76F4\u63A5\u5B50\u5143\u7D20\u5373\u7F51\u683C\u9879:\u5757\u81EA\u8EAB\u7684\u5916\u8FB9\u8DDD\u5F52\u96F6,\u95F4\u8DDD\u7EDF\u4E00\u4EA4\u7ED9 grid gap */\n.xps-up-side-drop,\n.xps-up-side-notice,\n.xps-up-side-scan,\n.xps-up-main-form {\n margin-bottom: 0;\n}\n\n.xps-up-layout > * {\n min-width: 0;\n min-height: 0;\n}\n\n.xps-up-side-drop { grid-column: 1; grid-row: 1; }\n.xps-up-side-notice { grid-column: 1; grid-row: 2; }\n.xps-up-side-scan { grid-column: 1; grid-row: 3 / 6; }\n.xps-up-main-form { grid-column: 2; grid-row: 1 / 6; }\n.xps-up-main-submit { grid-column: 2; grid-row: 6; }\n\n/* \u7A84\u5C4F:\u53CC\u680F\u5148\u4E8E\u8868\u5355\u6805\u683C\u584C\u6210\u5355\u5217,\u907F\u514D\u5B57\u6BB5\u88AB\u538B\u5230\u6362\u884C\u96BE\u8BFB */\n@media (max-width: 1120px) {\n .xps-up-grid {\n grid-template-columns: 1fr;\n }\n}\n\n@media (max-width: 1024px) {\n .xps-up-layout {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .xps-up-layout > [class^='xps-up-'],\n .xps-up-layout > [class*=' xps-up-'] {\n grid-column: auto;\n grid-row: auto;\n }\n}\n\n/* \u53F3\u680F\u7A7A\u6001:\u4E0E\u5DE6\u4FA7\u62D6\u5165\u533A\u540C\u6B3E\u865A\u7EBF\u5361\u7247,\u7B49\u9AD8\u5C45\u4E2D;\u70B9\u51FB\u7B49\u540C\u300C\u9009\u62E9\u76EE\u5F55\u300D\u3002\n * \u62C9\u4F38\u7531 grid item \u81EA\u8EAB\u5B8C\u6210(display: flex \u6491\u6EE1\u5206\u914D\u5230\u7684\u884C),\u4E0D\u4F9D\u8D56\u767E\u5206\u6BD4\u9AD8\u5EA6 */\n.xps-up-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n box-sizing: border-box;\n align-self: stretch;\n height: 100%;\n min-height: 200px;\n padding: 28px 16px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-empty:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.04));\n}\n\n/* \u7A7A\u6001\u53CC\u5361:\u5DE6\u62D6\u5165\u533A + \u53F3\u6D41\u7A0B\u8BF4\u660E,\u5355\u884C\u7F51\u683C\u5929\u7136\u7B49\u9AD8(\u5404\u81EA stretch) */\n.xps-up-empty-grid {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);\n gap: 16px;\n align-items: stretch;\n}\n\n.xps-up-empty-grid .xps-up-drop {\n justify-content: center;\n margin-bottom: 0;\n}\n\n/* \u6D41\u7A0B\u8BF4\u660E\u5361\u53EA\u505A\u5C55\u793A:\u53BB\u6389\u624B\u578B\u4E0E\u60AC\u505C\u53CD\u9988 */\n.xps-up-empty-static,\n.xps-up-empty-static:hover {\n justify-content: center;\n cursor: default;\n background: transparent;\n}\n\n@media (max-width: 1024px) {\n .xps-up-empty-grid {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n/* \u7B2C 1 \u6B65\u5361\u91CC\u300C\u8FD8\u5DEE\u4EE3\u7801\u76EE\u5F55\u300D\u7684\u5C31\u5730\u63D0\u793A\u6761 */\n.xps-up-source-missing {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 8px;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-warning-primary, #b25e09);\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #dc6803) 8%, transparent);\n}\n\n/* \u7A7A\u6001\u53F3\u680F\u7684\u53D1\u5E03\u6D41\u7A0B:\u586B\u5145\u539F\u672C\u7684\u6B7B\u7A7A\u95F4,\u517C\u505A\u5F15\u5BFC(\u5DE6\u5BF9\u9F50\u6E05\u5355,\u5C45\u4E2D\u653E\u7F6E) */\n.xps-up-flow {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n max-width: 380px;\n padding: 8px 4px;\n}\n\n.xps-up-flow-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-flow-item {\n display: flex;\n gap: 10px;\n text-align: left;\n}\n\n.xps-up-flow-no {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-top: 1px;\n border-radius: 50%;\n font-size: 11px;\n font-weight: 500;\n color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, transparent);\n}\n\n.xps-up-flow-main {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.xps-up-flow-item-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-flow-item-desc {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u5361\u7247\u6807\u9898\u4E0A\u7684\u6B65\u9AA4\u5FBD\u6807(\u7B2C 1 \u6B65 / \u7B2C 2 \u6B65),\u5EFA\u7ACB\u300C\u9009\u5185\u5BB9 \u2192 \u586B\u4FE1\u606F\u300D\u7684\u6D41\u7A0B\u611F */\n.xps-up-step-chip {\n flex: none;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 11px;\n line-height: 18px;\n font-weight: 500;\n color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, transparent);\n}\n\n/* \u9875\u811A\u300C\u53D1\u5E03\u8BF4\u660E\u300D:\u5E38\u9A7B\u5168\u6587\u8BF4\u660E\u5361 */\n.xps-up-guide {\n margin-top: 20px;\n padding: 16px 20px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 10px;\n}\n\n.xps-up-guide-title {\n margin-bottom: 10px;\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-guide ol {\n margin: 0;\n padding-left: 20px;\n display: grid;\n gap: 8px;\n}\n\n.xps-up-guide li {\n font-size: 12px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #4e5460);\n}\n\n.xps-up-guide li::marker {\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n.xps-up-guide b {\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u8BC6\u522B\u7ED3\u679C\u5361\u6807\u9898:\u957F\u6587\u6848\u5141\u8BB8\u6362\u884C,\u8865\u9009\u6309\u94AE\u56FA\u5B9A\u53F3\u4FA7\u4E0D\u53C2\u4E0E\u6362\u884C\u6324\u538B */\n.xps-up-card-title {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 10px;\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u8865\u9009\u6309\u94AE\u56FA\u5B9A\u53F3\u4FA7;\u6807\u9898\u8BCD\u4E0D\u6362\u884C(\u53EA\u6709\u6807\u9898\u5355\u9879\u65F6\u4E0D\u53D7 margin-left:auto \u8BEF\u4F24) */\n.xps-up-card-title > .xps-up-card-actions {\n flex: none;\n margin-left: auto;\n}\n\n.xps-up-card-title > span:first-child {\n flex: none;\n}\n\n/* \u8868\u5355\u6805\u683C:\u4E24\u5217\u4E00\u884C(\u5355\u9879\u7528 .xps-up-grid-single \u6536\u6210\u6574\u884C)\u3002\n * align-items: end:\u5DE6\u53F3\u5B57\u6BB5\u6807\u7B7E\u884C\u6570\u4E0D\u540C\u65F6\u8F93\u5165\u6846\u5E95\u8FB9\u5BF9\u9F50,\u6807\u7B7E\u5404\u81EA\u5411\u4E0A\u751F\u957F */\n.xps-up-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px 12px;\n margin-bottom: 10px;\n align-items: end;\n}\n\n.xps-up-grid-single {\n grid-template-columns: 1fr;\n}\n\n/* \u4EA7\u7269 / \u6E90\u7801\u5019\u9009\u884C:radio + \u56FE\u6807 + \u540D\u79F0(\u4E00\u884C) + \u76F8\u5BF9\u8DEF\u5F84(\u5C0F\u5B57\u4E00\u884C,\u8D85\u957F\u622A\u65AD);\n * \u9009\u4E2D\u6001\u54C1\u724C\u84DD\u63CF\u8FB9 */\n.xps-up-candidate {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n margin-bottom: 4px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n min-width: 0;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-candidate:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n\n.xps-up-candidate-active,\n.xps-up-candidate-active:hover {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 6%, transparent);\n}\n\n/* radio / \u56FE\u6807\u4E0D\u53C2\u4E0E\u6536\u7F29 */\n.xps-up-candidate > input,\n.xps-up-candidate > span:first-of-type {\n flex: none;\n}\n\n/* \u540D\u79F0 + \u8DEF\u5F84\u4E24\u884C\u5757:\u5360\u6EE1\u5269\u4F59\u5BBD\u5EA6,\u5185\u90E8\u5404\u81EA\u622A\u65AD */\n.xps-up-candidate-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.xps-up-candidate-name {\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.xps-up-candidate-path {\n font-size: 12px;\n line-height: 17px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n direction: rtl;\n text-align: left;\n}\n\n.xps-up-candidate-path > bdi {\n direction: ltr;\n unicode-bidi: isolate;\n}\n\n/* ---------- \u9AA8\u67B6\u5C4F ---------- */\n\n.xps-skeleton-group {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.xps-skeleton {\n height: 56px;\n border-radius: 12px;\n background: linear-gradient(\n 90deg,\n var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.05)) 25%,\n var(--dsw-alias-border-l2, rgba(31, 35, 41, 0.1)) 37%,\n var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.05)) 63%\n );\n background-size: 400% 100%;\n animation: xps-skeleton-loading 1.4s ease infinite;\n}\n\n@keyframes xps-skeleton-loading {\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0 50%;\n }\n}\n\n/* ---------- Toast ---------- */\n\n.xps-toast-host {\n position: fixed;\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n gap: 8px;\n z-index: 9999;\n}\n\n.xps-toast {\n padding: 8px 14px;\n border-radius: 10px;\n font-size: 13px;\n line-height: 20px;\n /* \u591A\u884C\u63D0\u793A\u4E0D\u88AB\u6298\u53E0\u6210\u4E00\u6BB5(\u957F\u6587\u6848\u6539\u8D70 .xps-dialog-pre,\u8FD9\u91CC\u515C\u4F4F\u77ED\u7684\u591A\u884C\u63D0\u793A) */\n white-space: pre-wrap;\n background: var(--dsw-alias-bg-layer-3, #f0f1f2);\n color: var(--dsw-alias-label-primary, #1f2329);\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n box-shadow: 0 4px 16px var(--dsw-alias-bg-mask-1, rgba(0, 0, 0, 0.12));\n cursor: pointer;\n /* \u5165\u573A:\u6DE1\u5165 + \u8F7B\u5FAE\u4E0A\u79FB(\u79BB\u573A\u7531 useToasts \u76F4\u63A5\u4ECE\u5217\u8868\u79FB\u9664,\u4E0D\u505A\u5EF6\u8FDF\u5378\u8F7D) */\n animation: xps-fade-slide-in 0.15s ease-out;\n}\n\n@keyframes xps-fade-slide-in {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.xps-toast-success {\n border-color: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 30%, transparent);\n}\n\n.xps-toast-error {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n}\n\n/* ---------- \u5BF9\u8BDD\u6846 ---------- */\n\n.xps-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--dsw-alias-bg-mask-2, rgba(0, 0, 0, 0.45));\n animation: xps-fade-in 0.15s ease-out;\n}\n\n@keyframes xps-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.xps-dialog {\n width: 360px;\n padding: 16px 20px;\n border-radius: 12px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n background: var(--dsw-alias-bg-layer-3, #ffffff);\n box-shadow: 0 8px 32px var(--dsw-alias-bg-mask-1, rgba(0, 0, 0, 0.18));\n /* \u5165\u573A:\u6DE1\u5165 + 0.98 \u2192 1 \u8F7B\u5FAE\u653E\u5927 */\n animation: xps-dialog-in 0.15s ease-out;\n}\n\n@keyframes xps-dialog-in {\n from { opacity: 0; transform: scale(0.98); }\n to { opacity: 1; transform: scale(1); }\n}\n\n.xps-dialog-title {\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n margin-bottom: 8px;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-dialog-body {\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n margin-bottom: 16px;\n}\n\n.xps-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\n/* \u957F\u6587\u672C\u5BF9\u8BDD\u6846(\u5B89\u88C5\u5931\u8D25\u7684\u591A\u884C\u65E5\u5FD7\u3001\u5F85\u624B\u52A8\u6267\u884C\u7684\u547D\u4EE4):\u6BD4\u901A\u7528\u5BF9\u8BDD\u6846\u5BBD,\u7A84\u5C4F\u81EA\u52A8\u6536\u7A84 */\n.xps-dialog.xps-dialog-wide {\n width: 520px;\n max-width: calc(100vw - 32px);\n box-sizing: border-box;\n}\n\n/* \u6B63\u6587\u539F\u6587\u5757:\u4FDD\u7559\u6362\u884C\u4E0E\u7F29\u8FDB,\u8FC7\u957F\u65F6\u5185\u90E8\u6EDA\u52A8,\u4E0D\u628A\u7A97\u53E3\u6491\u7206;\u53EF\u624B\u52A8\u9009\u4E2D\u590D\u5236 */\n.xps-dialog-pre {\n white-space: pre-wrap;\n max-height: 320px;\n overflow: auto;\n padding: 10px 12px;\n border-radius: 8px;\n background: var(--dsw-alias-bg-layer-2, #f5f6f7);\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n font-family: var(--dsw-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n line-height: 1.6;\n color: var(--dsw-alias-label-primary, #1f2329);\n text-align: left;\n word-break: break-word;\n user-select: text;\n}\n\n/* ---------- \u9875\u9762\u5360\u4F4D(\u9AA8\u67B6\u671F) ---------- */\n\n.xps-page-placeholder {\n padding: 18px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* ---------- \u4EA4\u4E92\u72B6\u6001(\u5168\u7AD9\u7EDF\u4E00:\u8FC7\u6E21 / \u6309\u538B / \u7126\u70B9\u73AF) ----------\n * \u53EA\u8FC7\u6E21\u989C\u8272\u4E0E\u900F\u660E\u5EA6,\u4E0D\u505A\u4F4D\u79FB\u7F29\u653E\u52A8\u753B;\u6309\u538B\u7528\u4E00\u6863\u66F4\u6DF1\u7684 active \u5E95\u8272 + \u6781\u8F7B\u5FAE\u4E0B\u538B\u3002\n * \u9875\u9762\u79C1\u6709\u6837\u5F0F(market / admin)\u5728\u672C\u6587\u4EF6\u4E4B\u540E\u6CE8\u5165,\u5404\u81EA\u7684\u8FC7\u6E21\u4E0E\u6309\u538B\u6001\u5199\u5728\u5404\u81EA\u6A21\u5757\u91CC\u3002\n */\n\n/* .xps-row \u7684\u8FC7\u6E21\u5199\u5728\u81EA\u5DF1\u7684\u57FA\u7840\u89C4\u5219\u91CC(\u89C1\u4E0A),\u6B64\u5904\u4E0D\u518D\u91CD\u590D\u58F0\u660E */\n.xps-btn,\n.xps-icon-btn,\n.xps-nav-item,\n.xps-input {\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n/* \u6309\u538B:\u80CC\u666F\u518D\u6DF1\u4E00\u6863(interactive-bg-active);\u4E3B/\u63CF\u8FB9/\u5371\u9669\u6309\u94AE\u6309\u5404\u81EA\u8272\u7CFB\u52A0\u6DF1 */\n.xps-btn:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n transform: scale(0.98);\n}\n\n.xps-btn-primary:active:not(:disabled) {\n /* \u4E3B\u6309\u94AE\u6CA1\u6709 -active token(\u53EA\u6709 -fill / -hover),\u6309\u538B\u76F4\u63A5\u6309\u54C1\u724C\u8272\u52A0\u6DF1 */\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 78%, #000000);\n}\n\n.xps-btn-outline:active:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 16%, transparent);\n}\n\n.xps-btn-danger:active:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 16%, transparent);\n}\n\n.xps-btn-ghost:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n.xps-icon-btn:active:not(:disabled),\n.xps-nav-item:active {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n.xps-row:active {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n/* \u7126\u70B9\u73AF:\u53EA\u5728\u952E\u76D8\u5BFC\u822A\u65F6\u51FA\u73B0(:focus-visible),\u9F20\u6807\u70B9\u51FB\u4E0D\u753B\u73AF */\n.xps-btn:focus-visible,\n.xps-icon-btn:focus-visible,\n.xps-nav-item:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary, #3370ff);\n outline-offset: 2px;\n}\n\n/* \u6574\u884C\u5361\u7247\u7528\u5185\u63CF\u8FB9,\u907F\u514D\u8D34\u5230\u5185\u5BB9\u533A\u8FB9\u7F18\u88AB\u88C1\u6389 */\n.xps-row:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary, #3370ff);\n outline-offset: -2px;\n}\n\n/* \u7981\u7528\u6001:\u9664\u5404\u7EC4\u4EF6\u81EA\u5DF1\u7684 opacity \u5916,\u6E38\u6807\u7EDF\u4E00\u515C\u5E95 */\n.xps-app :disabled {\n cursor: not-allowed;\n}\n\n/* \u52A8\u6548\u504F\u597D:reduce \u65F6\u5173\u6389\u8FC7\u6E21\u4E0E\u5165\u573A\u52A8\u753B(\u6309\u538B\u7684\u7F29\u653E\u4E5F\u4E00\u5E76\u53D6\u6D88) */\n@media (prefers-reduced-motion: reduce) {\n .xps-btn,\n .xps-icon-btn,\n .xps-nav-item,\n .xps-input,\n .xps-row,\n .xps-toast,\n .xps-overlay,\n .xps-dialog {\n transition: none;\n animation: none;\n }\n\n .xps-btn:active:not(:disabled) {\n transform: none;\n }\n}\n";
|
|
3542
|
+
var theme_default = "/* \u85AA\u4EBA\u85AA\u4E8B\u5E02\u573A client \u4E3B\u9898:\u5BF9\u6807\u5BBF\u4E3B\u5B98\u65B9\u63D2\u4EF6\u7BA1\u7406\u5668(PluginManagerPage.module.css)\u89C6\u89C9\u8BED\u8A00,\n * \u5168\u90E8\u8D70\u5BBF\u4E3B --dsw-alias-* token(\u5E26\u515C\u5E95\u503C,token \u7F3A\u5931\u65F6\u53EF\u72EC\u7ACB\u9884\u89C8)\u3002 */\n\n/* ---------- \u9875\u9762\u9AA8\u67B6 ---------- */\n\n.xps-app {\n display: flex;\n width: 100%;\n height: 100%;\n background: var(--dsw-alias-bg-layer-1, #ffffff);\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n}\n\n/* \u5DE6\u4FA7\u4E8C\u7EA7\u5BFC\u822A(B \xB7 \u56FE\u6807\u5C45\u4E0A\u84DD\u8C03\u7EC6\u7EBF\u98CE:\u5706\u89D2\u5757 r10,\u9009\u4E2D\u6D45\u84DD\u5E95+\u54C1\u724C\u84DD\u5B57) */\n.xps-nav {\n flex: none;\n width: 92px;\n box-sizing: border-box;\n padding: 16px 10px;\n display: flex;\n flex-direction: column;\n gap: 3px;\n border-right: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n}\n\n.xps-nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 3px;\n padding: 9px 0 7px;\n border: none;\n border-radius: 10px;\n background: transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary, #646a73);\n font-family: inherit;\n font-size: 12px;\n line-height: 18px;\n}\n\n.xps-nav-item:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));\n}\n\n.xps-nav-item-active,\n.xps-nav-item-active:hover {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n color: var(--dsw-alias-brand-primary, #3370ff);\n font-weight: 600;\n}\n\n.xps-nav-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n\n.xps-nav-label {\n white-space: nowrap;\n}\n\n/* \u5185\u5BB9\u533A:\u5B98\u65B9\u9875\u540C\u6B3E\u5C45\u4E2D\u5217(28px \u9876 / clamp \u4FA7 / 48px \u5E95,960 \u4E0A\u9650) */\n.xps-content {\n flex: 1;\n min-width: 0;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 28px clamp(24px, 4vw, 48px) 48px;\n}\n\n.xps-content > * {\n width: 100%;\n max-width: 960px;\n box-sizing: border-box;\n}\n\n/* \u9875\u5934:flex space-between,\u6807\u9898 20/28/500,\u526F\u9898 13/20 secondary */\n.xps-page-head {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.xps-page-title {\n margin: 0;\n font-size: 20px;\n line-height: 28px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u6807\u9898\u884C\u5185\u6302\u5FBD\u6807(\u8BA1\u6570\u7B49\u72B6\u6001\u4FE1\u606F\u8DDF\u968F\u6807\u9898,\u4E0D\u6DF7\u8FDB\u53F3\u4E0A\u89D2\u64CD\u4F5C\u533A) */\n.xps-title-with-badges {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.xps-page-intro {\n margin: 4px 0 0;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-page-actions {\n flex: none;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* \u533A\u5757\u9898 14/22/500 */\n.xps-section-title {\n margin: 0;\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* ---------- \u6587\u5B57\u8272\u9636\u5DE5\u5177\u7C7B ---------- */\n\n.xps-text-secondary {\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n/* \u8BF4\u660E/\u8BA1\u6570:12/18 tertiary */\n.xps-text-caption {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u5305\u540D/\u7248\u672C\u53F7\u7B49 mono */\n.xps-mono {\n font-family: var(--dsw-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n}\n\n/* ---------- \u6309\u94AE(\u80F6\u56CA) ---------- */\n\n.xps-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n height: 32px;\n box-sizing: border-box;\n padding: 0 14px;\n border-radius: 16px;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n background: transparent;\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.xps-btn:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n\n.xps-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* \u4E3B\u6309\u94AE(B \u65B9\u5411\u8BC6\u522B\u8272):\u5B9E\u5FC3\u54C1\u724C\u84DD + \u767D\u5B57,hover \u52A0\u6DF1 */\n.xps-btn-primary {\n background: var(--dsw-alias-brand-primary, #3370ff);\n border-color: transparent;\n color: var(--dsw-alias-label-primary-foreground, #ffffff);\n}\n\n.xps-btn-primary:hover:not(:disabled) {\n background: var(--dsw-alias-button-primary-hover, color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 85%, #000000));\n}\n\n/* \u63CF\u8FB9\u4E3B\u6309\u94AE(\u5DF2\u5B89\u88C5/\u66F4\u65B0\u6001):\u54C1\u724C\u84DD\u63CF\u8FB9 + \u84DD\u5B57\u900F\u660E\u5E95 */\n.xps-btn-outline {\n border: 1px solid var(--dsw-alias-brand-primary, #3370ff);\n background: transparent;\n color: var(--dsw-alias-brand-primary, #3370ff);\n}\n\n.xps-btn-outline:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 8%, transparent);\n}\n\n/* \u66F4\u65B0\u6309\u94AE:\u4E0E\u300C\u2191 \u53EF\u66F4\u65B0\u300D\u5FBD\u6807\u540C\u6E90\u7684\u6A59\u8272\u63CF\u8FB9(\u4E0D\u8DDF\u4E3B\u9898 primary \u8D70,\u9ED1\u8272\u4E3B\u9898\u4E0B\u4E5F\u80FD\u548C\u5B89\u88C5\u62C9\u5F00) */\n.xps-btn-update {\n border: 1px solid var(--dsw-alias-state-warn-primary, #d98708);\n background: transparent;\n color: var(--dsw-alias-state-warn-primary, #d98708);\n}\n\n.xps-btn-update:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 10%, transparent);\n}\n\n/* \u5371\u9669\u6309\u94AE:\u590D\u7528\u6B21\u6309\u94AE,\u7EA2\u5B57 + 30% \u7EA2\u6846,hover \u6362\u7EA2 wash */\n.xps-btn-danger {\n color: var(--dsw-alias-state-error-primary, #d83931);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n}\n\n.xps-btn-danger:hover:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 8%, transparent);\n}\n\n.xps-btn-ghost {\n border-color: transparent;\n background: transparent;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-btn-ghost:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-btn-sm {\n height: 26px;\n padding: 0 10px;\n font-size: 12px;\n line-height: 18px;\n border-radius: 13px;\n}\n\n/* \u56FE\u6807\u6309\u94AE:28\xD728 \u5168\u5706 */\n/* \u56FE\u6807\u6309\u94AE:\u4E0E .xps-btn \u540C\u9AD8(32px)\u3001\u540C 0.5px \u8FB9\u6846,\u73AF\u5F62\u5237\u65B0\u7B49\u56FE\u6807\u6309\u94AE\u4E0E\u6587\u5B57\u6309\u94AE\u5E76\u6392\u65F6\u6BD4\u4F8B\u4E00\u81F4 */\n.xps-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n flex: none;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n border-radius: 999px;\n background: transparent;\n color: var(--dsw-alias-label-secondary, #646a73);\n cursor: pointer;\n font-family: inherit;\n font-size: 14px;\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n.xps-icon-btn:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n border-color: var(--dsw-alias-border-l4, #a8abb2);\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-icon-btn:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n transform: scale(0.96);\n}\n\n.xps-icon-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* ---------- \u8F93\u5165\u6846 ---------- */\n\n.xps-input {\n width: 100%;\n box-sizing: border-box;\n height: 32px;\n padding: 0 10px;\n border-radius: 8px;\n border: 0.5px solid var(--dsw-alias-border-l4, #c9cdd4);\n background: var(--dsw-alias-bg-layer-1, #ffffff);\n color: var(--dsw-alias-label-primary, #1f2329);\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n outline: none;\n}\n\n.xps-input::placeholder {\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u8F93\u5165\u6846 hover:\u8FB9\u6846\u8F7B\u62AC\u4E00\u6863,\u4E0E focus \u7684\u54C1\u724C\u84DD\u533A\u5206 */\n.xps-input:hover:not(:disabled):not(:focus) {\n border-color: var(--dsw-alias-border-l4, #a8abb2);\n}\n\n.xps-input:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.xps-input:focus {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-brand-primary, #3370ff);\n}\n\n/* ---------- \u5FBD\u6807(\u80F6\u56CA 11/17/500) ---------- */\n\n.xps-badge {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: 999px;\n border: 0.5px solid var(--dsw-alias-border-l3, #dee0e3);\n font-size: 11px;\n line-height: 17px;\n font-weight: 500;\n white-space: nowrap;\n background: var(--dsw-alias-bg-layer-2, #f5f6f7);\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-badge-success {\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 30%, transparent);\n color: var(--dsw-alias-state-success-primary, #1f9d55);\n}\n\n.xps-badge-warning {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 30%, transparent);\n color: var(--dsw-alias-state-warn-primary, #d98708);\n}\n\n.xps-badge-error {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n color: var(--dsw-alias-state-error-primary, #d83931);\n}\n\n.xps-badge-info {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 30%, transparent);\n color: var(--dsw-alias-brand-primary, #3370ff);\n}\n\n/* ---------- \u5217\u8868\u884C(\u53D1\u4E1D\u7EBF\u6E05\u5355\u5F0F:\u4E0E\u5E02\u573A\u884C .xps-mk-row\u3001\u5F00\u53D1\u8005\u884C .xps-dev-item \u540C\u8303\u5F0F) ---------- */\n\n.xps-row-list {\n display: flex;\n flex-direction: column;\n}\n\n.xps-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 8px 10px 12px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 0;\n background: transparent;\n cursor: pointer;\n min-width: 0;\n position: relative;\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n/* \u6E05\u5355\u672B\u884C\u53BB\u53D1\u4E1D\u7EBF(\u4E0E .xps-dev-item:last-child \u540C\u505A\u6CD5) */\n.xps-row-list > .xps-row:last-child {\n border-bottom: none;\n}\n\n/* \u5DE6\u4FA7\u54C1\u724C\u84DD\u6307\u793A\u6761,\u4E0E\u5E02\u573A\u884C .xps-mk-row \u540C\u8303\u5F0F */\n.xps-row::before {\n content: '';\n position: absolute;\n left: 0; top: 10px; bottom: 10px;\n width: 2px;\n border-radius: 1px;\n background: var(--dsw-alias-brand-primary, #3370ff);\n opacity: 0;\n transform: scaleY(0.6);\n transition: opacity 0.15s ease, transform 0.15s ease;\n pointer-events: none;\n}\n\n/* \u884C hover:\u6574\u884C\u80CC\u666F\u8F7B\u62AC + \u5DE6\u4FA7\u6307\u793A\u6761 */\n.xps-row:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n.xps-row:hover::before {\n opacity: 1;\n transform: scaleY(1);\n}\n\n/* \u56FE\u6807\u6846 40\xD740\u30010.5px hairline\u3001r10 */\n.xps-row-icon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border: 0.5px solid var(--dsw-alias-border-l3, #d0d3d9);\n border-radius: 10px;\n color: var(--dsw-alias-label-secondary, #646a73);\n font-size: 18px;\n line-height: 1;\n}\n\n.xps-row-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.xps-row-title {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n/* \u884C\u9898 14/20/500(\u5B98\u65B9\u884C\u6807\u9898\u89C4\u683C)\u3002\u5C55\u793A\u540D\u4E0E\u300C\u56DE\u9000\u7684\u5305\u540D\u300D\u90FD\u7528\u666E\u901A\u5B57\u4F53:\n * \u6807\u8BC6\u7B26\u53EA\u5728\u540E\u9762\u7684 .xps-row-pkg \u91CC\u8D70\u7B49\u5BBD,\u4E0E\u5E02\u573A/\u5F00\u53D1\u8005\u9875\u540C\u4E00\u89C4\u5219\u3002 */\n.xps-row-name {\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u5C55\u793A\u540D\u4E4B\u540E\u7684\u5305\u540D(\u6807\u8BC6\u7B26,\u7B49\u5BBD\u5C0F\u5B57 11px;\u4E0E .xps-mk-row-pkg / .xps-dev-pkg \u540C\u89C4\u683C) */\n.xps-row-pkg {\n flex: none;\n font-size: 11px;\n line-height: 17px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u884C\u63CF\u8FF0 13/18 tertiary + \u5355\u884C\u622A\u65AD */\n.xps-row-desc {\n font-size: 13px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.xps-row-end {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------- \u6A2A\u5E45/\u63D0\u793A\u6761 ---------- */\n\n.xps-banner {\n margin: 0 0 12px;\n padding: 8px 12px;\n border-radius: 10px;\n font-size: 12px;\n line-height: 18px;\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 12%, var(--dsw-alias-bg-layer-1, #ffffff));\n border: 0.5px solid color-mix(in srgb, var(--dsw-alias-state-warn-primary, #d98708) 30%, transparent);\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-banner-error {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 10%, var(--dsw-alias-bg-layer-1, #ffffff));\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n color: var(--dsw-alias-state-error-primary, #d83931);\n}\n\n/* ---------- \u7A7A\u6001(dashed 0.5px l2 + r8 + pad 18 \u5C45\u4E2D 13 tertiary) ---------- */\n\n.xps-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n /* \u56FE\u6807 / \u6807\u9898 / \u63CF\u8FF0\u7EDF\u4E00 8px \u8282\u594F */\n gap: 8px;\n padding: 18px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n font-size: 13px;\n line-height: 20px;\n text-align: center;\n}\n\n.xps-empty-icon {\n font-size: 24px;\n line-height: 1;\n}\n\n.xps-empty-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u6309\u94AE\u4E0E\u4E0A\u65B9\u6587\u6848\u5408\u8BA1 12px(\u7236\u7EA7 gap 8 + \u8FD9\u91CC 4) */\n.xps-empty-action {\n margin-top: 4px;\n}\n\n/* \u300C\u6211\u7684\u300D\u9875\u672A\u767B\u5F55\u5F15\u5BFC\u5361:\u6D41\u7A0B\u8BF4\u660E + \u524D\u5F80\u5F00\u53D1\u8005\u5E73\u53F0(\u65E0\u4EE4\u724C\u8F93\u5165\u5165\u53E3,\u767B\u5F55\u53EA\u5728\u8BBE\u7F6E\u91CC) */\n.xps-guide {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px 24px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n}\n\n.xps-guide-title {\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-guide-desc {\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-guide-steps {\n margin: 0;\n padding-left: 20px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n}\n\n.xps-guide-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n\n.xps-guide-url {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n word-break: break-all;\n}\n\n/* ---------- \u4E0A\u4F20\u8868\u5355(\u6253\u5305\u63D0\u4EA4) ---------- */\n\n/* \u62D6\u5165 / \u9009\u62E9\u533A:dashed \u5927\u9776\u533A;\u62D6\u60AC\u65F6\u6574\u533A\u54C1\u724C\u84DD\u63CF\u8FB9 + \u6D45\u84DD wash(.xps-up-drop-over) */\n.xps-up-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 28px 16px;\n margin-bottom: 12px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l4, #c9cdd4);\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-drop:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.04));\n}\n\n.xps-up-drop-over,\n.xps-up-drop-over:hover {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 8%, transparent);\n}\n\n.xps-up-drop-icon {\n font-size: 28px;\n line-height: 1;\n}\n\n.xps-up-drop-title {\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-drop-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n\n/* \u5206\u7EC4\u5361\u7247:\u8BC6\u522B\u7ED3\u679C / \u63D2\u4EF6\u4FE1\u606F\u5404\u4E00\u5F20,\u66FF\u4EE3\u6563\u843D\u7684\u884C\u5185\u8FB9\u8DDD */\n.xps-up-card {\n padding: 14px 16px;\n margin-bottom: 12px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 10px;\n}\n\n.xps-up-card-actions {\n margin-left: auto;\n display: flex;\n gap: 4px;\n}\n\n/* \u4E0A\u4F20\u9875\u53CC\u680F:\u5DE6\u300C\u9009\u62E9\u5185\u5BB9 + \u8BC6\u522B\u7ED3\u679C\u300D\u53F3\u300C\u63D2\u4EF6\u4FE1\u606F + \u63D0\u4EA4\u300D,\u4E0E\u5176\u4ED6\u9875\u5171\u7528\u6807\u51C6 960 \u5217\u3002\n * \u5B50\u5143\u7D20\u76F4\u63A5\u505A grid item \u5E76\u663E\u5F0F\u5B9A\u4F4D:\u5DE6\u680F 1 \u5217\u4E09\u4E2A\u5757,\u53F3\u680F 2 \u5217\u4E24\u4E2A\u5757(r2-5 \u62C9\u4F38),\n * \u4E24\u680F\u5E95\u8FB9\u5929\u7136\u5BF9\u9F50;\u7A84\u5C4F(<880px)\u9000\u5316\u4E3A\u5355\u5217\u3001\u6309 DOM \u987A\u5E8F\u5806\u53E0 */\n.xps-up-layout {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);\n gap: 16px 16px;\n align-items: stretch;\n}\n\n/* \u76F4\u63A5\u5B50\u5143\u7D20\u5373\u7F51\u683C\u9879:\u5757\u81EA\u8EAB\u7684\u5916\u8FB9\u8DDD\u5F52\u96F6,\u95F4\u8DDD\u7EDF\u4E00\u4EA4\u7ED9 grid gap */\n.xps-up-side-drop,\n.xps-up-side-notice,\n.xps-up-side-scan,\n.xps-up-main-form {\n margin-bottom: 0;\n}\n\n.xps-up-layout > * {\n min-width: 0;\n min-height: 0;\n}\n\n.xps-up-side-drop { grid-column: 1; grid-row: 1; }\n.xps-up-side-notice { grid-column: 1; grid-row: 2; }\n.xps-up-side-scan { grid-column: 1; grid-row: 3 / 6; }\n.xps-up-main-form { grid-column: 2; grid-row: 1 / 6; }\n.xps-up-main-submit { grid-column: 2; grid-row: 6; }\n\n/* \u7A84\u5C4F:\u53CC\u680F\u5148\u4E8E\u8868\u5355\u6805\u683C\u584C\u6210\u5355\u5217,\u907F\u514D\u5B57\u6BB5\u88AB\u538B\u5230\u6362\u884C\u96BE\u8BFB */\n@media (max-width: 1120px) {\n .xps-up-grid {\n grid-template-columns: 1fr;\n }\n}\n\n@media (max-width: 1024px) {\n .xps-up-layout {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .xps-up-layout > [class^='xps-up-'],\n .xps-up-layout > [class*=' xps-up-'] {\n grid-column: auto;\n grid-row: auto;\n }\n}\n\n/* \u53F3\u680F\u7A7A\u6001:\u4E0E\u5DE6\u4FA7\u62D6\u5165\u533A\u540C\u6B3E\u865A\u7EBF\u5361\u7247,\u7B49\u9AD8\u5C45\u4E2D;\u70B9\u51FB\u7B49\u540C\u300C\u9009\u62E9\u76EE\u5F55\u300D\u3002\n * \u62C9\u4F38\u7531 grid item \u81EA\u8EAB\u5B8C\u6210(display: flex \u6491\u6EE1\u5206\u914D\u5230\u7684\u884C),\u4E0D\u4F9D\u8D56\u767E\u5206\u6BD4\u9AD8\u5EA6 */\n.xps-up-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n box-sizing: border-box;\n align-self: stretch;\n height: 100%;\n min-height: 200px;\n padding: 28px 16px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-empty:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.04));\n}\n\n/* \u7A7A\u6001\u53CC\u5361:\u5DE6\u62D6\u5165\u533A + \u53F3\u6D41\u7A0B\u8BF4\u660E,\u5355\u884C\u7F51\u683C\u5929\u7136\u7B49\u9AD8(\u5404\u81EA stretch) */\n.xps-up-empty-grid {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);\n gap: 16px;\n align-items: stretch;\n}\n\n.xps-up-empty-grid .xps-up-drop {\n justify-content: center;\n margin-bottom: 0;\n}\n\n/* \u6D41\u7A0B\u8BF4\u660E\u5361\u53EA\u505A\u5C55\u793A:\u53BB\u6389\u624B\u578B\u4E0E\u60AC\u505C\u53CD\u9988 */\n.xps-up-empty-static,\n.xps-up-empty-static:hover {\n justify-content: center;\n cursor: default;\n background: transparent;\n}\n\n@media (max-width: 1024px) {\n .xps-up-empty-grid {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n/* \u7B2C 1 \u6B65\u5361\u91CC\u300C\u8FD8\u5DEE\u4EE3\u7801\u76EE\u5F55\u300D\u7684\u5C31\u5730\u63D0\u793A\u6761 */\n.xps-up-source-missing {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 8px;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-warning-primary, #b25e09);\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #dc6803) 8%, transparent);\n}\n\n/* \u7A7A\u6001\u53F3\u680F\u7684\u53D1\u5E03\u6D41\u7A0B:\u586B\u5145\u539F\u672C\u7684\u6B7B\u7A7A\u95F4,\u517C\u505A\u5F15\u5BFC(\u5DE6\u5BF9\u9F50\u6E05\u5355,\u5C45\u4E2D\u653E\u7F6E) */\n.xps-up-flow {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n max-width: 380px;\n padding: 8px 4px;\n}\n\n.xps-up-flow-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-flow-item {\n display: flex;\n gap: 10px;\n text-align: left;\n}\n\n.xps-up-flow-no {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-top: 1px;\n border-radius: 50%;\n font-size: 11px;\n font-weight: 500;\n color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, transparent);\n}\n\n.xps-up-flow-main {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.xps-up-flow-item-title {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-flow-item-desc {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* \u5361\u7247\u6807\u9898\u4E0A\u7684\u6B65\u9AA4\u5FBD\u6807(\u7B2C 1 \u6B65 / \u7B2C 2 \u6B65),\u5EFA\u7ACB\u300C\u9009\u5185\u5BB9 \u2192 \u586B\u4FE1\u606F\u300D\u7684\u6D41\u7A0B\u611F */\n.xps-up-step-chip {\n flex: none;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 11px;\n line-height: 18px;\n font-weight: 500;\n color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 10%, transparent);\n}\n\n/* \u9875\u811A\u300C\u53D1\u5E03\u8BF4\u660E\u300D:\u5E38\u9A7B\u5168\u6587\u8BF4\u660E\u5361 */\n.xps-up-guide {\n margin-top: 20px;\n padding: 16px 20px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 10px;\n}\n\n.xps-up-guide-title {\n margin-bottom: 10px;\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-up-guide ol {\n margin: 0;\n padding-left: 20px;\n display: grid;\n gap: 8px;\n}\n\n.xps-up-guide li {\n font-size: 12px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #4e5460);\n}\n\n.xps-up-guide li::marker {\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n.xps-up-guide b {\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u8BC6\u522B\u7ED3\u679C\u5361\u6807\u9898:\u957F\u6587\u6848\u5141\u8BB8\u6362\u884C,\u8865\u9009\u6309\u94AE\u56FA\u5B9A\u53F3\u4FA7\u4E0D\u53C2\u4E0E\u6362\u884C\u6324\u538B */\n.xps-up-card-title {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 10px;\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n/* \u8865\u9009\u6309\u94AE\u56FA\u5B9A\u53F3\u4FA7;\u6807\u9898\u8BCD\u4E0D\u6362\u884C(\u53EA\u6709\u6807\u9898\u5355\u9879\u65F6\u4E0D\u53D7 margin-left:auto \u8BEF\u4F24) */\n.xps-up-card-title > .xps-up-card-actions {\n flex: none;\n margin-left: auto;\n}\n\n.xps-up-card-title > span:first-child {\n flex: none;\n}\n\n/* \u8868\u5355\u6805\u683C:\u4E24\u5217\u4E00\u884C(\u5355\u9879\u7528 .xps-up-grid-single \u6536\u6210\u6574\u884C)\u3002\n * align-items: end:\u5DE6\u53F3\u5B57\u6BB5\u6807\u7B7E\u884C\u6570\u4E0D\u540C\u65F6\u8F93\u5165\u6846\u5E95\u8FB9\u5BF9\u9F50,\u6807\u7B7E\u5404\u81EA\u5411\u4E0A\u751F\u957F */\n.xps-up-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px 12px;\n margin-bottom: 10px;\n align-items: end;\n}\n\n.xps-up-grid-single {\n grid-template-columns: 1fr;\n}\n\n/* \u4EA7\u7269 / \u6E90\u7801\u5019\u9009\u884C:radio + \u56FE\u6807 + \u540D\u79F0(\u4E00\u884C) + \u76F8\u5BF9\u8DEF\u5F84(\u5C0F\u5B57\u4E00\u884C,\u8D85\u957F\u622A\u65AD);\n * \u9009\u4E2D\u6001\u54C1\u724C\u84DD\u63CF\u8FB9 */\n.xps-up-candidate {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n margin-bottom: 4px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n min-width: 0;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.xps-up-candidate:hover {\n background: var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.06));\n}\n\n.xps-up-candidate-active,\n.xps-up-candidate-active:hover {\n border-color: var(--dsw-alias-brand-primary, #3370ff);\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 6%, transparent);\n}\n\n/* radio / \u56FE\u6807\u4E0D\u53C2\u4E0E\u6536\u7F29 */\n.xps-up-candidate > input,\n.xps-up-candidate > span:first-of-type {\n flex: none;\n}\n\n/* \u540D\u79F0 + \u8DEF\u5F84\u4E24\u884C\u5757:\u5360\u6EE1\u5269\u4F59\u5BBD\u5EA6,\u5185\u90E8\u5404\u81EA\u622A\u65AD */\n.xps-up-candidate-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.xps-up-candidate-name {\n font-weight: 500;\n color: var(--dsw-alias-label-primary, #1f2329);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.xps-up-candidate-path {\n font-size: 12px;\n line-height: 17px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n direction: rtl;\n text-align: left;\n}\n\n.xps-up-candidate-path > bdi {\n direction: ltr;\n unicode-bidi: isolate;\n}\n\n/* ---------- \u9AA8\u67B6\u5C4F ---------- */\n\n.xps-skeleton-group {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.xps-skeleton {\n height: 56px;\n border-radius: 12px;\n background: linear-gradient(\n 90deg,\n var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.05)) 25%,\n var(--dsw-alias-border-l2, rgba(31, 35, 41, 0.1)) 37%,\n var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 41, 0.05)) 63%\n );\n background-size: 400% 100%;\n animation: xps-skeleton-loading 1.4s ease infinite;\n}\n\n@keyframes xps-skeleton-loading {\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0 50%;\n }\n}\n\n/* ---------- Toast ---------- */\n\n.xps-toast-host {\n position: fixed;\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n gap: 8px;\n z-index: 9999;\n}\n\n.xps-toast {\n padding: 8px 14px;\n border-radius: 10px;\n font-size: 13px;\n line-height: 20px;\n /* \u591A\u884C\u63D0\u793A\u4E0D\u88AB\u6298\u53E0\u6210\u4E00\u6BB5(\u957F\u6587\u6848\u6539\u8D70 .xps-dialog-pre,\u8FD9\u91CC\u515C\u4F4F\u77ED\u7684\u591A\u884C\u63D0\u793A) */\n white-space: pre-wrap;\n background: var(--dsw-alias-bg-layer-3, #f0f1f2);\n color: var(--dsw-alias-label-primary, #1f2329);\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n box-shadow: 0 4px 16px var(--dsw-alias-bg-mask-1, rgba(0, 0, 0, 0.12));\n cursor: pointer;\n /* \u5165\u573A:\u6DE1\u5165 + \u8F7B\u5FAE\u4E0A\u79FB(\u79BB\u573A\u7531 useToasts \u76F4\u63A5\u4ECE\u5217\u8868\u79FB\u9664,\u4E0D\u505A\u5EF6\u8FDF\u5378\u8F7D) */\n animation: xps-fade-slide-in 0.15s ease-out;\n}\n\n@keyframes xps-fade-slide-in {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.xps-toast-success {\n border-color: color-mix(in srgb, var(--dsw-alias-state-success-primary, #1f9d55) 30%, transparent);\n}\n\n.xps-toast-error {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 30%, transparent);\n}\n\n/* ---------- \u5BF9\u8BDD\u6846 ---------- */\n\n.xps-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--dsw-alias-bg-mask-2, rgba(0, 0, 0, 0.45));\n animation: xps-fade-in 0.15s ease-out;\n}\n\n@keyframes xps-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.xps-dialog {\n width: 360px;\n padding: 16px 20px;\n border-radius: 12px;\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n background: var(--dsw-alias-bg-layer-3, #ffffff);\n box-shadow: 0 8px 32px var(--dsw-alias-bg-mask-1, rgba(0, 0, 0, 0.18));\n /* \u5165\u573A:\u6DE1\u5165 + 0.98 \u2192 1 \u8F7B\u5FAE\u653E\u5927 */\n animation: xps-dialog-in 0.15s ease-out;\n}\n\n@keyframes xps-dialog-in {\n from { opacity: 0; transform: scale(0.98); }\n to { opacity: 1; transform: scale(1); }\n}\n\n.xps-dialog-title {\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n margin-bottom: 8px;\n color: var(--dsw-alias-label-primary, #1f2329);\n}\n\n.xps-dialog-body {\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-secondary, #646a73);\n margin-bottom: 16px;\n}\n\n.xps-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\n/* \u957F\u6587\u672C\u5BF9\u8BDD\u6846(\u5B89\u88C5\u5931\u8D25\u7684\u591A\u884C\u65E5\u5FD7\u3001\u5F85\u624B\u52A8\u6267\u884C\u7684\u547D\u4EE4):\u6BD4\u901A\u7528\u5BF9\u8BDD\u6846\u5BBD,\u7A84\u5C4F\u81EA\u52A8\u6536\u7A84 */\n.xps-dialog.xps-dialog-wide {\n width: 520px;\n max-width: calc(100vw - 32px);\n box-sizing: border-box;\n}\n\n/* \u6B63\u6587\u539F\u6587\u5757:\u4FDD\u7559\u6362\u884C\u4E0E\u7F29\u8FDB,\u8FC7\u957F\u65F6\u5185\u90E8\u6EDA\u52A8,\u4E0D\u628A\u7A97\u53E3\u6491\u7206;\u53EF\u624B\u52A8\u9009\u4E2D\u590D\u5236 */\n.xps-dialog-pre {\n white-space: pre-wrap;\n max-height: 320px;\n overflow: auto;\n padding: 10px 12px;\n border-radius: 8px;\n background: var(--dsw-alias-bg-layer-2, #f5f6f7);\n border: 0.5px solid var(--dsw-alias-border-l2, #dee0e3);\n font-family: var(--dsw-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n line-height: 1.6;\n color: var(--dsw-alias-label-primary, #1f2329);\n text-align: left;\n word-break: break-word;\n user-select: text;\n}\n\n/* ---------- \u9875\u9762\u5360\u4F4D(\u9AA8\u67B6\u671F) ---------- */\n\n.xps-page-placeholder {\n padding: 18px;\n border: 0.5px dashed var(--dsw-alias-border-l2, #dee0e3);\n border-radius: 8px;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-tertiary, #8f959e);\n}\n\n/* ---------- \u4EA4\u4E92\u72B6\u6001(\u5168\u7AD9\u7EDF\u4E00:\u8FC7\u6E21 / \u6309\u538B / \u7126\u70B9\u73AF) ----------\n * \u53EA\u8FC7\u6E21\u989C\u8272\u4E0E\u900F\u660E\u5EA6,\u4E0D\u505A\u4F4D\u79FB\u7F29\u653E\u52A8\u753B;\u6309\u538B\u7528\u4E00\u6863\u66F4\u6DF1\u7684 active \u5E95\u8272 + \u6781\u8F7B\u5FAE\u4E0B\u538B\u3002\n * \u9875\u9762\u79C1\u6709\u6837\u5F0F(market / admin)\u5728\u672C\u6587\u4EF6\u4E4B\u540E\u6CE8\u5165,\u5404\u81EA\u7684\u8FC7\u6E21\u4E0E\u6309\u538B\u6001\u5199\u5728\u5404\u81EA\u6A21\u5757\u91CC\u3002\n */\n\n/* .xps-row \u7684\u8FC7\u6E21\u5199\u5728\u81EA\u5DF1\u7684\u57FA\u7840\u89C4\u5219\u91CC(\u89C1\u4E0A),\u6B64\u5904\u4E0D\u518D\u91CD\u590D\u58F0\u660E */\n.xps-btn,\n.xps-icon-btn,\n.xps-nav-item,\n.xps-input {\n transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease,\n opacity 0.15s ease;\n}\n\n/* \u6309\u538B:\u80CC\u666F\u518D\u6DF1\u4E00\u6863(interactive-bg-active);\u4E3B/\u63CF\u8FB9/\u5371\u9669\u6309\u94AE\u6309\u5404\u81EA\u8272\u7CFB\u52A0\u6DF1 */\n.xps-btn:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n transform: scale(0.98);\n}\n\n.xps-btn-primary:active:not(:disabled) {\n /* \u4E3B\u6309\u94AE\u6CA1\u6709 -active token(\u53EA\u6709 -fill / -hover),\u6309\u538B\u76F4\u63A5\u6309\u54C1\u724C\u8272\u52A0\u6DF1 */\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 78%, #000000);\n}\n\n.xps-btn-outline:active:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-brand-primary, #3370ff) 16%, transparent);\n}\n\n.xps-btn-danger:active:not(:disabled) {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary, #d83931) 16%, transparent);\n}\n\n.xps-btn-ghost:active:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n.xps-icon-btn:active:not(:disabled),\n.xps-nav-item:active {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n.xps-row:active {\n background: var(--dsw-alias-interactive-bg-active, rgba(38, 49, 72, 0.1));\n}\n\n/* \u7126\u70B9\u73AF:\u53EA\u5728\u952E\u76D8\u5BFC\u822A\u65F6\u51FA\u73B0(:focus-visible),\u9F20\u6807\u70B9\u51FB\u4E0D\u753B\u73AF */\n.xps-btn:focus-visible,\n.xps-icon-btn:focus-visible,\n.xps-nav-item:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary, #3370ff);\n outline-offset: 2px;\n}\n\n/* \u6574\u884C\u5361\u7247\u7528\u5185\u63CF\u8FB9,\u907F\u514D\u8D34\u5230\u5185\u5BB9\u533A\u8FB9\u7F18\u88AB\u88C1\u6389 */\n.xps-row:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary, #3370ff);\n outline-offset: -2px;\n}\n\n/* \u7981\u7528\u6001:\u9664\u5404\u7EC4\u4EF6\u81EA\u5DF1\u7684 opacity \u5916,\u6E38\u6807\u7EDF\u4E00\u515C\u5E95 */\n.xps-app :disabled {\n cursor: not-allowed;\n}\n\n/* \u52A8\u6548\u504F\u597D:reduce \u65F6\u5173\u6389\u8FC7\u6E21\u4E0E\u5165\u573A\u52A8\u753B(\u6309\u538B\u7684\u7F29\u653E\u4E5F\u4E00\u5E76\u53D6\u6D88) */\n@media (prefers-reduced-motion: reduce) {\n .xps-btn,\n .xps-icon-btn,\n .xps-nav-item,\n .xps-input,\n .xps-row,\n .xps-toast,\n .xps-overlay,\n .xps-dialog {\n transition: none;\n animation: none;\n }\n\n .xps-btn:active:not(:disabled) {\n transform: none;\n }\n}\n";
|
|
3498
3543
|
|
|
3499
3544
|
// src/client/theme-inject.ts
|
|
3500
3545
|
function ensureThemeStyles() {
|
|
@@ -3531,10 +3576,20 @@ var NAV_ITEMS = [
|
|
|
3531
3576
|
{ key: "installed", label: "\u5DF2\u5B89\u88C5" },
|
|
3532
3577
|
{ key: "developer", label: "\u6211\u7684" }
|
|
3533
3578
|
];
|
|
3579
|
+
var lastNav = "market";
|
|
3580
|
+
var lastDetailId = null;
|
|
3534
3581
|
function MarketplaceApp() {
|
|
3535
|
-
const [nav,
|
|
3536
|
-
const [detailId,
|
|
3582
|
+
const [nav, setNavState] = (0, import_react10.useState)(lastNav);
|
|
3583
|
+
const [detailId, setDetailIdState] = (0, import_react10.useState)(lastDetailId);
|
|
3537
3584
|
ensureThemeStyles();
|
|
3585
|
+
const setNav = (key) => {
|
|
3586
|
+
lastNav = key;
|
|
3587
|
+
setNavState(key);
|
|
3588
|
+
};
|
|
3589
|
+
const setDetailId = (id) => {
|
|
3590
|
+
lastDetailId = id;
|
|
3591
|
+
setDetailIdState(id);
|
|
3592
|
+
};
|
|
3538
3593
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "xps-app", children: [
|
|
3539
3594
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("nav", { className: "xps-nav", children: NAV_ITEMS.map((item) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3540
3595
|
"button",
|