LivaDocsv1.1.2

Dashboard bileşenleri

Dashboard paketi KPI kartları, grafik kapsayıcıları, metrik listeleri, bölüm sekmeleri ve duyarlı yerleşim bileşenleri sunar. Tamamı Livalib tema değişkenlerini kullanır.

import {
  LivaDashboardGrid, LivaDashboardSection, LivaStatCard, LivaChartCard,
  LivaTrendChart, LivaMetricBar, LivaDonutStat, LivaSectionTabs,
} from "@dataliva/livalib";

KPI ve trend

<LivaDashboardSection title="Finansal Özet" description="Son 6 ay">
  <LivaDashboardGrid minColumnWidth={240}>
    <LivaStatCard
      label="Net Satış" value={1_248_500} unit="₺"
      delta="%12,4" trend="up" footnote="Geçen aya göre"
      icon="money" sparkline={[82, 91, 88, 103, 112, 124]}
    />
    <LivaStatCard
      label="Gider" value={640_000} unit="₺"
      delta="%5,1" trend="up" deltaTone="critical"
    />
  </LivaDashboardGrid>
</LivaDashboardSection>

trend yönü, deltaTone ise iş anlamını belirtir. Gider artışı gibi olumsuz bir yükselişte trend="up" ve deltaTone="critical" birlikte kullanılır.

<LivaChartCard title="Aylık Gerçekleşme" subtitle="2026" height={280}>
  <LivaTrendChart
    dataSource={monthlyData}
    argumentField="month"
    series={[
      { valueField: "actual", name: "Gerçekleşen" },
      { valueField: "budget", name: "Bütçe" },
    ]}
  />
</LivaChartCard>

LivaChartCard, loading durumunda iskelet; empty durumunda boş veri mesajı gösterir. LivaTrendChart tek değer ekseni içindir; ölçekleri farklı serileri ayrı grafiklere ayırın.

Dağılım ve oranlar

<LivaMetricBar items={departments} total={totalBudget} showShare sorted maxItems={5} />

<LivaDonutStat
  items={[{ label: "Tamamlanan", value: 72 }, { label: "Kalan", value: 28 }]}
  centerLabel="Tamamlanma" centerValue="%72" legend="bottom"
/>

LivaMetricBar, maxItems sonrasındaki kayıtları Diğer satırında toplar. showShare için total verin. Donut grafikte ikiden fazla seri varsa lejantı açık tutun.

Proplar

Tüm bileşenler ayrıca className ve style alır.

LivaDashboardGrid

PropTipVarsayılan
minColumnWidthnumber240 (bir kolonun sarmadan önceki en küçük genişliği)
columnsnumber— (verilirse minColumnWidth yok sayılır)
gapnumber16
childrenReact.ReactNode—

LivaDashboardSection

PropTipVarsayılan
titleReact.ReactNode—
descriptionReact.ReactNode—
actionsReact.ReactNode— (başlığın sağındaki kontroller)
childrenReact.ReactNode—

LivaStatCard

PropTipVarsayılan
labelstring— (zorunlu; kart başlığı, cümle değil)
valuenumber | string | null—
unitstring— (değerin sağında küçük punto: "₺", "adet")
formatValue(value: number) => string— (verilmezse yerel sayı biçimi)
deltastring— (verilmezse rozet çizilmez)
trend'up' | 'down' | 'flat'—
deltaTone'good' | 'critical' | 'neutral'— (verilmezse trend'ten türetilir)
footnoteReact.ReactNode—
iconReact.ReactNode— (DevExtreme ikon adı ya da düğüm)
accentstring— (verilmezse paletin ilk slotu)
sparklinenumber[]— (en az iki nokta gerekir)
loadingbooleanfalse
onClick() => void—

LivaChartCard

PropTipVarsayılan
titleReact.ReactNode— (zorunlu)
subtitleReact.ReactNode—
actionsReact.ReactNode—
footerReact.ReactNode— (grafiğin altındaki lejant/rozet şeridi)
heightnumber | string260 (kartlar arası hizayı korur; 640px ve altındaki ekranlarda en az yükseklik olur, kart içeriğe göre uzar)
loadingbooleanfalse
emptybooleanfalse
emptyTextReact.ReactNode'Görüntülenecek veri yok'
emptyIconstring'chart'
bodyClassNamestring—
childrenReact.ReactNode—

LivaTrendChart

PropTipVarsayılan
dataSourcereadonly object[]— (zorunlu)
argumentFieldstring— (zorunlu; X eksenini besleyen alan)
seriesLivaTrendSeries[]— (zorunlu)
type'line' | 'spline' | 'area' | 'splinearea' | 'bar' | 'stackedbar''spline'
rotatedbooleanfalse (çubukları yatay çizer)
heightnumber260
formatValue(value: number) => string—
hideValueAxisbooleanfalse

LivaTrendSeries: valueField, name, color?.

LivaMetricBar

PropTipVarsayılan
itemsLivaMetricBarItem[]— (zorunlu)
totalnumber— (verilmezse en büyük değere göre ölçeklenir)
showSharebooleanfalse (total gerektirir)
formatValue(value: number) => string—
maxItemsnumber— (kalanı otherLabel satırına katlar)
otherLabelstring'Diğer'
sortedbooleanfalse

LivaMetricBarItem: label, value, color?.

LivaDonutStat

PropTipVarsayılan
itemsLivaDonutStatItem[]— (zorunlu)
centerValueReact.ReactNode— (verilmezse kalemlerin toplamı)
centerLabelReact.ReactNode—
formatValue(value: number) => string—
sizenumber180
legend'right' | 'bottom' | 'none''none'
palettereadonly string[]— (verilmezse aktif kategorik palet)

LivaDonutStatItem: label, value.

LivaSectionTabs

PropTipVarsayılan
itemsLivaSectionTabItem[]— (zorunlu)
selectedIdstring— (zorunlu)
onSelect(id: string) => void— (zorunlu)
ariaLabelstring—
stretchbooleanfalse (sekmeler satırı eşit paylaşır; hiçbiri metninden dar olmaz, sığmazsa şerit yatay kayar)

LivaSectionTabs içerik render etmez; yalnızca seçilen id'yi yayar ve ok tuşlarıyla gezinmeyi destekler. Sekmeler sığmayıp şerit yatay kaydığında seçili sekme (ilk çizimde ve her seçim değişiminde) görünür alanın ortasına kaydırılır; yalnız şerit kayar, sayfa kaydırılmaz. LivaSectionTabItem: { id, text, icon?, count?, disabled? }.

Palet yardımcıları

useLivaChartPalette() aktif temaya uygun categorical, sequential, surface, gridline, axis ve metin renklerini döndürür. buildChartPalette, categoricalColor, LIVA_CHART_PALETTE_LIGHT, LIVA_CHART_PALETTE_DARK, LIVA_SEQUENTIAL_LIGHT, LIVA_SEQUENTIAL_DARK ve LIVA_STATUS_COLORS da paket kökünden dışa aktarılır.