feat(households): hane seçici, ayarlar, admin hane yönetimi ve hane-yok sayfası

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-05 02:35:01 +03:00
parent de91f2505a
commit 3644e081b1
21 changed files with 1427 additions and 29 deletions
+15 -6
View File
@@ -1,3 +1,4 @@
import { redirect } from "next/navigation";
import { Suspense } from "react";
import { AppHeader } from "@/components/layout/app-header";
import { AppShellFallback } from "@/components/layout/app-shell-fallback";
@@ -5,8 +6,8 @@ import { AppSidebar } from "@/components/layout/app-sidebar";
import { BottomNav } from "@/components/layout/bottom-nav";
import { QuickAddProvider } from "@/components/layout/quick-add";
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar";
import { MOCK_HOUSEHOLDS } from "@/features/households/mock";
import { requireSession } from "@/lib/dal";
import { hasHouseholdRole } from "@/features/households/roles";
import { getHouseholdContext } from "@/lib/dal";
import { APP_VERSION } from "@/lib/version";
/**
@@ -23,18 +24,26 @@ export default function AppLayout({ children }: { children: React.ReactNode }) {
}
async function AuthenticatedShell({ children }: { children: React.ReactNode }) {
const user = await requireSession();
const ctx = await getHouseholdContext();
if (!ctx) redirect("/login");
const { user, household, memberships } = ctx;
const canWrite = household ? hasHouseholdRole(household.role, "member") : false;
return (
<SidebarProvider>
<QuickAddProvider>
<AppSidebar isAdmin={user.role === "admin"} version={APP_VERSION} />
<SidebarInset>
{/* FAZ 5: kullanıcının üye olduğu haneler */}
<AppHeader user={user} households={MOCK_HOUSEHOLDS} version={APP_VERSION} />
<AppHeader
user={user}
households={memberships}
activeHouseholdId={household?.id}
canWrite={canWrite}
version={APP_VERSION}
/>
{/* Mobilde alt menü yüksekliği kadar boşluk */}
<div className="flex flex-1 flex-col gap-4 p-4 pb-24 md:p-6 md:pb-6">{children}</div>
</SidebarInset>
<BottomNav />
<BottomNav canWrite={canWrite} />
</QuickAddProvider>
</SidebarProvider>
);