import React from "react"; import { Stack, Card, Flex, Text, Box, useTheme, Badge } from "@sanity/ui"; import { SEOScoreResult } from "../utils/seoScore"; import CheckCircleIcon from "./icons/CheckCircleIcon"; import AlertCircleIcon from "./icons/AlertCircleIcon"; import ErrorCircleIcon from "./icons/ErrorCircleIcon"; import ProgressRing from "./icons/ProgressRing"; const DOT_COLORS: Record = { green: "#10b981", orange: "#f59e0b", red: "#ef4444", }; interface Props { result: SEOScoreResult; } const CheckRow = ({ check, isDarkMode, }: { check: SEOScoreResult["checks"][0]; isDarkMode: boolean; }) => { const hasDescription = Boolean(check.hint); let Icon = ( ); if (check.pass === true) { Icon = ( ); } else if (check.pass === "partial") { Icon = ( ); } return ( {Icon} {check.name} {hasDescription && ( {check.hint} )} ); }; export default function SEOScoreDisplay({ result }: Props) { const { score, color, label, checks } = result; const theme = useTheme(); const isDarkMode = theme.sanity.v2?.color._dark ?? (theme.sanity as unknown as { color: { dark: boolean } }).color.dark; const barColor = DOT_COLORS[color]; let badgeTone: "positive" | "caution" | "critical" = "critical"; if (color === "green") { badgeTone = "positive"; } else if (color === "orange") { badgeTone = "caution"; } return ( SEO Score {label} {checks.map((c) => ( ))} ); }