"use client"; import { Button } from "@kandev/ui/button"; import { Checkbox } from "@kandev/ui/checkbox"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@kandev/ui/dropdown-menu"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@kandev/ui/select"; import { IconAdjustmentsHorizontal } from "@tabler/icons-react"; import { useKanbanDisplaySettings } from "@/hooks/use-kanban-display-settings"; import type { Workspace, Repository } from "@/lib/types/http"; import type { WorkflowsState } from "@/lib/state/slices"; import type { ComponentProps } from "react"; type KanbanDisplayDropdownProps = { triggerSize?: ComponentProps["size"]; }; function getRepositoryPlaceholder( repositoriesLoading: boolean, repositoriesEmpty: boolean, ): string { if (repositoriesLoading) return "Loading repositories..."; if (repositoriesEmpty) return "No repositories"; return "Select repository"; } function WorkspaceSection({ activeWorkspaceId, workspaces, onWorkspaceChange, }: { activeWorkspaceId: string | null; workspaces: Workspace[]; onWorkspaceChange: (id: string | null) => void; }) { return (
Workspace
); } function WorkflowSection({ activeWorkflowId, workflows, onWorkflowChange, }: { activeWorkflowId: string | null; workflows: WorkflowsState["items"]; onWorkflowChange: (id: string | null) => void; }) { return (
Workflow
); } function RepositorySection({ repositoryValue, repositories, repositoriesLoading, onRepositoryChange, }: { repositoryValue: string; repositories: Repository[]; repositoriesLoading: boolean; onRepositoryChange: (value: string | "all") => void; }) { return (
Repository
); } export function KanbanDisplayDropdown({ triggerSize = "icon" }: KanbanDisplayDropdownProps) { const { workspaces, workflows, activeWorkspaceId, activeWorkflowId, repositories, repositoriesLoading, allRepositoriesSelected, selectedRepositoryId, enablePreviewOnClick, onWorkspaceChange, onWorkflowChange, onRepositoryChange, onTogglePreviewOnClick, } = useKanbanDisplaySettings(); const repositoryValue = allRepositoriesSelected ? "all" : (selectedRepositoryId ?? "all"); return (
Preview Panel

When enabled, clicking a task opens the preview panel. When disabled, clicking navigates directly to the session.

); }