diff --git a/app/admin/responses/page.tsx b/app/admin/responses/page.tsx
index 9d80169..c36814c 100644
--- a/app/admin/responses/page.tsx
+++ b/app/admin/responses/page.tsx
@@ -2,7 +2,7 @@ import { createServerClient } from '@supabase/ssr'
import { cookies } from 'next/headers'
import { ResponsesTable, type DisplayRow } from './responses-table'
import { SurveySelect } from './survey-select'
-import { SignOutButton } from '../sign-out-button'
+import { AdminNavBar } from '@/components/admin-nav-bar'
import { formatDate, renderValue } from './admin-format'
export const dynamic = 'force-dynamic'
@@ -218,7 +218,9 @@ export default async function AdminResponsesPage({
})
return (
-
+ <>
+
+
@@ -268,6 +268,7 @@ export default async function AdminResponsesPage({
)}
)}
-
+
+ >
)
}
diff --git a/app/admin/usuarios/page.tsx b/app/admin/usuarios/page.tsx
index 6755476..2baa1ae 100644
--- a/app/admin/usuarios/page.tsx
+++ b/app/admin/usuarios/page.tsx
@@ -2,7 +2,7 @@ import { createServerClient } from '@supabase/ssr'
import { cookies } from 'next/headers'
import { getSupabaseAdmin } from '@/lib/supabase'
import { formatDate } from '../responses/admin-format'
-import { SignOutButton } from '../sign-out-button'
+import { AdminNavBar } from '@/components/admin-nav-bar'
import { InviteForm } from './invite-form'
export const dynamic = 'force-dynamic'
@@ -146,16 +146,14 @@ export default async function AdminUsuariosPage() {
})
return (
-
+ <>
+
+
@@ -191,6 +189,7 @@ export default async function AdminUsuariosPage() {
)}
-
+
+ >
)
}
diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx
index 14fa0af..dccdc2e 100644
--- a/app/dashboard/page.tsx
+++ b/app/dashboard/page.tsx
@@ -1,6 +1,7 @@
'use client'
import { useState } from 'react'
import { useSearchParams } from 'next/navigation'
+import { AdminNavBar } from '@/components/admin-nav-bar'
import { FilterSidebar } from '@/components/dashboard/filter-sidebar'
import { TalentoRiesgoCard } from '@/components/dashboard/talento-riesgo-card'
import { PrevalenciaCuidadoresCard } from '@/components/dashboard/prevalencia-cuidadores-card'
@@ -46,7 +47,9 @@ export default function DashboardPage() {
const [lens, setLens] = useState('empresa')
return (
-
+
+ >
)
}
diff --git a/app/globals.css b/app/globals.css
index 89183de..4e1fb75 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -998,6 +998,21 @@ body {
.db-placeholder-title { font-size: 1rem; font-weight: 600; color: #494F4F; }
.db-placeholder-hint { font-size: 0.8125rem; max-width: 420px; line-height: 1.5; }
+/* ── Nav compartido (dashboard / respuestas / usuarios) ── */
+.admin-nav-bar {
+ display: flex; align-items: center; justify-content: space-between;
+ gap: 16px; padding: 10px 24px; background: var(--color-surface);
+ border-bottom: 1px solid var(--color-border); flex-wrap: wrap;
+}
+.admin-nav { display: flex; gap: 4px; }
+.admin-nav-link {
+ padding: 6px 14px; border-radius: var(--radius); font-size: 0.875rem;
+ font-weight: 600; color: var(--color-text-muted); text-decoration: none;
+ transition: background 0.15s, color 0.15s;
+}
+.admin-nav-link:hover { background: var(--color-primary-light); color: var(--color-text); }
+.admin-nav-link-active { background: var(--color-primary-light); color: var(--color-primary-hover); }
+
/* ── Admin: control de respuestas (Etapa 3V) ── */
.admin-page { max-width: 1100px; margin: 0 auto; padding: 24px; }
.admin-header {
diff --git a/components/admin-nav-bar.tsx b/components/admin-nav-bar.tsx
new file mode 100644
index 0000000..f1a339f
--- /dev/null
+++ b/components/admin-nav-bar.tsx
@@ -0,0 +1,34 @@
+import { SignOutButton } from '@/app/admin/sign-out-button'
+
+interface AdminNavBarProps {
+ active: 'dashboard' | 'responses' | 'usuarios'
+}
+
+const LINKS = [
+ { id: 'dashboard', href: '/dashboard', label: 'Dashboard' },
+ { id: 'responses', href: '/admin/responses', label: 'Respuestas' },
+ { id: 'usuarios', href: '/admin/usuarios', label: 'Usuarios' },
+] as const
+
+// Nav compartido entre /dashboard, /admin/responses y /admin/usuarios — las
+// tres pantallas detrás del login. Sin esto, cada una era una isla y el único
+// modo de llegar a otra era escribir la URL a mano.
+export function AdminNavBar({ active }: AdminNavBarProps) {
+ return (
+
+ )
+}