@termix-ssh/plugin-sdk 1.0.18 → 1.0.20
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/CHANGELOG.md +18 -0
- package/PLUGIN-GUIDE.md +5 -1
- package/dist/desktop.d.ts +9 -0
- package/dist/frontend.d.ts +36 -3
- package/dist/frontend.js +26 -3
- package/dist/host/{PluginsTab-YAGYRBIE.js → PluginsTab-ZSMTJ5C5.js} +26 -44
- package/dist/host/{chunk-446UEDSK.js → chunk-CITUENSU.js} +17 -2
- package/dist/host/{chunk-LQKK2JJA.js → chunk-EYONBBRJ.js} +1550 -1507
- package/dist/host/{chunk-J2AILBXM.js → chunk-J3ZQPBDK.js} +144 -95
- package/dist/host/core-classes.json +1 -1
- package/dist/host/testing-host.js +2 -2
- package/dist/host/types/src/ui/components/data-view.d.ts +7 -2
- package/dist/host/types/src/ui/components/panel-layout.d.ts +9 -2
- package/dist/host/types/src/ui/plugin-host/sdk-ui.d.ts +1 -1
- package/dist/host/types/src/ui/shell/companions.d.ts +20 -0
- package/dist/host/ui.js +3 -3
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +1 -1
- package/dist/testing/setup.js +1 -0
- package/package.json +1 -1
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
withIconBoundary,
|
|
84
84
|
withPluginContext,
|
|
85
85
|
withPluginScope
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-EYONBBRJ.js";
|
|
87
87
|
import {
|
|
88
88
|
SYNC_CHANGED_EVENT,
|
|
89
89
|
TRUST_TOKEN_KEY,
|
|
@@ -2007,6 +2007,8 @@ var en_default = {
|
|
|
2007
2007
|
resetEveryone: "Reset the default for everyone",
|
|
2008
2008
|
update: "Update {{name}} to {{version}}",
|
|
2009
2009
|
disable: "Turn off {{name}}",
|
|
2010
|
+
enable: "Turn on {{name}}",
|
|
2011
|
+
startAgain: "Start {{name}} again",
|
|
2010
2012
|
install: "Find layouts and themes",
|
|
2011
2013
|
installTitle: "Layouts and themes",
|
|
2012
2014
|
installButton: "Install",
|
|
@@ -2232,11 +2234,6 @@ var en_default = {
|
|
|
2232
2234
|
updated: "Recently updated",
|
|
2233
2235
|
category: "Category"
|
|
2234
2236
|
},
|
|
2235
|
-
columns: {
|
|
2236
|
-
title: "Columns",
|
|
2237
|
-
auto: "Auto",
|
|
2238
|
-
count: "{{count}} wide"
|
|
2239
|
-
},
|
|
2240
2237
|
table: {
|
|
2241
2238
|
name: "Name",
|
|
2242
2239
|
description: "Description",
|
|
@@ -2561,7 +2558,12 @@ var en_default = {
|
|
|
2561
2558
|
gridView: "Grid",
|
|
2562
2559
|
listView: "List",
|
|
2563
2560
|
compactRows: "Compact rows",
|
|
2564
|
-
comfortableRows: "Comfortable rows"
|
|
2561
|
+
comfortableRows: "Comfortable rows",
|
|
2562
|
+
columns: {
|
|
2563
|
+
title: "Columns",
|
|
2564
|
+
auto: "Auto",
|
|
2565
|
+
count: "{{count}} wide"
|
|
2566
|
+
}
|
|
2565
2567
|
},
|
|
2566
2568
|
fields: {
|
|
2567
2569
|
secretSaved: "Saved. Type to replace it."
|
|
@@ -7946,6 +7948,107 @@ function useOptionalHostStatusEntry(hostId) {
|
|
|
7946
7948
|
// src/ui/plugin-host/bridge.ts
|
|
7947
7949
|
init_define_import_meta_env();
|
|
7948
7950
|
import { useCallback as useCallback8, useEffect as useEffect15, useMemo as useMemo8, useState as useState14 } from "react";
|
|
7951
|
+
|
|
7952
|
+
// src/ui/shell/companions.ts
|
|
7953
|
+
init_define_import_meta_env();
|
|
7954
|
+
import { useSyncExternalStore as useSyncExternalStore9 } from "react";
|
|
7955
|
+
var registry5 = createRegistry(byOrderThenId);
|
|
7956
|
+
var registerCompanionDef = registry5.register;
|
|
7957
|
+
var getCompanionDef = registry5.get;
|
|
7958
|
+
var listCompanionDefs = registry5.list;
|
|
7959
|
+
var useCompanionDefs = registry5.useList;
|
|
7960
|
+
var resetCompanions = registry5.reset;
|
|
7961
|
+
var layouts = createRegistry();
|
|
7962
|
+
var registerCompanionLayoutDef = layouts.register;
|
|
7963
|
+
var useCompanionLayoutDefs = layouts.useList;
|
|
7964
|
+
var resetCompanionLayouts = layouts.reset;
|
|
7965
|
+
function resolveCompanionLayout(tabType, host) {
|
|
7966
|
+
const def = layouts.list().find((entry) => entry.tabTypes.includes(tabType));
|
|
7967
|
+
if (!def) return {};
|
|
7968
|
+
try {
|
|
7969
|
+
return def.resolve(host) ?? {};
|
|
7970
|
+
} catch {
|
|
7971
|
+
return {};
|
|
7972
|
+
}
|
|
7973
|
+
}
|
|
7974
|
+
function companionApplies(def, tab) {
|
|
7975
|
+
if (!tab.host) return false;
|
|
7976
|
+
if (def.tabTypes?.length && !def.tabTypes.includes(tab.type)) return false;
|
|
7977
|
+
const layout = resolveCompanionLayout(tab.type, tab.host);
|
|
7978
|
+
if (layout.enabled === false || layout.hidden?.includes(def.id)) return false;
|
|
7979
|
+
return def.when ? def.when(tab, tab.host) : true;
|
|
7980
|
+
}
|
|
7981
|
+
function arrangeCompanions(defs, order2) {
|
|
7982
|
+
if (!order2?.length) return defs;
|
|
7983
|
+
const rank = new Map(order2.map((id, index) => [id, index]));
|
|
7984
|
+
return defs.map((def, index) => ({ def, index })).sort(
|
|
7985
|
+
(a, b) => (rank.get(a.def.id) ?? order2.length + a.index) - (rank.get(b.def.id) ?? order2.length + b.index)
|
|
7986
|
+
).map(({ def }) => def);
|
|
7987
|
+
}
|
|
7988
|
+
var STORAGE_KEY = "termix:companions";
|
|
7989
|
+
var EMPTY3 = { openId: null, seen: false };
|
|
7990
|
+
var states = /* @__PURE__ */ new Map();
|
|
7991
|
+
var listeners7 = /* @__PURE__ */ new Set();
|
|
7992
|
+
var version2 = 0;
|
|
7993
|
+
function load() {
|
|
7994
|
+
try {
|
|
7995
|
+
const raw = localStorage.getItem(STORAGE_KEY);
|
|
7996
|
+
if (!raw) return;
|
|
7997
|
+
const parsed = JSON.parse(raw);
|
|
7998
|
+
states = new Map(Object.entries(parsed));
|
|
7999
|
+
} catch {
|
|
8000
|
+
}
|
|
8001
|
+
}
|
|
8002
|
+
function save() {
|
|
8003
|
+
try {
|
|
8004
|
+
const entries = [...states.entries()].slice(-200);
|
|
8005
|
+
localStorage.setItem(
|
|
8006
|
+
STORAGE_KEY,
|
|
8007
|
+
JSON.stringify(Object.fromEntries(entries))
|
|
8008
|
+
);
|
|
8009
|
+
} catch {
|
|
8010
|
+
}
|
|
8011
|
+
}
|
|
8012
|
+
load();
|
|
8013
|
+
function companionKey(tab) {
|
|
8014
|
+
return tab.instanceId ?? tab.id;
|
|
8015
|
+
}
|
|
8016
|
+
function getCompanionState(key) {
|
|
8017
|
+
return states.get(key) ?? EMPTY3;
|
|
8018
|
+
}
|
|
8019
|
+
function patchCompanionState(key, patch) {
|
|
8020
|
+
const next = { ...getCompanionState(key), ...patch };
|
|
8021
|
+
states = new Map(states);
|
|
8022
|
+
states.delete(key);
|
|
8023
|
+
states.set(key, next);
|
|
8024
|
+
version2 += 1;
|
|
8025
|
+
save();
|
|
8026
|
+
for (const listener of listeners7) listener();
|
|
8027
|
+
}
|
|
8028
|
+
function subscribe4(listener) {
|
|
8029
|
+
listeners7.add(listener);
|
|
8030
|
+
return () => listeners7.delete(listener);
|
|
8031
|
+
}
|
|
8032
|
+
function useCompanionState(key) {
|
|
8033
|
+
useSyncExternalStore9(
|
|
8034
|
+
subscribe4,
|
|
8035
|
+
() => version2,
|
|
8036
|
+
() => version2
|
|
8037
|
+
);
|
|
8038
|
+
return getCompanionState(key);
|
|
8039
|
+
}
|
|
8040
|
+
function toggleCompanion(tab, id) {
|
|
8041
|
+
const key = companionKey(tab);
|
|
8042
|
+
const current2 = getCompanionState(key);
|
|
8043
|
+
const target = id ?? current2.openId ?? listCompanionDefs().find((def) => companionApplies(def, tab))?.id ?? null;
|
|
8044
|
+
if (!target) return;
|
|
8045
|
+
patchCompanionState(key, {
|
|
8046
|
+
seen: true,
|
|
8047
|
+
openId: current2.openId === target ? null : target
|
|
8048
|
+
});
|
|
8049
|
+
}
|
|
8050
|
+
|
|
8051
|
+
// src/ui/plugin-host/bridge.ts
|
|
7949
8052
|
import { useTranslation as useI18nTranslation } from "react-i18next";
|
|
7950
8053
|
import { toast as toast4 } from "sonner";
|
|
7951
8054
|
import {
|
|
@@ -8280,6 +8383,14 @@ var pluginHostBridge = {
|
|
|
8280
8383
|
return useOptionalHostStatusEntry(hostId);
|
|
8281
8384
|
},
|
|
8282
8385
|
useHostActions: () => useHostActions(),
|
|
8386
|
+
useCompanions: (tabType) => {
|
|
8387
|
+
const defs = useCompanionDefs();
|
|
8388
|
+
return defs.filter((def) => !def.tabTypes?.length || def.tabTypes.includes(tabType)).map((def) => ({
|
|
8389
|
+
id: def.id,
|
|
8390
|
+
titleKey: def.titleKey ?? def.id,
|
|
8391
|
+
icon: def.icon
|
|
8392
|
+
}));
|
|
8393
|
+
},
|
|
8283
8394
|
useActivityTypes: () => {
|
|
8284
8395
|
const defs = useTabTypes();
|
|
8285
8396
|
const types = /* @__PURE__ */ new Set();
|
|
@@ -8370,7 +8481,7 @@ function onRemoteServerChange(listener) {
|
|
|
8370
8481
|
|
|
8371
8482
|
// src/ui/look/layout-registry.ts
|
|
8372
8483
|
init_define_import_meta_env();
|
|
8373
|
-
import { useSyncExternalStore as
|
|
8484
|
+
import { useSyncExternalStore as useSyncExternalStore10 } from "react";
|
|
8374
8485
|
var descriptorSnapshot = [];
|
|
8375
8486
|
var descriptorListeners = /* @__PURE__ */ new Set();
|
|
8376
8487
|
var registered = createRegistry();
|
|
@@ -8381,12 +8492,12 @@ var resetRegisteredLayouts = registered.reset;
|
|
|
8381
8492
|
function listLayouts() {
|
|
8382
8493
|
return descriptorSnapshot;
|
|
8383
8494
|
}
|
|
8384
|
-
function setPluginLayouts(
|
|
8495
|
+
function setPluginLayouts(layouts2) {
|
|
8385
8496
|
const key = (list) => JSON.stringify(
|
|
8386
8497
|
list.map((l) => [l.id, l.pluginId, l.label, l.defaultTheme])
|
|
8387
8498
|
);
|
|
8388
|
-
if (key(
|
|
8389
|
-
descriptorSnapshot =
|
|
8499
|
+
if (key(layouts2) === key(descriptorSnapshot)) return;
|
|
8500
|
+
descriptorSnapshot = layouts2;
|
|
8390
8501
|
for (const listener of descriptorListeners) listener();
|
|
8391
8502
|
}
|
|
8392
8503
|
function subscribeDescriptors(listener) {
|
|
@@ -8396,7 +8507,7 @@ function subscribeDescriptors(listener) {
|
|
|
8396
8507
|
};
|
|
8397
8508
|
}
|
|
8398
8509
|
function useLayouts() {
|
|
8399
|
-
return
|
|
8510
|
+
return useSyncExternalStore10(subscribeDescriptors, listLayouts, listLayouts);
|
|
8400
8511
|
}
|
|
8401
8512
|
function layoutLabel(layout, t) {
|
|
8402
8513
|
if (!layout.pluginId) return layout.label;
|
|
@@ -8408,85 +8519,6 @@ function layoutLabel(layout, t) {
|
|
|
8408
8519
|
// src/ui/plugin-host/app.ts
|
|
8409
8520
|
init_define_import_meta_env();
|
|
8410
8521
|
import { useEffect as useEffect16 } from "react";
|
|
8411
|
-
|
|
8412
|
-
// src/ui/shell/companions.ts
|
|
8413
|
-
init_define_import_meta_env();
|
|
8414
|
-
import { useSyncExternalStore as useSyncExternalStore10 } from "react";
|
|
8415
|
-
var registry5 = createRegistry(byOrderThenId);
|
|
8416
|
-
var registerCompanionDef = registry5.register;
|
|
8417
|
-
var getCompanionDef = registry5.get;
|
|
8418
|
-
var listCompanionDefs = registry5.list;
|
|
8419
|
-
var useCompanionDefs = registry5.useList;
|
|
8420
|
-
var resetCompanions = registry5.reset;
|
|
8421
|
-
function companionApplies(def, tab) {
|
|
8422
|
-
if (!tab.host) return false;
|
|
8423
|
-
if (def.tabTypes?.length && !def.tabTypes.includes(tab.type)) return false;
|
|
8424
|
-
return def.when ? def.when(tab, tab.host) : true;
|
|
8425
|
-
}
|
|
8426
|
-
var STORAGE_KEY = "termix:companions";
|
|
8427
|
-
var EMPTY3 = { openId: null, seen: false };
|
|
8428
|
-
var states = /* @__PURE__ */ new Map();
|
|
8429
|
-
var listeners7 = /* @__PURE__ */ new Set();
|
|
8430
|
-
var version2 = 0;
|
|
8431
|
-
function load() {
|
|
8432
|
-
try {
|
|
8433
|
-
const raw = localStorage.getItem(STORAGE_KEY);
|
|
8434
|
-
if (!raw) return;
|
|
8435
|
-
const parsed = JSON.parse(raw);
|
|
8436
|
-
states = new Map(Object.entries(parsed));
|
|
8437
|
-
} catch {
|
|
8438
|
-
}
|
|
8439
|
-
}
|
|
8440
|
-
function save() {
|
|
8441
|
-
try {
|
|
8442
|
-
const entries = [...states.entries()].slice(-200);
|
|
8443
|
-
localStorage.setItem(
|
|
8444
|
-
STORAGE_KEY,
|
|
8445
|
-
JSON.stringify(Object.fromEntries(entries))
|
|
8446
|
-
);
|
|
8447
|
-
} catch {
|
|
8448
|
-
}
|
|
8449
|
-
}
|
|
8450
|
-
load();
|
|
8451
|
-
function companionKey(tab) {
|
|
8452
|
-
return tab.instanceId ?? tab.id;
|
|
8453
|
-
}
|
|
8454
|
-
function getCompanionState(key) {
|
|
8455
|
-
return states.get(key) ?? EMPTY3;
|
|
8456
|
-
}
|
|
8457
|
-
function patchCompanionState(key, patch) {
|
|
8458
|
-
const next = { ...getCompanionState(key), ...patch };
|
|
8459
|
-
states = new Map(states);
|
|
8460
|
-
states.delete(key);
|
|
8461
|
-
states.set(key, next);
|
|
8462
|
-
version2 += 1;
|
|
8463
|
-
save();
|
|
8464
|
-
for (const listener of listeners7) listener();
|
|
8465
|
-
}
|
|
8466
|
-
function subscribe4(listener) {
|
|
8467
|
-
listeners7.add(listener);
|
|
8468
|
-
return () => listeners7.delete(listener);
|
|
8469
|
-
}
|
|
8470
|
-
function useCompanionState(key) {
|
|
8471
|
-
useSyncExternalStore10(
|
|
8472
|
-
subscribe4,
|
|
8473
|
-
() => version2,
|
|
8474
|
-
() => version2
|
|
8475
|
-
);
|
|
8476
|
-
return getCompanionState(key);
|
|
8477
|
-
}
|
|
8478
|
-
function toggleCompanion(tab, id) {
|
|
8479
|
-
const key = companionKey(tab);
|
|
8480
|
-
const current2 = getCompanionState(key);
|
|
8481
|
-
const target = id ?? current2.openId ?? listCompanionDefs().find((def) => companionApplies(def, tab))?.id ?? null;
|
|
8482
|
-
if (!target) return;
|
|
8483
|
-
patchCompanionState(key, {
|
|
8484
|
-
seen: true,
|
|
8485
|
-
openId: current2.openId === target ? null : target
|
|
8486
|
-
});
|
|
8487
|
-
}
|
|
8488
|
-
|
|
8489
|
-
// src/ui/plugin-host/app.ts
|
|
8490
8522
|
var ONBOARDING_ID = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
8491
8523
|
function createDocsApi(manifest) {
|
|
8492
8524
|
const url = pluginDocsUrl(manifest?.docs);
|
|
@@ -8609,6 +8641,15 @@ function createPluginApp(pluginId, manifest, contributes, options = {}) {
|
|
|
8609
8641
|
})
|
|
8610
8642
|
);
|
|
8611
8643
|
},
|
|
8644
|
+
registerCompanionLayout(tabType, resolve) {
|
|
8645
|
+
return track(
|
|
8646
|
+
registerCompanionLayoutDef({
|
|
8647
|
+
id: `${pluginId}.${tabType}`,
|
|
8648
|
+
tabTypes: [tabType],
|
|
8649
|
+
resolve
|
|
8650
|
+
})
|
|
8651
|
+
);
|
|
8652
|
+
},
|
|
8612
8653
|
toggleCompanion(tab, id) {
|
|
8613
8654
|
toggleCompanion(
|
|
8614
8655
|
tab,
|
|
@@ -10000,11 +10041,15 @@ var CompanionFrame = memo(function CompanionFrame2({
|
|
|
10000
10041
|
children
|
|
10001
10042
|
}) {
|
|
10002
10043
|
const defs = useCompanionDefs();
|
|
10044
|
+
const layoutDefs = useCompanionLayoutDefs();
|
|
10003
10045
|
const applicable = useMemo10(
|
|
10004
|
-
() =>
|
|
10046
|
+
() => arrangeCompanions(
|
|
10047
|
+
defs.filter((def) => companionApplies(def, tab)),
|
|
10048
|
+
resolveCompanionLayout(tab.type, tab.host).order
|
|
10049
|
+
),
|
|
10005
10050
|
// tab.host and tab.type decide it
|
|
10006
10051
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10007
|
-
[defs, tab.type, tab.host]
|
|
10052
|
+
[defs, layoutDefs, tab.type, tab.host]
|
|
10008
10053
|
);
|
|
10009
10054
|
if (applicable.length === 0) return /* @__PURE__ */ jsx13(Fragment3, { children });
|
|
10010
10055
|
return /* @__PURE__ */ jsx13(CompanionLayout, { tab, defs: applicable, isVisible, children });
|
|
@@ -10051,7 +10096,11 @@ function CompanionLayout({
|
|
|
10051
10096
|
);
|
|
10052
10097
|
}, [active]);
|
|
10053
10098
|
const activeDefaults = active ? defaults3[active.id] : void 0;
|
|
10054
|
-
const
|
|
10099
|
+
const layout = useMemo10(
|
|
10100
|
+
() => resolveCompanionLayout(tab.type, tab.host),
|
|
10101
|
+
[tab.type, tab.host]
|
|
10102
|
+
);
|
|
10103
|
+
const side = isMobile ? "bottom" : state2.side ?? layout.side ?? activeDefaults?.side ?? "right";
|
|
10055
10104
|
const baseSize = state2.size ?? activeDefaults?.size ?? (side === "bottom" ? DEFAULT_BOTTOM_SIZE : DEFAULT_SIDE_SIZE);
|
|
10056
10105
|
const setSide = useCallback9(
|
|
10057
10106
|
(next) => patchCompanionState(key, { side: next }),
|
|
@@ -10214,7 +10263,7 @@ function CompanionLayout({
|
|
|
10214
10263
|
// src/ui/shell/tabUtils.tsx
|
|
10215
10264
|
import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
10216
10265
|
var PluginsTab = lazy(
|
|
10217
|
-
() => import("./PluginsTab-
|
|
10266
|
+
() => import("./PluginsTab-ZSMTJ5C5.js").then((m) => ({ default: m.PluginsTab }))
|
|
10218
10267
|
);
|
|
10219
10268
|
function preloadTabSurface(type) {
|
|
10220
10269
|
const loader = getTabType(type)?.preload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
["!running","**:data-[slot=kbd]:isolate","**:data-[slot=kbd]:relative","**:data-[slot=kbd]:rounded-none","**:data-[slot=kbd]:z-50","*:[a]:hover:text-foreground","*:[a]:underline","*:[a]:underline-offset-3","*:[img:first-child]:rounded-none","*:[img:last-child]:rounded-none","*:[span]:last:flex","*:[span]:last:gap-2","*:[span]:last:items-center","*:data-[slot=alert-description]:text-destructive/90","*:data-[slot=select-value]:flex","*:data-[slot=select-value]:gap-2","*:data-[slot=select-value]:items-center","*:data-[slot=select-value]:line-clamp-1","*:flex-1","-bottom-1.5","-left-1","-left-1.5","-mx-1","-mx-3","-my-1","-right-1","-right-1.5","-top-1","-top-1.5","-translate-x-1/2","-translate-x-px","-translate-y-1/2","2xl:flex","3","@3xl:block","@3xl:hidden","@container","@container/card-header","[&::-webkit-inner-spin-button]:appearance-none","[&::-webkit-outer-spin-button]:appearance-none","[&>*:last-child]:border-b-0","[&>*]:h-full","[&>button]:hidden","[&>span:last-child]:truncate","[&>svg]:pointer-events-none","[&>svg]:shrink-0","[&>svg]:size-3","[&>svg]:size-4","[&>svg]:text-current","[&>svg]:text-sidebar-accent-foreground","[&>svg]:translate-y-0.5","[&_[cmdk-group-heading]]:font-medium","[&_[cmdk-group-heading]]:px-2","[&_[cmdk-group-heading]]:py-1.5","[&_[cmdk-group-heading]]:text-muted-foreground","[&_[cmdk-group-heading]]:text-xs","[&_[cmdk-list-sizer]]:flex","[&_[cmdk-list-sizer]]:flex-col","[&_p]:leading-relaxed","[&_svg:not([class*='size-'])]:size-3","[&_svg:not([class*='size-'])]:size-3.5","[&_svg:not([class*='size-'])]:size-4","[&_svg:not([class*='text-'])]:text-muted-foreground","[&_svg]:pointer-events-none","[&_svg]:shrink-0","[&_svg]:size-2.5","[&_svg]:size-3","[&_svg]:size-3.5","[&_svg]:size-4","[.border-b]:pb-4","[.gap-4>&]:border-0","[.gap-4>&]:py-0","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2","[[data-side=right][data-state=collapsed]_&]:cursor-w-resize","[a&]:hover:bg-accent","[a&]:hover:bg-destructive/90","[a&]:hover:bg-primary/90","[a&]:hover:bg-secondary/90","[a&]:hover:text-accent-foreground","[a]:hover:bg-primary/80","[animation-duration:900ms]","[appearance:textfield]","[backend:stderr]","[clip-path:inset(0px_-4px_-4px_-4px)]","[op:http_server_port_conflict]","[op:startup_failed]","absolute","accent-[var(--accent-brand)]","active:bg-sidebar-accent","active:cursor-grabbing","active:not-aria-[haspopup]:translate-y-px","active:text-sidebar-accent-foreground","after:-inset-2","after:absolute","after:inset-y-0","after:start-1/2","after:w-[2px]","animate-pulse","animate-spin","appearance-none","aria-disabled:opacity-50","aria-disabled:pointer-events-none","aria-expanded:bg-muted","aria-expanded:bg-secondary","aria-expanded:opacity-100","aria-expanded:text-foreground","aria-expanded:text-secondary-foreground","aria-invalid:border-destructive","aria-invalid:ring-1","aria-invalid:ring-destructive/20","aspect-square","aspect-video","auto-rows-min","bg-accent","bg-accent-brand","bg-accent-brand/10","bg-accent-brand/15","bg-accent-brand/20","bg-accent-brand/5","bg-accent-brand/60","bg-background","bg-background/85","bg-background/90","bg-black","bg-black/10","bg-blue-500/20","bg-border","bg-canvas","bg-card","bg-clip-padding","bg-destructive","bg-destructive/10","bg-destructive/15","bg-destructive/5","bg-destructive/70","bg-emerald-500","bg-emerald-500/10","bg-foreground","bg-green-500","bg-green-500/10","bg-green-500/70","bg-input","bg-muted","bg-muted-foreground","bg-muted-foreground/20","bg-muted-foreground/25","bg-muted-foreground/30","bg-muted-foreground/40","bg-muted-foreground/50","bg-muted/10","bg-muted/15","bg-muted/20","bg-muted/30","bg-muted/40","bg-muted/50","bg-muted/60","bg-muted/70","bg-muted/[0.08]","bg-overlay","bg-popover","bg-primary","bg-primary/30","bg-red-500","bg-red-500/10","bg-red-500/40","bg-secondary","bg-sidebar","bg-sidebar-border","bg-surface-dim/60","bg-transparent","bg-warning","bg-warning/10","bg-warning/20","bg-warning/40","bg-warning/5","bg-warning/70","block","blur","border","border-0","border-2","border-accent-brand","border-accent-brand/30","border-accent-brand/40","border-accent-brand/50","border-accent-brand/60","border-accent-brand/70","border-b","border-b-2","border-border","border-border/30","border-border/40","border-border/50","border-border/60","border-current","border-dashed","border-destructive/20","border-destructive/30","border-destructive/40","border-destructive/50","border-emerald-500/40","border-foreground/10","border-green-500/30","border-input","border-l","border-l-2","border-l-transparent","border-muted-foreground/30","border-primary","border-r","border-red-500/40","border-sidebar-border","border-t","border-t-0","border-t-border/40","border-t-muted-foreground/70","border-t-transparent","border-transparent","border-warning/30","border-warning/40","border-y","bottom-0","break-all","break-words","col-start-2","collapse","columns-2","columns-3","com","container","contents","cursor-col-resize","cursor-default","cursor-grab","cursor-pointer","cursor-row-resize","dark","dark:aria-invalid:border-destructive/50","dark:aria-invalid:ring-destructive/40","dark:bg-destructive/20","dark:bg-destructive/60","dark:bg-input/30","dark:bg-transparent","dark:border-accent-brand/40","dark:border-input","dark:data-[state=active]:bg-input/30","dark:data-[state=active]:border-input","dark:data-[state=active]:text-foreground","dark:data-[state=checked]:bg-primary","dark:data-[variant=destructive]:focus:bg-destructive/20","dark:disabled:bg-input/80","dark:focus-visible:ring-destructive/40","dark:hover:bg-accent-brand/10","dark:hover:bg-destructive/10","dark:hover:bg-destructive/30","dark:hover:bg-input/50","dark:hover:bg-muted/50","dark:text-muted-foreground","data-[disabled=true]:opacity-50","data-[disabled=true]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:pointer-events-none","data-[orientation=horizontal]:h-1.5","data-[orientation=horizontal]:h-full","data-[orientation=horizontal]:h-px","data-[orientation=horizontal]:w-full","data-[orientation=vertical]:flex-col","data-[orientation=vertical]:h-full","data-[orientation=vertical]:min-h-44","data-[orientation=vertical]:self-center","data-[orientation=vertical]:self-stretch","data-[orientation=vertical]:w-1.5","data-[orientation=vertical]:w-auto","data-[orientation=vertical]:w-full","data-[orientation=vertical]:w-px","data-[placeholder]:text-muted-foreground","data-[selected=true]:bg-muted","data-[selected=true]:text-accent-foreground","data-[side=bottom]:border-t","data-[side=bottom]:bottom-0","data-[side=bottom]:data-closed:slide-out-to-bottom-10","data-[side=bottom]:data-open:slide-in-from-bottom-10","data-[side=bottom]:h-auto","data-[side=bottom]:inset-x-0","data-[side=bottom]:slide-in-from-top-2","data-[side=bottom]:translate-y-1","data-[side=left]:-translate-x-1","data-[side=left]:border-r","data-[side=left]:data-closed:slide-out-to-left-10","data-[side=left]:data-open:slide-in-from-left-10","data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]","data-[side=left]:h-full","data-[side=left]:inset-y-0","data-[side=left]:left-0","data-[side=left]:slide-in-from-right-2","data-[side=left]:sm:max-w-sm","data-[side=left]:w-3/4","data-[side=right]:border-l","data-[side=right]:data-closed:slide-out-to-right-10","data-[side=right]:data-open:slide-in-from-right-10","data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","data-[side=right]:h-full","data-[side=right]:inset-y-0","data-[side=right]:right-0","data-[side=right]:slide-in-from-left-2","data-[side=right]:sm:max-w-sm","data-[side=right]:translate-x-1","data-[side=right]:w-3/4","data-[side=top]:-translate-y-1","data-[side=top]:border-b","data-[side=top]:data-closed:slide-out-to-top-10","data-[side=top]:data-open:slide-in-from-top-10","data-[side=top]:h-auto","data-[side=top]:inset-x-0","data-[side=top]:slide-in-from-bottom-2","data-[side=top]:top-0","data-[size=default]:h-9","data-[size=md]:text-xs","data-[size=sm]:gap-2","data-[size=sm]:h-8","data-[size=sm]:has-data-[slot=card-footer]:pb-0","data-[size=sm]:py-3","data-[size=sm]:text-xs","data-[state=active]:animate-in","data-[state=active]:bg-background","data-[state=active]:fade-in-0","data-[state=active]:shadow-sm","data-[state=checked]:bg-accent-brand","data-[state=checked]:bg-primary","data-[state=checked]:border-accent-brand","data-[state=checked]:border-primary","data-[state=checked]:text-primary-foreground","data-[state=checked]:translate-x-4","data-[state=closed]:animate-out","data-[state=closed]:fade-out-0","data-[state=closed]:overflow-hidden","data-[state=closed]:zoom-out-95","data-[state=delayed-open]:animate-in","data-[state=delayed-open]:fade-in-0","data-[state=delayed-open]:zoom-in-95","data-[state=inactive]:animate-out","data-[state=inactive]:fade-out-0","data-[state=open]:animate-in","data-[state=open]:fade-in-0","data-[state=open]:zoom-in-95","data-[state=unchecked]:bg-muted","data-[state=unchecked]:border-border","data-[state=unchecked]:translate-x-0.5","data-[variant=destructive]:*:[svg]:text-destructive","data-[variant=destructive]:focus:bg-destructive/10","data-[variant=destructive]:focus:text-destructive","data-[variant=destructive]:text-destructive","data-active:bg-sidebar-accent","data-active:font-medium","data-active:text-sidebar-accent-foreground","data-closed:animate-out","data-closed:fade-out-0","data-closed:zoom-out-95","data-disabled:opacity-50","data-disabled:pointer-events-none","data-inset:pl-7","data-open:animate-in","data-open:bg-accent","data-open:fade-in-0","data-open:hover:bg-sidebar-accent","data-open:hover:text-sidebar-accent-foreground","data-open:text-accent-foreground","data-open:zoom-in-95","disabled:bg-input/50","disabled:cursor-not-allowed","disabled:opacity-30","disabled:opacity-40","disabled:opacity-50","disabled:opacity-60","disabled:pointer-events-none","divide-border","divide-y","drop-shadow","duration-100","duration-150","duration-200","duration-500","duration-[450ms]","ease-in-out","ease-linear","enabled:hover:text-accent-brand","fade-in","file:bg-transparent","file:border-0","file:font-medium","file:h-6","file:inline-flex","file:text-foreground","file:text-xs","fill-foreground","filter","fixed","flex","flex-1","flex-col","flex-col-reverse","flex-row","flex-row-reverse","flex-shrink-0","flex-wrap","focus-visible:border-destructive/40","focus-visible:border-ring","focus-visible:outline-1","focus-visible:outline-hidden","focus-visible:outline-none","focus-visible:outline-ring","focus-visible:relative","focus-visible:ring-0","focus-visible:ring-1","focus-visible:ring-2","focus-visible:ring-4","focus-visible:ring-[#f59145]/40","focus-visible:ring-[3px]","focus-visible:ring-destructive/20","focus-visible:ring-inset","focus-visible:ring-ring","focus-visible:ring-ring/50","focus-visible:z-10","focus-within:border-ring","focus-within:opacity-100","focus-within:ring-1","focus-within:ring-ring/50","focus:**:text-accent-foreground","focus:bg-accent","focus:ring-1","focus:ring-ring","focus:text-accent-brand","focus:text-accent-foreground","font-bold","font-heading","font-medium","font-mono","font-normal","font-semibold","fs-lg","fs-md","fs-sm","fs-xl","fs-xs","gap-0","gap-0.5","gap-1","gap-1.5","gap-2","gap-2.5","gap-3","gap-3.5","gap-4","gap-5","gap-6","gap-[1.75px]","gap-[3.5px]","gap-px","gap-x-2","gap-x-4","gap-y-0.5","gap-y-1","gap-y-1.5","grid","grid-cols-1","grid-cols-2","grid-cols-3","grid-cols-4","grid-cols-6","grid-cols-8","grid-cols-[0_1fr]","group","group-[.toast]:!border-accent-brand/30","group-[.toast]:!border-destructive/30","group-[.toast]:!text-accent-brand","group-[.toast]:!text-destructive","group-[.toast]:bg-accent-brand","group-[.toast]:bg-muted","group-[.toast]:font-semibold","group-[.toast]:text-muted-foreground","group-[.toast]:text-white","group-[.toaster]:bg-card","group-[.toaster]:border-border","group-[.toaster]:font-mono","group-[.toaster]:rounded-none!","group-[.toaster]:shadow-lg","group-[.toaster]:text-card-foreground","group-data-[collapsible=icon]:-mt-8","group-data-[collapsible=icon]:hidden","group-data-[collapsible=icon]:opacity-0","group-data-[collapsible=icon]:overflow-hidden","group-data-[collapsible=icon]:p-0!","group-data-[collapsible=icon]:p-2!","group-data-[collapsible=icon]:size-8!","group-data-[collapsible=icon]:w-(--sidebar-width-icon)","group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]","group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]","group-data-[collapsible=offcanvas]:after:left-full","group-data-[collapsible=offcanvas]:translate-x-0","group-data-[collapsible=offcanvas]:w-0","group-data-[disabled=true]:opacity-50","group-data-[disabled=true]:pointer-events-none","group-data-[side=left]:-right-4","group-data-[side=left]:border-r","group-data-[side=right]:border-l","group-data-[side=right]:left-0","group-data-[side=right]:rotate-180","group-data-[size=sm]/card:[.border-b]:pb-3","group-data-[size=sm]/card:p-3","group-data-[size=sm]/card:px-3","group-data-[size=sm]/card:text-sm","group-data-[variant=floating]:ring-1","group-data-[variant=floating]:ring-sidebar-border","group-data-[variant=floating]:rounded-none","group-data-[variant=floating]:shadow-sm","group-focus-within/menu-item:opacity-100","group-focus-within/row:flex","group-focus/dropdown-menu-item:text-accent-foreground","group-has-data-[sidebar=menu-action]/menu-item:pr-8","group-hover/folder:opacity-100","group-hover/menu-item:opacity-100","group-hover/open:text-accent-brand","group-hover/resize:bg-accent-brand/60","group-hover/row:flex","group-hover:bg-accent-brand/60","group-hover:opacity-100","group/card","group/dropdown-menu-item","group/folder","group/menu-item","group/open","group/resize","group/row","grow","h-0.5","h-1","h-1.5","h-10","h-11","h-12","h-12.5","h-14","h-16","h-2","h-2.5","h-3","h-4","h-5","h-6","h-7","h-8","h-9","h-[136px]","h-[46%]","h-[calc(100%-1px)]","h-[var(--radix-select-trigger-height)]","h-dvh","h-full","h-px","h-screen","h-svh","has-[>img:first-child]:pt-0","has-[>svg]:gap-x-3","has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr]","has-[[data-state=open]]:opacity-100","has-data-[icon=inline-end]:pr-1.5","has-data-[icon=inline-end]:pr-2","has-data-[icon=inline-start]:pl-1.5","has-data-[icon=inline-start]:pl-2","has-data-[slot=card-action]:grid-cols-[1fr_auto]","has-data-[slot=card-description]:grid-rows-[auto_auto]","has-data-[slot=card-footer]:pb-0","has-data-[slot=kbd]:pr-1.5","has-data-[variant=inset]:bg-sidebar","hidden","host-status-stripe","hover:after:bg-sidebar-border","hover:bg-accent-brand/10","hover:bg-accent-brand/15","hover:bg-accent-brand/20","hover:bg-accent-brand/5","hover:bg-accent-brand/90","hover:bg-destructive/10","hover:bg-destructive/20","hover:bg-destructive/90","hover:bg-foreground/[0.03]","hover:bg-muted","hover:bg-muted/30","hover:bg-muted/40","hover:bg-muted/50","hover:bg-secondary/80","hover:bg-sidebar-accent","hover:border-accent-brand/40","hover:border-accent-brand/60","hover:border-destructive/40","hover:border-foreground/40","hover:border-muted-foreground","hover:group-data-[collapsible=offcanvas]:bg-sidebar","hover:opacity-100","hover:ring-4","hover:ring-[#f59145]/40","hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]","hover:text-accent-brand","hover:text-accent-brand/70","hover:text-destructive","hover:text-foreground","hover:text-sidebar-accent-foreground","hover:underline","in-data-[side=left]:cursor-w-resize","in-data-[side=right]:cursor-e-resize","inline","inline-block","inline-flex","inset-0","inset-x-0","inset-y-0","invisible","isolate","italic","items-baseline","items-center","items-start","items-stretch","justify-between","justify-center","justify-end","justify-items-start","justify-self-end","justify-start","last:border-0","last:border-b-0","leading-[1.7]","leading-none","leading-relaxed","leading-snug","leading-tight","left-0","left-1/2","left-2","left-2.5","left-[50%]","lg:block","lg:col-span-2","lg:flex","lg:grid-cols-1","lg:grid-cols-2","lg:grid-cols-3","lg:grid-cols-4","lg:grid-cols-5","lg:hidden","line-clamp-2","line-clamp-3","line-clamp-4","line-through","list-disc","lowercase","ltr:-translate-x-1/2","lucide","m-auto","max-h-(--radix-dropdown-menu-content-available-height)","max-h-(--radix-select-content-available-height)","max-h-40","max-h-56","max-h-64","max-h-96","max-h-[300px]","max-w-(--skeleton-width)","max-w-2xl","max-w-32","max-w-3xl","max-w-40","max-w-48","max-w-5xl","max-w-[380px]","max-w-[560px]","max-w-[calc(100%-2rem)]","max-w-lg","max-w-md","max-w-sm","max-w-xl","max-w-xs","mb-1","mb-2","mb-4","md:-mx-4","md:after:hidden","md:block","md:flex","md:flex-row","md:grid-cols-1","md:grid-cols-2","md:grid-cols-3","md:grid-cols-4","md:max-h-none","md:opacity-0","md:peer-data-[variant=inset]:m-2","md:peer-data-[variant=inset]:ml-0","md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2","md:peer-data-[variant=inset]:rounded-none","md:peer-data-[variant=inset]:shadow-sm","md:px-4","md:text-2xl","md:text-xs","md:w-44","md:w-56","min-h-0","min-h-16","min-h-6","min-h-8","min-h-[220px]","min-h-[70vh]","min-h-[80px]","min-h-full","min-h-svh","min-w-0","min-w-16","min-w-32","min-w-4","min-w-40","min-w-5","min-w-52","min-w-[8rem]","min-w-[96px]","min-w-[var(--radix-select-trigger-width)]","min-w-max","ml-0.5","ml-1.5","ml-2","ml-[27px]","ml-auto","motion-context-enter","motion-fade-enter","motion-interactive","motion-meter","motion-panel-enter","motion-transfer-phase","motion-workspace-enter","motion-workspace-layout","mr-1","mr-2","mt-0.5","mt-1","mt-3","mt-4","mt-auto","mt-px","mx-2","mx-3.5","mx-auto","my-1","my-3","my-auto","normal-case","not-data-[variant=destructive]:focus:**:text-accent-foreground","object-contain","opacity-0","opacity-100","opacity-40","opacity-50","opacity-60","opacity-70","opacity-80","origin-(--radix-dropdown-menu-content-transform-origin)","origin-(--radix-popover-content-transform-origin)","origin-(--radix-select-content-transform-origin)","origin-(--radix-tooltip-content-transform-origin)","origin-center","outline","outline-hidden","outline-none","overflow-auto","overflow-hidden","overflow-x-auto","overflow-x-hidden","overflow-y-auto","overline","p-0","p-0.5","p-1","p-1.5","p-10","p-2","p-2.5","p-3","p-4","p-5","p-6","p-[3px]","p-px","paused","pb-1","pb-1.5","pb-2","peer","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","peer-data-[size=sm]/menu-button:top-1","peer-data-active/menu-button:text-sidebar-accent-foreground","peer-disabled:cursor-not-allowed","peer-disabled:opacity-50","peer-hover/menu-button:text-sidebar-accent-foreground","peer/menu-button","pl-1","pl-2","pl-2.5","pl-4","pl-7","pl-8","pl-[8.75px]","placeholder:text-muted-foreground","placeholder:text-muted-foreground/50","pointer-coarse:flex","pointer-coarse:opacity-100","pointer-events-none","pr-0.5","pr-1","pr-1.5","pr-12","pr-2","pr-7","pr-8","pr-9","pr-[7px]","pt-0.5","pt-1","pt-2","pt-2.5","pt-3","pt-4","pt-[3.5px]","px-0","px-1","px-1.5","px-2","px-2.5","px-3","px-4","px-6","py-0","py-0.5","py-1","py-1.5","py-10","py-2","py-2.5","py-3","py-4","py-6","py-8","py-[1px]","py-[7px]","py-px","relative","resize","resize-none","right-0","right-1","right-1.5","right-2","right-2.5","right-3","ring","ring-1","ring-2","ring-accent-brand","ring-border","ring-foreground/10","ring-inset","ring-offset-1","ring-offset-background","ring-sidebar-ring","ring-white/60","rotate-45","rotate-90","rounded","rounded-[inherit]","rounded-full","rounded-none","row-span-2","row-start-1","rtl:-translate-x-1/2","running","safe-bottom","scroll-my-1","scrollbar-none","select-none","self-start","sepia","settings-search-hit","shadow","shadow-[0_0_0_1px_hsl(var(--sidebar-border))]","shadow-lg","shadow-md","shadow-none","shadow-sm","shadow-xl","shadow-xs","shrink-0","size-1.5","size-10","size-12","size-2.5","size-3","size-3.5","size-4","size-5","size-6","size-7","size-8","size-9","size-[22.75px]","size-full","sm:flex","sm:flex-row","sm:grid-cols-12","sm:grid-cols-2","sm:grid-cols-3","sm:grid-cols-4","sm:items-center","sm:justify-end","sm:max-w-lg","sm:max-w-sm","sm:mr-auto","sm:py-14","sm:text-left","space-y-1.5","space-y-2","sr-only","static","sticky","stroke-accent-brand","stroke-border","stroke-muted","supports-backdrop-filter:backdrop-blur-xs","tab-1","tab-2","table","tabular-nums","text-2xl","text-[10px]","text-[11px]","text-[13px]","text-[9px]","text-accent-brand","text-accent-brand/80","text-accent-foreground","text-background","text-base","text-blue-400","text-blue-500","text-card-foreground","text-center","text-current","text-destructive","text-destructive/80","text-emerald-500","text-foreground","text-foreground-secondary","text-green-500","text-left","text-lg","text-muted-foreground","text-muted-foreground/30","text-muted-foreground/40","text-muted-foreground/50","text-muted-foreground/60","text-muted-foreground/70","text-muted-foreground/80","text-popover-foreground","text-primary","text-primary-foreground","text-red-500","text-right","text-secondary-foreground","text-sidebar-foreground","text-sidebar-foreground/70","text-sm","text-warning","text-white","text-xl","text-xs","text-xs/relaxed","thin-scrollbar","toast","toaster","top-0","top-1","top-1.5","top-1/2","top-2","top-3","top-3.5","top-[50%]","touch-none","tracking-[0.35em]","tracking-[0.3em]","tracking-normal","tracking-tight","tracking-wide","tracking-wider","tracking-widest","transfer-progress-fill","transfer-progress-indeterminate","transfer-progress-stalled","transfer-progress-track","transform","transition","transition-[color,background-color,border-color,opacity,box-shadow,transform]","transition-[color,box-shadow]","transition-[height]","transition-[left,right,width]","transition-[left,top,width,height]","transition-[margin,opacity]","transition-[stroke-dasharray]","transition-[width,height,padding]","transition-[width]","transition-all","transition-colors","transition-none","transition-opacity","transition-shadow","transition-transform","translate-x-0.5","translate-x-4","translate-x-[-50%]","translate-x-px","translate-y-[-1px]","translate-y-[-50%]","translate-y-[calc(-50%_-_2px)]","truncate","underline","underline-offset-2","underline-offset-4","uppercase","visible","w-(--radix-dropdown-menu-trigger-width)","w-(--sidebar-width)","w-0.5","w-1/2","w-1/4","w-10","w-11","w-12","w-12.5","w-2","w-2.5","w-2/3","w-28","w-3","w-3/4","w-4","w-40","w-48","w-5","w-5/6","w-52","w-56","w-6","w-60","w-64","w-72","w-9","w-[240px]","w-[3px]","w-[46%]","w-[var(--radix-popover-trigger-width)]","w-auto","w-fit","w-full","w-px","w-screen","whitespace-normal","whitespace-nowrap","whitespace-pre-line","whitespace-pre-wrap","xl:grid-cols-1","xl:grid-cols-2","xl:grid-cols-3","xl:grid-cols-4","z-0","z-10","z-20","z-30","z-40","z-50","z-500","z-[100]","z-[60]","z-[9998]","z-[99999]"]
|
|
1
|
+
["!running","**:data-[slot=kbd]:isolate","**:data-[slot=kbd]:relative","**:data-[slot=kbd]:rounded-none","**:data-[slot=kbd]:z-50","*:[a]:hover:text-foreground","*:[a]:underline","*:[a]:underline-offset-3","*:[img:first-child]:rounded-none","*:[img:last-child]:rounded-none","*:[span]:last:flex","*:[span]:last:gap-2","*:[span]:last:items-center","*:data-[slot=alert-description]:text-destructive/90","*:data-[slot=select-value]:flex","*:data-[slot=select-value]:gap-2","*:data-[slot=select-value]:items-center","*:data-[slot=select-value]:line-clamp-1","*:flex-1","-bottom-1.5","-left-1","-left-1.5","-mx-1","-mx-3","-my-1","-right-1","-right-1.5","-top-1","-top-1.5","-translate-x-1/2","-translate-x-px","-translate-y-1/2","2xl:flex","3","@3xl:block","@3xl:hidden","@container","@container/card-header","[&::-webkit-inner-spin-button]:appearance-none","[&::-webkit-outer-spin-button]:appearance-none","[&>*:last-child]:border-b-0","[&>*]:h-full","[&>button]:hidden","[&>span:last-child]:truncate","[&>svg]:pointer-events-none","[&>svg]:shrink-0","[&>svg]:size-3","[&>svg]:size-4","[&>svg]:text-current","[&>svg]:text-sidebar-accent-foreground","[&>svg]:translate-y-0.5","[&_[cmdk-group-heading]]:font-medium","[&_[cmdk-group-heading]]:px-2","[&_[cmdk-group-heading]]:py-1.5","[&_[cmdk-group-heading]]:text-muted-foreground","[&_[cmdk-group-heading]]:text-xs","[&_[cmdk-list-sizer]]:flex","[&_[cmdk-list-sizer]]:flex-col","[&_p]:leading-relaxed","[&_svg:not([class*='size-'])]:size-3","[&_svg:not([class*='size-'])]:size-3.5","[&_svg:not([class*='size-'])]:size-4","[&_svg:not([class*='text-'])]:text-muted-foreground","[&_svg]:pointer-events-none","[&_svg]:shrink-0","[&_svg]:size-2.5","[&_svg]:size-3","[&_svg]:size-3.5","[&_svg]:size-4","[.border-b]:pb-4","[.gap-4>&]:border-0","[.gap-4>&]:py-0","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2","[[data-side=right][data-state=collapsed]_&]:cursor-w-resize","[a&]:hover:bg-accent","[a&]:hover:bg-destructive/90","[a&]:hover:bg-primary/90","[a&]:hover:bg-secondary/90","[a&]:hover:text-accent-foreground","[animation-duration:900ms]","[appearance:textfield]","[backend:stderr]","[clip-path:inset(0px_-4px_-4px_-4px)]","[op:http_server_port_conflict]","[op:startup_failed]","absolute","accent-[var(--accent-brand)]","active:bg-sidebar-accent","active:cursor-grabbing","active:not-aria-[haspopup]:translate-y-px","active:text-sidebar-accent-foreground","after:-inset-2","after:absolute","after:inset-y-0","after:start-1/2","after:w-[2px]","animate-pulse","animate-spin","appearance-none","aria-disabled:opacity-50","aria-disabled:pointer-events-none","aria-expanded:bg-accent-brand/10","aria-expanded:bg-accent-brand/20","aria-expanded:bg-accent-brand/25","aria-expanded:bg-muted","aria-expanded:opacity-100","aria-expanded:text-foreground","aria-invalid:border-destructive","aria-invalid:ring-1","aria-invalid:ring-destructive/20","aspect-square","aspect-video","auto-rows-min","bg-accent","bg-accent-brand","bg-accent-brand/10","bg-accent-brand/15","bg-accent-brand/20","bg-accent-brand/5","bg-accent-brand/60","bg-background","bg-background/85","bg-background/90","bg-black","bg-black/10","bg-blue-500/20","bg-border","bg-canvas","bg-card","bg-clip-padding","bg-destructive","bg-destructive/10","bg-destructive/15","bg-destructive/5","bg-destructive/70","bg-emerald-500","bg-emerald-500/10","bg-foreground","bg-green-500","bg-green-500/10","bg-green-500/70","bg-input","bg-muted","bg-muted-foreground","bg-muted-foreground/20","bg-muted-foreground/25","bg-muted-foreground/30","bg-muted-foreground/40","bg-muted-foreground/50","bg-muted/10","bg-muted/15","bg-muted/20","bg-muted/30","bg-muted/40","bg-muted/50","bg-muted/60","bg-muted/70","bg-muted/[0.08]","bg-overlay","bg-popover","bg-primary","bg-primary/30","bg-red-500","bg-red-500/10","bg-red-500/40","bg-secondary","bg-sidebar","bg-sidebar-border","bg-surface-dim/60","bg-transparent","bg-warning","bg-warning/10","bg-warning/20","bg-warning/40","bg-warning/5","bg-warning/70","bg-white","block","blur","border","border-0","border-2","border-accent-brand","border-accent-brand/20","border-accent-brand/30","border-accent-brand/40","border-accent-brand/50","border-accent-brand/60","border-accent-brand/70","border-b","border-b-2","border-border","border-border/30","border-border/40","border-border/50","border-border/60","border-current","border-dashed","border-destructive/20","border-destructive/30","border-destructive/40","border-destructive/50","border-emerald-500/40","border-foreground/10","border-green-500/30","border-input","border-l","border-l-2","border-l-transparent","border-muted-foreground/30","border-primary","border-r","border-red-500/40","border-sidebar-border","border-t","border-t-0","border-t-border/40","border-t-muted-foreground/70","border-t-transparent","border-transparent","border-warning/30","border-warning/40","border-y","bottom-0","break-all","break-words","col-start-2","collapse","columns-2","columns-3","com","container","contents","cursor-col-resize","cursor-default","cursor-grab","cursor-pointer","cursor-row-resize","dark","dark:aria-invalid:border-destructive/50","dark:aria-invalid:ring-destructive/40","dark:bg-destructive/20","dark:bg-destructive/60","dark:bg-input/30","dark:bg-secondary","dark:bg-transparent","dark:border-accent-brand/40","dark:data-[state=active]:bg-input/30","dark:data-[state=active]:border-input","dark:data-[state=active]:text-foreground","dark:data-[state=checked]:bg-primary","dark:data-[variant=destructive]:focus:bg-destructive/20","dark:disabled:bg-input/80","dark:focus-visible:ring-destructive/40","dark:hover:bg-accent-brand/10","dark:hover:bg-destructive/10","dark:hover:bg-destructive/30","dark:hover:bg-input/50","dark:hover:bg-muted/50","dark:text-muted-foreground","data-[disabled=true]:opacity-50","data-[disabled=true]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:pointer-events-none","data-[orientation=horizontal]:h-1.5","data-[orientation=horizontal]:h-full","data-[orientation=horizontal]:h-px","data-[orientation=horizontal]:w-full","data-[orientation=vertical]:flex-col","data-[orientation=vertical]:h-full","data-[orientation=vertical]:min-h-44","data-[orientation=vertical]:self-center","data-[orientation=vertical]:self-stretch","data-[orientation=vertical]:w-1.5","data-[orientation=vertical]:w-auto","data-[orientation=vertical]:w-full","data-[orientation=vertical]:w-px","data-[placeholder]:text-muted-foreground","data-[selected=true]:bg-muted","data-[selected=true]:text-accent-foreground","data-[side=bottom]:border-t","data-[side=bottom]:bottom-0","data-[side=bottom]:data-closed:slide-out-to-bottom-10","data-[side=bottom]:data-open:slide-in-from-bottom-10","data-[side=bottom]:h-auto","data-[side=bottom]:inset-x-0","data-[side=bottom]:slide-in-from-top-2","data-[side=bottom]:translate-y-1","data-[side=left]:-translate-x-1","data-[side=left]:border-r","data-[side=left]:data-closed:slide-out-to-left-10","data-[side=left]:data-open:slide-in-from-left-10","data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]","data-[side=left]:h-full","data-[side=left]:inset-y-0","data-[side=left]:left-0","data-[side=left]:slide-in-from-right-2","data-[side=left]:sm:max-w-sm","data-[side=left]:w-3/4","data-[side=right]:border-l","data-[side=right]:data-closed:slide-out-to-right-10","data-[side=right]:data-open:slide-in-from-right-10","data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","data-[side=right]:h-full","data-[side=right]:inset-y-0","data-[side=right]:right-0","data-[side=right]:slide-in-from-left-2","data-[side=right]:sm:max-w-sm","data-[side=right]:translate-x-1","data-[side=right]:w-3/4","data-[side=top]:-translate-y-1","data-[side=top]:border-b","data-[side=top]:data-closed:slide-out-to-top-10","data-[side=top]:data-open:slide-in-from-top-10","data-[side=top]:h-auto","data-[side=top]:inset-x-0","data-[side=top]:slide-in-from-bottom-2","data-[side=top]:top-0","data-[size=default]:h-9","data-[size=md]:text-xs","data-[size=sm]:gap-2","data-[size=sm]:h-8","data-[size=sm]:has-data-[slot=card-footer]:pb-0","data-[size=sm]:py-3","data-[size=sm]:text-xs","data-[state=active]:animate-in","data-[state=active]:bg-background","data-[state=active]:fade-in-0","data-[state=active]:shadow-sm","data-[state=checked]:bg-accent-brand","data-[state=checked]:bg-primary","data-[state=checked]:border-accent-brand","data-[state=checked]:border-primary","data-[state=checked]:text-primary-foreground","data-[state=checked]:translate-x-4","data-[state=closed]:animate-out","data-[state=closed]:fade-out-0","data-[state=closed]:overflow-hidden","data-[state=closed]:zoom-out-95","data-[state=delayed-open]:animate-in","data-[state=delayed-open]:fade-in-0","data-[state=delayed-open]:zoom-in-95","data-[state=inactive]:animate-out","data-[state=inactive]:fade-out-0","data-[state=open]:animate-in","data-[state=open]:fade-in-0","data-[state=open]:zoom-in-95","data-[state=unchecked]:bg-muted","data-[state=unchecked]:border-border","data-[state=unchecked]:translate-x-0.5","data-[variant=destructive]:*:[svg]:text-destructive","data-[variant=destructive]:focus:bg-destructive/10","data-[variant=destructive]:focus:text-destructive","data-[variant=destructive]:text-destructive","data-active:bg-sidebar-accent","data-active:font-medium","data-active:text-sidebar-accent-foreground","data-closed:animate-out","data-closed:fade-out-0","data-closed:zoom-out-95","data-disabled:opacity-50","data-disabled:pointer-events-none","data-inset:pl-7","data-open:animate-in","data-open:bg-accent","data-open:fade-in-0","data-open:hover:bg-sidebar-accent","data-open:hover:text-sidebar-accent-foreground","data-open:text-accent-foreground","data-open:zoom-in-95","disabled:bg-input/50","disabled:cursor-not-allowed","disabled:opacity-30","disabled:opacity-40","disabled:opacity-50","disabled:opacity-60","disabled:pointer-events-none","divide-border","divide-y","drop-shadow","duration-100","duration-150","duration-200","duration-500","duration-[450ms]","ease-in-out","ease-linear","enabled:hover:text-accent-brand","fade-in","file:bg-transparent","file:border-0","file:font-medium","file:h-6","file:inline-flex","file:text-foreground","file:text-xs","fill-foreground","filter","fixed","flex","flex-1","flex-col","flex-col-reverse","flex-row","flex-row-reverse","flex-shrink-0","flex-wrap","focus-visible:border-destructive/40","focus-visible:border-ring","focus-visible:outline-1","focus-visible:outline-hidden","focus-visible:outline-none","focus-visible:outline-ring","focus-visible:relative","focus-visible:ring-0","focus-visible:ring-1","focus-visible:ring-2","focus-visible:ring-4","focus-visible:ring-[#f59145]/40","focus-visible:ring-[3px]","focus-visible:ring-destructive/20","focus-visible:ring-inset","focus-visible:ring-ring","focus-visible:ring-ring/50","focus-visible:z-10","focus-within:border-ring","focus-within:opacity-100","focus-within:ring-1","focus-within:ring-ring/50","focus:**:text-accent-foreground","focus:bg-accent","focus:ring-1","focus:ring-ring","focus:text-accent-brand","focus:text-accent-foreground","font-bold","font-heading","font-medium","font-mono","font-normal","font-semibold","fs-lg","fs-md","fs-sm","fs-xl","fs-xs","gap-0","gap-0.5","gap-1","gap-1.5","gap-2","gap-2.5","gap-3","gap-3.5","gap-4","gap-5","gap-6","gap-[1.75px]","gap-[3.5px]","gap-px","gap-x-2","gap-x-4","gap-y-0.5","gap-y-1","gap-y-1.5","grid","grid-cols-1","grid-cols-2","grid-cols-3","grid-cols-4","grid-cols-6","grid-cols-8","grid-cols-[0_1fr]","group","group-[.toast]:!border-accent-brand/30","group-[.toast]:!border-destructive/30","group-[.toast]:!text-accent-brand","group-[.toast]:!text-destructive","group-[.toast]:bg-accent-brand","group-[.toast]:bg-muted","group-[.toast]:font-semibold","group-[.toast]:text-muted-foreground","group-[.toast]:text-white","group-[.toaster]:bg-card","group-[.toaster]:border-border","group-[.toaster]:font-mono","group-[.toaster]:rounded-none!","group-[.toaster]:shadow-lg","group-[.toaster]:text-card-foreground","group-data-[collapsible=icon]:-mt-8","group-data-[collapsible=icon]:hidden","group-data-[collapsible=icon]:opacity-0","group-data-[collapsible=icon]:overflow-hidden","group-data-[collapsible=icon]:p-0!","group-data-[collapsible=icon]:p-2!","group-data-[collapsible=icon]:size-8!","group-data-[collapsible=icon]:w-(--sidebar-width-icon)","group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]","group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]","group-data-[collapsible=offcanvas]:after:left-full","group-data-[collapsible=offcanvas]:translate-x-0","group-data-[collapsible=offcanvas]:w-0","group-data-[disabled=true]:opacity-50","group-data-[disabled=true]:pointer-events-none","group-data-[side=left]:-right-4","group-data-[side=left]:border-r","group-data-[side=right]:border-l","group-data-[side=right]:left-0","group-data-[side=right]:rotate-180","group-data-[size=sm]/card:[.border-b]:pb-3","group-data-[size=sm]/card:p-3","group-data-[size=sm]/card:px-3","group-data-[size=sm]/card:text-sm","group-data-[variant=floating]:ring-1","group-data-[variant=floating]:ring-sidebar-border","group-data-[variant=floating]:rounded-none","group-data-[variant=floating]:shadow-sm","group-focus-within/menu-item:opacity-100","group-focus-within/row:flex","group-focus/dropdown-menu-item:text-accent-foreground","group-has-data-[sidebar=menu-action]/menu-item:pr-8","group-hover/folder:opacity-100","group-hover/menu-item:opacity-100","group-hover/open:text-accent-brand","group-hover/resize:bg-accent-brand/60","group-hover/row:flex","group-hover:bg-accent-brand/60","group-hover:opacity-100","group/card","group/dropdown-menu-item","group/folder","group/menu-item","group/open","group/resize","group/row","grow","h-0.5","h-1","h-1.5","h-10","h-11","h-12","h-12.5","h-14","h-16","h-2","h-2.5","h-3","h-4","h-5","h-6","h-7","h-8","h-9","h-[136px]","h-[46%]","h-[calc(100%-1px)]","h-[var(--radix-select-trigger-height)]","h-dvh","h-full","h-px","h-screen","h-svh","has-[>img:first-child]:pt-0","has-[>svg]:gap-x-3","has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr]","has-[[data-state=open]]:opacity-100","has-data-[icon=inline-end]:pr-1.5","has-data-[icon=inline-end]:pr-2","has-data-[icon=inline-start]:pl-1.5","has-data-[icon=inline-start]:pl-2","has-data-[slot=card-action]:grid-cols-[1fr_auto]","has-data-[slot=card-description]:grid-rows-[auto_auto]","has-data-[slot=card-footer]:pb-0","has-data-[slot=kbd]:pr-1.5","has-data-[variant=inset]:bg-sidebar","hidden","host-status-stripe","hover:after:bg-sidebar-border","hover:bg-accent-brand/10","hover:bg-accent-brand/15","hover:bg-accent-brand/20","hover:bg-accent-brand/25","hover:bg-accent-brand/5","hover:bg-accent-brand/90","hover:bg-destructive/10","hover:bg-destructive/20","hover:bg-destructive/90","hover:bg-foreground/[0.03]","hover:bg-muted","hover:bg-muted/30","hover:bg-muted/40","hover:bg-muted/50","hover:bg-sidebar-accent","hover:border-accent-brand/40","hover:border-accent-brand/60","hover:border-destructive/40","hover:border-foreground/40","hover:border-muted-foreground","hover:group-data-[collapsible=offcanvas]:bg-sidebar","hover:opacity-100","hover:ring-4","hover:ring-[#f59145]/40","hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]","hover:text-accent-brand","hover:text-accent-brand/70","hover:text-destructive","hover:text-foreground","hover:text-sidebar-accent-foreground","hover:underline","in-data-[side=left]:cursor-w-resize","in-data-[side=right]:cursor-e-resize","inline","inline-block","inline-flex","inset-0","inset-x-0","inset-y-0","invisible","isolate","italic","items-baseline","items-center","items-start","items-stretch","justify-between","justify-center","justify-end","justify-items-start","justify-self-end","justify-start","last:border-0","last:border-b-0","leading-[1.7]","leading-none","leading-relaxed","leading-snug","leading-tight","left-0","left-1/2","left-2","left-2.5","left-[50%]","lg:block","lg:col-span-2","lg:flex","lg:grid-cols-1","lg:grid-cols-2","lg:grid-cols-3","lg:grid-cols-4","lg:grid-cols-5","lg:hidden","line-clamp-2","line-clamp-3","line-clamp-4","line-through","list-disc","lowercase","ltr:-translate-x-1/2","lucide","m-auto","max-h-(--radix-dropdown-menu-content-available-height)","max-h-(--radix-select-content-available-height)","max-h-40","max-h-56","max-h-64","max-h-96","max-h-[300px]","max-w-(--skeleton-width)","max-w-2xl","max-w-32","max-w-3xl","max-w-40","max-w-48","max-w-5xl","max-w-[380px]","max-w-[560px]","max-w-[calc(100%-2rem)]","max-w-lg","max-w-md","max-w-sm","max-w-xl","max-w-xs","mb-1","mb-2","mb-4","md:-mx-4","md:after:hidden","md:block","md:flex","md:flex-row","md:grid-cols-1","md:grid-cols-2","md:grid-cols-3","md:grid-cols-4","md:max-h-none","md:opacity-0","md:peer-data-[variant=inset]:m-2","md:peer-data-[variant=inset]:ml-0","md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2","md:peer-data-[variant=inset]:rounded-none","md:peer-data-[variant=inset]:shadow-sm","md:px-4","md:text-2xl","md:text-xs","md:w-44","md:w-56","min-h-0","min-h-16","min-h-6","min-h-8","min-h-[220px]","min-h-[70vh]","min-h-[80px]","min-h-full","min-h-svh","min-w-0","min-w-16","min-w-32","min-w-4","min-w-40","min-w-5","min-w-52","min-w-[8rem]","min-w-[96px]","min-w-[var(--radix-select-trigger-width)]","min-w-max","ml-0.5","ml-1.5","ml-2","ml-[27px]","ml-auto","motion-context-enter","motion-fade-enter","motion-interactive","motion-meter","motion-panel-enter","motion-transfer-phase","motion-workspace-enter","motion-workspace-layout","mr-1","mr-2","mt-0.5","mt-1","mt-3","mt-4","mt-auto","mt-px","mx-2","mx-3.5","mx-auto","my-1","my-3","my-auto","normal-case","not-data-[variant=destructive]:focus:**:text-accent-foreground","object-contain","opacity-0","opacity-100","opacity-40","opacity-50","opacity-60","opacity-70","opacity-80","origin-(--radix-dropdown-menu-content-transform-origin)","origin-(--radix-popover-content-transform-origin)","origin-(--radix-select-content-transform-origin)","origin-(--radix-tooltip-content-transform-origin)","origin-center","outline","outline-hidden","outline-none","overflow-auto","overflow-hidden","overflow-x-auto","overflow-x-hidden","overflow-y-auto","overline","p-0","p-0.5","p-1","p-1.5","p-10","p-2","p-2.5","p-3","p-4","p-5","p-6","p-[3px]","p-px","paused","pb-1","pb-1.5","pb-2","peer","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","peer-data-[size=sm]/menu-button:top-1","peer-data-active/menu-button:text-sidebar-accent-foreground","peer-disabled:cursor-not-allowed","peer-disabled:opacity-50","peer-hover/menu-button:text-sidebar-accent-foreground","peer/menu-button","pl-1","pl-2","pl-2.5","pl-4","pl-7","pl-8","pl-[8.75px]","placeholder:text-muted-foreground","placeholder:text-muted-foreground/50","pointer-coarse:flex","pointer-coarse:opacity-100","pointer-events-none","pr-0.5","pr-1","pr-1.5","pr-12","pr-2","pr-7","pr-8","pr-9","pr-[7px]","pt-0.5","pt-1","pt-2","pt-2.5","pt-3","pt-4","pt-[3.5px]","px-0","px-1","px-1.5","px-2","px-2.5","px-3","px-4","px-6","py-0","py-0.5","py-1","py-1.5","py-10","py-2","py-2.5","py-3","py-4","py-6","py-8","py-[1px]","py-[7px]","py-px","relative","resize","resize-none","right-0","right-1","right-1.5","right-2","right-2.5","right-3","ring","ring-1","ring-2","ring-accent-brand","ring-border","ring-foreground/10","ring-inset","ring-offset-1","ring-offset-background","ring-sidebar-ring","ring-white/60","rotate-45","rotate-90","rounded","rounded-[inherit]","rounded-full","rounded-none","row-span-2","row-start-1","rtl:-translate-x-1/2","running","safe-bottom","scroll-my-1","scrollbar-none","select-none","self-start","sepia","settings-search-hit","shadow","shadow-[0_0_0_1px_hsl(var(--sidebar-border))]","shadow-lg","shadow-md","shadow-none","shadow-sm","shadow-xl","shadow-xs","shrink-0","size-1.5","size-10","size-12","size-2.5","size-3","size-3.5","size-4","size-5","size-6","size-7","size-8","size-9","size-[22.75px]","size-full","sm:flex","sm:flex-row","sm:grid-cols-12","sm:grid-cols-2","sm:grid-cols-3","sm:grid-cols-4","sm:items-center","sm:justify-end","sm:max-w-lg","sm:max-w-sm","sm:mr-auto","sm:py-14","sm:text-left","space-y-1.5","space-y-2","sr-only","static","sticky","stroke-accent-brand","stroke-border","stroke-muted","supports-backdrop-filter:backdrop-blur-xs","tab-1","tab-2","table","tabular-nums","termix-titlebar","text-2xl","text-[10px]","text-[11px]","text-[13px]","text-[9px]","text-accent-brand","text-accent-brand/80","text-accent-foreground","text-background","text-base","text-blue-400","text-blue-500","text-card-foreground","text-center","text-current","text-destructive","text-destructive/80","text-emerald-500","text-foreground","text-foreground-secondary","text-green-500","text-left","text-lg","text-muted-foreground","text-muted-foreground/30","text-muted-foreground/40","text-muted-foreground/50","text-muted-foreground/60","text-muted-foreground/70","text-muted-foreground/80","text-popover-foreground","text-primary-foreground","text-red-500","text-right","text-secondary-foreground","text-sidebar-foreground","text-sidebar-foreground/70","text-sm","text-warning","text-white","text-xl","text-xs","text-xs/relaxed","thin-scrollbar","toast","toaster","top-0","top-1","top-1.5","top-1/2","top-2","top-3","top-3.5","top-[50%]","touch-none","tracking-[0.35em]","tracking-[0.3em]","tracking-normal","tracking-tight","tracking-wide","tracking-wider","tracking-widest","transfer-progress-fill","transfer-progress-indeterminate","transfer-progress-stalled","transfer-progress-track","transform","transition","transition-[color,background-color,border-color,opacity,box-shadow,transform]","transition-[color,box-shadow]","transition-[height]","transition-[left,right,width]","transition-[left,top,width,height]","transition-[margin,opacity]","transition-[stroke-dasharray]","transition-[width,height,padding]","transition-[width]","transition-all","transition-colors","transition-none","transition-opacity","transition-shadow","transition-transform","translate-x-0.5","translate-x-4","translate-x-[-50%]","translate-x-px","translate-y-[-1px]","translate-y-[-50%]","translate-y-[calc(-50%_-_2px)]","truncate","underline","underline-offset-2","underline-offset-4","uppercase","visible","w-(--radix-dropdown-menu-trigger-width)","w-(--sidebar-width)","w-0.5","w-1/2","w-1/4","w-10","w-11","w-12","w-12.5","w-2","w-2.5","w-2/3","w-28","w-3","w-3/4","w-4","w-40","w-48","w-5","w-5/6","w-52","w-56","w-6","w-60","w-64","w-72","w-9","w-[240px]","w-[3px]","w-[46%]","w-[var(--radix-popover-trigger-width)]","w-auto","w-fit","w-full","w-px","w-screen","whitespace-normal","whitespace-nowrap","whitespace-pre-line","whitespace-pre-wrap","xl:grid-cols-1","xl:grid-cols-2","xl:grid-cols-3","xl:grid-cols-4","z-0","z-10","z-20","z-30","z-40","z-50","z-500","z-[100]","z-[60]","z-[70]","z-[9998]","z-[99999]"]
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
trackTabHandle,
|
|
60
60
|
useShellController,
|
|
61
61
|
useTabStageStore
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-J3ZQPBDK.js";
|
|
63
63
|
import {
|
|
64
64
|
setPermissionsForTesting
|
|
65
65
|
} from "./chunk-2MU6WNSX.js";
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
setShellCallbacks,
|
|
71
71
|
setShellHosts,
|
|
72
72
|
setShellLayoutProvider
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-EYONBBRJ.js";
|
|
74
74
|
import {
|
|
75
75
|
getTabType,
|
|
76
76
|
listTabTypes,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
|
-
import { type PanelDensity, type PanelViewMode } from "./panel-layout";
|
|
2
|
+
import { type GridSize, type PanelDensity, type PanelViewMode } from "./panel-layout";
|
|
3
3
|
export interface DataColumn<T> {
|
|
4
4
|
key: string;
|
|
5
5
|
header: string;
|
|
@@ -17,13 +17,18 @@ export interface GridColumns {
|
|
|
17
17
|
xl?: number;
|
|
18
18
|
}
|
|
19
19
|
/** One collection as a card grid or a dense row table. */
|
|
20
|
-
export declare function DataView<T>({ items, view, density, getKey, renderCard, columns, listColumns, onRowClick, isRowActive, empty, className, }: {
|
|
20
|
+
export declare function DataView<T>({ items, view, density, getKey, renderCard, columns, size, minCardWidth, listColumns, onRowClick, isRowActive, empty, className, }: {
|
|
21
21
|
items: T[];
|
|
22
22
|
view: PanelViewMode;
|
|
23
23
|
density?: PanelDensity;
|
|
24
24
|
getKey: (item: T) => string;
|
|
25
25
|
renderCard: (item: T) => React.ReactNode;
|
|
26
|
+
/** Breakpoint columns, used when no size is given. */
|
|
26
27
|
columns: GridColumns;
|
|
28
|
+
/** Columns the user picked with ViewToggle. Wins over columns. */
|
|
29
|
+
size?: GridSize;
|
|
30
|
+
/** Narrowest card in auto mode, in px. */
|
|
31
|
+
minCardWidth?: number;
|
|
27
32
|
listColumns: DataColumn<T>[];
|
|
28
33
|
onRowClick?: (item: T) => void;
|
|
29
34
|
isRowActive?: (item: T) => boolean;
|
|
@@ -9,6 +9,10 @@ export declare const PANEL: {
|
|
|
9
9
|
};
|
|
10
10
|
export type PanelViewMode = "grid" | "list";
|
|
11
11
|
export type PanelDensity = "comfortable" | "compact";
|
|
12
|
+
/** Cards per row. "auto" fits as many as the pane has room for. */
|
|
13
|
+
export type GridSize = "auto" | "1" | "2" | "3" | "4" | "5" | "6";
|
|
14
|
+
export declare const GRID_SIZES: readonly GridSize[];
|
|
15
|
+
export declare function gridSizeStyle(size: GridSize, minCardWidth?: number, gap?: string): React.CSSProperties;
|
|
12
16
|
/** The header, toolbar band and body every tab and panel draws. */
|
|
13
17
|
export declare function PanelShell({ chrome, icon, title, status, leading, actions, toolbar, tabs, footer, scroll, docs, className, children, }: {
|
|
14
18
|
/** False inside a sidebar, which draws its own header. */
|
|
@@ -66,12 +70,15 @@ export declare function Segmented<T extends string>({ value, onChange, options,
|
|
|
66
70
|
}[];
|
|
67
71
|
className?: string;
|
|
68
72
|
}): React.JSX.Element;
|
|
69
|
-
/** Grid or list, plus the compact rows toggle. */
|
|
70
|
-
export declare function ViewToggle({ view, onView, density, onDensity, }: {
|
|
73
|
+
/** Grid or list, plus the compact rows toggle and the cards per row picker. */
|
|
74
|
+
export declare function ViewToggle({ view, onView, density, onDensity, columns, onColumns, }: {
|
|
71
75
|
view: PanelViewMode;
|
|
72
76
|
onView: (next: PanelViewMode) => void;
|
|
73
77
|
density?: PanelDensity;
|
|
74
78
|
onDensity?: (next: PanelDensity) => void;
|
|
79
|
+
/** Cards per row in grid view. Pass with onColumns to show the picker. */
|
|
80
|
+
columns?: GridSize;
|
|
81
|
+
onColumns?: (next: GridSize) => void;
|
|
75
82
|
}): React.JSX.Element;
|
|
76
83
|
export declare function Facts({ className, children, }: {
|
|
77
84
|
className?: string;
|
|
@@ -88,7 +88,7 @@ export { createFrontendLogger, type LogContext } from "../lib/frontend-logger";
|
|
|
88
88
|
export { getAdaptiveResourceBudget, markAdaptiveResourceUsed, runAdaptiveBackgroundTask, } from "../lib/adaptive-resource-budget";
|
|
89
89
|
export { getDeviceId } from "../lib/device-id";
|
|
90
90
|
export { createQuickConnectHost } from "../sidebar/quick-connect-host";
|
|
91
|
-
export { BackButton, Facts, GroupHeading, PANEL, PanelSearch, PanelShell, Segmented, ViewToggle, type PanelDensity, type PanelViewMode, } from "../components/panel-layout";
|
|
91
|
+
export { BackButton, Facts, GroupHeading, PANEL, PanelSearch, PanelShell, Segmented, ViewToggle, type GridSize, type PanelDensity, type PanelViewMode, } from "../components/panel-layout";
|
|
92
92
|
export { DocsLink, type DocsLinkProps } from "../components/docs-link";
|
|
93
93
|
export { AddButton, FormFooter, ListBadge, ListRow, ListRowAction, ListRowFolder, PanelList, type ListRowTone, } from "../components/list-kit";
|
|
94
94
|
export { DataView, type DataColumn, type GridColumns, } from "../components/data-view";
|
|
@@ -43,7 +43,27 @@ export declare const getCompanionDef: (id: string) => CompanionDef;
|
|
|
43
43
|
export declare const listCompanionDefs: () => CompanionDef[];
|
|
44
44
|
export declare const useCompanionDefs: () => CompanionDef[];
|
|
45
45
|
export declare const resetCompanions: () => void;
|
|
46
|
+
/** How a host wants its panel bar: on or off, where, which buttons in what order. */
|
|
47
|
+
export interface CompanionLayout {
|
|
48
|
+
enabled?: boolean;
|
|
49
|
+
side?: CompanionSide;
|
|
50
|
+
order?: string[];
|
|
51
|
+
hidden?: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface CompanionLayoutDef {
|
|
54
|
+
id: string;
|
|
55
|
+
tabTypes: string[];
|
|
56
|
+
resolve: (host: Host | undefined) => CompanionLayout;
|
|
57
|
+
}
|
|
58
|
+
export declare const registerCompanionLayoutDef: (item: CompanionLayoutDef) => () => void;
|
|
59
|
+
export declare const useCompanionLayoutDefs: () => CompanionLayoutDef[];
|
|
60
|
+
export declare const resetCompanionLayouts: () => void;
|
|
61
|
+
export declare function resolveCompanionLayout(tabType: string, host: Host | undefined): CompanionLayout;
|
|
46
62
|
export declare function companionApplies(def: CompanionDef, tab: Tab): boolean;
|
|
63
|
+
/** Orders defs by a saved layout. Ones it has not seen keep their place after. */
|
|
64
|
+
export declare function arrangeCompanions<T extends {
|
|
65
|
+
id: string;
|
|
66
|
+
}>(defs: T[], order: string[] | undefined): T[];
|
|
47
67
|
export interface CompanionTabState {
|
|
48
68
|
/** The companion shown, or null when closed. */
|
|
49
69
|
openId: string | null;
|
package/dist/host/ui.js
CHANGED
|
@@ -160,7 +160,7 @@ import {
|
|
|
160
160
|
useThemes,
|
|
161
161
|
verifySecondFactor,
|
|
162
162
|
withProtocolSettings
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-J3ZQPBDK.js";
|
|
164
164
|
import {
|
|
165
165
|
usePermissions
|
|
166
166
|
} from "./chunk-2MU6WNSX.js";
|
|
@@ -184,7 +184,7 @@ import {
|
|
|
184
184
|
isPrerelease,
|
|
185
185
|
reportBetaFeedbackUrl,
|
|
186
186
|
reportCoreIssueUrl
|
|
187
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-CITUENSU.js";
|
|
188
188
|
import {
|
|
189
189
|
Action,
|
|
190
190
|
Activity,
|
|
@@ -374,7 +374,7 @@ import {
|
|
|
374
374
|
useSurfaceKind,
|
|
375
375
|
useUiPreference,
|
|
376
376
|
useUiPreferencesContext
|
|
377
|
-
} from "./chunk-
|
|
377
|
+
} from "./chunk-EYONBBRJ.js";
|
|
378
378
|
import {
|
|
379
379
|
CREDENTIAL_ROW_FIELD_KEYS,
|
|
380
380
|
PRESETS,
|
package/dist/manifest.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export { ENV_NAME_PATTERN, MAX_ENV_DESCRIPTION_LENGTH, pluginDocsPage, pluginDoc
|
|
|
20
20
|
* "^1.2" needs 1.2 or later). engine.termix is checked against the core
|
|
21
21
|
* version by the server.
|
|
22
22
|
*/
|
|
23
|
-
export declare const PLUGIN_API_VERSION = "1.
|
|
23
|
+
export declare const PLUGIN_API_VERSION = "1.12.0";
|
|
24
24
|
/** The API major, the default engine.api for a new plugin. */
|
|
25
25
|
export declare const SUPPORTED_PLUGIN_API_VERSION: string;
|
|
26
26
|
/** Whether this build's plugin API satisfies a manifest's engine.api. */
|