mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 12:11:21 -05:00
Fix: Resolve theme for markdown editor
This commit is contained in:
@@ -25,6 +25,30 @@ export function MarkdownEditor({
|
|||||||
}: MarkdownEditorProps) {
|
}: MarkdownEditorProps) {
|
||||||
const { theme } = useTheme();
|
const { theme } = useTheme();
|
||||||
const [mounted, setMounted] = useState(false);
|
const [mounted, setMounted] = useState(false);
|
||||||
|
const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>('light');
|
||||||
|
|
||||||
|
// Resolve "system" theme to actual theme based on OS preference
|
||||||
|
useEffect(() => {
|
||||||
|
if (theme === 'system') {
|
||||||
|
const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
|
setResolvedTheme(isDark ? 'dark' : 'light');
|
||||||
|
} else {
|
||||||
|
setResolvedTheme(theme as 'light' | 'dark');
|
||||||
|
}
|
||||||
|
}, [theme]);
|
||||||
|
|
||||||
|
// Listen for OS theme changes when in system mode
|
||||||
|
useEffect(() => {
|
||||||
|
if (theme !== 'system') return;
|
||||||
|
|
||||||
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
||||||
|
const handler = (e: MediaQueryListEvent) => {
|
||||||
|
setResolvedTheme(e.matches ? 'dark' : 'light');
|
||||||
|
};
|
||||||
|
|
||||||
|
mediaQuery.addEventListener('change', handler);
|
||||||
|
return () => mediaQuery.removeEventListener('change', handler);
|
||||||
|
}, [theme]);
|
||||||
|
|
||||||
// Auto-save integration
|
// Auto-save integration
|
||||||
const { isSaving, lastSaved, error } = useAutoSave({
|
const { isSaving, lastSaved, error } = useAutoSave({
|
||||||
@@ -61,7 +85,7 @@ export function MarkdownEditor({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<div data-color-mode={theme}>
|
<div data-color-mode={resolvedTheme}>
|
||||||
<MDEditor
|
<MDEditor
|
||||||
value={value}
|
value={value}
|
||||||
onChange={(val) => onChange(val || '')}
|
onChange={(val) => onChange(val || '')}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import { extractCloudflareImageId } from '@/lib/cloudflareImageUtils';
|
|||||||
import { Edit, Trash2, Eye, Plus } from 'lucide-react';
|
import { Edit, Trash2, Eye, Plus } from 'lucide-react';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { formatDistanceToNow } from 'date-fns';
|
import { formatDistanceToNow } from 'date-fns';
|
||||||
|
import '@uiw/react-md-editor/markdown-editor.css';
|
||||||
|
import '@uiw/react-markdown-preview/markdown.css';
|
||||||
import '@/styles/markdown-editor.css';
|
import '@/styles/markdown-editor.css';
|
||||||
|
|
||||||
interface BlogPost {
|
interface BlogPost {
|
||||||
|
|||||||
Reference in New Issue
Block a user