import { InformationCircleIcon } from '@heroicons/react/16/solid' import { MessageSquareMore } from 'lucide-react' import { useRouter } from 'next/router' import { cn, Tabs_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { LINT_TABS, LINTER_LEVELS } from '@/components/interfaces/Linter/Linter.constants' import { ShortcutTooltip } from '@/components/ui/ShortcutTooltip' import { Lint } from '@/data/lint/lint-query' interface LintPageTabsProps { currentTab: string setCurrentTab: (value: LINTER_LEVELS) => void isLoading: boolean activeLints: Lint[] } const LintPageTabs = ({ currentTab, setCurrentTab, isLoading, activeLints }: LintPageTabsProps) => { const router = useRouter() const warnLintsCount = activeLints.filter((x) => x.level === 'WARN').length const errorLintsCount = activeLints.filter((x) => x.level === 'ERROR').length const infoLintsCount = activeLints.filter((x) => x.level === 'INFO').length const LintCountLabel = ({ tab }: { tab: (typeof LINT_TABS)[number] }) => { let count = 0 let label = '' if (tab.id === LINTER_LEVELS.ERROR) { count = errorLintsCount label = 'errors' } if (tab.id === LINTER_LEVELS.WARN) { count = warnLintsCount label = 'warnings' } if (tab.id === LINTER_LEVELS.INFO) { count = infoLintsCount label = 'suggestions' } return ( {isLoading ? ( ) : ( <> {count} {label} > )} ) } return ( { setCurrentTab(value as LINTER_LEVELS) const { sort, search, ...rest } = router.query router.push({ ...router, query: { ...rest, preset: value, id: null } }) }} > {LINT_TABS.map((tab) => ( {tab.id === currentTab && ( )} {tab.label} {tab.description} ))} ) } export default LintPageTabs