# 🔍 Audit Filter Layout — GLIMS Master Data (17 Halaman)

## Tabel Audit Per Halaman

| Halaman | Punya Tab? | Badge Aktif/Nonaktif | Combobox Filter | Pola Urutan Elemen |
|---|:---:|---|---|---|
| **Unit** | ❌ | ✅ badge pill (teal) | ✅ 1 combobox | Header → **Combobox → Badge** → Tabel |
| **SampleTypeCategory** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **SampleTypeGroup** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **ParameterCategory** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **ParameterAlias** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **Method** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **ParameterAccreditation** | ❌ | ✅ badge pill (teal) | ✅ 4 combobox | Header → **Combobox → Badge** → Tabel |
| **Parameter** | ✅ ParameterTabs | ✅ badge pill (teal) | ✅ 2 combobox | Header → Tab → **Badge → Combobox** → Tabel ⚠️ |
| **SampleTypeParameter** | ❌ | ✅ badge pill (teal) | ✅ 4 combobox | Header → **Combobox → Badge** → Tabel |
| **SampleTypeGroup** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel |
| **TestTemplate** | ❌ | ✅ badge pill (teal) | ❌ | Header → **Badge** → Tabel (dalam inner layout berbeda) |
| **SampleType** | ✅ SampleTypeTabs | ✅ badge pill (teal) | ✅ 3 combobox | Header → **Badge → Combobox → Tab** → Tabel ❌ |
| **RegulationAppendix** | ✅ RegulatoryTabs | ✅ badge pill (teal) | ✅ 1 combobox | Header → Tab → **Combobox → Badge** → Tabel |
| **RegulationAttachment** | ✅ RegulatoryTabs | ✅ badge pill (teal) | ✅ 3 combobox | Header → Tab → **Combobox → Badge** → Tabel |
| **Regulation** | ✅ RegulatoryTabs | ⚠️ **Combobox**, bukan badge pill | ✅ badge pill status lain | Header → Tab → **Badge(status) + Combobox(aktif)** → Tabel ❌ |
| **QualityStandard** | ❌ | ❌ Tidak ada | ❌ | Header → Tabel saja |
| **QualityStandardApproval** | ❌ | ❌ Tidak ada | ✅ 5 combobox | Header → Combobox → Tabel |
| **AnalystAssignment** | ❌ | ❌ | ❌ | Header → Tabel |

---

## ⚠️ Inkonsistensi yang Ditemukan

### 1. Urutan Badge vs Combobox tidak konsisten

```
Benar (mayoritas halaman):
  Header → [Tab] → Combobox → Badge → Tabel

Terbalik di Parameter:
  Header → Tab → Badge → Combobox → Tabel   ← ❌

Kacau di SampleType:
  Header → Badge → Combobox → Tab → Tabel   ← ❌ (Tab harusnya langsung setelah Header!)
```

### 2. Filter is_active di Regulation pakai Combobox, bukan Badge pill

Di **Regulation/Index.tsx** line 285-301:
```tsx
// ❌ Berbeda sendiri — pakai ComboboxDropdown untuk is_active
<ComboboxDropdown
    placeholder='Semua Aktifitas'
    options={[
        { value: '1', label: 'Aktif' },
        { value: '0', label: 'Nonaktif' },
    ]}
/>
```

Semua halaman lain pakai badge pill `rounded-full` untuk is_active, Regulation pakai Combobox.

### 3. SampleType — Tab ada di BAWAH filter

Di **SampleType/Index.tsx** line 316-384:
```tsx
// ❌ Urutan salah: Badge → Combobox → Tab → Tabel
<div className='flex flex-wrap gap-2'>
    {/* badge pills */}
</div>
<div className='flex flex-wrap gap-3'>
    {/* combobox */}
</div>
<SampleTypeTabs />   ← Tab harusnya di atas, bukan di bawah filter!
<ServerDataTable />
```

### 4. QualityStandard & QualityStandardApproval tidak punya filter is_active sama sekali

---

## 📐 Diagram Visual 4 Pola yang Ditemukan

```
POLA A ✅ — Benar (RegulationAppendix, RegulationAttachment, Parameter):
┌────────────────────────────────────────────┐
│  [Header + Tombol Tambah]                  │
│  [Tab ──────────────────────────────────]  │
│  [Combobox 1] [Combobox 2] ...             │
│  [● Semua] [○ Aktif] [○ Nonaktif]          │
│  [ServerDataTable]                         │
└────────────────────────────────────────────┘

POLA B ✅ — Benar untuk tanpa tab (SampleTypeCategory, Method, dll):
┌────────────────────────────────────────────┐
│  [Header + Tombol Tambah]                  │
│  [● Semua] [○ Aktif] [○ Nonaktif]          │
│  [ServerDataTable]                         │
└────────────────────────────────────────────┘

POLA C ❌ — SampleType (Tab ada di BAWAH filter):
┌────────────────────────────────────────────┐
│  [Header + Tombol Tambah]                  │
│  [● Semua] [○ Aktif] [○ Nonaktif]   ← filter dulu
│  [Combobox 1] [Combobox 2] ...      ← filter dulu
│  [Tab ────────────────────────────]  ← tab di bawah ❌
│  [ServerDataTable]                         │
└────────────────────────────────────────────┘

POLA D ❌ — Regulation (is_active pakai Combobox, bukan badge):
┌────────────────────────────────────────────┐
│  [Header + Tombol Tambah]                  │
│  [Tab ──────────────────────────────────]  │
│  [● Semua] [○ Berlaku] [○ Dicabut] [○ Draft]  +  [is_active ▼] ← campur aduk ❌
│  [ServerDataTable]                         │
└────────────────────────────────────────────┘
```

---

## ✅ Standar yang Direkomendasikan (Satu Pola untuk Semua)

```
┌────────────────────────────────────────────────────────────────┐
│  [H1 Judul]                              [+ Tombol Tambah]  A │
│  [Deskripsi]                                                   │
├────────────────────────────────────────────────────────────────┤
│  [Tab 1] [Tab 2] [Tab 3] ...          (hanya jika punya tab) B │
├────────────────────────────────────────────────────────────────┤
│  [Combobox 1 ▼] [Combobox 2 ▼] ...   (hanya jika ada)      C │
├────────────────────────────────────────────────────────────────┤
│  [● Semua] [○ Aktif] [○ Nonaktif]     (selalu ada)          D │
├────────────────────────────────────────────────────────────────┤
│  [Search ____] [per_page]                        [pagination]  │
│  ┌────┬────────────────┬──────────┬───────┬────────────────┐  │
│  │ #  │ Kolom Data ... │ ...      │ Stts  │ Aksi           │  │
│  └────┴────────────────┴──────────┴───────┴────────────────┘  │
└────────────────────────────────────────────────────────────────┘
```

### Aturan Tetap

| Zona | Aturan |
|---|---|
| **A** Header | `flex items-center justify-between` — selalu sama |
| **B** Tab | Langsung setelah header, **sebelum semua filter** |
| **C** Combobox | `flex flex-wrap gap-2` — hanya jika ada. **Selalu di atas badge** |
| **D** Badge Status | `flex flex-wrap gap-2` — **selalu ada** di setiap halaman yang punya `is_active`. is_active **tidak boleh pakai combobox** |

---

## 🔧 Halaman yang Perlu Diperbaiki

| Halaman | Masalah | Perbaikan |
|---|---|---|
| **SampleType** | Tab ada di bawah filter | Pindah `<SampleTypeTabs />` ke atas, sebelum badge dan combobox |
| **Regulation** | is_active pakai Combobox | Ganti ke badge pill `rounded-full` yang sama dengan halaman lain |
| **Parameter** | Badge ada di atas combobox | Tukar urutan: combobox dulu, baru badge |
| **QualityStandard** | Tidak ada filter is_active | Tambahkan badge pill Semua/Aktif/Nonaktif |
| **QualityStandardApproval** | Tidak ada filter is_active | Tambahkan badge pill Semua/Aktif/Nonaktif |
