Plan Özeti
Ne yapılacak? Neden gerekli?
🎯 Hedef
Muzibu'daki 11 entity için yeniden kullanılabilir, tutarlı component'ler oluşturmak. Her entity'nin tasarımı ve sağ tıklama (context menu) davranışı kodlanacak.
Entity
Component
Universal Context Menu
Entity Listesi (11 adet)
Component Kategorileri
Entity Component Matrix
Her entity için yapılması gereken component'ler
Song (Şarkı)
En fazla varyasyon - 5 farklı component
song-row
Liste görünümü - Album/Playlist detail
song-card
Grid card - Favorites, Homepage
song-queue-item
Queue overlay item - Drag & drop
song-sidebar-item
Sağ sidebar preview track
song-detail
Tek şarkı detay sayfası (optional)
Context Menu Actions
Album (Albüm)
Grid card + Detail hero
album-card
Universal card - Grid/Homepage/Favorites
album-hero
Detail page header
Context Menu Actions
Artist (Şarkıcı)
Circular photo pattern
artist-card
Grid card - Circular photo
artist-hero
Detail page header
Context Menu Actions
Playlist
3 varyasyon - Quick access, Grid, Hero
playlist-quick-card
Homepage 2x4 quick access
playlist-card
Grid card
playlist-hero
Detail page
Context Menu Actions
Genre / Sector / Radio
Benzer pattern - Her biri için 2 component
Genre (Tür)
Gradient bg + emoji overlay
Detail page header
Sector (Sektör)
Icon + gradient bg
Detail page header
Radio
EKSİK!Grid card ✅
Detail page YOK - YAPILMALI!
Özel Component'ler
Favorites, Queue, Search gibi özel durumlar
favorites-grid
Tab-based favorites page
search-results
Search results page
recent-played
Recently played section (optional)
empty-state
Universal empty state
Modals & Overlays
Popup ve overlay component'leri
Modals (6 adet)
rating-modal
Şarkı puanlama - 1-5 yıldız
playlist-select-modal
"Add to playlist" action
create-playlist-modal
Yeni playlist oluştur
device-limit-modal
Cihaz limiti uyarısı
device-selection-modal
Cihaz seçimi
auth-modal
Login/Register popup
Overlays (4 adet)
queue-overlay
Sağdan açılır çalma sırası
- • Now playing section
- • Queue list (drag & drop)
- • Clear queue button
lyrics-overlay
Şarkı sözleri görünümü
keyboard-shortcuts-overlay
Klavye kısayolları rehberi
loading-overlay
Full-screen loading indicator
Context Menu (Sağ Tıklama)
Universal component - Entity type'a göre dinamik action'lar
Nasıl Çalışır?
Tetikleme
Alpine.js Store
$store.contextMenu.openContextMenu(
$event,
'song', // type
{ id: 123, title: '...' }
)
Entity Type → Action Mapping
| Entity Type | Actions |
|---|---|
| song | Play Next • Add to Queue • Add to Playlist • Go to Album • Go to Artist • Favorite • Share • Rate |
| album | Play • Go to Artist • Favorite • Share |
| artist | Play All • Favorite • Share |
| playlist | Play • Edit (if mine) • Favorite • Share |
| genre | Play Genre • View Genre Page |
| sector | View Sector Page |
| radio | Play Radio • View Radio Page |
Component Kullanımı
// Her card/row component'inde:
<div
@contextmenu.prevent="$store.contextMenu.openContextMenu($event, 'song', song)"
@touchstart="handleTouchStart"
@touchend="handleTouchEnd"
@touchmove="handleTouchMove"
>
{{ $song->title }}
</div>
Öncelik Matrisi
Hangi component önce yapılmalı?
FAZ 1: KRİTİK En çok kullanılan - Önce bunlar
Core Song Components (5)
- song-row
- song-card
- song-queue-item
- song-sidebar-item
- context-menu (song actions)
Album & Playlist (4)
- album-card
- album-hero
- playlist-card
- playlist-hero
FAZ 2: ÖNEMLİ Ana entity'ler
Artist (2)
- • artist-card
- • artist-hero
Genre (2)
- • genre-card
- • genre-hero
Sector (2)
- • sector-card
- • sector-hero
FAZ 3: EK ÖZELLIKLER Modals, overlays, eksik sayfalar
Radio (2)
- • radio-card
- • radio-hero (ŞU AN YOK!)
Modals (3)
- • rating-modal
- • playlist-select-modal
- • create-playlist-modal
Overlays (2)
- • queue-overlay
- • lyrics-overlay
Favorites (1)
- • favorites-grid
Toplam Süre Tahmini
Toplam Component
Entity
Context Menu
Modals + Overlays
Kodlama Checklist
Tüm component'lerin listesi - İşaretleyerek takip edin
Song Components (5)
Album Components (2)
Artist Components (2)
Playlist Components (3)
Genre / Sector / Radio (6)
Modals & Overlays (10)
Özet & Next Steps
Bu planı onayladıktan sonra yapılacaklar
Entity Type
Component
Gün (Tahmini)
🎯 Hemen Başlanabilir
Git branch oluştur: git checkout -b feature/muzibu-components
Component klasörü oluştur: resources/views/components/muzibu/
İlk component: song-row.blade.php (En çok kullanılan)
Test sayfası: albums/show.blade.php track list'inde dene
Önemli Notlar
- Radio Detail Page şu an yok - radio-hero component ile birlikte oluşturulmalı!
- Context Menu universal component - tüm entity'lerde aynı component kullanılacak, sadece action'lar değişecek
- Song component'leri öncelik - En fazla kullanılan ve en çok varyasyona sahip
- Modals & Overlays Faz 3'te - Core component'ler tamamlandıktan sonra