25 lines
773 B
TypeScript
25 lines
773 B
TypeScript
import type { LucideIcon } from 'lucide-react'
|
|
|
|
export type KpiTone = 'neutral' | 'ok' | 'wn' | 'er' | 'in'
|
|
|
|
export type KpiItem = {
|
|
id: string
|
|
label: string
|
|
value: string
|
|
/** Плашка-подсказка рядом со значением. */
|
|
hint: string
|
|
tone: KpiTone
|
|
/** Иконка показателя: плитка слева от подписи. */
|
|
icon: LucideIcon
|
|
}
|
|
|
|
/** Плитка KPI: иконка, подпись, значение (цветом при wn/er) и плашка-подсказка. */
|
|
export function kpi(
|
|
id: string,
|
|
label: string,
|
|
value: string,
|
|
opts: { icon: LucideIcon; tone?: KpiTone; badge: string },
|
|
): KpiItem {
|
|
return { id, label, value, hint: opts.badge, tone: opts.tone ?? 'neutral', icon: opts.icon }
|
|
}
|