Komponen / Grafik & jadwal
ColumnChart
Grafik kolom vertikal tanpa pustaka: kolom tunggal dengan garis target, bertumpuk (komposisi per kategori), histogram (band berurutan), dan divergen (masuk ke atas, keluar ke bawah garis nol).
Tunggal + garis target + tooltip
Garis target putus-putus 4/4 dataviz/target dengan label di kanan (Chart/TargetLine). `tooltip` membuat grafik bisa difokus: Tab sekali, lalu panah kiri/kanan menjelajah kolom dan menampilkan Chart/Tooltip.
Jam lembur per periode
Total jam lembur tersetujui · batas 12 jam per periode.
| Periode | Jam lembur |
|---|---|
| Apr | 8 |
| Mei | 12 |
| Jun | 9,5 |
| Jul | 14 |
| Agu | 10 |
| Sep · berjalan | 11,5 |
import { Card, ColumnChart, formatNumber } from '@divistant/circca-react';
// Kolom tunggal + garis target (Chart/TargetLine) + tooltip (Chart/Tooltip).
// Arahkan kursor atau Tab ke grafik lalu pakai panah kiri/kanan untuk membaca nilai tiap periode.
export default function Example() {
return (
<Card title="Jam lembur per periode" subtitle="Total jam lembur tersetujui · batas 12 jam per periode." className="w-full max-w-[548px]">
<ColumnChart
caption="Jam lembur per periode"
categoryHeader="Periode"
categories={['Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep · berjalan']}
highlightIndex={5}
series={[{ key: 'jam', label: 'Jam lembur', tone: 'cat-2', values: [8, 12, 9.5, 14, 10, 11.5] }]}
target={{ value: 12, label: 'Batas 12 jam' }}
barWidth={36}
valueFormat={v => formatNumber(v, { fractionDigits: v % 1 ? 1 : 0 })}
tooltip
/>
</Card>
);
}Bertumpuk (stacked)
Komposisi kontrak per skema. Seri pertama di dasar, segmen berjarak 2, total di atas kolom. `legendValue` menambah jumlah & persen di legenda ("PKWTT · 4 (80%)").
PKWTT vs PKWT
Komposisi kontrak per skema.
- PKWTT· 4 (80%)
- PKWT· 1 (20%)
| Skema | PKWTT | PKWT | Total |
|---|---|---|---|
| Semua | 4 | 1 | 5 |
| Operasional | 3 | 0 | 3 |
| Support | 1 | 1 | 2 |
import { Card, ColumnChart, formatShare } from '@divistant/circca-react';
// Stacked column — komposisi kontrak per skema (Figma Monitoring "PKWTT vs PKWT").
// Total di atas kolom; legenda menyebut jumlah & persen kolom "Semua".
const categories = ['Semua', 'Operasional', 'Support'];
const series = [
{ key: 'pkwtt', label: 'PKWTT', tone: 'cat-1' as const, values: [4, 3, 1] },
{ key: 'pkwt', label: 'PKWT', tone: 'cat-3' as const, values: [1, 0, 1] },
];
export default function Example() {
const semua = series.reduce((sum, s) => sum + (s.values[0] ?? 0), 0);
return (
<Card
title="PKWTT vs PKWT"
subtitle="Komposisi kontrak per skema."
action={
<a href="#" className="type-footnote-default text-accent-fg">
Daftar Karyawan ›
</a>
}
className="w-full max-w-[548px]"
>
<ColumnChart
mode="stacked"
caption="Komposisi kontrak per skema"
categoryHeader="Skema"
categories={categories}
series={series}
legendValue={s => `· ${s.values[0] ?? 0} (${formatShare(s.values[0] ?? 0, semua)})`}
/>
</Card>
);
}Histogram
Band berurutan (masa kerja) dengan kolom rapat berjarak 4. Band bernilai 0 tetap punya label kategori dan angka "0" abu.
Masa kerja
Distribusi lama kerja orang aktif (band tahun).
| Masa kerja | Orang |
|---|---|
| < 1 tahun | 1 |
| 1–3 tahun | 2 |
| 3–5 tahun | 2 |
| 5+ tahun | 0 |
Sebagian besar 1–5 tahun; 1 orang baru (< 1 tahun).
import { Card, ColumnChart } from '@divistant/circca-react';
// Histogram — band masa kerja berurutan, kolom rapat (celah 4). Band bernilai 0 tetap tampil labelnya.
export default function Example() {
return (
<Card
title="Masa kerja"
subtitle="Distribusi lama kerja orang aktif (band tahun)."
footer="Sebagian besar 1–5 tahun; 1 orang baru (< 1 tahun)."
className="w-full max-w-[548px]"
>
<ColumnChart
mode="histogram"
height={96}
caption="Distribusi masa kerja orang aktif"
categoryHeader="Masa kerja"
categories={['< 1 tahun', '1–3 tahun', '3–5 tahun', '5+ tahun']}
series={[{ key: 'orang', label: 'Orang', tone: 'cat-5', values: [1, 2, 2, 0] }]}
/>
</Card>
);
}Divergen
Seri pertama naik di atas garis nol (success), seri kedua turun di bawahnya (warning); label "+2" / "−1". `highlightIndex` menebalkan periode berjalan.
Tren masuk & keluar · 6 periode
Masuk ke atas, keluar ke bawah garis nol.
- Masuk
- Keluar
| Periode | Masuk | Keluar |
|---|---|---|
| Apr | +2 | −1 |
| Mei | 0 | −1 |
| Jun | +1 | 0 |
| Jul | +3 | −2 |
| Agu | +1 | 0 |
| Sep · berjalan | +1 | −1 |
import { Card, ColumnChart } from '@divistant/circca-react';
// Divergen — masuk ke atas (success), keluar ke bawah garis nol (warning). Periode berjalan ditebalkan.
export default function Example() {
return (
<Card
title="Tren masuk & keluar · 6 periode"
subtitle="Masuk ke atas, keluar ke bawah garis nol."
className="w-full"
>
<ColumnChart
mode="diverging"
caption="Karyawan masuk dan keluar per periode"
categoryHeader="Periode"
categories={['Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep · berjalan']}
highlightIndex={5}
series={[
{ key: 'masuk', label: 'Masuk', values: [2, 0, 1, 3, 1, 1] },
{ key: 'keluar', label: 'Keluar', values: [1, 1, 0, 2, 0, 1] },
]}
tooltip
/>
</Card>
);
}