@rozaqi02/reusable-dashboard 1.1.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## [1.2.0] - 2026-06-06
6
+
7
+ ### Added
8
+
9
+ 1. `<AutoDashboard>` — komponen plug-and-play untuk domain transaksional. Client cukup memberi prop `supabase`, `table`, dan pemetaan `columns`; data source, adapter, dan widget config dirakit otomatis tanpa menulis file konfigurasi terpisah.
10
+ 2. `createUniversalSource(supabase, { table, columns })` — data source generik yang menormalkan baris ke bentuk kanonik berdasarkan pemetaan kolom runtime.
11
+ 3. `adaptUniversalData` + `createEmptyUniversalData` — adapter generik yang menghasilkan struktur `{ stats, charts, table }` dari data kanonik.
12
+ 4. `createUniversalWidgetConfig(columns)` — membangun widget config secara dinamis sesuai kolom yang dipetakan.
13
+
14
+ ### Notes
15
+
16
+ - Preset `cidika`, `tokoSepatu`, dan `dummyUmkm` tetap tersedia untuk kasus yang butuh kontrol penuh.
17
+ - `<AutoDashboard>` ditujukan untuk data transaksional (waktu + status + nilai). Domain non-transaksional tetap memakai adapter manual.
18
+
5
19
  ## [1.0.0] - 2026-04-15
6
20
 
7
21
  ### Added
package/README.md CHANGED
@@ -4,7 +4,7 @@ Modul dashboard admin reusable untuk aplikasi UMKM berbasis React + Supabase.
4
4
  Mendukung berbagai domain bisnis (travel, toko online, UMKM generik) tanpa menulis ulang komponen.
5
5
  CSS sudah terbundle — tidak perlu konfigurasi Tailwind.
6
6
 
7
- [![version](https://img.shields.io/badge/version-1.1.3-blue)](./CHANGELOG.md)
7
+ [![version](https://img.shields.io/badge/version-1.2.0-blue)](./CHANGELOG.md)
8
8
  [![license](https://img.shields.io/badge/license-MIT-green)](./LICENSE)
9
9
  [![npm](https://img.shields.io/badge/npm-%40rozaqi02%2Freusable--dashboard-red)](https://www.npmjs.com/package/@rozaqi02/reusable-dashboard)
10
10
 
@@ -12,6 +12,7 @@ CSS sudah terbundle — tidak perlu konfigurasi Tailwind.
12
12
 
13
13
  ## Daftar Isi
14
14
 
15
+ 0. [⚡ Cara Tercepat — `<AutoDashboard>` (Plug & Play)](#0-cara-tercepat--autodashboard-plug--play)
15
16
  1. [Instalasi](#1-instalasi)
16
17
  2. [Prasyarat Teknis](#2-prasyarat-teknis)
17
18
  3. [Preset yang Tersedia](#3-preset-yang-tersedia)
@@ -28,6 +29,73 @@ CSS sudah terbundle — tidak perlu konfigurasi Tailwind.
28
29
 
29
30
  ---
30
31
 
32
+ ## 0. Cara Tercepat — `<AutoDashboard>` (Plug & Play)
33
+
34
+ Kalau kamu hanya ingin dashboard jadi **tanpa menulis file config apa pun**, pakai
35
+ komponen `<AutoDashboard>`. Cukup beri tahu nama tabel dan pemetaan kolom — modul
36
+ merakit data source, adapter, dan widget config secara otomatis di balik layar.
37
+
38
+ ```jsx
39
+ import { AutoDashboard } from "@rozaqi02/reusable-dashboard";
40
+ import { supabase } from "./lib/supabaseClient";
41
+
42
+ export default function Dashboard() {
43
+ return (
44
+ <AutoDashboard
45
+ supabase={supabase}
46
+ table="bookings"
47
+ columns={{
48
+ date: "created_at", // WAJIB — kolom timestamp
49
+ status: "status", // opsional — kolom status transaksi
50
+ total: "total_idr", // opsional — kolom nilai uang
51
+ customer: "customer_name", // opsional — nama pelanggan
52
+ item: "package_id", // opsional — nama produk/paket/layanan
53
+ audience: "audience", // opsional — segmen pelanggan
54
+ }}
55
+ confirmedValue="confirmed" // nilai status yang dihitung "berhasil"
56
+ pendingValue="pending" // nilai status yang dihitung "menunggu"
57
+ title="Dashboard Cidika"
58
+ />
59
+ );
60
+ }
61
+ ```
62
+
63
+ Jangan lupa import CSS-nya sekali saja (lihat [Bab 1](#1-instalasi)).
64
+
65
+ ### Props `<AutoDashboard>`
66
+
67
+ | Prop | Tipe | Wajib | Keterangan |
68
+ |------|------|-------|------------|
69
+ | `supabase` | object | ✅ | Instance Supabase client. |
70
+ | `table` | string | ✅ | Nama tabel sumber data, mis. `"bookings"`, `"orders"`. |
71
+ | `columns.date` | string | ✅ | Kolom timestamp untuk tren harian & filter rentang. |
72
+ | `columns.status` | string | — | Kolom status. Tanpa ini semua baris dianggap "berhasil". |
73
+ | `columns.total` | string | — | Kolom nilai uang untuk metrik pendapatan. |
74
+ | `columns.customer` | string | — | Kolom nama pelanggan (muncul di tabel). |
75
+ | `columns.item` | string | — | Kolom produk/paket/layanan (mengaktifkan chart "Item Teratas"). |
76
+ | `columns.audience` | string | — | Kolom segmen (mengaktifkan chart distribusi segmen). |
77
+ | `confirmedValue` | string | — | Nilai status "berhasil" (default `"confirmed"`). |
78
+ | `pendingValue` | string | — | Nilai status "menunggu" (default `"pending"`). |
79
+ | `title` | string | — | Judul dashboard. |
80
+ | `labels` | object | — | Override sebagian/seluruh teks UI (lihat [Bab 9](#9-label--internasionalisasi)). |
81
+ | `dateLocale` | string | — | Locale format tanggal (default `"id-ID"`). |
82
+
83
+ Widget menyesuaikan otomatis: chart "Distribusi Segmen" hanya muncul bila `columns.audience`
84
+ diisi, dan chart "Item Teratas" hanya muncul bila `columns.item` diisi.
85
+
86
+ ### Kapan memakai ini vs preset/adapter manual?
87
+
88
+ `<AutoDashboard>` cocok untuk **data transaksional** — data yang punya waktu, status,
89
+ dan (opsional) nilai uang. Ini mencakup mayoritas UMKM: travel, retail, laundry, klinik,
90
+ restoran, rental, kursus, bengkel, dan sejenisnya.
91
+
92
+ Untuk kasus yang lebih kompleks — gabungan banyak tabel, metrik khusus domain
93
+ (rating bintang, okupansi kamar), atau data non-transaksional (blog/CMS, inventori murni) —
94
+ gunakan pendekatan **adapter manual** ([Bab 7](#7-cara-membuat-adapter-untuk-domain-bisnis-baru))
95
+ atau **preset** ([Bab 3](#3-preset-yang-tersedia)) yang memberi kontrol penuh.
96
+
97
+ ---
98
+
31
99
  ## 1. Instalasi
32
100
 
33
101
  ```bash