Baca-Quran.id

🎨 Sistem Desain

Referensi hidup untuk komponen UI yang dipakai bersama di seluruh aplikasi. Setiap bagian menampilkan tampilan komponen, ragam variannya, dan petunjuk pemakaiannya.

Warna & Token

Token warna inti yang dipakai untuk latar, teks, dan pembatas di seluruh tema.

Token Semantik

bg-primary
bg-secondary
Aa
text-foreground
Aa
text-foreground-secondary

Palet per Tema

Setiap tema memiliki latar dan warna aksen tersendiri. Ganti tema dari ikon di header.

light
bg
fg
#f8fafc #1e293b
dark
bg
fg
#0f172a #f1f5f9
forest
bg
fg
#016A70 #FFF
halloween
bg
fg
#1a1a2e #ff6b35
fall
bg
fg
#92400e #FFF
pinky
bg
fg
#be185d #fdf2f8
violet
bg
fg
#7c3aed #faf5ff
pastel
bg
fg
#ffa4a4 #1a202c
neon
bg
fg
#000000 #ffff00

Palet Utilitas

Skala warna utilitas dari Tailwind yang dipakai untuk status (info, sukses, peringatan, error).

blue
green
orange
red
purple
gray

Tipografi

Skala ukuran teks standar serta font Arab khusus untuk ayat Al-Qur'an.

Heading 1 — text-3xl font-bold
Heading 2 — text-2xl font-bold
Heading 3 — text-xl font-bold
Body strong — text-md font-semibold
Body — text-sm
Caption — text-xs opacity-75
بِسْمِ ٱللَّهِ ٱلرَّحْمَٰنِ ٱلرَّحِيمِ
.font-arabic — lpmq font

Tombol

Matriks varian × warna. Pakai varian solid untuk aksi penting, subtle untuk aksi sekunder, outline untuk aksi paling rendah.

Varian × Warna

Setiap kombinasi varian dan warna dapat digunakan sesuai konteks aksi.

primarysecondaryinfosuccesswarningdanger
solid
subtle
outline

Ukuran

Dengan Ikon

Nonaktif

<Button variant="solid | subtle | outline"
        color="primary | secondary | info | success | warning | danger"
        size="sm | md | lg"
        disabled
        onClick={fn}>...</Button>

Tombol Ikon

Tombol bujur sangkar berukuran tetap untuk aksi cepat tanpa label. Wajib mengisi ariaLabel.

Ukuran

Varian & Warna

Sudut

Nonaktif

<IconButton variant="ghost | subtle | outline | solid"
            color="primary | secondary | info | success | warning | danger"
            size="xs | sm | md | lg"
            rounded="md | full"
            ariaLabel="…"
            onClick={fn}>
  <Icon size="sm" />
</IconButton>

Badge

Penanda status berukuran kecil. Mendukung matriks varian × warna yang sama dengan tombol.

Varian × Warna

primarysecondaryinfosuccesswarningdanger
solidNewDefaultInfoDoneHoldFail
subtleNewDefaultInfoDoneHoldFail
outlineNewDefaultInfoDoneHoldFail

Ukuran

sm md lg

Dengan Ikon

Terverifikasi 123 Beta
<Badge variant="solid | subtle | outline"
       color="primary | secondary | info | success | warning | danger"
       size="sm | md | lg">label</Badge>

Tab

Komponen tab dengan indikator geser. Cocok untuk selektor seimbang dengan 2–4 pilihan. Indikator bergerak mulus saat berganti tab.

2 pilihan

Dipilih: morning

3 pilihan

Dipilih: option-b

<Tabs
  options={[{ value: 'a', label: 'Option A' }, { value: 'b', label: 'Option B' }]}
  value={selected}
  onchange={(v) => (selected = v)}
/>

Chip / Pill

Pelabelan ringkas atau filter yang bisa dipilih. Mendukung varian warna dan keadaan aktif.

Neutral Blue Green Orange Red Purple
size=sm size=md

Chip interaktif — pakai sebagai filter.

Aktif: neutral

Varian bentuk

pill (default) rounded
pill sm rounded sm
<Chip color="neutral | blue | green | orange | red | purple"
      size="sm | md"
      shape="pill | rounded"
      active
      onClick={fn}>label</Chip>

Banner / Alert

Pesan inline untuk menyampaikan status atau peringatan. Berbeda dengan toast, banner menetap di tempat.

Informasi
Banner info dipakai untuk pesan netral atau panduan ringan.
Berhasil
Aksi berhasil dijalankan dan datamu sudah tersimpan.
Banner ini bisa ditutup. Klik tombol X di kanan untuk menutupnya.
<Banner type="info | success | warn | error" title="..." dismissible>body</Banner>

Kontrol Form

Input, textarea, checkbox, dan radio dengan label dan pesan kesalahan yang konsisten.

Input

Hanya disimpan di peramban kamu.

Format email tidak valid.

Ukuran

<Input label="..." size="sm | md | lg" bind:value error="..." hint="..." />

Textarea

Maksimal beberapa paragraf.

Ukuran

<Textarea label="..." size="sm | md | lg" rows={4} bind:value />

Checkbox

<Checkbox label="..." bind:checked />

Radio

Terpilih: id

<Radio name="..." value="..." label="..." bind:group />

Collapsible

Wadah yang bisa dibuka-tutup untuk menyembunyikan detail.

<Collapsible title="..." open>content</Collapsible>

Bottom Sheet

Panel yang muncul dari bawah untuk aksi atau detail kontekstual.

<BottomSheet show={open} title="..." onClose={fn}>content</BottomSheet>

Toast

Notifikasi singkat di pojok atas. Mendukung info, sukses, peringatan, dan error.

toast.show({ message: '...', type: 'info | success | warn | error' })

Kartu

Wadah konten dengan latar sekunder dan bayangan lembut.

Varian

filled

Latar sekunder, tanpa bayangan.

outline

Bordir tipis, latar primer.

elevated

Latar sekunder dengan bayangan.

Dengan Header & Footer

Surat Favorit

Sematkan surat agar mudah diakses dari halaman utama.

Pelajari lebih lanjut

Buka detail sistem desain

Kartu yang bisa diklik — render sebagai anchor.

Padding

padding=none
padding=sm
padding=md
padding=lg

Komponen lama

CardShadow masih dipakai di banyak halaman dan kompatibel dengan tata letak yang ada.

CardShadow

Wadah konten generik dengan latar sekunder dan bayangan.

CardShadow (link)

Render sebagai anchor dengan tampilan yang sama.

<Card variant="filled | outline | elevated" padding="none | sm | md | lg" title="..." subtitle="...">
  body
  {#snippet header()}...{/snippet}
  {#snippet footer()}...{/snippet}
</Card>

Kartu Gradien

Kartu dengan latar gradien bawaan dan dekorasi sudut. Mendukung 10 preset warna, mode interaktif (button/link), dan pemilihan gradien berbasis indeks.

Preset Gradien

emerald

blue

violet

rose

amber

cyan

lime

fuchsia

sky

pink

Interaktif (button / link)

link

hover / active

rounded=lg

rounded=3xl

Tanpa dekorasi lingkaran

amber

cyan

lime

fuchsia

Pemilihan berbasis indeks — berguna untuk daftar

0

1

2

3

4

5

6

7

8

9

Patterns

Overlay a repeating pattern on any gradient. Choose from dots, grid, diagonal, or triangles.

dots

pattern="dots"

grid

pattern="grid"

diagonal

pattern="diagonal"

triangles

pattern="triangles"

circles

pattern="circles"

dots

emerald

grid

amber

diagonal

rose

triangles

sky

<GradientCard gradient="emerald">
  <!-- content -->
</GradientCard>

<!-- with pattern -->
<GradientCard gradient="violet" pattern="dots">
  ...
</GradientCard>

<!-- interactive -->
<GradientCard gradient="blue" as="button" onClick={fn}>
  ...
</GradientCard>

<!-- index-based (cycles through 10 presets) -->
<GradientCard gradient={index}>
  ...
</GradientCard>

<!-- props: gradient | pattern | decorative | padding | rounded | as | href | onClick | ariaLabel | class -->

Ilustrasi

Komponen ilustrasi SVG inline. Semua bersifat dekoratif (aria-hidden) dan menyesuaikan lebar kontainer dengan rasio aspek 16:9.

MorningBanner

Pemandangan matahari terbit. Dipakai di Dzikir Pagi dan Petang.

import MorningBanner from '$lib/illustrations/MorningBanner.svelte';

<MorningBanner class="..." />

EveningBanner

Pemandangan langit malam dengan bulan sabit dan lentera. Dipakai di Dzikir Pagi dan Petang.

import EveningBanner from '$lib/illustrations/EveningBanner.svelte';

<EveningBanner class="..." />

PrayerTimeIllustration

Ilustrasi waktu yang merender 6 langit berbeda berdasarkan prop hours (0–23). Dipakai di Jadwal Sholat.

fajr 04–06
morning 06–12
noon 12–15
afternoon 15–18
sunset 18–20
night 20–04
import PrayerTimeIllustration from '$lib/illustrations/PrayerTimeIllustration.svelte';

<PrayerTimeIllustration hours={currentHour} class="..." />
// hours 0-23 → fajr | morning | noon | afternoon | sunset | night

Ilustrasi error (SVG statis)

Dipakai di halaman error / status kosong. Lokasi: /images/illustrasion-error.svg.

Error illustration
<img src="/images/illustrasion-error.svg" alt="..." class="w-48 h-auto" />

Ikon

Kumpulan ikon SVG yang dipakai bersama. Semua ikon menerima prop ukuran.

Ukuran

xs
sm
md
lg
xl

Galeri Ikon

ArrowDownTray
ArrowLeft
ArrowRight
ArrowUpTray
BookOpen
Bookmark
BookmarkSlash
BookmarkSolid
Calendar
Check
CheckCircle
CheckCircleSolid
ChevronDown
ChevronRight
ChevronUp
Code
Copy
DocumentText
ExclamationTriangle
Eye
Fire
Gallery
Google
Hashtag
Heart
HeartSolid
Home
InformationCircle
Link
Marker
Newspaper
Pause
Play
PresentationChart
ReactangleStack
Reset
Search
Setting
Share
ShieldCheck
SignOut
SpeakerWave
SpeakerXMark
Swatch
XMark
<BookmarkIcon size="xs | sm | md | lg | xl" />