import clsx from 'clsx'; import { BarChart, FileText, Info, Paperclip, Terminal } from 'lucide-react'; import { ContainerStatus } from '@/react/docker/containers/types'; import { STACK_CONTAINER_STATE_NAME, StackContainerLinkParams, } from '@/react/docker/containers/ItemView/containerBreadcrumbs'; import { Authorized } from '@/react/hooks/useUser'; import { Icon } from '@@/Icon'; import { Link } from '@@/Link'; import styles from './ContainerQuickActions.module.css'; export interface QuickActionsState { showQuickActionAttach: boolean; showQuickActionExec: boolean; showQuickActionInspect: boolean; showQuickActionLogs: boolean; showQuickActionStats: boolean; } export function ContainerQuickActions({ status, containerId, nodeName, state, stackLinkParams, }: { containerId: string; nodeName: string; status: ContainerStatus; state: QuickActionsState; // When provided (container opened from a stack), the quick actions link to // the stack-scoped container sub-tab states with these params so the stack // breadcrumb trail is preserved. Otherwise they link to the global states. stackLinkParams?: StackContainerLinkParams; }) { const isActive = !!status && [ ContainerStatus.Starting, ContainerStatus.Running, ContainerStatus.Healthy, ContainerStatus.Unhealthy, ].includes(status); // Build the target ui-router state for a given sub-tab: the stack-scoped // state when inside a stack, the global container state otherwise. Both share // the same tab suffix (logs/inspect/stats/exec/attach). function linkTo(tab: string) { return stackLinkParams ? `${STACK_CONTAINER_STATE_NAME}.${tab}` : `docker.containers.container.${tab}`; } const linkParams = stackLinkParams ?? { id: containerId, nodeName }; return (