fix(#375): resolve recharts TypeScript strict mode type errors
Some checks failed
ci/woodpecker/push/web Pipeline failed

- Fix Tooltip formatter/labelFormatter type overload conflicts
- Fix Pie label render props type mismatch
- Fix telemetry.ts date split array access type

Refs #375

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 02:21:54 -06:00
parent 2eafa91e70
commit 8e27f73f8f
2 changed files with 17 additions and 10 deletions

View File

@@ -304,11 +304,13 @@ export default function UsagePage(): ReactElement {
width={60} width={60}
/> />
<Tooltip <Tooltip
formatter={(value: number, name: string) => [ formatter={
formatNumber(value), ((value: number, name: string) => [
name === "inputTokens" ? "Input Tokens" : "Output Tokens", formatNumber(value),
]} name === "inputTokens" ? "Input Tokens" : "Output Tokens",
labelFormatter={formatDateLabel} ]) as never
}
labelFormatter={((label: string) => formatDateLabel(label)) as never}
contentStyle={{ contentStyle={{
borderRadius: "8px", borderRadius: "8px",
border: "1px solid #E2E8F0", border: "1px solid #E2E8F0",
@@ -365,7 +367,9 @@ export default function UsagePage(): ReactElement {
width={140} width={140}
/> />
<Tooltip <Tooltip
formatter={(value: number) => [formatCurrency(value), "Cost"]} formatter={
((value: number) => [formatCurrency(value), "Cost"]) as never
}
contentStyle={{ contentStyle={{
borderRadius: "8px", borderRadius: "8px",
border: "1px solid #E2E8F0", border: "1px solid #E2E8F0",
@@ -401,12 +405,15 @@ export default function UsagePage(): ReactElement {
paddingAngle={2} paddingAngle={2}
dataKey="count" dataKey="count"
nameKey="outcome" nameKey="outcome"
label={({ outcome, count }: { outcome: string; count: number }) => label={
`${outcome}: ${String(count)}` ((props: Record<string, unknown>) =>
`${String(props.outcome ?? "")}: ${String(props.count ?? 0)}`) as never
} }
/> />
<Tooltip <Tooltip
formatter={(value: number, name: string) => [value, name]} formatter={
((value: number, name: string) => [value, name]) as never
}
contentStyle={{ contentStyle={{
borderRadius: "8px", borderRadius: "8px",
border: "1px solid #E2E8F0", border: "1px solid #E2E8F0",

View File

@@ -70,7 +70,7 @@ function generateDateRange(range: TimeRange): string[] {
for (let i = days - 1; i >= 0; i--) { for (let i = days - 1; i >= 0; i--) {
const d = new Date(now); const d = new Date(now);
d.setDate(d.getDate() - i); d.setDate(d.getDate() - i);
dates.push(d.toISOString().split("T")[0]); dates.push(d.toISOString().split("T")[0] ?? "");
} }
return dates; return dates;