Ringkasan Komponen
Komponen UI salin-tempel dari registry Bosia — gaya shadcn, sepenuhnya milik Anda untuk dikustomisasi.
Bosia menyertakan registry komponen — kumpulan komponen UI Svelte 5 yang Anda instal langsung ke proyek Anda. Seperti shadcn/ui, komponen disalin ke dalam basis kode Anda, bukan diimpor dari sebuah paket. Anda memiliki kodenya dan bisa mengkustomisasinya dengan bebas.
Menginstal Komponen
bun x bosia@latest add <component...>Ini mengunduh file komponen ke src/lib/components/ui/<component>/ dan otomatis membuat src/lib/utils.ts (helper cn()) jika belum ada.
Berikan beberapa nama untuk menginstal beberapa komponen dalam satu panggilan:
bun x bosia@latest add button card inputNama Berbasis Path
Gunakan path untuk menginstal komponen di luar direktori ui/ default:
bun x bosia@latest add button # → src/lib/components/ui/button/
bun x bosia@latest add shop/cart # → src/lib/components/shop/cart/Komponen tanpa / default ke prefix ui/. Komponen dengan path diinstal ke path persis di bawah src/lib/components/.
Dependensi antar komponen diresolusi otomatis. Misalnya, bun x bosia@latest add data-table juga menginstal button, input, dan separator.
Mode Non-interaktif
Berikan -y (atau --yes) untuk mengonfirmasi otomatis prompt "ganti komponen yang ada?" — berguna untuk pipeline CI dan skrip shell:
bun x bosia@latest add -y button cardPengembangan Lokal
Gunakan --local untuk menginstal dari registry lokal (berguna saat mengembangkan Bosia itu sendiri):
bun x bosia@latest add button --localMemakai Komponen
Impor dari barrel export komponen:
<script lang="ts">
import { Button } from "$lib/components/ui/button";
</script>
<Button variant="outline" size="sm">Click me</Button>Komponen Tersedia
| Komponen | Deskripsi |
|---|
UI
| Komponen | Deskripsi |
|---|---|
| Avatar | Avatar gambar dengan fallback |
| Badge | Label status kecil |
| Button | Button aksesibel dengan varian dan ukuran |
| Card | Card komposabel dengan header, konten, footer |
| Chart | Grafik garis dan batang SVG dengan tooltip |
| Data Table | Tabel dengan sorting, filtering, paginasi |
| Dropdown Menu | Dropdown yang dikelola konteks |
| Icons | Panduan memakai @lucide/svelte |
| Input | Input teks bergaya dengan value yang bindable |
| Navbar | Navbar responsif dengan menu mobile dan toggle tema |
| Separator | Pembatas horizontal atau vertikal |
| Sidebar | Sidebar komposabel dengan mode ikon yang collapsible |
Kustomisasi
Semua komponen memakai cn() untuk penggabungan kelas, jadi Anda bisa memberikan prop class untuk menimpa atau memperluas style:
<Button class="w-full rounded-full">Full Width Rounded</Button>Komponen memakai token desain Tailwind CSS (bg-primary, text-muted-foreground, dll.) yang didefinisikan di app.css Anda. Sesuaikan tampilan dengan mengedit token tema Anda.
Utilitas `cn()`
Dibuat otomatis di src/lib/utils.ts pada bosia add pertama. Ia menggabungkan kelas Tailwind memakai penggabungan kelas bawaan + tailwind-merge:
import { cn } from "$lib/utils";
cn("px-4 py-2", condition && "bg-primary", className);
// → merges and deduplicates classes intelligently