@termix-ssh/plugin-sdk 1.0.19 → 1.0.21
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 +8 -2
- package/dist/frontend.d.ts +7 -3
- package/dist/frontend.js +19 -3
- package/dist/host/{PluginsTab-YAGYRBIE.js → PluginsTab-HQGSDSHS.js} +31 -47
- package/dist/host/{chunk-MYBONEWZ.js → chunk-A5CULDWV.js} +18 -11
- package/dist/host/{chunk-2MU6WNSX.js → chunk-FGX27MAA.js} +1 -1
- package/dist/host/{chunk-LQKK2JJA.js → chunk-GTHINW3L.js} +1551 -1508
- package/dist/host/{chunk-7LEJ3HYF.js → chunk-JFQGI4OD.js} +5 -3
- package/dist/host/{chunk-446UEDSK.js → chunk-WWFRBU2E.js} +19 -3
- package/dist/host/core-classes.json +1 -1
- package/dist/host/{linked-server-OUF3POT7.js → linked-server-UDSFY3N7.js} +1 -1
- package/dist/host/{rbac-api-LZVENREG.js → rbac-api-AAAPMF52.js} +1 -1
- package/dist/host/testing-host.js +4 -4
- package/dist/host/types/src/ui/api/look-api.d.ts +2 -0
- package/dist/host/types/src/ui/api/plugins-api.d.ts +1 -1
- 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/lib/app-return.d.ts +13 -0
- package/dist/host/types/src/ui/plugin-host/sdk-ui.d.ts +1 -1
- package/dist/host/types/src/ui/plugins/plugin-model.d.ts +1 -1
- package/dist/host/ui.js +67 -24
- package/dist/host/{use-permissions-BYCDS5PD.js → use-permissions-VAND5GEG.js} +1 -1
- package/dist/host-commands.d.ts +2 -6
- package/dist/host-commands.js +3 -6
- package/dist/host-scripts/docker.d.ts +137 -0
- package/dist/host-scripts/docker.js +345 -0
- package/dist/host-scripts/index.d.ts +15 -0
- package/dist/host-scripts/index.js +15 -0
- package/dist/host-scripts/journal.d.ts +45 -0
- package/dist/host-scripts/journal.js +194 -0
- package/dist/host-scripts/metrics.d.ts +134 -0
- package/dist/host-scripts/metrics.js +320 -0
- package/dist/host-scripts/openrc.d.ts +6 -0
- package/dist/host-scripts/openrc.js +90 -0
- package/dist/host-scripts/shell.d.ts +43 -0
- package/dist/host-scripts/shell.js +95 -0
- package/dist/host-scripts/systemd.d.ts +73 -0
- package/dist/host-scripts/systemd.js +320 -0
- package/dist/host-scripts/text.d.ts +23 -0
- package/dist/host-scripts/text.js +111 -0
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +1 -1
- package/package.json +5 -1
|
@@ -4087,7 +4087,9 @@ function unregisteredViewStatus(kind, id) {
|
|
|
4087
4087
|
return { status: getPluginStoreState().loaded ? "missing" : "loading" };
|
|
4088
4088
|
}
|
|
4089
4089
|
const serverState = owner.summary.state;
|
|
4090
|
-
if (!owner.summary.enabled
|
|
4090
|
+
if (!owner.summary.enabled || serverState === "safe-mode") {
|
|
4091
|
+
return { status: "disabled", owner };
|
|
4092
|
+
}
|
|
4091
4093
|
if (owner.frontend === "failed" || owner.frontend === "blocked" || serverState === "failed" || serverState === "blocked") {
|
|
4092
4094
|
return { status: "failed", owner };
|
|
4093
4095
|
}
|
|
@@ -6316,7 +6318,7 @@ async function updateRole(roleId, roleData) {
|
|
|
6316
6318
|
try {
|
|
6317
6319
|
const response = await rbacApi.put(`/rbac/roles/${roleId}`, roleData);
|
|
6318
6320
|
if (roleData.permissions) {
|
|
6319
|
-
const { notifyPermissionsChanged } = await import("./use-permissions-
|
|
6321
|
+
const { notifyPermissionsChanged } = await import("./use-permissions-VAND5GEG.js");
|
|
6320
6322
|
notifyPermissionsChanged();
|
|
6321
6323
|
}
|
|
6322
6324
|
return response.data;
|
|
@@ -6898,7 +6900,7 @@ function createRemoteOriginApiInstance(path) {
|
|
|
6898
6900
|
});
|
|
6899
6901
|
instance.interceptors.request.use(
|
|
6900
6902
|
async (config) => {
|
|
6901
|
-
const { getLinkedSession: getLinkedSession2 } = await import("./linked-server-
|
|
6903
|
+
const { getLinkedSession: getLinkedSession2 } = await import("./linked-server-UDSFY3N7.js");
|
|
6902
6904
|
const linked = await getLinkedSession2();
|
|
6903
6905
|
config.baseURL = linked ? `${linked.serverUrl}${path}` : "http://no-server-configured";
|
|
6904
6906
|
if (config.headers.set) {
|
|
@@ -6,11 +6,12 @@ import {
|
|
|
6
6
|
Plus,
|
|
7
7
|
Trash,
|
|
8
8
|
cn,
|
|
9
|
+
gridSizeStyle,
|
|
9
10
|
useAreaPreferences
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GTHINW3L.js";
|
|
11
12
|
import {
|
|
12
13
|
isElectron
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-JFQGI4OD.js";
|
|
14
15
|
import {
|
|
15
16
|
__commonJS,
|
|
16
17
|
__toESM,
|
|
@@ -2219,6 +2220,8 @@ function DataView({
|
|
|
2219
2220
|
getKey,
|
|
2220
2221
|
renderCard,
|
|
2221
2222
|
columns,
|
|
2223
|
+
size,
|
|
2224
|
+
minCardWidth,
|
|
2222
2225
|
listColumns,
|
|
2223
2226
|
onRowClick,
|
|
2224
2227
|
isRowActive,
|
|
@@ -2229,7 +2232,19 @@ function DataView({
|
|
|
2229
2232
|
return /* @__PURE__ */ jsx3("div", { className: "flex flex-1 items-center justify-center", children: empty });
|
|
2230
2233
|
}
|
|
2231
2234
|
if (view === "grid") {
|
|
2232
|
-
return /* @__PURE__ */ jsx3(
|
|
2235
|
+
return /* @__PURE__ */ jsx3(
|
|
2236
|
+
"div",
|
|
2237
|
+
{
|
|
2238
|
+
className: cn(
|
|
2239
|
+
"grid",
|
|
2240
|
+
PANEL.gap,
|
|
2241
|
+
!size && gridClass(columns),
|
|
2242
|
+
className
|
|
2243
|
+
),
|
|
2244
|
+
style: size ? gridSizeStyle(size, minCardWidth) : void 0,
|
|
2245
|
+
children: items.map((item) => /* @__PURE__ */ jsx3("div", { className: "flex flex-col *:flex-1", children: renderCard(item) }, getKey(item)))
|
|
2246
|
+
}
|
|
2247
|
+
);
|
|
2233
2248
|
}
|
|
2234
2249
|
const template = listColumns.map((c) => c.width).join(" ");
|
|
2235
2250
|
const rowHeight = density === "compact" ? "h-7" : "h-9";
|
|
@@ -2471,6 +2486,7 @@ function pluginStatus(summary) {
|
|
|
2471
2486
|
if (summary.state === "failed") return "failed";
|
|
2472
2487
|
if (summary.state === "blocked") return "blocked";
|
|
2473
2488
|
if (!summary.enabled) return "disabled";
|
|
2489
|
+
if (summary.state === "safe-mode") return "safeMode";
|
|
2474
2490
|
return "running";
|
|
2475
2491
|
}
|
|
2476
2492
|
function mergePlugins(installed, registry) {
|
|
@@ -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","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]"]
|
|
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,10 +59,10 @@ import {
|
|
|
59
59
|
trackTabHandle,
|
|
60
60
|
useShellController,
|
|
61
61
|
useTabStageStore
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-A5CULDWV.js";
|
|
63
63
|
import {
|
|
64
64
|
setPermissionsForTesting
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-FGX27MAA.js";
|
|
66
66
|
import {
|
|
67
67
|
SurfaceScope,
|
|
68
68
|
notifyShellReady,
|
|
@@ -70,14 +70,14 @@ import {
|
|
|
70
70
|
setShellCallbacks,
|
|
71
71
|
setShellHosts,
|
|
72
72
|
setShellLayoutProvider
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-GTHINW3L.js";
|
|
74
74
|
import {
|
|
75
75
|
getTabType,
|
|
76
76
|
listTabTypes,
|
|
77
77
|
resetPluginStore,
|
|
78
78
|
setFrontendState,
|
|
79
79
|
setPluginSummaries
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-JFQGI4OD.js";
|
|
81
81
|
import {
|
|
82
82
|
init_define_import_meta_env
|
|
83
83
|
} from "./chunk-YGYBM7SQ.js";
|
|
@@ -22,6 +22,8 @@ export interface LookResponse {
|
|
|
22
22
|
};
|
|
23
23
|
/** TERMIX_SAFE_LAYOUT is set on the server. */
|
|
24
24
|
safeLayout: boolean;
|
|
25
|
+
/** TERMIX_SAFE_MODE is set: only layout and theme plugins run. */
|
|
26
|
+
safeMode?: boolean;
|
|
25
27
|
unavailable: UnavailableLook[];
|
|
26
28
|
}
|
|
27
29
|
export declare function getLook(): Promise<LookResponse>;
|
|
@@ -120,7 +120,7 @@ export interface PluginSummary {
|
|
|
120
120
|
name: string;
|
|
121
121
|
version: string;
|
|
122
122
|
enabled: boolean;
|
|
123
|
-
/** enabled | disabled | blocked | failed, or the loader's live state. */
|
|
123
|
+
/** enabled | disabled | blocked | failed | safe-mode, or the loader's live state. */
|
|
124
124
|
state: string;
|
|
125
125
|
/** A linked desktop leaves this plugin to its server. */
|
|
126
126
|
runsOnServer?: boolean;
|
|
@@ -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;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sign in for the Termix mobile app in a real browser. The app opens the
|
|
3
|
+
* login page with ?return_to=termix-mobile://..., and after any login method
|
|
4
|
+
* the page sends the token back to that address. Only the app's own scheme
|
|
5
|
+
* is accepted, so the value can never send a token to a website.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isAppReturn(value: unknown): value is string;
|
|
8
|
+
/** Reads return_to from the address bar once and keeps it for this tab. */
|
|
9
|
+
export declare function captureAppReturn(): string | null;
|
|
10
|
+
export declare function pendingAppReturn(): string | null;
|
|
11
|
+
export declare function appReturnUrl(base: string, params: Record<string, string>): string;
|
|
12
|
+
/** Sends the result to the app. False when no app asked for it. */
|
|
13
|
+
export declare function handOffToApp(params: Record<string, string>): boolean;
|
|
@@ -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";
|
|
@@ -2,7 +2,7 @@ import { type CapabilityRisk } from "@termix-ssh/plugin-sdk/capabilities";
|
|
|
2
2
|
import type { PluginEnvVar } from "@termix-ssh/plugin-sdk/docs";
|
|
3
3
|
import { type ChangeType, type ChangelogChange, type ChangelogRelease } from "@termix-ssh/plugin-sdk/changelog";
|
|
4
4
|
import type { PluginChannel, PluginSummary, PluginUploadPreview, RegistryPluginEntry, RegistryPluginVersion } from "../api/plugins-api";
|
|
5
|
-
export type PluginStatus = "running" | "disabled" | "failed" | "blocked" | "server";
|
|
5
|
+
export type PluginStatus = "running" | "disabled" | "failed" | "blocked" | "server" | "safeMode";
|
|
6
6
|
/** One row of the Plugins tab: what is installed merged with the registry. */
|
|
7
7
|
export interface PluginEntry {
|
|
8
8
|
id: string;
|
package/dist/host/ui.js
CHANGED
|
@@ -160,10 +160,10 @@ import {
|
|
|
160
160
|
useThemes,
|
|
161
161
|
verifySecondFactor,
|
|
162
162
|
withProtocolSettings
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-A5CULDWV.js";
|
|
164
164
|
import {
|
|
165
165
|
usePermissions
|
|
166
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-FGX27MAA.js";
|
|
167
167
|
import {
|
|
168
168
|
AddButton,
|
|
169
169
|
Card,
|
|
@@ -184,7 +184,7 @@ import {
|
|
|
184
184
|
isPrerelease,
|
|
185
185
|
reportBetaFeedbackUrl,
|
|
186
186
|
reportCoreIssueUrl
|
|
187
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-WWFRBU2E.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-GTHINW3L.js";
|
|
378
378
|
import {
|
|
379
379
|
CREDENTIAL_ROW_FIELD_KEYS,
|
|
380
380
|
PRESETS,
|
|
@@ -535,7 +535,7 @@ import {
|
|
|
535
535
|
useTabs,
|
|
536
536
|
useTabsSafe,
|
|
537
537
|
verifyPasswordResetCode
|
|
538
|
-
} from "./chunk-
|
|
538
|
+
} from "./chunk-JFQGI4OD.js";
|
|
539
539
|
import {
|
|
540
540
|
define_import_meta_env_default,
|
|
541
541
|
init_define_import_meta_env
|
|
@@ -3327,6 +3327,39 @@ function isInElectronWebView() {
|
|
|
3327
3327
|
}
|
|
3328
3328
|
return false;
|
|
3329
3329
|
}
|
|
3330
|
+
function isEmbeddedAuthFrame() {
|
|
3331
|
+
return isInMobileWebView() || isInElectronWebView();
|
|
3332
|
+
}
|
|
3333
|
+
|
|
3334
|
+
// src/ui/lib/app-return.ts
|
|
3335
|
+
init_define_import_meta_env();
|
|
3336
|
+
var STORAGE_KEY = "termix-app-return";
|
|
3337
|
+
var APP_RETURN = /^termix-mobile:\/\/[A-Za-z0-9._~/-]*$/;
|
|
3338
|
+
function isAppReturn(value) {
|
|
3339
|
+
return typeof value === "string" && APP_RETURN.test(value);
|
|
3340
|
+
}
|
|
3341
|
+
function pendingAppReturn() {
|
|
3342
|
+
try {
|
|
3343
|
+
const value = sessionStorage.getItem(STORAGE_KEY);
|
|
3344
|
+
return isAppReturn(value) ? value : null;
|
|
3345
|
+
} catch {
|
|
3346
|
+
return null;
|
|
3347
|
+
}
|
|
3348
|
+
}
|
|
3349
|
+
function appReturnUrl(base2, params) {
|
|
3350
|
+
const query = new URLSearchParams(params).toString();
|
|
3351
|
+
return query ? `${base2}?${query}` : base2;
|
|
3352
|
+
}
|
|
3353
|
+
function handOffToApp(params) {
|
|
3354
|
+
const base2 = pendingAppReturn();
|
|
3355
|
+
if (!base2) return false;
|
|
3356
|
+
try {
|
|
3357
|
+
sessionStorage.removeItem(STORAGE_KEY);
|
|
3358
|
+
} catch {
|
|
3359
|
+
}
|
|
3360
|
+
window.location.replace(appReturnUrl(base2, params));
|
|
3361
|
+
return true;
|
|
3362
|
+
}
|
|
3330
3363
|
|
|
3331
3364
|
// src/ui/auth/Auth.tsx
|
|
3332
3365
|
import { useState as useState7, useEffect as useEffect6, useCallback as useCallback5, useRef as useRef4 } from "react";
|
|
@@ -3878,7 +3911,7 @@ function currentDeps() {
|
|
|
3878
3911
|
return deps ?? defaultDeps;
|
|
3879
3912
|
}
|
|
3880
3913
|
function serverAllowsFrontend(summary) {
|
|
3881
|
-
return summary.enabled && summary.state !== "failed" && summary.state !== "blocked" && !!summary.frontend;
|
|
3914
|
+
return summary.enabled && summary.state !== "failed" && summary.state !== "blocked" && summary.state !== "safe-mode" && !!summary.frontend;
|
|
3882
3915
|
}
|
|
3883
3916
|
function orderForActivation(summaries) {
|
|
3884
3917
|
const byId = new Map(summaries.map((summary) => [summary.id, summary]));
|
|
@@ -4252,7 +4285,7 @@ function LanguageRow({
|
|
|
4252
4285
|
)
|
|
4253
4286
|
] });
|
|
4254
4287
|
}
|
|
4255
|
-
var
|
|
4288
|
+
var STORAGE_KEY2 = "termix_auth";
|
|
4256
4289
|
function parseSecondFactorIds(value) {
|
|
4257
4290
|
const ids = (value ?? "").split(",").filter(Boolean);
|
|
4258
4291
|
return ids.map((id) => ({ id, pluginId: "", labelKey: "" }));
|
|
@@ -4266,10 +4299,15 @@ function hasDesktopManualLogout() {
|
|
|
4266
4299
|
}
|
|
4267
4300
|
function storeAuth(username) {
|
|
4268
4301
|
localStorage.setItem(
|
|
4269
|
-
|
|
4302
|
+
STORAGE_KEY2,
|
|
4270
4303
|
JSON.stringify({ loggedIn: true, username })
|
|
4271
4304
|
);
|
|
4272
4305
|
}
|
|
4306
|
+
async function handOffLogin(token) {
|
|
4307
|
+
if (!pendingAppReturn() || isEmbeddedAuthFrame()) return false;
|
|
4308
|
+
const value = token || await getCurrentToken();
|
|
4309
|
+
return handOffToApp(value ? { token: value } : { error: "no_token" });
|
|
4310
|
+
}
|
|
4273
4311
|
function PasswordInput2({
|
|
4274
4312
|
value,
|
|
4275
4313
|
onChange,
|
|
@@ -4407,8 +4445,9 @@ function Auth({ onLogin }) {
|
|
|
4407
4445
|
useEffect6(() => {
|
|
4408
4446
|
if (proxySigninHandledRef.current || isElectron()) return;
|
|
4409
4447
|
proxySigninHandledRef.current = true;
|
|
4410
|
-
requestTrustedProxyLogin().then((result) => {
|
|
4448
|
+
requestTrustedProxyLogin().then(async (result) => {
|
|
4411
4449
|
if (!result.enabled || !result.success) return;
|
|
4450
|
+
if (await handOffLogin()) return;
|
|
4412
4451
|
storeAuth(result.username || "");
|
|
4413
4452
|
onLogin(
|
|
4414
4453
|
result.username || "",
|
|
@@ -4625,21 +4664,24 @@ function Auth({ onLogin }) {
|
|
|
4625
4664
|
}
|
|
4626
4665
|
return;
|
|
4627
4666
|
}
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4667
|
+
void handOffLogin(urlParams.get("token")).then((handedOff) => {
|
|
4668
|
+
if (handedOff) return;
|
|
4669
|
+
getUserInfo().then((meRes) => {
|
|
4670
|
+
storeAuth(meRes.username || "");
|
|
4671
|
+
clearDesktopManualLogout();
|
|
4672
|
+
onLogin(
|
|
4673
|
+
meRes.username || "",
|
|
4674
|
+
meRes.userId || void 0,
|
|
4675
|
+
!!meRes.is_admin
|
|
4676
|
+
);
|
|
4677
|
+
window.history.replaceState(
|
|
4678
|
+
{},
|
|
4679
|
+
document.title,
|
|
4680
|
+
window.location.pathname
|
|
4681
|
+
);
|
|
4682
|
+
}).catch(() => {
|
|
4683
|
+
toast2.error(t3("errors.failedUserInfo"));
|
|
4684
|
+
});
|
|
4643
4685
|
});
|
|
4644
4686
|
}
|
|
4645
4687
|
}, [onLogin, t3]);
|
|
@@ -4721,6 +4763,7 @@ function Auth({ onLogin }) {
|
|
|
4721
4763
|
setWebviewAuthSuccess(true);
|
|
4722
4764
|
return;
|
|
4723
4765
|
}
|
|
4766
|
+
if (await handOffLogin(res?.token)) return;
|
|
4724
4767
|
const meRes = await getUserInfo();
|
|
4725
4768
|
const name2 = meRes.username || res.username || options.fallbackUsername || "";
|
|
4726
4769
|
storeAuth(name2);
|
package/dist/host-commands.d.ts
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export type { Client, ClientChannel } from "ssh2";
|
|
12
12
|
import type { Client } from "ssh2";
|
|
13
|
+
import { EXTRA_PATH_DIRS } from "./host-scripts/docker.js";
|
|
14
|
+
export { EXTRA_PATH_DIRS };
|
|
13
15
|
export interface ExecResult {
|
|
14
16
|
stdout: string;
|
|
15
17
|
stderr: string;
|
|
@@ -26,12 +28,6 @@ export interface PlatformInfo {
|
|
|
26
28
|
hasDocker: boolean;
|
|
27
29
|
osPrettyName: string | null;
|
|
28
30
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Non-interactive SSH shells don't source ~/.zprofile or ~/.bash_profile,
|
|
31
|
-
* so PATH additions from installers like Homebrew or OrbStack are missing.
|
|
32
|
-
* Extend PATH with their common install locations before probing.
|
|
33
|
-
*/
|
|
34
|
-
export declare const EXTRA_PATH_DIRS = "/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:\"$HOME/.orbstack/bin\"";
|
|
35
31
|
/**
|
|
36
32
|
* Single probe that reports which tooling is available. Each line is
|
|
37
33
|
* "key=value" so the parser is trivial and order-independent.
|
package/dist/host-commands.js
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* A plugin passes the `Client` it got from ctx.ssh.connect/withConnection.
|
|
10
10
|
*/
|
|
11
|
+
// Homebrew and OrbStack paths a non-interactive shell misses.
|
|
12
|
+
import { EXTRA_PATH_DIRS } from "./host-scripts/docker.js";
|
|
13
|
+
export { EXTRA_PATH_DIRS };
|
|
11
14
|
/** Runs one non-interactive command over an existing ssh2 client. */
|
|
12
15
|
export function execCommand(client, command, timeoutMs = 30000) {
|
|
13
16
|
return new Promise((resolve, reject) => {
|
|
@@ -83,12 +86,6 @@ export function execCommand(client, command, timeoutMs = 30000) {
|
|
|
83
86
|
});
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Non-interactive SSH shells don't source ~/.zprofile or ~/.bash_profile,
|
|
88
|
-
* so PATH additions from installers like Homebrew or OrbStack are missing.
|
|
89
|
-
* Extend PATH with their common install locations before probing.
|
|
90
|
-
*/
|
|
91
|
-
export const EXTRA_PATH_DIRS = '/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:"$HOME/.orbstack/bin"';
|
|
92
89
|
const DOCKER_PROBE = `command -v docker >/dev/null 2>&1` +
|
|
93
90
|
` || [ -S /var/run/docker.sock ]` +
|
|
94
91
|
` || [ -S "$HOME/.orbstack/run/docker.sock" ]`;
|