-
- ))}
- {countries.length > 5 && +{countries.length - 5}}
+
+
+ ))}
+ {countries.length > 5 && +{countries.length - 5}}
+ diff --git a/client/src/pages/DashboardPage.tsx b/client/src/pages/DashboardPage.tsx
index 62f95353..584a9e5d 100644
--- a/client/src/pages/DashboardPage.tsx
+++ b/client/src/pages/DashboardPage.tsx
@@ -21,6 +21,7 @@ import {
import { formatTime, splitReservationDateTime } from '../utils/formatters'
import { convertDistance, getDistanceUnitLabel } from '../utils/units'
import { useSettingsStore } from '../store/settingsStore'
+import { normalizeAppearance } from '@trek/shared'
import '../styles/dashboard.css'
const GRADIENTS = [
@@ -92,6 +93,17 @@ export default function DashboardPage(): React.ReactElement {
handleCreate, handleUpdate, confirmDelete, handleArchive, handleUnarchive, confirmCopy,
} = useDashboard()
+ // Per-device dashboard widget visibility (from the appearance config).
+ const isMobile = useIsMobile()
+ const appearanceCfg = useSettingsStore(s => s.settings.appearance)
+ const dashCfg = normalizeAppearance(appearanceCfg).dashboard
+ const sideWidgets = isMobile ? dashCfg.mobile : dashCfg.desktop
+ const showCurrency = sideWidgets.currency
+ const showTimezones = sideWidgets.timezones
+ const showUpcoming = sideWidgets.upcomingReservations
+ // Desktop has a master toggle for the whole right column; off → centered layout.
+ const sidebarVisible = (isMobile || dashCfg.desktop.sidebar) && (showCurrency || showTimezones || showUpcoming)
+
return (
<>
{/* Navbar lives outside .trek-dash so it keeps the app-wide font + button
@@ -102,7 +114,7 @@ export default function DashboardPage(): React.ReactElement {
{demoMode &&
-
- ))}
- {countries.length > 5 && +{countries.length - 5}}
+
+
+ ))}
+ {countries.length > 5 && +{countries.length - 5}}
+