Neo-Brutalism Design System LabaBersih v2 — Phase 0 Mockup | Bruddle UI Kit + Emerald #00674F + Orange #FF965B

Neo-Brutalism signature: Border 1px solid black, hard offset shadow (no blur), radius 1px (blocky), ExtraBold 800 headings, Bold 700 buttons. Hover = shadow appears. Active = shadow gone + translate.

1. Color Palette

Primary & Accent

Primary
#00674F
Primary Hover
#005742
Accent (Oren)
#FF965B
Accent Hover
#E8834A

Semantic

Success
#98E9AB
Warning
#FAE8A4
Error
#E99898
Muted
#5F646D

Surfaces

Page Background
#FAF4F0
Card / Surface
#FFFFFF
Dark Surface
#161616
Black
#000000

Platform Colors

TikTok
#000000
Shopee
#ee4d2d
Mengantar
#1B2A4A
ScaleV
#0EA5E9

Financial

Profit
#00674F
Loss
#c0392b

CSS Variables

:root {
  --primary: #00674F;      --primary-hover: #005742;
  --accent: #FF965B;       --accent-hover: #E8834A;
  --success: #98E9AB;      --warning: #FAE8A4;
  --error: #E99898;        --muted: #5F646D;
  --surface: #FAF4F0;      --surface-card: #FFFFFF;
  --surface-dark: #161616; --black: #000000;
  --shadow-sm: 4px 4px 0px 0px var(--black);
  --shadow-md: 6px 6px 0px 0px var(--black);
  --shadow-lg: 8px 8px 0px 0px var(--black);
  --border: 1px solid var(--black);
  --radius: 1px;
}

2. Typography

Font utama: Roboto Flex (Google Fonts) — variable font. Mono: Roboto Mono untuk ID, SKU, kode akun, angka keuangan.

Heading Scale
H1 Heading
48px / ExtraBold 800 / LH 56px
H2 Heading
36px / ExtraBold 800 / LH 46px
H3 Heading
30px / ExtraBold 800 / LH 38px
H4 Heading
24px / ExtraBold 800 / LH 32px
H5 Heading
20px / ExtraBold 800 / LH 28px
H6 Heading
18px / ExtraBold 800 / LH 24px
Body & UI Text

16px

Bold 700
Medium 500
Regular 400

14px

Bold 700
Medium 500
Regular 400

12px

Bold 700
Medium 500
Regular 400
Monospace (Roboto Mono)
PS2603-00042 — Order ID
JE2603-00042 — Journal ID
Rp 1.250.000 — Currency
11-100 — Account Code

3. Shadows & Borders

Neo-brutalism signature: hard offset shadow (zero blur), 1px solid black, 1px radius.

Shadow Scale
shadow-sm
4px
shadow-md
6px
shadow-lg
8px
Primary
Accent
PropertyValueUsage
--shadow-sm4px 4px 0 0 #000Cards, buttons, inputs on hover
--shadow-md6px 6px 0 0 #000Dropdowns, elevated surfaces
--shadow-lg8px 8px 0 0 #000Modals
--border1px solid #000Semua komponen
--radius1pxNear-zero, blocky feel

4. Spacing & Layout

TokenValueUsage
4px0.25remTight gaps (badge padding, icon margin)
8px0.5remSmall gaps (between badges, form helper)
12px0.75remStandard gap (stats grid, card grid)
16px1remCard padding inner, section sub-gap
20px1.25remCard body padding, table cell padding
24px1.5remSection gap, main content padding
32px2remPage-level content gutter
48px3remBetween major sections

Z-Index Scale

LayerZ-IndexElement
Content0Normal flow
Sticky header10Top bar
Dropdown20Select, combobox, date picker
Sidebar40Navigation sidebar
Modal overlay50Backdrop
Modal60Dialog content

App Shell Wireframe

Sidebar (260px)
bg: #000000
Top Bar (sticky, z-10)
Main Content — padding: 24px 32px — bg: #FAF4F0

5. Buttons

Medium (16px)

Small (12px)

States

Placement Rules

2 Buttons: Cancel LEFT, Primary RIGHT
3 Buttons: Danger FAR LEFT, Cancel + Primary RIGHT

6. Badges

Order Status

Selesai Dikirim Dikemas Dibuat RTS Dibatalkan

Platform

TikTok Shopee Mengantar ScaleV POS

Payment & Journal

Lunas Belum Bayar Posted Draft Voided

Count Badges

28 14 5 3

7. Stats Cards

Variant 1: Value + Change

Total Pesanan
4.643
trending_up +12,5%
Revenue
Rp 715jt
trending_up +8,2%
RTS
47
trending_down -3,1%
Laba Bersih
Rp 130jt
trending_up +18,2%

Variant 2: With Progress Bar

Target Revenue
Rp 715jt
Tercapai
Rp 285jt
Sisa
Fulfillment
285
Dikirim
37
Pending
RTS Rate
5%
Rate
< 5%
Target
Rekonsiliasi
1.850
Selesai
2.200
Pending

8. Segmented Control

Individual items, BUKAN dalam container — Bruddle exact. Active = black fill.

Semua 4.643
Dikemas 37
Dikirim 285
Selesai 4.112
RTS 47

9. Cards

Default Card

Revenue Bulan Ini
Rp 715.000.000
trending_up +12,5%
RTS Bulan Ini
47 paket
Kerugian: Rp 5.640.000

Collapsible Card

Detail Fee Estimasi expand_more
Admin Platform 3%Rp 6.000
Komisi Dinamis 5%Rp 10.000
Total FeeRp 16.000

10. Form Inputs

Text Input

Nama Pelanggan
Nomor Pesanan

Currency Input (Rp prefix)

Harga Modal *
Rp

Select

Platform

Error & Success States

Error State
Nomor pesanan tidak valid
Success State
Format valid

Checkbox, Radio, Toggle

Checkbox

check
Generate jurnal otomatis
Skip stok deduction

Radio

Cash (Tunai)
Utang

Toggle

Auto-post jurnal
Mode gelap

11. SearchableCombobox

Wajib untuk daftar > 7 items dari database.

Pilih Akun
12-201 Piutang TikTok Bestari
12-202 Piutang Shopee Store A
12-400 Piutang Klaim Kurir

12. DateRangeFilter

date_range1 Mar 2026 — 31 Mar 2026
Hari Ini 7 Hari 30 Hari Bulan Ini

13. Table / Unified Surface

CSS Grid, BUKAN <table>. Order list: 7 kolom.

ID PesananPelangganPlatformStatusJurnalBayarRevenue
PS2603-00042
TK-583... · 30 Mar · JX77...
Budi Santoso
TikTok
Selesai
Lunas
Rp 200.000
PS2603-00041
SP-291... · 29 Mar · JN88...
Siti Aisyah
Shopee
Dikirim
Belum
Rp 450.000
PS2603-00040
MG-102... · 28 Mar
Ahmad Ridho
Mengantar
Dikemas
Belum
Rp 89.000
PS2603-00039
TK-771... · 27 Mar · SCP...
Dewi Lestari
TikTok
RTS
Belum
-Rp 150.000

15. Empty & Loading States

Empty State
shopping_cart
Belum ada pesanan
Buat pesanan pertama atau upload file XLSX.
Loading State
Memuat data pesanan...

16. Error States

Error Boundary
error_outline
Terjadi kesalahan
Gagal memuat data. Silakan coba lagi.
404 Not Found
search_off
Data tidak ditemukan
Pesanan PS2603-99999 tidak ada di sistem.

17. Offline Banner

cloud_offKoneksi terputus. Mencoba menghubungkan kembali...
syncMenyinkronkan data... 3 perubahan tertunda.

18. Progress Bars

High (83%)83%
Medium (52%)52%
Low (23%)23%
Primary (67%)67%

19. Save Indicator

Menyimpan...
Tersimpan
Gagal menyimpan

20. Tooltip

Klik untuk lihat detail jurnal
JE2603-00042

22. Top Bar

Pesanan

23. Mobile Bottom Nav

dashboardHome
shopping_cartPesanan
local_shippingKirim
assessmentLaporan
settingsLainnya

24. Transaction List

Transaksi Terbaru
receipt_long
Penjualan TikTok Bestari
JE2603-00042 · Penjualan
+Rp 184.000
30 Mar, 14:05
inventory
HPP Order PS2603-00042
JE2603-00043 · HPP
-Rp 45.000
30 Mar, 14:05
account_balance
Settlement Shopee Mar W4
JE2603-00044 · Rekonsiliasi
+Rp 2.450.000
29 Mar, 10:00
undo
RTS Reverse — PS2603-00038
JE2603-00045 · RTS
-Rp 150.000
28 Mar, 16:30

25. Page Patterns

List Page

Pesanan
Total
4.643
Dikemas
37
Dikirim
285
Selesai
4.112
Semua
Dikemas
Dikirim
Selesai
[Filter Bar + Data Table]

Detail Page

arrow_backPS2603-00042Selesai
Info Pesanan
[nomor platform, customer, phone, toko]
Status & Keuangan
[status, payment, total, resi, kurir]
[Items Table + Fee + Jurnal + Audit Trail]

Form Page (Sticky Footer)

Buat Pesanan
[Form Fields]

26. Laporan Keuangan

P&L report tree. Group header collapsible. Total row bold + border-top 2px.

Laba Rugi
AkunJumlah%
PendapatanRp 715.000.000100%
40-101 Pendapatan TikTok BestariRp 450.000.00062,9%
40-102 Pendapatan Shopee Store ARp 180.000.00025,2%
40-103 Pendapatan MengantarRp 85.000.00011,9%
41-100 Retur Penjualan-Rp 12.500.000-1,7%
Harga Pokok Penjualan-Rp 385.000.000-53,8%
50-100 HPP-Rp 385.000.000-53,8%
Beban Operasional-Rp 187.500.000-26,2%
61-101 Biaya Admin PlatformRp 42.900.0006,0%
61-102 Biaya Komisi DinamisRp 71.500.00010,0%
63-200 Beban Ongkir ReturRp 4.700.0000,7%
LABA BERSIHRp 130.000.00018,2%

27. Bagan Akun (COA)

ASET (12 akun)Rp 49.847.720
11-000KAS & BANKRp 15.584.000
11-100KasRp 15.400.000Edit
11-311Saldo TikTok BestariRp 184.000Edit
12-000PIUTANGRp 21.763.720
12-201Piutang TikTok Bestari-Rp 54.280Edit
12-400Piutang Klaim KurirEdit
13-000PERSEDIAANRp 12.500.000
13-100Persediaan Barang DagangRp 12.500.000Edit

28. Buku Besar

TanggalReferensiDeskripsiDebitCreditSaldo
Saldo AwalRp 0
15 MarJE2603-042Penjualan TikTok Bestari184.000184.000
18 MarJE2603-055Penjualan TikTok Bestari256.000440.000
25 MarJE2603-088Settlement TikTok W4440.000Rp 0
Total440.000440.000Rp 0

29. Rekonsiliasi

Summary Cards

Gross
Rp 200.000
Piutang Estimasi
Rp 184.000
Settlement Aktual
Rp 182.500
Selisih
-Rp 1.500

Fee Breakdown

FeeEstimasiAktualSelisihStatus
Admin Platform6.0006.500-500Selisih
Komisi Dinamis10.00010.0000Cocok
Proses PesananFee baru
1.000-1.000Unknown
Total Fee16.00017.500-1.500

30. Format Angka

KonteksFormatRendered
NormalRp + titik ribuanRp 1.250.000
Negatif-Rp + merah-Rp 500.000
Nol— (em dash)
Positif (sign)+Rp + hijau+Rp 150.000
ShortRp 1,2jtRp 45,8jt
Persentase12,5%18,2%
Delta ++12,5% hijau+12,5%
Delta --8,7% merah-8,7%
Rule: SEMUA angka keuangan pakai Roboto Mono + tabular-nums + text-align: right. Negatif = merah. Nol = em dash abu.

31. Status Mapping

StatusVariantRendered
DibuatOutlineDibuat
DikemasInfo (#DFE3EA)Dikemas
DikirimWarningDikirim
SelesaiSuccessSelesai
RTSErrorRTS
DibatalkanErrorDibatalkan
LunasSuccessLunas
Belum BayarErrorBelum Bayar
PostedPrimaryPosted
DraftDarkDraft
VoidedAccentVoided

Platform Badges

PlatformBGTextRendered
TikTok#000#FFFTikTok
Shopee#ee4d2d#FFFShopee
Mengantar#1B2A4A#FFFMengantar
ScaleV#0EA5E9#FFFScaleV
POSTransparent#000POS

32. Icon Reference

Library: Material Icons (Google Fonts). Size: 18px nav, 14-16px buttons.

Navigation
dashboarddashboard
shopping_cartshopping_cart
local_shippinglocal_shipping
qr_code_scannerqr_code_scanner
undoundo
inventory_2inventory_2
warehousewarehouse
bookbook
account_treeaccount_tree
assessmentassessment
balancebalance
settingssettings
Actions
addadd
editedit
deletedelete
searchsearch
filter_listfilter_list
downloaddownload
uploadupload
refreshrefresh
closeclose
L
LabaBersih
Light Background
L
LabaBersih
Dark Background

34. Interaction States

StateVisual ChangeTransition
DefaultNo shadow, border visible
HoverShadow appears (shadow-sm)0.15s
ActiveShadow gone + translate(2px,2px)0.1s
FocusBorder = primary + box-shadow: 0 0 0 1px0.15s
Disabledopacity: 0.4 + not-allowedNone
ErrorBorder = error + box-shadow: 0 0 0 1px0.15s
Interactive Demo
Hover me
Disabled
Focused
Error

35. Responsive

BreakpointWidthLayout
Mobile< 640pxBottom nav, 1 kolom stats, sidebar hidden
Tablet640 – 900pxBottom nav, 2 kolom stats, sidebar hidden
Desktop> 900pxSidebar visible, 4 kolom stats, full table
Pattern: Desktop = sidebar 260px + content. Mobile = bottom nav 5 tab + full-width content. Table overflow = horizontal scroll.

36. Lokalisasi

PropertyValueContoh
BahasaIndonesia 100%Pesanan, Pelanggan, Jurnal
Localeid-ID
CurrencyRp + titik ribuanRp 1.250.000
DateDD MMM YYYY25 Mar 2026
TimezoneWIB (+07:00)14:05 WIB
DecimalKoma (,)12,5%
ThousandTitik (.)1.250.000

37. Aksesibilitas

RuleDetail
aria-labelWajib pada SEMUA icon-only button
role="alert"Pada error messages
Focus trapDi modal — Tab tidak bisa keluar
Focus visibleRing primary pada focus (keyboard)
KeyboardTab = navigate, Enter = activate, Escape = close
Touch targetMinimum 44x44px untuk mobile
ContrastMin 4.5:1 text, 3:1 large text
Neo-brutalism advantage: 1px solid black border + hard shadows = kontras tinggi secara alami. Badge text selalu hitam (#000) di atas warna semantic untuk memenuhi ratio 4.5:1.

38. Rules (Do / Don't)

Do
  • 1px solid black border pada SEMUA komponen
  • Hard offset shadow (4/6/8px, zero blur)
  • Radius 1px — blocky
  • Heading weight 800, button weight 700
  • Hover = shadow muncul (0.15s)
  • Active = shadow hilang + translate(2px,2px)
  • Money: Roboto Mono, tabular-nums, right-align
  • Negatif = merah (#c0392b)
  • Nol = em dash abu-abu
  • Primary kanan, Cancel kiri, Danger FAR LEFT
  • 4 kolom stats (SELALU 4)
  • CSS Grid untuk tabel
  • Bahasa Indonesia 100%
Don't
  • Rounded corners (> 2px radius)
  • Soft/blur shadows
  • Gradient backgrounds
  • Thin heading weights (< 700)
  • Rounded-full badges (pill shape)
  • Colors di luar token
  • Emoji di production UI
  • HTML <table> untuk data
  • Zebra striping
  • 3 kolom stats
  • Icon button tanpa aria-label
  • Primary di kiri
  • Left-align angka keuangan

Neo-Brutalism vs Minimal

PropertyNeo-Brutalism (baru)Minimal (sebelumnya)
Border1px solid #0001px solid gray-100
ShadowHard offset, no blurshadow-sm (soft blur)
Radius1px (blocky)12px/8px
Heading weight800 ExtraBold600 Semibold
Badge shape2px radius999px pill
HoverShadow + translateBackground change
AccentOrange #FF965BNone (green only)
Page bg#FAF4F0 (warm beige)#F5F5F5 (cool gray)
FontRoboto FlexGeist Sans
StatsIndividual cards + gapConnected row + divide-x
LabaBersih v2Neo-Brutalism Design System — Phase 0 Mockup
Bruddle UI Kit · Emerald #00674F + Orange #FF965B · Roboto Flex