From a1dbfc2967714bad0554c33dce62f62207902905 Mon Sep 17 00:00:00 2001 From: "yongen.loong" Date: Fri, 6 Sep 2024 01:28:16 +0800 Subject: [PATCH] feat: link to microsoft docs for error --- components/ui/badge.tsx | 36 ++++++++++++++++++++++++++ components/workspace/format-errors.tsx | 31 ++++++++++++++++++++-- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 components/ui/badge.tsx diff --git a/components/ui/badge.tsx b/components/ui/badge.tsx new file mode 100644 index 0000000..f000e3e --- /dev/null +++ b/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/components/workspace/format-errors.tsx b/components/workspace/format-errors.tsx index 1feea70..c210ba9 100644 --- a/components/workspace/format-errors.tsx +++ b/components/workspace/format-errors.tsx @@ -1,3 +1,6 @@ +import { badgeVariants, Badge } from "@/components/ui/badge"; +import Link from "next/link"; + export function FormatErrors({ inputString }: { inputString: string }) { // Detect and remove the dynamic path const cleanedString = inputString.replace( @@ -27,7 +30,7 @@ export function FormatErrors({ inputString }: { inputString: string }) { ); } else { - return null; + return

No errors or warnings.

; } } @@ -37,8 +40,32 @@ function ErrorMessage({ message }: { message: string }) { return ( {path} - {type} + + + {description.join(" ")} ); } + +function ErrorTypeLink({ type }: { type: string }) { + const [kind, code] = type.split(" "); + + if (kind === "warning") return warning; + + if (kind === "error" && code.startsWith("CS")) + return ( + + {code} + + ); + + return null; +}