Komponen UI

RD
Internal · Tim Development

Pustaka Komponen Tailwind CSS

Kumpulan komponen UI siap pakai untuk PortalKebumen.com — dibangun dengan Tailwind CSS v3.4 (compiled, tanpa CDN) dan konsisten dengan style guide brand (warna navy/oranye, font Fraunces + Public Sans). Setiap komponen dilengkapi contoh markup agar tim developer tinggal salin-tempel ke Blade/Livewire.

Warna & Tipografi

Token warna dan font dari tailwind.config.js.

brand-900
brand-700
brand-600
brand-500
brand-300
brand-100
accent-600
accent-500
accent-400
success
warning
danger
Fraunces
font-display — heading & judul artikel
Public Sans
font-sans — body text & UI
IBM Plex Mono
font-mono — angka, kode, label rubrik

Tombol (Button)

Class: .btn-primary, .btn-secondary, .btn-outline, .btn-danger, .btn-ghost

<button class="btn-primary">Simpan Artikel</button>
<button class="btn-secondary">Batal</button>
<button class="btn-outline btn-sm">Pratinjau</button>
<button class="btn-danger" disabled>Hapus</button>

Badge & Status Pill

Dipakai untuk status artikel, label rubrik, dan penanda kecil lainnya.

Draft Pending Review Published Rejected Terjadwal Advertorial
Pemerintahan Breaking News
<span class="badge-success"><span class="badge-dot"></span>Published</span>
<span class="rubric-tag is-accent">Breaking News</span>

Elemen Formulir

Class: .form-input, .form-select, .form-textarea, .form-checkbox, .form-radio

Maksimal 120 karakter.
Slug hanya boleh berisi huruf kecil, angka, dan tanda hubung.
Belum ada gambar dipilih
Rekomendasi 1200×675px
Izinkan notifikasi email saat dipublikasikan
<label class="form-label">Judul Artikel</label>
<input type="text" class="form-input" placeholder="...">

<label class="relative inline-flex items-center cursor-pointer">
  <input type="checkbox" class="toggle-input sr-only peer">
  <span class="toggle-track"></span>
</label>

Kartu (Card)

Class dasar: .card, .card-header, .card-body, .card-footer

Statistik Cepat

1.284
Total artikel terbit
Gambar Sampul 620×340
Olahraga

Rekap Liga Kebumen Musim 2025/2026

Bagus Prakoso · 2 Jul 2026

SA
Siti Amalia
Reporter

42 artikel diterbitkan bulan ini · rata-rata 1.150 views/artikel.

Tabel

Tabel data ringkas dengan status pill dan aksi baris. Bungkus dengan overflow-x-auto agar responsif di layar kecil.

Nama Role Status Aksi
Rian Dwi P. Editor Aktif
Bagus Prakoso Reporter Nonaktif

Alert / Banner

Class: .alert-info · .alert-success · .alert-warning · .alert-danger

Info: Artikel terjadwal akan tayang otomatis sesuai waktu yang diatur.
Berhasil: Artikel “Pemkab Resmikan Pasar Tumenggungan” telah dipublikasikan.
Perhatian: 2 iklan akan berakhir dalam waktu kurang dari 3 hari.
Gagal: Slug artikel sudah digunakan, silakan gunakan slug lain.

Tabs

Fungsional — klik label tab untuk berpindah panel.

Editor konten utama artikel — judul, ringkasan, dan isi (lihat komponen WYSIWYG di bawah).
<div data-tabs="editor-tabs">
  <button class="tab-btn is-active" data-tab-btn="konten">Konten</button>
  <button class="tab-btn" data-tab-btn="seo">SEO</button>
</div>
<div data-tab-panel="konten">...</div>
<div data-tab-panel="seo" class="hidden">...</div>

Accordion

Menggunakan elemen native <details> — fungsional tanpa JavaScript.

Bagaimana cara menjadwalkan artikel?
Buka editor artikel, atur status ke “Disetujui”, lalu isi kolom Tanggal & Waktu Tayang. Sistem akan otomatis mempublikasikan artikel pada waktu tersebut.
Siapa saja yang bisa menyetujui artikel?
Hanya role Editor dan Admin yang memiliki izin untuk menyetujui & menerbitkan artikel yang ditulis oleh Reporter.
Apakah slug bisa diubah setelah publish?
Bisa, namun sistem akan membuat redirect otomatis dari slug lama ke slug baru agar tautan lama tidak menghasilkan error 404.

Tooltip

Pure CSS (hover/focus) — class .tooltip-wrap + .tooltip-box.

Views dihitung dari kunjungan unik Pending Menunggu persetujuan editor

Pagination

Menampilkan 1–10 dari 1.284 artikel

Avatar

RD
SA
BP
AF
SA
BP
AF
+6

Progress Bar

Kelengkapan profil penulis72%
Kuota penyimpanan media88%
Target artikel bulan ini100%

Skeleton Loading

Placeholder animasi saat data sedang dimuat — pakai utility animate-pulse bawaan Tailwind.

Empty State

Belum ada artikel

Artikel yang kamu buat akan muncul di sini. Mulai dengan menulis artikel pertamamu.

WYSIWYG Editor

Menggunakan TinyMCE 8 (Community, self-hosted) — pustaka editor teks kaya paling lengkap yang tersedia gratis, dibundel langsung ke dalam berkas ini tanpa panggilan ke CDN eksternal saat dibuka, dan diterjemahkan penuh ke Bahasa Indonesia. Toolbar mencakup heading, font, ukuran, warna teks/latar, super/subscript, list, indent, arah teks, rata teks, kutipan, tabel, sisipan gambar & media, kode sumber, karakter khusus, emoji, pencarian & ganti, layar penuh, dan pratinjau.

Implementasi: initRichEditor('#demo-editor-komponen') — pembungkus tipis di atas tinymce.init({...}) dengan konfigurasi baku (lisensi GPL gratis, bahasa Indonesia, integrasi Media Picker). Untuk dipakai di form Tambah/Edit Artikel, ambil isi editor dengan tinymce.get(id).getContent() lalu kirim sebagai field content ke server — lihat implementasinya langsung di halaman Artikel.