Skip to content

feat(ui): dark mode toggle, mobile UX fixes, and DB perf (reopen of #37)#40

Open
tammami wants to merge 2 commits into
assai-id:mainfrom
tammami:new-ui-design
Open

feat(ui): dark mode toggle, mobile UX fixes, and DB perf (reopen of #37)#40
tammami wants to merge 2 commits into
assai-id:mainfrom
tammami:new-ui-design

Conversation

@tammami
Copy link
Copy Markdown

@tammami tammami commented May 15, 2026

@jokopriyono conflict sudah diresolve. Karena branch main sudah di migrasi dari JSX ke TSX, saya juga mengadopsi arsitektur TSX dari branch main kemudian memporting apa yang sudah saya propose sebelumnya yaitu redesign UI (appbar, dark mode, casefile route, methods overlay, dst) ke komponen TSX serta optimasi pada pencarian data.
Untuk typecheck + build sudah pass.

Detail di commit f80945c.

Button reopen tidak tersedia di sisi saya.

tammami added 2 commits May 10, 2026 02:20
- Add light/dark theme toggle dengan palette navy yang mirror live
  site (nemesis.assai.id). Carto Positron <-> Dark-Matter basemap
  ikut beralih. State persist via localStorage + respect
  prefers-color-scheme.
- Mobile: legend default tertutup biar peta tidak ketutup, owner-type
  filter chips kembali muncul di sidebar header, "Tentang metode"
  rata kiri di appbar yang wrap, "Sorotan" jadi <details>
  collapsible (expanded di desktop).
- Hapus KPI "Liputan" yang redundant dengan sublabel "Paket Teraudit".
- Pencarian: hilangkan splash "Mengambil paket dari backend audit"
  saat refine filter -- pakai is-searching indicator + silent fetch
  sehingga tabel lama tetap tampil. Debounce sidebar search 180ms
  (modal search sudah 300ms).
- Backend perf: SQLite mmap_size=2G, cache_size=128MiB,
  temp_store=MEMORY, dan covering index idx_packages_filter
  (id, severity, owner_type, is_priority). Filter di Jakarta Pusat
  (~72k paket) turun dari 4.85s -> 0.25s pada cold cache.
- Tabel detail wilayah: lebar kolom Pagu dinaikkan + overflow
  ellipsis supaya angka panjang tidak nyebrang ke kolom Severity.
main melakukan migrasi besar JSX/JS ke TSX (komponen, Zustand store,
hooks, types) tapi tetap pakai UI lama. Branch ini punya redesign UI
besar (appbar, dark mode, breadcrumb, casefile route, methods overlay)
di JSX lama. Merge otomatis akan kehilangan salah satu sisi—PR ini
mengadopsi struktur TSX dari main dan memport ulang seluruh fitur UI
baru ke TSX agar dua arah kerjaan tetap hidup.

Komponen baru:
- Header (appbar 3 baris), MethodsOverlay, AiDisclosureModal
- Breadcrumb, CaseFileHero (Sorotan), CaseFileSummary (Ringkasan)
- AreaCard/OwnerCard restruktur ke grid 4-row dengan Pagu Teraudit

Store + routing:
- theme state (localStorage persist, AuditMap.setTheme integration)
- casefile path routing (/wilayah, /provinsi, /owner) + popstate
- methods/disclosure open state, breadcrumb label, totalPages

Theming:
- Palette light & dark dirombak untuk kontras antar tier lebih tegas
- zeroColor dark dinaikkan supaya tidak menyatu dengan panel legenda
- Swatch legenda di-blend dengan basemap supaya match visual map

UI polish:
- Sidebar header grid layout (mobile tabs di baris sendiri, filter
  pemilik di atas, sort & search full-width)
- Desktop saat map-hidden: sort + filter pemilik space-between satu baris
- Modal-filters phone: search full-width, dua select 50/50 baris bawah
- PackageTable: copy-id, row click ke inaproc, keyboard handler
- Pagination: jump-to-page + page-size selector (25/50/100/250)
- Keyboard shortcuts: ArrowLeft/Right paging, Escape navigate home
- Theme re-render guard di MapView (skip fitBounds saat hanya warna)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant