🎨 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-primarybg-secondarytext-foregroundtext-foreground-secondaryPalet per Tema
Setiap tema memiliki latar dan warna aksen tersendiri. Ganti tema dari ikon di header.
light #f8fafc #1e293bdark #0f172a #f1f5f9forest #016A70 #FFFhalloween #1a1a2e #ff6b35fall #92400e #FFFpinky #be185d #fdf2f8violet #7c3aed #faf5ffpastel #ffa4a4 #1a202cneon #000000 #ffff00Palet Utilitas
Skala warna utilitas dari Tailwind yang dipakai untuk status (info, sukses, peringatan, error).
bluegreenorangeredpurplegrayTipografi
Skala ukuran teks standar serta font Arab khusus untuk ayat Al-Qur'an.
.font-arabic — lpmq fontBadge
Penanda status berukuran kecil. Mendukung matriks varian × warna yang sama dengan tombol.
Varian × Warna
| primary | secondary | info | success | warning | danger | |
|---|---|---|---|---|---|---|
| solid | New | Default | Info | Done | Hold | Fail |
| subtle | New | Default | Info | Done | Hold | Fail |
| outline | New | Default | Info | Done | Hold | Fail |
Ukuran
Dengan Ikon
<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.
Chip interaktif — pakai sebagai filter.
Aktif: neutral
Varian bentuk
<Chip color="neutral | blue | green | orange | red | purple"
size="sm | md"
shape="pill | rounded"
active
onClick={fn}>label</Chip>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
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)
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–06morning 06–12noon 12–15afternoon 15–18sunset 18–20night 20–04import PrayerTimeIllustration from '$lib/illustrations/PrayerTimeIllustration.svelte';
<PrayerTimeIllustration hours={currentHour} class="..." />
// hours 0-23 → fajr | morning | noon | afternoon | sunset | nightIlustrasi error (SVG statis)
Dipakai di halaman error / status kosong. Lokasi: /images/illustrasion-error.svg.
<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
xssmmdlgxlGaleri Ikon
ArrowDownTrayArrowLeftArrowRightArrowUpTrayBookOpenBookmarkBookmarkSlashBookmarkSolidCalendarCheckCheckCircleCheckCircleSolidChevronDownChevronRightChevronUpCodeCopyDocumentTextExclamationTriangleEyeFireGalleryGoogleHashtagHeartHeartSolidHomeInformationCircleLinkMarkerNewspaperPausePlayPresentationChartReactangleStackResetSearchSettingShareShieldCheckSignOutSpeakerWaveSpeakerXMarkSwatchXMark<BookmarkIcon size="xs | sm | md | lg | xl" />Bottom Sheet Demo
Sheet ini muncul dari bawah. Dipakai di seluruh aplikasi untuk dialog berbagi, detail tafsir, dan aksi kontekstual lainnya.