# Hướng dẫn sắp xếp Documentation Sidebar

## 📋 Tổng quan

Sidebar navigation có 2 cấp độ sắp xếp:
1. **Categories** (Guides, Architecture, Skills, v.v.)
2. **Items** trong mỗi category (các file docs)

## 🎯 Cách sắp xếp

### 1. Sắp xếp Categories

Chỉnh sửa trong file: `apps/web-docs/src/lib/docs-generator.ts`

```typescript
const CATEGORY_CONFIG = {
    'guides': { order: 1, label: { en: 'Guides', vi: 'Hướng dẫn' } },
    'architecture': { order: 2, label: { en: 'Architecture', vi: 'Kiến trúc' } },
    'skills': { order: 3, label: { en: 'Skills', vi: 'Kỹ năng' } },
    // ...
};
```

**Cách thay đổi:**
- Thay đổi `order` để điều chỉnh vị trí (số nhỏ hơn = cao hơn)
- Thêm category mới với order tương ứng
- Categories không có trong config sẽ có `order: 999` (xuất hiện cuối)

### 2. Sắp xếp Items trong Category

Có 2 loại sắp xếp:

#### A. Custom Order (Ưu tiên)

Định nghĩa thứ tự cố định cho items quan trọng:

```typescript
const ITEM_ORDER = {
    'guides': [
        'getting-started',      // Xuất hiện đầu tiên
        'local-development',    // Thứ hai
        'deployment',           // Thứ ba
        // Các file khác sẽ được sắp xếp alphabetically
    ],
    'architecture': [
        'system-design',
        'service-communication',
    ],
    'skills': [
        'project-rules',
        'comment-code',
        'api-design',
    ],
};
```

**Lưu ý:**
- Dùng **filename** (không có extension `.md`)
- Chỉ liệt kê các file quan trọng cần ưu tiên
- Các file không có trong danh sách sẽ tự động sắp xếp alphabetically ở cuối

#### B. Alphabetical (Mặc định)

Items không được liệt kê trong `ITEM_ORDER` sẽ tự động sắp xếp theo alphabet (A-Z).

## 📝 Ví dụ thực tế

### Ví dụ 1: Thêm doc mới "Quick Start"

1. Tạo file: `docs/en/guides/quick-start.md`
2. Muốn nó xuất hiện đầu tiên? Thêm vào `ITEM_ORDER`:

```typescript
const ITEM_ORDER = {
    'guides': [
        'quick-start',          // ← Thêm dòng này
        'getting-started',
        'local-development',
        'deployment',
    ],
};
```

### Ví dụ 2: Thay đổi thứ tự categories

Muốn Skills xuất hiện trước Architecture:

```typescript
const CATEGORY_CONFIG = {
    'guides': { order: 1, ... },
    'skills': { order: 2, ... },      // ← Từ 3 → 2
    'architecture': { order: 3, ... }, // ← Từ 2 → 3
};
```

### Ví dụ 3: Category mới "Tutorials"

```typescript
const CATEGORY_CONFIG = {
    // ... existing categories
    'tutorials': { 
        order: 8, 
        label: { en: 'Tutorials', vi: 'Hướng dẫn chi tiết' } 
    },
};

const ITEM_ORDER = {
    // ... existing orders
    'tutorials': [
        'beginner-tutorial',
        'intermediate-tutorial',
        'advanced-tutorial',
    ],
};
```

## 🔄 Kết quả

```
Sidebar sẽ hiển thị:

📁 Guides (order: 1)
  └─ Getting Started (custom order 0)
  └─ Local Development (custom order 1)
  └─ Deployment (custom order 2)
  └─ Advanced Features (alphabetical)
  └─ Best Practices (alphabetical)

📁 Architecture (order: 2)
  └─ System Design (custom order 0)
  └─ Service Communication (custom order 1)
  └─ Database Design (alphabetical)

📁 Skills (order: 3)
  └─ Project Rules (custom order 0)
  └─ Comment Code (custom order 1)
  └─ API Design (custom order 2)
  └─ Testing Patterns (alphabetical)
```

## ⚡ Reload để xem thay đổi

Sau khi chỉnh sửa `docs-generator.ts`:
1. Lưu file
2. Refresh trang web (Ctrl/Cmd + R)
3. Navigation cache sẽ tự động rebuild

## 🎨 Tips

1. **Giữ custom order ngắn gọn**: Chỉ liệt kê 3-5 items quan trọng nhất
2. **Đặt tên file có ý nghĩa**: Alphabetical sorting sẽ hợp lý hơn
3. **Consistency**: Dùng cùng naming convention cho tất cả files
4. **Documentation**: Thêm comment giải thích tại sao sắp xếp như vậy

## 📌 Checklist

Khi thêm doc mới:
- [ ] Tạo file `.md` trong thư mục category phù hợp
- [ ] Kiểm tra xem có cần custom order không
- [ ] Nếu cần, thêm vào `ITEM_ORDER`
- [ ] Test bằng cách refresh trang
- [ ] Kiểm tra cả EN và VI locale

## ❓ Troubleshooting

### Doc không xuất hiện trong sidebar
- Kiểm tra file có extension `.md` không
- File không được đặt tên là `README.md` (bị exclude)
- Thư mục category có trong `CATEGORY_CONFIG` không

### Thứ tự không đúng
- Kiểm tra typo trong filename ở `ITEM_ORDER`
- Đảm bảo dùng filename (không có `.md`)
- Clear browser cache và hard refresh

### Category mới không xuất hiện
- Thêm vào `CATEGORY_CONFIG` với order phù hợp
- Đảm bảo có ít nhất 1 file `.md` trong thư mục
