fix: Image upload, remove WP login branding, implement dark mode

## 1. Fix Image Upload 

**Issue:** Image upload failing due to missing nonce

**Fix:**
- Better nonce detection (wpApiSettings, WooNooW, meta tag)
- Added credentials: 'same-origin'
- Better error handling with error messages
- Clarified image size recommendations (not strict requirements)

**Changes:**
- Logo: "Recommended size: 200x60px (or similar ratio)"
- Icon: "Recommended: 32x32px or larger square image"

---

## 2. Remove WordPress Login Page Branding 

**Issue:** Misunderstood - implemented WP login branding instead of SPA login

**Fix:**
- Removed all WordPress login page customization
- Removed login_enqueue_scripts hook
- Removed login_headerurl filter
- Removed login_headertext filter
- Removed customize_login_page() method
- Removed login_logo_url() method
- Removed login_logo_title() method

**Note:** WooNooW uses standalone SPA login, not WordPress login page

---

## 3. Implement Dark/Light Mode 

### Components Created:

**ThemeProvider.tsx:**
- Theme context (light, dark, system)
- Automatic system theme detection
- localStorage persistence (woonoow_theme)
- Applies .light or .dark class to <html>
- Listens for system theme changes

**ThemeToggle.tsx:**
- Dropdown menu with 3 options:
  - ☀️ Light
  - 🌙 Dark
  - 🖥️ System
- Shows current selection with checkmark
- Icon changes based on actual theme

### Integration:
- Wrapped App with ThemeProvider in main.tsx
- Added ThemeToggle to header (before fullscreen button)
- Uses existing dark mode CSS variables (already configured)

### Features:
-  Light mode
-  Dark mode
-  System preference (auto)
-  Persists in localStorage
-  Smooth transitions
-  Icon updates dynamically

### CSS:
- Already configured: darkMode: ["class"] in tailwind.config.js
- Dark mode variables already defined in index.css
- No additional CSS needed

---

## Result

 Image upload fixed with better error handling
 WordPress login branding removed (not needed)
 Dark/Light mode fully functional
 Theme toggle in header
 System preference support
 Persists across sessions

**Ready to test!**
This commit is contained in:
dwindown
2025-11-10 23:18:56 +07:00
parent e369d31974
commit 64cfa39b75
7 changed files with 145 additions and 118 deletions

View File

@@ -38,6 +38,7 @@ import { FAB } from '@/components/FAB';
import { useActiveSection } from '@/hooks/useActiveSection';
import { NAV_TREE_VERSION } from '@/nav/tree';
import { __ } from '@/lib/i18n';
import { ThemeToggle } from '@/components/ThemeToggle';
function useFullscreen() {
const [on, setOn] = useState<boolean>(() => {
@@ -362,6 +363,7 @@ function Header({ onFullscreen, fullscreen, showToggle = true, scrollContainerRe
</button>
</>
)}
<ThemeToggle />
{showToggle && (
<button
onClick={onFullscreen}