- {views.map(({ mode, icon: Icon, label }) => (
-
- ))}
+
+ {views.map(({ mode, icon: Icon, label }) => {
+ const active = viewMode === mode;
+ return (
+
+ );
+ })}
);
}
diff --git a/src/components/ViewToolbar.tsx b/src/components/ViewToolbar.tsx
new file mode 100644
index 0000000..31a7951
--- /dev/null
+++ b/src/components/ViewToolbar.tsx
@@ -0,0 +1,27 @@
+'use client';
+
+import { memo } from 'react';
+import { ViewMode } from '@/lib/types';
+import { ViewToggle } from './ViewToggle';
+
+interface ViewToolbarProps {
+ viewMode: ViewMode;
+ onViewChange: (mode: ViewMode) => void;
+ eventCount: number;
+}
+
+/**
+ * Toolbar row directly above the events content: result count on the left,
+ * view mode switcher on the right.
+ */
+export const ViewToolbar = memo(function ViewToolbar({ viewMode, onViewChange, eventCount }: ViewToolbarProps) {
+ return (
+
+
+ {eventCount.toLocaleString()}{' '}
+ {eventCount === 1 ? 'event' : 'events'}
+
+
+
+ );
+});