dsh-plugin-standalone-session 0.2.0 → 0.2.1
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 +95 -41
- package/lib/types/client/locales.d.ts +1 -1
- package/lib/types/client/styles.d.ts +1 -1
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -480,6 +480,7 @@ var zh = {
|
|
|
480
480
|
"panel.selectToolbar": "\u6279\u91CF\u9009\u62E9",
|
|
481
481
|
"panel.selectAll": "\u5168\u9009",
|
|
482
482
|
"panel.selectAllLabel": "\u5168\u9009\u72EC\u7ACB\u4F1A\u8BDD",
|
|
483
|
+
"panel.selectionHint": "\u70B9\u51FB\u4F1A\u8BDD\u884C\u9009\u62E9\uFF0C\u6216\u4F7F\u7528\u5168\u9009\u3002",
|
|
483
484
|
"panel.selectedCount": "\u5DF2\u9009 {n} / {total}",
|
|
484
485
|
"panel.selectRow": "\u9009\u62E9\u201C{title}\u201D",
|
|
485
486
|
"panel.batchDelete": "\u5220\u9664",
|
|
@@ -555,6 +556,7 @@ var en = {
|
|
|
555
556
|
"panel.selectToolbar": "Bulk selection",
|
|
556
557
|
"panel.selectAll": "Select all",
|
|
557
558
|
"panel.selectAllLabel": "Select all standalone sessions",
|
|
559
|
+
"panel.selectionHint": "Select rows, or use Select all.",
|
|
558
560
|
"panel.selectedCount": "{n} / {total} selected",
|
|
559
561
|
"panel.selectRow": 'Select "{title}"',
|
|
560
562
|
"panel.batchDelete": "Delete",
|
|
@@ -939,7 +941,7 @@ function DialogFrame({ title, children, footer, onCancel, busy = false }) {
|
|
|
939
941
|
'button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])'
|
|
940
942
|
)
|
|
941
943
|
);
|
|
942
|
-
focusables()[0]?.focus();
|
|
944
|
+
focusables()[0]?.focus({ preventScroll: true });
|
|
943
945
|
const onKey = (event) => {
|
|
944
946
|
if (event.key === "Escape" && !busyRef.current) {
|
|
945
947
|
event.preventDefault();
|
|
@@ -962,7 +964,7 @@ function DialogFrame({ title, children, footer, onCancel, busy = false }) {
|
|
|
962
964
|
document.addEventListener("keydown", onKey);
|
|
963
965
|
return () => {
|
|
964
966
|
document.removeEventListener("keydown", onKey);
|
|
965
|
-
previous?.focus();
|
|
967
|
+
previous?.focus({ preventScroll: true });
|
|
966
968
|
};
|
|
967
969
|
}, []);
|
|
968
970
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -1188,6 +1190,8 @@ function createStandalonePanel(ctx) {
|
|
|
1188
1190
|
const menuButtonRef = (0, import_react3.useRef)(null);
|
|
1189
1191
|
const selectAllRef = (0, import_react3.useRef)(null);
|
|
1190
1192
|
const selectButtonRef = (0, import_react3.useRef)(null);
|
|
1193
|
+
const panelRef = (0, import_react3.useRef)(null);
|
|
1194
|
+
const wasSelecting = (0, import_react3.useRef)(false);
|
|
1191
1195
|
const selected = (0, import_react3.useMemo)(() => selectedRows(rows, selectedIds), [rows, selectedIds]);
|
|
1192
1196
|
const state = (0, import_react3.useMemo)(() => selectionState(rows, selectedIds), [rows, selectedIds]);
|
|
1193
1197
|
const locked = busy !== null || batchProgress !== null;
|
|
@@ -1196,7 +1200,6 @@ function createStandalonePanel(ctx) {
|
|
|
1196
1200
|
setSelectedIds(/* @__PURE__ */ new Set());
|
|
1197
1201
|
setMenuTarget(null);
|
|
1198
1202
|
setError(null);
|
|
1199
|
-
selectButtonRef.current?.focus();
|
|
1200
1203
|
};
|
|
1201
1204
|
const enterSelection = () => {
|
|
1202
1205
|
if (locked) return;
|
|
@@ -1233,8 +1236,14 @@ function createStandalonePanel(ctx) {
|
|
|
1233
1236
|
}
|
|
1234
1237
|
}, [rows, selectedIds, selectionMode]);
|
|
1235
1238
|
(0, import_react3.useEffect)(() => {
|
|
1236
|
-
if (selectionMode) selectAllRef.current?.focus();
|
|
1239
|
+
if (selectionMode) selectAllRef.current?.focus({ preventScroll: true });
|
|
1237
1240
|
}, [selectionMode]);
|
|
1241
|
+
(0, import_react3.useEffect)(() => {
|
|
1242
|
+
if (wasSelecting.current && !selectionMode && rows.length > 0) {
|
|
1243
|
+
selectButtonRef.current?.focus({ preventScroll: true });
|
|
1244
|
+
}
|
|
1245
|
+
wasSelecting.current = selectionMode;
|
|
1246
|
+
}, [selectionMode, rows.length]);
|
|
1238
1247
|
(0, import_react3.useEffect)(() => {
|
|
1239
1248
|
if (selectAllRef.current !== null) selectAllRef.current.indeterminate = state.some;
|
|
1240
1249
|
}, [state.some, selectionMode]);
|
|
@@ -1293,12 +1302,19 @@ function createStandalonePanel(ctx) {
|
|
|
1293
1302
|
setBusy(null);
|
|
1294
1303
|
}
|
|
1295
1304
|
};
|
|
1305
|
+
const reopenIfUnmounted = () => {
|
|
1306
|
+
window.setTimeout(() => {
|
|
1307
|
+
if (panelRef.current === null || !panelRef.current.isConnected) {
|
|
1308
|
+
openManagementPanel(ctx, t);
|
|
1309
|
+
}
|
|
1310
|
+
}, 0);
|
|
1311
|
+
};
|
|
1296
1312
|
const remove = async (row) => {
|
|
1297
1313
|
setBusy(row.id);
|
|
1298
1314
|
setError(null);
|
|
1299
1315
|
try {
|
|
1300
1316
|
await archiveStandalone(ctx, row.id);
|
|
1301
|
-
|
|
1317
|
+
reopenIfUnmounted();
|
|
1302
1318
|
setDeleteTarget(null);
|
|
1303
1319
|
} catch (reason) {
|
|
1304
1320
|
throw new Error(messageOf(reason));
|
|
@@ -1331,24 +1347,24 @@ function createStandalonePanel(ctx) {
|
|
|
1331
1347
|
setError(message);
|
|
1332
1348
|
showNotice("error", message);
|
|
1333
1349
|
}
|
|
1334
|
-
|
|
1350
|
+
reopenIfUnmounted();
|
|
1335
1351
|
} catch (reason) {
|
|
1336
1352
|
setBatchTargets(null);
|
|
1337
1353
|
const message = t("panel.actionFailed", { message: messageOf(reason) });
|
|
1338
1354
|
setError(message);
|
|
1339
1355
|
showNotice("error", message);
|
|
1340
|
-
|
|
1356
|
+
reopenIfUnmounted();
|
|
1341
1357
|
} finally {
|
|
1342
1358
|
setBatchProgress(null);
|
|
1343
1359
|
}
|
|
1344
1360
|
};
|
|
1345
1361
|
const count = t("panel.count", { n: rows.length });
|
|
1346
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "ss-panel", "aria-label": t("panel.title"), children: [
|
|
1362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { ref: panelRef, className: "ss-panel", "aria-label": t("panel.title"), children: [
|
|
1347
1363
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "ss-shell", children: [
|
|
1348
1364
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
1349
1365
|
"header",
|
|
1350
1366
|
{
|
|
1351
|
-
className:
|
|
1367
|
+
className: "ss-header",
|
|
1352
1368
|
role: selectionMode ? "toolbar" : void 0,
|
|
1353
1369
|
"aria-label": selectionMode ? t("panel.selectToolbar") : void 0,
|
|
1354
1370
|
children: [
|
|
@@ -1357,7 +1373,15 @@ function createStandalonePanel(ctx) {
|
|
|
1357
1373
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "ss-title", children: t("panel.title") }),
|
|
1358
1374
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ss-count ss-countInline", children: selectionMode ? t("panel.selectedCount", { n: state.count, total: rows.length }) : count })
|
|
1359
1375
|
] }),
|
|
1360
|
-
|
|
1376
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1377
|
+
"p",
|
|
1378
|
+
{
|
|
1379
|
+
className: `ss-statusLine${error !== null ? " ss-statusLineError" : ""}`,
|
|
1380
|
+
role: error !== null ? "alert" : void 0,
|
|
1381
|
+
title: error ?? void 0,
|
|
1382
|
+
children: error ?? (selectionMode ? t("panel.selectionHint") : t("panel.description"))
|
|
1383
|
+
}
|
|
1384
|
+
)
|
|
1361
1385
|
] }),
|
|
1362
1386
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ss-headerActions", children: selectionMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
1363
1387
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "ss-selectAll", children: [
|
|
@@ -1375,7 +1399,7 @@ function createStandalonePanel(ctx) {
|
|
|
1375
1399
|
),
|
|
1376
1400
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: t("panel.selectAll") })
|
|
1377
1401
|
] }),
|
|
1378
|
-
state.count > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1402
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ss-deleteSlot", children: state.count > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1379
1403
|
"button",
|
|
1380
1404
|
{
|
|
1381
1405
|
type: "button",
|
|
@@ -1384,7 +1408,7 @@ function createStandalonePanel(ctx) {
|
|
|
1384
1408
|
onClick: beginBatch,
|
|
1385
1409
|
children: t("panel.batchDelete")
|
|
1386
1410
|
}
|
|
1387
|
-
) : null,
|
|
1411
|
+
) : null }),
|
|
1388
1412
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1389
1413
|
"button",
|
|
1390
1414
|
{
|
|
@@ -1409,7 +1433,6 @@ function createStandalonePanel(ctx) {
|
|
|
1409
1433
|
]
|
|
1410
1434
|
}
|
|
1411
1435
|
),
|
|
1412
|
-
error !== null ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ss-error", role: "alert", children: error }) : null,
|
|
1413
1436
|
loading && rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ss-empty", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ss-emptyHint", children: t("panel.loading") }) }) : rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "ss-empty", children: [
|
|
1414
1437
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ss-emptyTitle", children: t("panel.empty") }),
|
|
1415
1438
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ss-emptyHint", children: t("panel.emptyHint") }),
|
|
@@ -1453,7 +1476,7 @@ function createStandalonePanel(ctx) {
|
|
|
1453
1476
|
{
|
|
1454
1477
|
className: `ss-row${openMenu ? " ss-rowMenuOpen" : ""}${selectionMode && checked ? " ss-rowSelected" : ""}`,
|
|
1455
1478
|
children: [
|
|
1456
|
-
selectionMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1479
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ss-rowLead", children: selectionMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1457
1480
|
"input",
|
|
1458
1481
|
{
|
|
1459
1482
|
type: "checkbox",
|
|
@@ -1463,7 +1486,7 @@ function createStandalonePanel(ctx) {
|
|
|
1463
1486
|
"aria-label": t("panel.selectRow", { title }),
|
|
1464
1487
|
onChange: () => toggleRow(row.id)
|
|
1465
1488
|
}
|
|
1466
|
-
) :
|
|
1489
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StandaloneIcon, { size: 14 }) }),
|
|
1467
1490
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
1468
1491
|
"button",
|
|
1469
1492
|
{
|
|
@@ -1490,7 +1513,7 @@ function createStandalonePanel(ctx) {
|
|
|
1490
1513
|
]
|
|
1491
1514
|
}
|
|
1492
1515
|
),
|
|
1493
|
-
|
|
1516
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ss-rowActions", children: !selectionMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
1494
1517
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1495
1518
|
"button",
|
|
1496
1519
|
{
|
|
@@ -1547,13 +1570,13 @@ function createStandalonePanel(ctx) {
|
|
|
1547
1570
|
]
|
|
1548
1571
|
}
|
|
1549
1572
|
) : null
|
|
1550
|
-
] }) : null
|
|
1573
|
+
] }) : null })
|
|
1551
1574
|
]
|
|
1552
1575
|
},
|
|
1553
1576
|
row.id
|
|
1554
1577
|
);
|
|
1555
1578
|
}) }),
|
|
1556
|
-
|
|
1579
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ss-panelHint", children: t("panel.archivedHint") })
|
|
1557
1580
|
] }),
|
|
1558
1581
|
batchTargets !== null ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1559
1582
|
BatchDeleteDialog,
|
|
@@ -1610,9 +1633,14 @@ var CSS = `
|
|
|
1610
1633
|
align-items: flex-start;
|
|
1611
1634
|
gap: 16px;
|
|
1612
1635
|
justify-content: space-between;
|
|
1613
|
-
flex-wrap:
|
|
1636
|
+
flex-wrap: nowrap;
|
|
1637
|
+
min-height: 58px;
|
|
1614
1638
|
margin-bottom: 8px;
|
|
1615
1639
|
}
|
|
1640
|
+
.ss-headerMain {
|
|
1641
|
+
min-width: 0;
|
|
1642
|
+
flex: 1;
|
|
1643
|
+
}
|
|
1616
1644
|
.ss-titleRow {
|
|
1617
1645
|
display: flex;
|
|
1618
1646
|
align-items: center;
|
|
@@ -1625,12 +1653,17 @@ var CSS = `
|
|
|
1625
1653
|
font-weight: 600;
|
|
1626
1654
|
margin: 0;
|
|
1627
1655
|
}
|
|
1628
|
-
.ss-
|
|
1656
|
+
.ss-statusLine {
|
|
1657
|
+
margin: 6px 0 0;
|
|
1629
1658
|
color: var(--dsw-alias-label-secondary, #59636e);
|
|
1630
1659
|
font-size: 13px;
|
|
1631
1660
|
line-height: 20px;
|
|
1632
|
-
|
|
1633
|
-
|
|
1661
|
+
overflow: hidden;
|
|
1662
|
+
text-overflow: ellipsis;
|
|
1663
|
+
white-space: nowrap;
|
|
1664
|
+
}
|
|
1665
|
+
.ss-statusLineError {
|
|
1666
|
+
color: var(--dsw-alias-state-error-primary, #d1242f);
|
|
1634
1667
|
}
|
|
1635
1668
|
.ss-count {
|
|
1636
1669
|
color: var(--dsw-alias-label-tertiary, #818b98);
|
|
@@ -1644,21 +1677,27 @@ var CSS = `
|
|
|
1644
1677
|
}
|
|
1645
1678
|
.ss-headerActions {
|
|
1646
1679
|
display: flex;
|
|
1680
|
+
flex: 0 0 176px;
|
|
1681
|
+
width: 176px;
|
|
1682
|
+
height: 32px;
|
|
1647
1683
|
align-items: center;
|
|
1648
1684
|
justify-content: flex-end;
|
|
1649
|
-
flex-wrap:
|
|
1685
|
+
flex-wrap: nowrap;
|
|
1650
1686
|
gap: 8px;
|
|
1651
1687
|
}
|
|
1652
|
-
.ss-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1688
|
+
.ss-deleteSlot {
|
|
1689
|
+
width: 56px;
|
|
1690
|
+
height: 32px;
|
|
1691
|
+
flex: none;
|
|
1692
|
+
display: flex;
|
|
1693
|
+
justify-content: flex-end;
|
|
1694
|
+
}
|
|
1695
|
+
.ss-deleteSlot .ss-button {
|
|
1696
|
+
min-width: 52px;
|
|
1697
|
+
flex: none;
|
|
1659
1698
|
}
|
|
1660
1699
|
.ss-selectButton {
|
|
1661
|
-
min-height:
|
|
1700
|
+
min-height: 32px;
|
|
1662
1701
|
padding: 3px 8px;
|
|
1663
1702
|
border: 0;
|
|
1664
1703
|
border-radius: var(--dsw-radius-md, 10px);
|
|
@@ -1685,6 +1724,8 @@ var CSS = `
|
|
|
1685
1724
|
.ss-button {
|
|
1686
1725
|
font: inherit;
|
|
1687
1726
|
display: inline-flex;
|
|
1727
|
+
flex: none;
|
|
1728
|
+
white-space: nowrap;
|
|
1688
1729
|
align-items: center;
|
|
1689
1730
|
justify-content: center;
|
|
1690
1731
|
gap: 6px;
|
|
@@ -1775,10 +1816,12 @@ var CSS = `
|
|
|
1775
1816
|
}
|
|
1776
1817
|
.ss-row {
|
|
1777
1818
|
position: relative;
|
|
1778
|
-
display:
|
|
1819
|
+
display: grid;
|
|
1820
|
+
grid-template-columns: 18px minmax(0, 1fr) 28px;
|
|
1821
|
+
column-gap: 14px;
|
|
1779
1822
|
align-items: center;
|
|
1780
|
-
gap: 14px;
|
|
1781
1823
|
box-sizing: border-box;
|
|
1824
|
+
height: 66px;
|
|
1782
1825
|
padding: 12px 14px;
|
|
1783
1826
|
border-radius: var(--dsw-radius-lg, 14px);
|
|
1784
1827
|
border: 0.5px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.2));
|
|
@@ -1800,9 +1843,19 @@ var CSS = `
|
|
|
1800
1843
|
cursor: default;
|
|
1801
1844
|
opacity: 0.7;
|
|
1802
1845
|
}
|
|
1846
|
+
.ss-rowLead {
|
|
1847
|
+
width: 18px;
|
|
1848
|
+
height: 20px;
|
|
1849
|
+
flex: none;
|
|
1850
|
+
display: inline-flex;
|
|
1851
|
+
align-items: center;
|
|
1852
|
+
justify-content: center;
|
|
1853
|
+
color: var(--dsw-alias-label-tertiary, #818b98);
|
|
1854
|
+
}
|
|
1803
1855
|
.ss-rowMain {
|
|
1804
1856
|
min-width: 0;
|
|
1805
|
-
|
|
1857
|
+
width: 100%;
|
|
1858
|
+
grid-column: 2;
|
|
1806
1859
|
display: flex;
|
|
1807
1860
|
flex-direction: column;
|
|
1808
1861
|
gap: 3px;
|
|
@@ -1847,16 +1900,21 @@ var CSS = `
|
|
|
1847
1900
|
align-items: center;
|
|
1848
1901
|
gap: 8px;
|
|
1849
1902
|
min-width: 0;
|
|
1850
|
-
flex-wrap:
|
|
1903
|
+
flex-wrap: nowrap;
|
|
1904
|
+
overflow: hidden;
|
|
1905
|
+
white-space: nowrap;
|
|
1851
1906
|
}
|
|
1852
1907
|
.ss-dotSep {
|
|
1853
1908
|
opacity: 0.5;
|
|
1854
1909
|
}
|
|
1855
1910
|
.ss-rowActions {
|
|
1856
1911
|
position: relative;
|
|
1912
|
+
grid-column: 3;
|
|
1913
|
+
width: 28px;
|
|
1857
1914
|
display: flex;
|
|
1858
1915
|
align-items: center;
|
|
1859
|
-
|
|
1916
|
+
justify-content: center;
|
|
1917
|
+
gap: 0;
|
|
1860
1918
|
flex: none;
|
|
1861
1919
|
}
|
|
1862
1920
|
.ss-rowMenuButton {
|
|
@@ -2218,11 +2276,7 @@ var CSS = `
|
|
|
2218
2276
|
@media (max-width: 640px) {
|
|
2219
2277
|
.ss-panel { padding: 20px 14px 40px; }
|
|
2220
2278
|
.ss-row { flex-wrap: nowrap; gap: 10px; }
|
|
2221
|
-
.ss-
|
|
2222
|
-
.ss-headerSelection .ss-headerActions {
|
|
2223
|
-
width: 100%;
|
|
2224
|
-
justify-content: flex-end;
|
|
2225
|
-
}
|
|
2279
|
+
.ss-headerActions { flex-basis: 176px; width: 176px; }
|
|
2226
2280
|
}
|
|
2227
2281
|
`;
|
|
2228
2282
|
function insertStyles() {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* keeps `en` complete, and both shipped languages are registered together.
|
|
4
4
|
*/
|
|
5
5
|
export declare const NS = "standaloneSession";
|
|
6
|
-
export type StandaloneKey = 'panel.label' | 'panel.title' | 'panel.description' | 'panel.new' | 'panel.empty' | 'panel.emptyHint' | 'panel.badge' | 'panel.open' | 'panel.rename' | 'panel.delete' | 'panel.untitled' | 'panel.blank' | 'panel.running' | 'panel.cwd' | 'panel.count' | 'panel.deleteTitle' | 'panel.deleteBody' | 'panel.deleteConfirm' | 'panel.select' | 'panel.selectToolbar' | 'panel.selectAll' | 'panel.selectAllLabel' | 'panel.selectedCount' | 'panel.selectRow' | 'panel.batchDelete' | 'panel.batchDeleteTitle' | 'panel.batchDeleteBody' | 'panel.batchDeleteRunning' | 'panel.batchDeleteDirs' | 'panel.batchDeleting' | 'panel.batchPartial' | 'panel.deleteKeepDir' | 'panel.cancel' | 'panel.renameTitle' | 'panel.renameLabel' | 'panel.more' | 'panel.save' | 'panel.titleRequired' | 'panel.actionFailed' | 'panel.retry' | 'panel.archivedHint' | 'panel.loading' | 'entry.label' | 'launcher.creating' | 'launcher.failedTitle' | 'launcher.retry' | 'launcher.manage' | 'launcher.hint' | 'command.label' | 'command.description' | 'command.manageLabel' | 'command.manageDescription' | 'footer.manage' | 'footer.manageCount' | 'footer.manageTooltip' | 'time.now' | 'time.minutes' | 'time.hours' | 'time.days' | 'toast.manageFailed' | 'hero.badge' | 'hero.hint' | 'row.mark' | 'row.hover' | 'composer.placeholder' | 'toast.created' | 'toast.createFailed' | 'toast.deleteFailed' | 'toast.deleted' | 'toast.renamed' | 'toast.renameFailed' | 'error.noHome' | 'error.noSession';
|
|
6
|
+
export type StandaloneKey = 'panel.label' | 'panel.title' | 'panel.description' | 'panel.new' | 'panel.empty' | 'panel.emptyHint' | 'panel.badge' | 'panel.open' | 'panel.rename' | 'panel.delete' | 'panel.untitled' | 'panel.blank' | 'panel.running' | 'panel.cwd' | 'panel.count' | 'panel.deleteTitle' | 'panel.deleteBody' | 'panel.deleteConfirm' | 'panel.select' | 'panel.selectToolbar' | 'panel.selectAll' | 'panel.selectAllLabel' | 'panel.selectionHint' | 'panel.selectedCount' | 'panel.selectRow' | 'panel.batchDelete' | 'panel.batchDeleteTitle' | 'panel.batchDeleteBody' | 'panel.batchDeleteRunning' | 'panel.batchDeleteDirs' | 'panel.batchDeleting' | 'panel.batchPartial' | 'panel.deleteKeepDir' | 'panel.cancel' | 'panel.renameTitle' | 'panel.renameLabel' | 'panel.more' | 'panel.save' | 'panel.titleRequired' | 'panel.actionFailed' | 'panel.retry' | 'panel.archivedHint' | 'panel.loading' | 'entry.label' | 'launcher.creating' | 'launcher.failedTitle' | 'launcher.retry' | 'launcher.manage' | 'launcher.hint' | 'command.label' | 'command.description' | 'command.manageLabel' | 'command.manageDescription' | 'footer.manage' | 'footer.manageCount' | 'footer.manageTooltip' | 'time.now' | 'time.minutes' | 'time.hours' | 'time.days' | 'toast.manageFailed' | 'hero.badge' | 'hero.hint' | 'row.mark' | 'row.hover' | 'composer.placeholder' | 'toast.created' | 'toast.createFailed' | 'toast.deleteFailed' | 'toast.deleted' | 'toast.renamed' | 'toast.renameFailed' | 'error.noHome' | 'error.noSession';
|
|
7
7
|
export type StandaloneDict = Readonly<Record<StandaloneKey, string>>;
|
|
8
8
|
export declare const zh: StandaloneDict;
|
|
9
9
|
export declare const en: StandaloneDict;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* One namespaced stylesheet. DSH theme variables carry the palette, so the
|
|
3
3
|
* plugin follows light/dark themes without owning color tokens.
|
|
4
4
|
*/
|
|
5
|
-
export declare const CSS = "\n.ss-panel {\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n overflow: auto;\n padding: 32px clamp(20px, 5vw, 56px) 56px;\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-specific-main-fill, transparent);\n}\n.ss-shell {\n width: 100%;\n max-width: 880px;\n margin: 0 auto;\n}\n.ss-header {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n justify-content: space-between;\n flex-wrap: wrap;\n margin-bottom: 8px;\n}\n.ss-titleRow {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.ss-title {\n font-size: 24px;\n line-height: 32px;\n font-weight: 600;\n margin: 0;\n}\n.ss-description {\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n margin: 6px 0 0;\n max-width: 560px;\n}\n.ss-count {\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 20px;\n margin-top: 6px;\n}\n.ss-countInline {\n margin-top: 0;\n align-self: center;\n}\n.ss-headerActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 8px;\n}\n.ss-headerSelection {\n position: sticky;\n top: 0;\n z-index: 6;\n align-items: center;\n padding: 8px 0;\n background: var(--dsw-specific-main-fill, var(--dsw-alias-bg-elevated, #fff));\n}\n.ss-selectButton {\n min-height: 30px;\n padding: 3px 8px;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-secondary, #59636e);\n font: inherit;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n}\n.ss-selectButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-selectButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-selectButton:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-button {\n font: inherit;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n box-sizing: border-box;\n min-height: 32px;\n padding: 5px 12px;\n border-radius: var(--dsw-radius-md, 10px);\n border: 0.5px solid transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-button-elevated-fill, #f3f4f6);\n transition: background 120ms ease, border-color 120ms ease;\n}\n.ss-button:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-button:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-button:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-buttonPrimary {\n color: #fff;\n background: var(--dsw-alias-state-business-primary, #2563eb);\n border-color: var(--dsw-alias-state-business-primary, #2563eb);\n}\n.ss-buttonPrimary:hover:not(:disabled) {\n background: var(--dsw-alias-state-business-primary, #2563eb);\n filter: brightness(1.05);\n}\n.ss-buttonQuiet {\n background: transparent;\n border-color: var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n}\n.ss-buttonDanger {\n color: var(--dsw-alias-state-error-primary, #d1242f);\n background: transparent;\n border-color: var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n}\n.ss-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: none;\n border-radius: 999px;\n padding: 1px 8px 2px;\n font-size: 11px;\n line-height: 16px;\n font-weight: 600;\n letter-spacing: 0.01em;\n color: var(--dsw-alias-label-primary-bluish, #1f4f8f);\n background: var(--dsw-alias-state-business-tertiary, rgba(59, 130, 246, 0.12));\n border: 0.5px solid var(--dsw-alias-interactive-bg-hover, rgba(59, 130, 246, 0.18));\n}\n.ss-selectAll {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n user-select: none;\n}\n.ss-checkbox {\n width: 18px;\n height: 18px;\n margin: 0;\n flex: none;\n accent-color: var(--dsw-alias-state-business-primary, #2563eb);\n cursor: pointer;\n}\n.ss-checkbox:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 20px 0 0;\n padding: 0;\n list-style: none;\n}\n.ss-row {\n position: relative;\n display: flex;\n align-items: center;\n gap: 14px;\n box-sizing: border-box;\n padding: 12px 14px;\n border-radius: var(--dsw-radius-lg, 14px);\n border: 0.5px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.2));\n background: var(--dsw-alias-bg-elevated, rgba(255, 255, 255, 0.02));\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n.ss-row:hover,\n.ss-row:focus-within {\n border-color: var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-rowSelected,\n.ss-rowSelected:hover,\n.ss-rowSelected:focus-within {\n border-color: var(--dsw-alias-state-business-primary, #3b82f6);\n}\n.ss-row[aria-disabled=\"true\"] {\n cursor: default;\n opacity: 0.7;\n}\n.ss-rowMain {\n min-width: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 3px;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n}\n.ss-rowMain:disabled {\n cursor: default;\n opacity: 0.7;\n}\n.ss-rowMain:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 2px;\n border-radius: 6px;\n}\n.ss-rowTitleRow {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n.ss-rowTitle {\n font-size: 14px;\n line-height: 20px;\n font-weight: 600;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ss-rowMeta {\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 18px;\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex-wrap: wrap;\n}\n.ss-dotSep {\n opacity: 0.5;\n}\n.ss-rowActions {\n position: relative;\n display: flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n.ss-rowMenuButton {\n width: 28px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font: inherit;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n opacity: 0;\n transition: background 120ms ease, color 120ms ease, opacity 120ms ease;\n}\n.ss-row:hover .ss-rowMenuButton,\n.ss-row:focus-within .ss-rowMenuButton,\n.ss-rowMenuOpen .ss-rowMenuButton {\n opacity: 1;\n}\n.ss-rowMenuButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-rowMenuButton:focus-visible {\n opacity: 1;\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-rowMenuButton:disabled {\n cursor: default;\n opacity: 0.35;\n}\n.ss-rowMenu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n z-index: 20;\n min-width: 136px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n border-radius: var(--dsw-radius-md, 10px);\n background: var(--dsw-alias-bg-elevated, #fff);\n box-shadow: 0 10px 28px rgba(0, 0, 0, 0.16);\n}\n.ss-rowMenu button {\n box-sizing: border-box;\n width: 100%;\n padding: 6px 9px;\n border: 0;\n border-radius: 6px;\n background: transparent;\n color: var(--dsw-alias-label-primary, #1f2328);\n font: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n.ss-rowMenu button:hover:not(:disabled),\n.ss-rowMenu button:focus-visible {\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n outline: none;\n}\n.ss-rowMenu button:disabled {\n cursor: default;\n opacity: 0.5;\n}\n.ss-rowMenuDanger {\n color: var(--dsw-alias-state-error-primary, #d1242f) !important;\n}\n.ss-status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.ss-statusDot {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0.55;\n}\n.ss-stateRunning {\n color: var(--dsw-alias-state-business-primary, #2563eb);\n font-weight: 600;\n}\n.ss-empty {\n margin-top: 28px;\n padding: 44px 24px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.3));\n border-radius: var(--dsw-radius-lg, 14px);\n}\n.ss-emptyTitle {\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n margin: 0 0 6px;\n}\n.ss-emptyHint {\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n margin: 0 auto;\n max-width: 460px;\n}\n.ss-emptyAction {\n margin-top: 18px;\n}\n.ss-panelHint {\n margin: 18px 0 0;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 20px;\n}\n.ss-fieldLabel {\n display: block;\n margin: 12px 0 6px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 12px;\n line-height: 18px;\n}\n.ss-error {\n margin-top: 16px;\n padding: 8px 10px;\n border-radius: var(--dsw-radius-sm, 8px);\n color: var(--dsw-alias-state-error-primary, #d1242f);\n background: var(--dsw-alias-state-error-tertiary, rgba(209, 36, 47, 0.08));\n font-size: 12px;\n line-height: 18px;\n}\n.ss-dialogBackdrop {\n position: fixed;\n inset: 0;\n z-index: 80;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.28);\n padding: 24px;\n}\n.ss-dialog {\n width: 100%;\n max-width: 440px;\n max-height: calc(100vh - 48px);\n overflow: auto;\n box-sizing: border-box;\n border-radius: var(--dsw-radius-lg, 14px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-bg-elevated, #fff);\n padding: 20px;\n box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);\n}\n.ss-dialogTitle {\n margin: 0 0 6px;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n}\n.ss-dialogBody {\n margin: 0 0 14px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n}\n.ss-input {\n box-sizing: border-box;\n width: 100%;\n height: 36px;\n border-radius: var(--dsw-radius-sm, 8px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: transparent;\n color: inherit;\n font: inherit;\n padding: 0 10px;\n}\n.ss-dialogFooter {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 18px;\n}\n.ss-batchWarning {\n margin: 0 0 10px;\n color: var(--dsw-alias-label-primary, #1f2328);\n font-size: 12px;\n line-height: 18px;\n font-weight: 600;\n}\n.ss-batchDirs {\n margin: 0 0 10px;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 18px;\n}\n.ss-footerAction {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 30px;\n padding: 4px 8px;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-secondary, #59636e);\n font: inherit;\n cursor: pointer;\n text-align: left;\n}\n.ss-footerAction:hover {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-footerAction:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-footerLabel {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n.ss-footerRail {\n width: 36px;\n height: 36px;\n justify-content: center;\n padding: 0;\n}\n.ss-panelIcon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ss-launcher {\n box-sizing: border-box;\n min-height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--dsw-alias-label-primary, #1f2328);\n}\n.ss-launcherCard {\n box-sizing: border-box;\n width: 100%;\n max-width: 430px;\n padding: 30px 28px;\n text-align: center;\n border: 0.5px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n border-radius: var(--dsw-radius-lg, 14px);\n background: var(--dsw-alias-bg-elevated, rgba(255, 255, 255, 0.02));\n}\n.ss-launcherSpinner {\n width: 22px;\n height: 22px;\n margin: 0 auto 14px;\n border-radius: 50%;\n border: 2px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.25));\n border-top-color: var(--dsw-alias-state-business-primary, #2563eb);\n animation: ss-spin 900ms linear infinite;\n}\n@keyframes ss-spin {\n to { transform: rotate(360deg); }\n}\n.ss-launcherTitle {\n margin: 0;\n font-size: 15px;\n line-height: 22px;\n font-weight: 600;\n}\n.ss-launcherHint {\n margin: 6px 0 0;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n}\n.ss-launcherActions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px;\n margin-top: 18px;\n}\n.ss-heroBadge {\n margin-right: 4px;\n}\n.ss-rowMark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 4px;\n font-size: 10px;\n line-height: 1;\n font-weight: 700;\n color: var(--dsw-alias-label-primary-bluish, #1f4f8f);\n background: var(--dsw-alias-state-business-tertiary, rgba(59, 130, 246, 0.14));\n flex: none;\n}\n.ss-rowHover {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #cfd3d6;\n font-size: 12px;\n line-height: 16px;\n}\n.ss-toast {\n position: fixed;\n left: 50%;\n bottom: 28px;\n transform: translateX(-50%);\n z-index: 90;\n max-width: min(520px, calc(100vw - 40px));\n box-sizing: border-box;\n padding: 9px 14px;\n border-radius: var(--dsw-radius-md, 10px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-bg-elevated, #fff);\n color: var(--dsw-alias-label-primary, #1f2328);\n box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);\n font-size: 13px;\n line-height: 19px;\n pointer-events: auto;\n}\n.ss-toastError {\n color: var(--dsw-alias-state-error-primary, #d1242f);\n}\n.ss-visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n@media (hover: none) {\n .ss-rowMenuButton { opacity: 1; }\n}\n@media (max-width: 640px) {\n .ss-panel { padding: 20px 14px 40px; }\n .ss-row { flex-wrap: nowrap; gap: 10px; }\n .ss-headerSelection { align-items: flex-start; }\n .ss-headerSelection .ss-headerActions {\n width: 100%;\n justify-content: flex-end;\n }\n}\n";
|
|
5
|
+
export declare const CSS = "\n.ss-panel {\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n overflow: auto;\n padding: 32px clamp(20px, 5vw, 56px) 56px;\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-specific-main-fill, transparent);\n}\n.ss-shell {\n width: 100%;\n max-width: 880px;\n margin: 0 auto;\n}\n.ss-header {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n justify-content: space-between;\n flex-wrap: nowrap;\n min-height: 58px;\n margin-bottom: 8px;\n}\n.ss-headerMain {\n min-width: 0;\n flex: 1;\n}\n.ss-titleRow {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.ss-title {\n font-size: 24px;\n line-height: 32px;\n font-weight: 600;\n margin: 0;\n}\n.ss-statusLine {\n margin: 6px 0 0;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ss-statusLineError {\n color: var(--dsw-alias-state-error-primary, #d1242f);\n}\n.ss-count {\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 20px;\n margin-top: 6px;\n}\n.ss-countInline {\n margin-top: 0;\n align-self: center;\n}\n.ss-headerActions {\n display: flex;\n flex: 0 0 176px;\n width: 176px;\n height: 32px;\n align-items: center;\n justify-content: flex-end;\n flex-wrap: nowrap;\n gap: 8px;\n}\n.ss-deleteSlot {\n width: 56px;\n height: 32px;\n flex: none;\n display: flex;\n justify-content: flex-end;\n}\n.ss-deleteSlot .ss-button {\n min-width: 52px;\n flex: none;\n}\n.ss-selectButton {\n min-height: 32px;\n padding: 3px 8px;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-secondary, #59636e);\n font: inherit;\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n}\n.ss-selectButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-selectButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-selectButton:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-button {\n font: inherit;\n display: inline-flex;\n flex: none;\n white-space: nowrap;\n align-items: center;\n justify-content: center;\n gap: 6px;\n box-sizing: border-box;\n min-height: 32px;\n padding: 5px 12px;\n border-radius: var(--dsw-radius-md, 10px);\n border: 0.5px solid transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-button-elevated-fill, #f3f4f6);\n transition: background 120ms ease, border-color 120ms ease;\n}\n.ss-button:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-button:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-button:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-buttonPrimary {\n color: #fff;\n background: var(--dsw-alias-state-business-primary, #2563eb);\n border-color: var(--dsw-alias-state-business-primary, #2563eb);\n}\n.ss-buttonPrimary:hover:not(:disabled) {\n background: var(--dsw-alias-state-business-primary, #2563eb);\n filter: brightness(1.05);\n}\n.ss-buttonQuiet {\n background: transparent;\n border-color: var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n}\n.ss-buttonDanger {\n color: var(--dsw-alias-state-error-primary, #d1242f);\n background: transparent;\n border-color: var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n}\n.ss-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: none;\n border-radius: 999px;\n padding: 1px 8px 2px;\n font-size: 11px;\n line-height: 16px;\n font-weight: 600;\n letter-spacing: 0.01em;\n color: var(--dsw-alias-label-primary-bluish, #1f4f8f);\n background: var(--dsw-alias-state-business-tertiary, rgba(59, 130, 246, 0.12));\n border: 0.5px solid var(--dsw-alias-interactive-bg-hover, rgba(59, 130, 246, 0.18));\n}\n.ss-selectAll {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n user-select: none;\n}\n.ss-checkbox {\n width: 18px;\n height: 18px;\n margin: 0;\n flex: none;\n accent-color: var(--dsw-alias-state-business-primary, #2563eb);\n cursor: pointer;\n}\n.ss-checkbox:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 20px 0 0;\n padding: 0;\n list-style: none;\n}\n.ss-row {\n position: relative;\n display: grid;\n grid-template-columns: 18px minmax(0, 1fr) 28px;\n column-gap: 14px;\n align-items: center;\n box-sizing: border-box;\n height: 66px;\n padding: 12px 14px;\n border-radius: var(--dsw-radius-lg, 14px);\n border: 0.5px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.2));\n background: var(--dsw-alias-bg-elevated, rgba(255, 255, 255, 0.02));\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n.ss-row:hover,\n.ss-row:focus-within {\n border-color: var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-rowSelected,\n.ss-rowSelected:hover,\n.ss-rowSelected:focus-within {\n border-color: var(--dsw-alias-state-business-primary, #3b82f6);\n}\n.ss-row[aria-disabled=\"true\"] {\n cursor: default;\n opacity: 0.7;\n}\n.ss-rowLead {\n width: 18px;\n height: 20px;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--dsw-alias-label-tertiary, #818b98);\n}\n.ss-rowMain {\n min-width: 0;\n width: 100%;\n grid-column: 2;\n display: flex;\n flex-direction: column;\n gap: 3px;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n}\n.ss-rowMain:disabled {\n cursor: default;\n opacity: 0.7;\n}\n.ss-rowMain:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 2px;\n border-radius: 6px;\n}\n.ss-rowTitleRow {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n.ss-rowTitle {\n font-size: 14px;\n line-height: 20px;\n font-weight: 600;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ss-rowMeta {\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 18px;\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex-wrap: nowrap;\n overflow: hidden;\n white-space: nowrap;\n}\n.ss-dotSep {\n opacity: 0.5;\n}\n.ss-rowActions {\n position: relative;\n grid-column: 3;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n flex: none;\n}\n.ss-rowMenuButton {\n width: 28px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font: inherit;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n opacity: 0;\n transition: background 120ms ease, color 120ms ease, opacity 120ms ease;\n}\n.ss-row:hover .ss-rowMenuButton,\n.ss-row:focus-within .ss-rowMenuButton,\n.ss-rowMenuOpen .ss-rowMenuButton {\n opacity: 1;\n}\n.ss-rowMenuButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-rowMenuButton:focus-visible {\n opacity: 1;\n outline: var(--dsw-focus-ring-width, 2px) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary, #3b82f6));\n outline-offset: 1px;\n}\n.ss-rowMenuButton:disabled {\n cursor: default;\n opacity: 0.35;\n}\n.ss-rowMenu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n z-index: 20;\n min-width: 136px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n border-radius: var(--dsw-radius-md, 10px);\n background: var(--dsw-alias-bg-elevated, #fff);\n box-shadow: 0 10px 28px rgba(0, 0, 0, 0.16);\n}\n.ss-rowMenu button {\n box-sizing: border-box;\n width: 100%;\n padding: 6px 9px;\n border: 0;\n border-radius: 6px;\n background: transparent;\n color: var(--dsw-alias-label-primary, #1f2328);\n font: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n.ss-rowMenu button:hover:not(:disabled),\n.ss-rowMenu button:focus-visible {\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n outline: none;\n}\n.ss-rowMenu button:disabled {\n cursor: default;\n opacity: 0.5;\n}\n.ss-rowMenuDanger {\n color: var(--dsw-alias-state-error-primary, #d1242f) !important;\n}\n.ss-status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.ss-statusDot {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0.55;\n}\n.ss-stateRunning {\n color: var(--dsw-alias-state-business-primary, #2563eb);\n font-weight: 600;\n}\n.ss-empty {\n margin-top: 28px;\n padding: 44px 24px;\n text-align: center;\n border: 0.5px dashed var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.3));\n border-radius: var(--dsw-radius-lg, 14px);\n}\n.ss-emptyTitle {\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n margin: 0 0 6px;\n}\n.ss-emptyHint {\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n margin: 0 auto;\n max-width: 460px;\n}\n.ss-emptyAction {\n margin-top: 18px;\n}\n.ss-panelHint {\n margin: 18px 0 0;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 20px;\n}\n.ss-fieldLabel {\n display: block;\n margin: 12px 0 6px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 12px;\n line-height: 18px;\n}\n.ss-error {\n margin-top: 16px;\n padding: 8px 10px;\n border-radius: var(--dsw-radius-sm, 8px);\n color: var(--dsw-alias-state-error-primary, #d1242f);\n background: var(--dsw-alias-state-error-tertiary, rgba(209, 36, 47, 0.08));\n font-size: 12px;\n line-height: 18px;\n}\n.ss-dialogBackdrop {\n position: fixed;\n inset: 0;\n z-index: 80;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.28);\n padding: 24px;\n}\n.ss-dialog {\n width: 100%;\n max-width: 440px;\n max-height: calc(100vh - 48px);\n overflow: auto;\n box-sizing: border-box;\n border-radius: var(--dsw-radius-lg, 14px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-bg-elevated, #fff);\n padding: 20px;\n box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);\n}\n.ss-dialogTitle {\n margin: 0 0 6px;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n}\n.ss-dialogBody {\n margin: 0 0 14px;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n}\n.ss-input {\n box-sizing: border-box;\n width: 100%;\n height: 36px;\n border-radius: var(--dsw-radius-sm, 8px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: transparent;\n color: inherit;\n font: inherit;\n padding: 0 10px;\n}\n.ss-dialogFooter {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 18px;\n}\n.ss-batchWarning {\n margin: 0 0 10px;\n color: var(--dsw-alias-label-primary, #1f2328);\n font-size: 12px;\n line-height: 18px;\n font-weight: 600;\n}\n.ss-batchDirs {\n margin: 0 0 10px;\n color: var(--dsw-alias-label-tertiary, #818b98);\n font-size: 12px;\n line-height: 18px;\n}\n.ss-footerAction {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 30px;\n padding: 4px 8px;\n border: 0;\n border-radius: var(--dsw-radius-md, 10px);\n background: transparent;\n color: var(--dsw-alias-label-secondary, #59636e);\n font: inherit;\n cursor: pointer;\n text-align: left;\n}\n.ss-footerAction:hover {\n color: var(--dsw-alias-label-primary, #1f2328);\n background: var(--dsw-alias-interactive-bg-hover, #e9ebee);\n}\n.ss-footerAction:disabled {\n cursor: default;\n opacity: 0.55;\n}\n.ss-footerLabel {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n.ss-footerRail {\n width: 36px;\n height: 36px;\n justify-content: center;\n padding: 0;\n}\n.ss-panelIcon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ss-launcher {\n box-sizing: border-box;\n min-height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--dsw-alias-label-primary, #1f2328);\n}\n.ss-launcherCard {\n box-sizing: border-box;\n width: 100%;\n max-width: 430px;\n padding: 30px 28px;\n text-align: center;\n border: 0.5px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.22));\n border-radius: var(--dsw-radius-lg, 14px);\n background: var(--dsw-alias-bg-elevated, rgba(255, 255, 255, 0.02));\n}\n.ss-launcherSpinner {\n width: 22px;\n height: 22px;\n margin: 0 auto 14px;\n border-radius: 50%;\n border: 2px solid var(--dsw-alias-border-l2, rgba(128, 128, 128, 0.25));\n border-top-color: var(--dsw-alias-state-business-primary, #2563eb);\n animation: ss-spin 900ms linear infinite;\n}\n@keyframes ss-spin {\n to { transform: rotate(360deg); }\n}\n.ss-launcherTitle {\n margin: 0;\n font-size: 15px;\n line-height: 22px;\n font-weight: 600;\n}\n.ss-launcherHint {\n margin: 6px 0 0;\n color: var(--dsw-alias-label-secondary, #59636e);\n font-size: 13px;\n line-height: 20px;\n}\n.ss-launcherActions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px;\n margin-top: 18px;\n}\n.ss-heroBadge {\n margin-right: 4px;\n}\n.ss-rowMark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 4px;\n font-size: 10px;\n line-height: 1;\n font-weight: 700;\n color: var(--dsw-alias-label-primary-bluish, #1f4f8f);\n background: var(--dsw-alias-state-business-tertiary, rgba(59, 130, 246, 0.14));\n flex: none;\n}\n.ss-rowHover {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #cfd3d6;\n font-size: 12px;\n line-height: 16px;\n}\n.ss-toast {\n position: fixed;\n left: 50%;\n bottom: 28px;\n transform: translateX(-50%);\n z-index: 90;\n max-width: min(520px, calc(100vw - 40px));\n box-sizing: border-box;\n padding: 9px 14px;\n border-radius: var(--dsw-radius-md, 10px);\n border: 0.5px solid var(--dsw-alias-border-l4, rgba(128, 128, 128, 0.35));\n background: var(--dsw-alias-bg-elevated, #fff);\n color: var(--dsw-alias-label-primary, #1f2328);\n box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);\n font-size: 13px;\n line-height: 19px;\n pointer-events: auto;\n}\n.ss-toastError {\n color: var(--dsw-alias-state-error-primary, #d1242f);\n}\n.ss-visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n@media (hover: none) {\n .ss-rowMenuButton { opacity: 1; }\n}\n@media (max-width: 640px) {\n .ss-panel { padding: 20px 14px 40px; }\n .ss-row { flex-wrap: nowrap; gap: 10px; }\n .ss-headerActions { flex-basis: 176px; width: 176px; }\n}\n";
|
|
6
6
|
/**
|
|
7
7
|
* Insert (or replace) the plugin's one style element.
|
|
8
8
|
* @returns a disposer that removes the element.
|
package/package.json
CHANGED