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

@@ -74,24 +74,31 @@ export function ImageUpload({
const formData = new FormData();
formData.append('file', file);
// Get nonce from REST API settings
const nonce = (window as any).wpApiSettings?.nonce ||
(window as any).WooNooW?.nonce ||
document.querySelector('meta[name="wp-rest-nonce"]')?.getAttribute('content') || '';
// Upload to WordPress media library
const response = await fetch('/wp-json/wp/v2/media', {
method: 'POST',
headers: {
'X-WP-Nonce': (window as any).wpApiSettings?.nonce || '',
'X-WP-Nonce': nonce,
},
credentials: 'same-origin',
body: formData,
});
if (!response.ok) {
throw new Error('Upload failed');
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.message || 'Upload failed');
}
const data = await response.json();
onChange(data.source_url);
} catch (error) {
console.error('Upload error:', error);
alert('Failed to upload image');
alert(error instanceof Error ? error.message : 'Failed to upload image');
} finally {
setIsUploading(false);
}