import Link from 'next/link' import ReactMarkdown from 'react-markdown' import { createLintSummaryPrompt, lintInfoMap } from 'components/interfaces/Linter/Linter.utils' import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { Lint } from 'data/lint/lint-query' import { DOCS_URL } from 'lib/constants' import { useTrack } from 'lib/telemetry/track' import { ExternalLink } from 'lucide-react' import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state' import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state' import { AiIconAnimation, Button } from 'ui' import { EntityTypeIcon, LintCTA, LintEntity } from './Linter.utils' interface LintDetailProps { lint: Lint projectRef: string onAskAssistant?: () => void } const LintDetail = ({ lint, projectRef, onAskAssistant }: LintDetailProps) => { const track = useTrack() const snap = useAiAssistantStateSnapshot() const { openSidebar } = useSidebarManagerSnapshot() const handleAskAssistant = () => { track('advisor_assistant_button_clicked', { origin: 'lint_detail', advisorCategory: lint.categories[0], advisorType: lint.name, advisorLevel: lint.level, }) onAskAssistant?.() openSidebar(SIDEBAR_KEYS.AI_ASSISTANT) snap.newChat({ name: 'Summarize lint', initialMessage: createLintSummaryPrompt(lint), }) } return (

Entity

Issue

{lint.detail.replace(/\\`/g, '`')}

Description

{lint.description.replace(/\\`/g, '`')}

Resolve

) } export default LintDetail