diff --git a/app/components/StatCard.tsx b/app/components/StatCard.tsx index 79b6e324..c1785140 100644 --- a/app/components/StatCard.tsx +++ b/app/components/StatCard.tsx @@ -1,6 +1,6 @@ "use client"; -import { ReactNode } from "react"; +import { ReactNode, useId } from "react"; export type StatCardVariant = "primary" | "secondary"; @@ -27,29 +27,23 @@ export function StatCard({ className = "", id, }: StatCardProps) { - const cardId = id || `stat-card-${label.toLowerCase().replace(/\s+/g, "-")}`; + const generatedId = useId().replace(/:/g, ""); + const cardId = id || `stat-card-${label.toLowerCase().replace(/\s+/g, "-")}-${generatedId}`; const labelId = `${cardId}-label`; const valueId = `${cardId}-value`; - const descId = description ? `${cardId}-desc` : undefined; + const descId = description && !loading ? `${cardId}-desc` : undefined; const baseClasses = - "rounded-2xl border p-5 transition-all duration-200 focus-within:ring-2 focus-within:ring-theme-primary focus-within:ring-offset-2 focus-within:ring-offset-black"; + "w-full min-w-0 rounded-2xl border p-4 sm:p-5 transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-theme-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background"; const variantClasses: Record = { - primary: "border-white/10 bg-white/5", - secondary: "border-white/5 bg-white/[0.02]", + primary: "border-foreground/10 bg-foreground/5", + secondary: "border-foreground/5 bg-foreground/[0.02]", }; - const disabledClasses = disabled - ? "opacity-50 cursor-not-allowed" - : "cursor-default"; + const disabledClasses = disabled ? "opacity-50 cursor-not-allowed" : "cursor-default"; - const combinedClasses = [ - baseClasses, - variantClasses[variant], - disabledClasses, - className, - ] + const combinedClasses = [baseClasses, variantClasses[variant], disabledClasses, className] .filter(Boolean) .join(" "); @@ -63,9 +57,10 @@ export function StatCard({ aria-labelledby={labelId} aria-describedby={descId} aria-disabled={disabled || loading} + aria-busy={loading} tabIndex={disabled ? -1 : 0} > -
+
{icon && (