Files
kandev/apps/web/components/azure-devops/azure-devops-scope-bar.tsx
T
2026-08-02 17:08:22 +01:00

54 lines
1.4 KiB
TypeScript

"use client";
import {
IntegrationScopeBar,
type ScopeSelection,
} from "@/components/integrations/presets-scope-bar-base";
import type { AzureDevOpsSavedView } from "@/lib/types/azure-devops";
import {
presetsForKind,
type AzureDevOpsPresetKind,
type AzureDevOpsQueryPresets,
} from "./azure-devops-presets";
export type AzureDevOpsScopeSelection = ScopeSelection<AzureDevOpsPresetKind>;
const KINDS = [
{ value: "work_item", label: "Work items" },
{ value: "pull_request", label: "Pull requests" },
] as const;
export function AzureDevOpsScopeBar({
selected,
onSelect,
savedViews,
onDeleteSaved,
canSaveCurrent,
onSaveCurrent,
queryPresets,
}: {
selected: AzureDevOpsScopeSelection;
onSelect: (selection: AzureDevOpsScopeSelection) => void;
savedViews: AzureDevOpsSavedView[];
onDeleteSaved: (id: string) => void;
canSaveCurrent: boolean;
onSaveCurrent: () => void;
queryPresets: AzureDevOpsQueryPresets;
}) {
return (
<IntegrationScopeBar
testId="azure-devops-presets-scope-bar"
savedMenuTestId="azure-devops-saved-views-menu"
kinds={KINDS}
selected={selected}
onSelect={onSelect}
presetsByKind={(kind) => presetsForKind(kind, queryPresets)}
savedPresets={savedViews}
onDeleteSaved={onDeleteSaved}
canSaveCurrent={canSaveCurrent}
onSaveCurrent={onSaveCurrent}
className="border-b"
/>
);
}