feat(panel): tooltip sweep — projects, products, social, KB, business, settings, notifications

All 34 feature flags get verified one-line tips; secret inputs state
the write-only contract; KB index types get canonical descriptions;
switch tips ride Labels so Radix data-state stays intact. Also fixes
the scorecard SectionLabel swallowing props, which made tooltips on it
silently inert.
This commit is contained in:
Renn F
2026-07-15 16:33:22 +02:00
parent d1b02e3747
commit c37516f640
44 changed files with 1258 additions and 482 deletions
@@ -3,6 +3,7 @@
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { HelpTip } from "@/components/ui/help-tip";
import { MentorAskResponse } from "@/types";
import { RAGCitationCard } from "./rag-citation-card";
import { Markdown } from "@/components/ui/markdown";
@@ -232,13 +233,21 @@ export function MentorAnswerDisplay({
<div className="flex flex-wrap gap-1.5">
{Object.entries(response.search_stats).map(
([indexType, count]) => (
<Badge
<HelpTip
key={indexType}
variant={count > 0 ? "secondary" : "outline"}
className={`text-xs ${count === -1 ? "text-red-500" : ""}`}
label={
count === -1
? `The ${indexType} index failed to search — its results may be missing from this answer.`
: `${count} matching result${count === 1 ? "" : "s"} from the ${indexType} knowledge-base index.`
}
>
{indexType}: {count === -1 ? "error" : count}
</Badge>
<Badge
variant={count > 0 ? "secondary" : "outline"}
className={`text-xs ${count === -1 ? "text-red-500" : ""}`}
>
{indexType}: {count === -1 ? "error" : count}
</Badge>
</HelpTip>
),
)}
</div>