diff --git a/frontend/src/components/MediaGrid.css b/frontend/src/components/MediaGrid.css
index c9ff28f..d7b5555 100644
--- a/frontend/src/components/MediaGrid.css
+++ b/frontend/src/components/MediaGrid.css
@@ -22,6 +22,11 @@
z-index: 1;
}
+/* Dark mode: bring the placeholder tile in line with Bootstrap's body-tertiary value. */
+html[data-bs-theme="dark"] .media-grid-item {
+ background-color: #2c3034;
+}
+
.media-thumbnail {
width: 100%;
height: 100%;
diff --git a/frontend/src/components/MessageThread.jsx b/frontend/src/components/MessageThread.jsx
index 7f96812..ff9147c 100644
--- a/frontend/src/components/MessageThread.jsx
+++ b/frontend/src/components/MessageThread.jsx
@@ -1,4 +1,5 @@
import { useState, useEffect, useLayoutEffect, useRef } from 'react'
+import { useTheme } from '../contexts/ThemeContext'
import { useLocation } from 'react-router-dom'
import axios from 'axios'
import { format } from 'date-fns'
@@ -8,6 +9,8 @@ import MediaGrid from './MediaGrid'
const API_BASE = import.meta.env.VITE_API_URL || 'http://localhost:8085/api'
function MessageThread({ conversation, startDate, endDate, messageLimit }) {
+ const { resolvedTheme } = useTheme()
+ const isDark = resolvedTheme === 'dark'
const location = useLocation()
const [items, setItems] = useState([])
const [loading, setLoading] = useState(false)
@@ -509,12 +512,12 @@ function MessageThread({ conversation, startDate, endDate, messageLimit }) {
if (!conversation) {
return (
-
+
-
Select a conversation
+
Select a conversation
Choose a conversation from the list to view messages
@@ -558,7 +561,7 @@ function MessageThread({ conversation, startDate, endDate, messageLimit }) {
)}
{/* Thread Header */}
-
+
{isCallLog ? (
@@ -632,7 +635,7 @@ function MessageThread({ conversation, startDate, endDate, messageLimit }) {
{/* Content */}
-
+
{showMediaOnly && !isCallLog ? (
// Media Grid View
@@ -710,7 +713,7 @@ function MessageThread({ conversation, startDate, endDate, messageLimit }) {
const typeInfo = getCallTypeInfo(call.type)
return (
-
+
{typeInfo.icon}
{typeInfo.label} call
·
@@ -750,7 +753,9 @@ function MessageThread({ conversation, startDate, endDate, messageLimit }) {
className={`card shadow-sm ${
isSent
? 'bg-primary text-white'
- : 'bg-white'
+ : isDark
+ ? 'bg-body-tertiary text-body'
+ : 'bg-white'
} ${
isHighlighted
? 'border-warning border-3'
diff --git a/frontend/src/components/Search.jsx b/frontend/src/components/Search.jsx
index 0a70748..049bbd8 100644
--- a/frontend/src/components/Search.jsx
+++ b/frontend/src/components/Search.jsx
@@ -77,7 +77,7 @@ function Search({ searchQuery, setSearchQuery, results, setResults, loading, set
return (
{/* Header */}
-
+