/
opt
/
mawid
/
apps
/
dashboard
/
app
/
(app)
/
/opt/mawid/apps/dashboard/app/(app)
mkdir
upload
Name
Size
Mode
Actions
conversations/
-
0755
rm
patients/
-
0755
rm
settings/
-
0755
rm
layout.tsx
2671
0644
edit
dl
rm
page.tsx
15906
0644
edit
dl
rm
Edit:
/opt/mawid/apps/dashboard/app/(app)/layout.tsx
(2671B)
'use client'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { usePathname, useRouter } from 'next/navigation'; import { getToken, setToken } from '@/lib/api'; import { useLang, type UiLang } from '@/lib/i18n'; const NAV = [ { href: '/', key: 'calendar' as const }, { href: '/patients', key: 'patients' as const }, { href: '/conversations', key: 'conversations' as const }, { href: '/settings', key: 'settings' as const }, ]; export default function AppLayout({ children }: { children: React.ReactNode }) { const { t, lang, setLang } = useLang(); const router = useRouter(); const pathname = usePathname(); const [ready, setReady] = useState(false); useEffect(() => { if (!getToken()) router.replace('/login'); else setReady(true); }, [router]); if (!ready) return null; return ( <div className="mx-auto flex min-h-screen max-w-6xl flex-col"> <header className="sticky top-0 z-40 border-b border-slate-200 bg-white/90 backdrop-blur"> <div className="flex items-center justify-between px-4 py-3"> <div className="flex items-center gap-6"> <span className="text-lg font-bold text-emerald-700">{t('appName')}</span> <nav className="flex gap-1"> {NAV.map((item) => ( <Link key={item.href} href={item.href} className={`rounded-lg px-3 py-1.5 text-sm font-medium ${ pathname === item.href ? 'bg-emerald-50 text-emerald-700' : 'text-slate-600 hover:bg-slate-100' }`} > {t(item.key)} </Link> ))} </nav> </div> <div className="flex items-center gap-2"> {(['tr', 'ar', 'en'] as UiLang[]).map((code) => ( <button key={code} onClick={() => setLang(code)} className={`rounded px-1.5 py-0.5 text-xs font-semibold uppercase ${ lang === code ? 'bg-emerald-600 text-white' : 'text-slate-400 hover:text-slate-600' }`} > {code} </button> ))} <button onClick={() => { setToken(null); router.push('/login'); }} className="ms-2 text-sm text-slate-500 hover:text-slate-700" > {t('logout')} </button> </div> </div> </header> <main className="flex-1 p-4">{children}</main> </div> ); }
Save
cmd:
run