Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Architecture

CRM Özel Bileşenler

NotesSystem

src/components/common/NotesSystem.tsx — Dashboard’da sticky note sistemi.

  • localStorage’a kaydedilir (dashboard_notes key)
  • Draggable notlar, z-index yönetimi
  • Renk seçici (8 pastel renk)
  • Lazy init — sadece mount’ta localStorage’dan okur

GlobalSearch

src/components/common/GlobalSearch.tsxCmd/Ctrl+K ile açılan command palette.

İçerir:

  • Hızlı erişim: Anasayfa, Okullar, Kullanıcılar
  • Okul Özellikleri, Kampanyalar, İçerik, Kullanıcı Yönetimi grupları
  • Son ziyaret edilen sayfalar (useRecentPages)
  • Tüm modüller aranabilir

Navigasyon için useNavigate hook kullanır.

SchoolSearch

src/components/common/SchoolSelect.tsx — Okul arama combobox.

  • Yazan kullanıcı için debounce ile API araması
  • Value seçiliyse getById ile okul adını yükler
  • displayValue ile ID gönderir ama isim gösterir

UserSearchCombobox

src/components/common/UserSearchCombobox.tsx — Kullanıcı arama combobox.

Hem user-search hem admin-search filter tipi için kullanılır.

HierarchicalLocationForm

src/components/common/HierarchicalLocationForm.tsx — 3 seviyeli konum seçim formu (il/ilçe/mahalle).

ImageUpload / ImageCropper

src/components/common/ImageUpload.tsx ve ImageCropper.tsx — Görsel yükleme ve kırpma bileşenleri.

ContentImageGallery

src/components/common/ContentImageGallery.tsx — İçerik galerisinde DnD sıralama destekli görsel yönetimi.

RichTextEditor

src/components/common/RichTextEditor.tsx — TipTap veya Jodit editor wrapper.

ThemeToggle / ThemeProvider

Dark mode toggle. Tüm uygulamaya ThemeProvider wrap edilmiş.

UnsavedChangesDialog

Kaydedilmemiş değişiklik varken sayfadan çıkmayı önler.

AppliedFilter

Uygulanan filtreleri badge olarak gösterir, tek tıkla kaldırır.