@termix-ssh/plugin-sdk 1.0.18 → 1.0.19

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.19
4
+
5
+ Plugin API 1.11.0.
6
+
7
+ ### Added
8
+
9
+ - `app.registerCompanionLayout` and `useCompanions`, so a plugin can let each host turn the panel bar on or off, move it and choose which panels show and in what order
10
+
3
11
  ## 1.0.18
4
12
 
5
13
  Plugin API 1.10.0.
package/PLUGIN-GUIDE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Termix plugin guide
2
2
 
3
- SDK 1.0.18 | Plugin API 1.10.0
3
+ SDK 1.0.19 | Plugin API 1.11.0
4
4
 
5
5
  This guide is for anyone, person or AI coding tool, building a Termix plugin. It ships inside
6
6
  `@termix-ssh/plugin-sdk`, so the copy in your `node_modules` always matches the SDK you have installed.
@@ -496,6 +496,7 @@ your plugin's error boundary and Suspense.
496
496
  | `registerRailItem` | A sidebar rail button |
497
497
  | `registerTab`, `registerPanel` | A tab type or sidebar panel (id in `contributes.tabs` / `panels`) |
498
498
  | `registerCompanion`, `toggleCompanion` | A panel beside any host tab, bound to its host and handle |
499
+ | `registerCompanionLayout` | Per host on/off, side, order and hidden panels for a tab type |
499
500
  | `registerDashboardCard` | A dashboard card (`contributes.dashboardCards`) |
500
501
  | `registerHostAction` | A host button, palette entry or default connect |
501
502
  | `registerHostEditorSection` | Your own host editor section (host settings get one for free) |
package/dist/desktop.d.ts CHANGED
@@ -33,6 +33,15 @@ export interface ElectronAPI {
33
33
  getAppVersion: () => Promise<string>;
34
34
  setZoomFactor?: (factor: number) => void;
35
35
  getPlatform: () => Promise<string>;
36
+ /** Whether the app-drawn title bar shows in this window. */
37
+ getTitleBarVisible?: () => Promise<boolean>;
38
+ /** Calls back when the title bar shows or hides; returns an unsubscribe. */
39
+ onTitleBarVisibleChange?: (callback: (visible: boolean) => void) => () => void;
40
+ /** Keeps the window controls the system draws in the colors of the theme. */
41
+ setTitleBarOverlay?: (colors: {
42
+ color?: string;
43
+ symbolColor?: string;
44
+ }) => Promise<void>;
36
45
  getSetting?: (key: string) => Promise<string | null | undefined>;
37
46
  setSetting?: (key: string, value: string) => Promise<void>;
38
47
  getServerConfig: () => Promise<ServerConfig>;
@@ -783,6 +783,24 @@ export interface CompanionDefaults {
783
783
  /** Show the edge button that opens and closes it. Default true. */
784
784
  edgeButton?: boolean;
785
785
  }
786
+ /** A panel a tab type can show beside it, for a picker. */
787
+ export interface CompanionInfo {
788
+ /** The id registerCompanionLayout's hidden and order lists use. */
789
+ id: string;
790
+ titleKey: string;
791
+ icon?: IconComponent;
792
+ }
793
+ /** How a host wants the panel bar beside a tab. */
794
+ export interface CompanionLayout {
795
+ /** False removes the bar and its panels. */
796
+ enabled?: boolean;
797
+ /** Where a panel opens until the user moves it. */
798
+ side?: "left" | "right" | "bottom";
799
+ /** Companion ids in bar order. */
800
+ order?: string[];
801
+ /** Companion ids left out. */
802
+ hidden?: string[];
803
+ }
786
804
  export interface CompanionProps {
787
805
  /** The tab it sits beside. */
788
806
  tab: PluginTabRecord;
@@ -1044,6 +1062,11 @@ export interface TermixApp extends TermixAppInfo {
1044
1062
  * it; the tab keeps running underneath.
1045
1063
  */
1046
1064
  registerCompanion: (id: string, component: ComponentType<CompanionProps>, options?: CompanionOptions) => Disposer;
1065
+ /**
1066
+ * Lets a plugin decide, per host, how the panel bar looks on one tab type.
1067
+ * Read from the host payload, so it must not call hooks.
1068
+ */
1069
+ registerCompanionLayout: (tabType: string, resolve: (host: PluginHostRecord | undefined) => CompanionLayout) => Disposer;
1047
1070
  /** Opens a companion on a tab, or closes it when it is showing. */
1048
1071
  toggleCompanion: (tab: PluginTabRecord, id?: string) => void;
1049
1072
  registerHostEditorSection: (section: HostEditorSectionContribution) => Disposer;
@@ -1220,6 +1243,7 @@ export interface PluginHostBridge {
1220
1243
  hostProtocols: (host: PluginHostRecord) => string[];
1221
1244
  useHostStatus: (hostId: number | undefined) => HostStatusInfo | null;
1222
1245
  useHostActions: () => HostActionContribution[];
1246
+ useCompanions: (tabType: string) => CompanionInfo[];
1223
1247
  useActivityTypes: () => string[];
1224
1248
  activityTarget: (type: string) => ActivityTargetInfo | undefined;
1225
1249
  useExtensions: (pointId: string) => ExtensionContribution[];
@@ -1445,6 +1469,11 @@ export declare function useSlotContributions(slotId: string, context?: Record<st
1445
1469
  * connect widget, say. Reactive: it re-renders as plugins enable and disable.
1446
1470
  */
1447
1471
  export declare function useHostActions(): HostActionContribution[];
1472
+ /**
1473
+ * Every panel that can open beside a tab of this type, for a settings screen
1474
+ * that lets the user hide or reorder them. Reactive.
1475
+ */
1476
+ export declare function useCompanions(tabType: string): CompanionInfo[];
1448
1477
  /**
1449
1478
  * Recent-activity types every registered tab claims (registerTab's
1450
1479
  * activityTypes), core's and plugins'. For a filter that lists what a user
package/dist/frontend.js CHANGED
@@ -220,6 +220,13 @@ export function useSlotContributions(slotId, context) {
220
220
  export function useHostActions() {
221
221
  return requireHost().useHostActions();
222
222
  }
223
+ /**
224
+ * Every panel that can open beside a tab of this type, for a settings screen
225
+ * that lets the user hide or reorder them. Reactive.
226
+ */
227
+ export function useCompanions(tabType) {
228
+ return requireHost().useCompanions(tabType);
229
+ }
223
230
  /**
224
231
  * Recent-activity types every registered tab claims (registerTab's
225
232
  * activityTypes), core's and plugins'. For a filter that lists what a user
@@ -7946,6 +7946,107 @@ function useOptionalHostStatusEntry(hostId) {
7946
7946
  // src/ui/plugin-host/bridge.ts
7947
7947
  init_define_import_meta_env();
7948
7948
  import { useCallback as useCallback8, useEffect as useEffect15, useMemo as useMemo8, useState as useState14 } from "react";
7949
+
7950
+ // src/ui/shell/companions.ts
7951
+ init_define_import_meta_env();
7952
+ import { useSyncExternalStore as useSyncExternalStore9 } from "react";
7953
+ var registry5 = createRegistry(byOrderThenId);
7954
+ var registerCompanionDef = registry5.register;
7955
+ var getCompanionDef = registry5.get;
7956
+ var listCompanionDefs = registry5.list;
7957
+ var useCompanionDefs = registry5.useList;
7958
+ var resetCompanions = registry5.reset;
7959
+ var layouts = createRegistry();
7960
+ var registerCompanionLayoutDef = layouts.register;
7961
+ var useCompanionLayoutDefs = layouts.useList;
7962
+ var resetCompanionLayouts = layouts.reset;
7963
+ function resolveCompanionLayout(tabType, host) {
7964
+ const def = layouts.list().find((entry) => entry.tabTypes.includes(tabType));
7965
+ if (!def) return {};
7966
+ try {
7967
+ return def.resolve(host) ?? {};
7968
+ } catch {
7969
+ return {};
7970
+ }
7971
+ }
7972
+ function companionApplies(def, tab) {
7973
+ if (!tab.host) return false;
7974
+ if (def.tabTypes?.length && !def.tabTypes.includes(tab.type)) return false;
7975
+ const layout = resolveCompanionLayout(tab.type, tab.host);
7976
+ if (layout.enabled === false || layout.hidden?.includes(def.id)) return false;
7977
+ return def.when ? def.when(tab, tab.host) : true;
7978
+ }
7979
+ function arrangeCompanions(defs, order2) {
7980
+ if (!order2?.length) return defs;
7981
+ const rank = new Map(order2.map((id, index) => [id, index]));
7982
+ return defs.map((def, index) => ({ def, index })).sort(
7983
+ (a, b) => (rank.get(a.def.id) ?? order2.length + a.index) - (rank.get(b.def.id) ?? order2.length + b.index)
7984
+ ).map(({ def }) => def);
7985
+ }
7986
+ var STORAGE_KEY = "termix:companions";
7987
+ var EMPTY3 = { openId: null, seen: false };
7988
+ var states = /* @__PURE__ */ new Map();
7989
+ var listeners7 = /* @__PURE__ */ new Set();
7990
+ var version2 = 0;
7991
+ function load() {
7992
+ try {
7993
+ const raw = localStorage.getItem(STORAGE_KEY);
7994
+ if (!raw) return;
7995
+ const parsed = JSON.parse(raw);
7996
+ states = new Map(Object.entries(parsed));
7997
+ } catch {
7998
+ }
7999
+ }
8000
+ function save() {
8001
+ try {
8002
+ const entries = [...states.entries()].slice(-200);
8003
+ localStorage.setItem(
8004
+ STORAGE_KEY,
8005
+ JSON.stringify(Object.fromEntries(entries))
8006
+ );
8007
+ } catch {
8008
+ }
8009
+ }
8010
+ load();
8011
+ function companionKey(tab) {
8012
+ return tab.instanceId ?? tab.id;
8013
+ }
8014
+ function getCompanionState(key) {
8015
+ return states.get(key) ?? EMPTY3;
8016
+ }
8017
+ function patchCompanionState(key, patch) {
8018
+ const next = { ...getCompanionState(key), ...patch };
8019
+ states = new Map(states);
8020
+ states.delete(key);
8021
+ states.set(key, next);
8022
+ version2 += 1;
8023
+ save();
8024
+ for (const listener of listeners7) listener();
8025
+ }
8026
+ function subscribe4(listener) {
8027
+ listeners7.add(listener);
8028
+ return () => listeners7.delete(listener);
8029
+ }
8030
+ function useCompanionState(key) {
8031
+ useSyncExternalStore9(
8032
+ subscribe4,
8033
+ () => version2,
8034
+ () => version2
8035
+ );
8036
+ return getCompanionState(key);
8037
+ }
8038
+ function toggleCompanion(tab, id) {
8039
+ const key = companionKey(tab);
8040
+ const current2 = getCompanionState(key);
8041
+ const target = id ?? current2.openId ?? listCompanionDefs().find((def) => companionApplies(def, tab))?.id ?? null;
8042
+ if (!target) return;
8043
+ patchCompanionState(key, {
8044
+ seen: true,
8045
+ openId: current2.openId === target ? null : target
8046
+ });
8047
+ }
8048
+
8049
+ // src/ui/plugin-host/bridge.ts
7949
8050
  import { useTranslation as useI18nTranslation } from "react-i18next";
7950
8051
  import { toast as toast4 } from "sonner";
7951
8052
  import {
@@ -8280,6 +8381,14 @@ var pluginHostBridge = {
8280
8381
  return useOptionalHostStatusEntry(hostId);
8281
8382
  },
8282
8383
  useHostActions: () => useHostActions(),
8384
+ useCompanions: (tabType) => {
8385
+ const defs = useCompanionDefs();
8386
+ return defs.filter((def) => !def.tabTypes?.length || def.tabTypes.includes(tabType)).map((def) => ({
8387
+ id: def.id,
8388
+ titleKey: def.titleKey ?? def.id,
8389
+ icon: def.icon
8390
+ }));
8391
+ },
8283
8392
  useActivityTypes: () => {
8284
8393
  const defs = useTabTypes();
8285
8394
  const types = /* @__PURE__ */ new Set();
@@ -8370,7 +8479,7 @@ function onRemoteServerChange(listener) {
8370
8479
 
8371
8480
  // src/ui/look/layout-registry.ts
8372
8481
  init_define_import_meta_env();
8373
- import { useSyncExternalStore as useSyncExternalStore9 } from "react";
8482
+ import { useSyncExternalStore as useSyncExternalStore10 } from "react";
8374
8483
  var descriptorSnapshot = [];
8375
8484
  var descriptorListeners = /* @__PURE__ */ new Set();
8376
8485
  var registered = createRegistry();
@@ -8381,12 +8490,12 @@ var resetRegisteredLayouts = registered.reset;
8381
8490
  function listLayouts() {
8382
8491
  return descriptorSnapshot;
8383
8492
  }
8384
- function setPluginLayouts(layouts) {
8493
+ function setPluginLayouts(layouts2) {
8385
8494
  const key = (list) => JSON.stringify(
8386
8495
  list.map((l) => [l.id, l.pluginId, l.label, l.defaultTheme])
8387
8496
  );
8388
- if (key(layouts) === key(descriptorSnapshot)) return;
8389
- descriptorSnapshot = layouts;
8497
+ if (key(layouts2) === key(descriptorSnapshot)) return;
8498
+ descriptorSnapshot = layouts2;
8390
8499
  for (const listener of descriptorListeners) listener();
8391
8500
  }
8392
8501
  function subscribeDescriptors(listener) {
@@ -8396,7 +8505,7 @@ function subscribeDescriptors(listener) {
8396
8505
  };
8397
8506
  }
8398
8507
  function useLayouts() {
8399
- return useSyncExternalStore9(subscribeDescriptors, listLayouts, listLayouts);
8508
+ return useSyncExternalStore10(subscribeDescriptors, listLayouts, listLayouts);
8400
8509
  }
8401
8510
  function layoutLabel(layout, t) {
8402
8511
  if (!layout.pluginId) return layout.label;
@@ -8408,85 +8517,6 @@ function layoutLabel(layout, t) {
8408
8517
  // src/ui/plugin-host/app.ts
8409
8518
  init_define_import_meta_env();
8410
8519
  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
8520
  var ONBOARDING_ID = /^[a-z0-9][a-z0-9-]{0,63}$/;
8491
8521
  function createDocsApi(manifest) {
8492
8522
  const url = pluginDocsUrl(manifest?.docs);
@@ -8609,6 +8639,15 @@ function createPluginApp(pluginId, manifest, contributes, options = {}) {
8609
8639
  })
8610
8640
  );
8611
8641
  },
8642
+ registerCompanionLayout(tabType, resolve) {
8643
+ return track(
8644
+ registerCompanionLayoutDef({
8645
+ id: `${pluginId}.${tabType}`,
8646
+ tabTypes: [tabType],
8647
+ resolve
8648
+ })
8649
+ );
8650
+ },
8612
8651
  toggleCompanion(tab, id) {
8613
8652
  toggleCompanion(
8614
8653
  tab,
@@ -10000,11 +10039,15 @@ var CompanionFrame = memo(function CompanionFrame2({
10000
10039
  children
10001
10040
  }) {
10002
10041
  const defs = useCompanionDefs();
10042
+ const layoutDefs = useCompanionLayoutDefs();
10003
10043
  const applicable = useMemo10(
10004
- () => defs.filter((def) => companionApplies(def, tab)),
10044
+ () => arrangeCompanions(
10045
+ defs.filter((def) => companionApplies(def, tab)),
10046
+ resolveCompanionLayout(tab.type, tab.host).order
10047
+ ),
10005
10048
  // tab.host and tab.type decide it
10006
10049
  // eslint-disable-next-line react-hooks/exhaustive-deps
10007
- [defs, tab.type, tab.host]
10050
+ [defs, layoutDefs, tab.type, tab.host]
10008
10051
  );
10009
10052
  if (applicable.length === 0) return /* @__PURE__ */ jsx13(Fragment3, { children });
10010
10053
  return /* @__PURE__ */ jsx13(CompanionLayout, { tab, defs: applicable, isVisible, children });
@@ -10051,7 +10094,11 @@ function CompanionLayout({
10051
10094
  );
10052
10095
  }, [active]);
10053
10096
  const activeDefaults = active ? defaults3[active.id] : void 0;
10054
- const side = isMobile ? "bottom" : state2.side ?? activeDefaults?.side ?? "right";
10097
+ const layout = useMemo10(
10098
+ () => resolveCompanionLayout(tab.type, tab.host),
10099
+ [tab.type, tab.host]
10100
+ );
10101
+ const side = isMobile ? "bottom" : state2.side ?? layout.side ?? activeDefaults?.side ?? "right";
10055
10102
  const baseSize = state2.size ?? activeDefaults?.size ?? (side === "bottom" ? DEFAULT_BOTTOM_SIZE : DEFAULT_SIDE_SIZE);
10056
10103
  const setSide = useCallback9(
10057
10104
  (next) => patchCompanionState(key, { side: next }),
@@ -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","[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","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","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-J2AILBXM.js";
62
+ } from "./chunk-MYBONEWZ.js";
63
63
  import {
64
64
  setPermissionsForTesting
65
65
  } from "./chunk-2MU6WNSX.js";
@@ -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-J2AILBXM.js";
163
+ } from "./chunk-MYBONEWZ.js";
164
164
  import {
165
165
  usePermissions
166
166
  } from "./chunk-2MU6WNSX.js";
@@ -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.10.0";
23
+ export declare const PLUGIN_API_VERSION = "1.11.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. */
package/dist/manifest.js CHANGED
@@ -22,7 +22,7 @@ export { ENV_NAME_PATTERN, MAX_ENV_DESCRIPTION_LENGTH, pluginDocsPage, pluginDoc
22
22
  * "^1.2" needs 1.2 or later). engine.termix is checked against the core
23
23
  * version by the server.
24
24
  */
25
- export const PLUGIN_API_VERSION = "1.10.0";
25
+ export const PLUGIN_API_VERSION = "1.11.0";
26
26
  /** The API major, the default engine.api for a new plugin. */
27
27
  export const SUPPORTED_PLUGIN_API_VERSION = String(semver.major(PLUGIN_API_VERSION));
28
28
  /** Whether this build's plugin API satisfies a manifest's engine.api. */
@@ -131,6 +131,7 @@ globalThis.__termixTestPluginHost = {
131
131
  }),
132
132
  hostProtocols: () => ["ssh"],
133
133
  useHostActions: () => [],
134
+ useCompanions: () => [],
134
135
  useActivityTypes: () => [],
135
136
  activityTarget: () => undefined,
136
137
  useExtensions: () => [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@termix-ssh/plugin-sdk",
3
- "version": "1.0.18",
3
+ "version": "1.0.19",
4
4
  "description": "The contract between Termix core and a plugin: types, the capability catalog and the manifest schema.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {