# Admin Panel — Stories + Info Sections

## 1. Stories (Hikayeler)

Anasayfadaki kayan hikaye/tanıtım kartları. Instagram stories benzeri yapı.

### API Endpoints

| Method | Endpoint | Auth | Açıklama |
|--------|----------|------|----------|
| `GET` | `/v1/stories` | public | Aktif hikayeler (order_index sıralı) |
| `GET` | `/admin/stories` | sanctum | Tüm hikayeler |
| `POST` | `/admin/stories` | sanctum | Yeni hikaye oluştur |
| `GET` | `/admin/stories/{id}` | sanctum | Hikaye detayı |
| `PUT` | `/admin/stories/{id}` | sanctum | Hikaye güncelle |
| `DELETE` | `/admin/stories/{id}` | sanctum | Hikaye sil |

### Response Formatı

```json
{
  "data": [
    {
      "id": 1,
      "title": "25 Yılı Aşkın Deneyim",
      "badge": "Tanıtım",
      "content": "1998'den bu yana 15.000+ denizci yetiştirdik...",
      "image": "/storage/stories/hakkimizda.jpg",
      "cta_text": "Hakkımızda",
      "cta_url": "/kurumsal/hakkimizda",
      "order_index": 0,
      "is_active": true,
      "created_at": "...",
      "updated_at": "..."
    }
  ]
}
```

### Veri Modeli

| Alan | Tip | Açıklama |
|------|-----|----------|
| `title` | string (zorunlu) | Hikaye başlığı |
| `badge` | string (nullable) | Üst etiket: "Tanıtım", "Yeni Dönem", vb. |
| `content` | text (zorunlu) | Hikaye içeriği |
| `image` | string (nullable) | Görsel path (storage/stories/) |
| `cta_text` | string (nullable) | Buton metni: "Hakkımızda", "Detaylı Bilgi" |
| `cta_url` | string (nullable) | Buton linki: "/kurumsal/hakkimizda" |
| `order_index` | integer | Sıralama (0'dan başlar) |
| `is_active` | boolean | Aktif/pasif |

### Admin Panel Form

```
┌─────────────────────────────────────────────────┐
│ Hikaye Düzenle                                   │
├─────────────────────────────────────────────────┤
│ Başlık:     [25 Yılı Aşkın Deneyim          ]  │
│ Etiket:     [Tanıtım                         ]  │
│ İçerik:     ┌─────────────────────────────────┐ │
│             │ 1998'den bu yana 15.000+...      │ │
│             └─────────────────────────────────┘ │
│ Görsel:     [📷 Dosya Seç] hakkimizda.jpg      │
│ Buton:      [Hakkımızda    ] [/kurumsal/hak..]  │
│ Sıralama:   [0]                                  │
│ Aktif:      [✅ Toggle]                          │
│                                    [Kaydet]      │
└─────────────────────────────────────────────────┘
```

#### Form Alanları:
| Alan | Bileşen | Açıklama |
|------|---------|----------|
| title | TextInput | Zorunlu, max 255 |
| badge | TextInput | İsteğe bağlı, max 100 |
| content | Textarea | Zorunlu |
| image | FileUpload | storage/public/stories, preview göster |
| cta_text | TextInput | İsteğe bağlı, max 100 |
| cta_url | TextInput (url) | İsteğe bağlı, max 255 |
| order_index | NumberInput | Varsayılan 0 |
| is_active | Toggle | Varsayılan true |

#### Tablo Sütunları:
| Sütun | Açıklama |
|-------|----------|
| Görsel | Küçük thumbnail |
| Başlık | title |
| Etiket | badge (badge bileşeni) |
| Buton | cta_text (varsa göster) |
| Sıralama | order_index |
| Aktif | is_active (toggle/icon) |

---

## 2. Info Sections (Tanıtım Bölümleri)

Anasayfadaki 2 adet metin+görsel tanıtım bölümü. Settings tablosunda `info_sections` grubu altında saklanır.

### API Erişimi

Mevcut settings endpoint'inden gelir:

```
GET /api/v1/settings
GET /api/v1/settings/info_sections
```

### Response (settings/info_sections):

```json
{
  "info_section_1_badge": "Neden Boğaziçi Denizcilik?",
  "info_section_1_title": "Uluslararası Standartlarda Eğitim",
  "info_section_1_body": "Uzun açıklama metni...",
  "info_section_1_quote": "Denizcilik eğitiminde kalite...",
  "info_section_1_quote_author": "Kpt. Murat Aydın, Kurucu",
  "info_section_1_image": "/storage/uploads/info-1.jpg",
  "info_section_2_badge": "Simülatör Destekli Eğitim",
  "info_section_2_title": "Teoriden Pratiğe",
  "info_section_2_body": "Uzun açıklama metni...",
  "info_section_2_image": "/storage/uploads/info-2.jpg"
}
```

### Alanlar

**Bölüm 1 (6 alan):**
| Key | Type | Label |
|-----|------|-------|
| `info_section_1_badge` | text | Bölüm 1 — Etiket |
| `info_section_1_title` | text | Bölüm 1 — Başlık |
| `info_section_1_body` | textarea | Bölüm 1 — İçerik |
| `info_section_1_quote` | text | Bölüm 1 — Alıntı |
| `info_section_1_quote_author` | text | Bölüm 1 — Alıntı Yazarı |
| `info_section_1_image` | image | Bölüm 1 — Görsel |

**Bölüm 2 (4 alan):**
| Key | Type | Label |
|-----|------|-------|
| `info_section_2_badge` | text | Bölüm 2 — Etiket |
| `info_section_2_title` | text | Bölüm 2 — Başlık |
| `info_section_2_body` | textarea | Bölüm 2 — İçerik |
| `info_section_2_image` | image | Bölüm 2 — Görsel |

### Admin Panel — Ayarlar Sayfası

Mevcut Settings sayfasına yeni bir **"Tanıtım Bölümleri"** sekmesi ekle:

```
/admin/settings
├── ... (mevcut sekmeler)
└── Tanıtım Bölümleri → info_sections
    ├── Bölüm 1
    │   ├── Etiket:         [Neden Boğaziçi Denizcilik?]
    │   ├── Başlık:         [Uluslararası Standartlarda...]
    │   ├── İçerik:         [textarea — uzun metin]
    │   ├── Alıntı:         [Denizcilik eğitiminde kalite...]
    │   ├── Alıntı Yazarı:  [Kpt. Murat Aydın, Kurucu]
    │   └── Görsel:         [📷 FileUpload]
    └── Bölüm 2
        ├── Etiket:         [Simülatör Destekli Eğitim]
        ├── Başlık:         [Teoriden Pratiğe]
        ├── İçerik:         [textarea — uzun metin]
        └── Görsel:         [📷 FileUpload]
```

Kaydet: `PUT /admin/settings` ile dot notation:
```json
{
  "settings": {
    "info_sections.info_section_1_badge": "Neden Boğaziçi Denizcilik?",
    "info_sections.info_section_1_title": "Uluslararası Standartlarda Eğitim",
    "info_sections.info_section_1_body": "...",
    "info_sections.info_section_1_image": "/storage/uploads/info-1.jpg"
  }
}
```

---

## Frontend Kullanım Özeti

### Stories
```tsx
// Anasayfa
const { data: stories } = await fetch('/api/v1/stories');

{stories.map(story => (
  <StoryCard
    key={story.id}
    title={story.title}
    badge={story.badge}
    content={story.content}
    image={getImageUrl(story.image)}
    ctaText={story.cta_text}
    ctaUrl={story.cta_url}
  />
))}
```

### Info Sections
```tsx
// Settings'ten al
const settings = await fetch('/api/v1/settings');
const info1 = {
  badge: settings.info_sections?.info_section_1_badge,
  title: settings.info_sections?.info_section_1_title,
  body: settings.info_sections?.info_section_1_body,
  quote: settings.info_sections?.info_section_1_quote,
  quoteAuthor: settings.info_sections?.info_section_1_quote_author,
  image: settings.info_sections?.info_section_1_image,
};

// Bölüm 1 — görsel solda, metin sağda
<InfoSection {...info1} imagePosition="left" />

// Bölüm 2 — görsel sağda, metin solda (reverse)
<InfoSection {...info2} imagePosition="right" />
```
