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
@@ -2,6 +2,8 @@
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { HelpTip } from "@/components/ui/help-tip";
import { getIndexTypeDescription } from "./kb-index-type-badge";
import { KBStats, KBIndexType } from "@/types";
import {
Database,
@@ -111,10 +113,12 @@ export function KBStatsCard({ stats, isLoading }: KBStatsCardProps) {
key={idx.index_type}
className="flex items-center justify-between text-sm"
>
<div className="flex items-center gap-2">
{indexIcons[idx.index_type]}
<span>{indexLabels[idx.index_type]}</span>
</div>
<HelpTip label={getIndexTypeDescription(idx.index_type)}>
<div className="flex items-center gap-2 w-fit">
{indexIcons[idx.index_type]}
<span>{indexLabels[idx.index_type]}</span>
</div>
</HelpTip>
<div className="text-right">
<span className="font-medium">
{idx.document_count.toLocaleString()}
@@ -131,7 +135,9 @@ export function KBStatsCard({ stats, isLoading }: KBStatsCardProps) {
</span>
</div>
<div className="flex items-center justify-between text-xs text-muted-foreground mt-1">
<span>Chunks</span>
<HelpTip label="A chunk is a segment of a document split for embedding — one document can produce many chunks">
<span className="w-fit">Chunks</span>
</HelpTip>
<span>{stats.total_chunks.toLocaleString()}</span>
</div>
</div>