feat: implement portal shell layout, sidebar configuration, and tasks page skeleton

This commit is contained in:
Poyraz Avsever
2026-06-08 14:10:48 +03:00
parent c0bd227e9f
commit 2c47b861d0
3 changed files with 31 additions and 16 deletions
+4 -4
View File
@@ -5,17 +5,17 @@ export default function PortalTasksPage() {
return (
<div className="mx-auto flex max-w-7xl flex-col gap-8 animate-in fade-in slide-in-from-bottom-4 duration-500">
<div className="flex flex-col gap-2">
<h1 className="text-3xl font-semibold tracking-tight">Görevlerim</h1>
<p className="text-muted-foreground">Size atanan ve herkese açık olan proje görevleri.</p>
<h1 className="text-3xl font-semibold tracking-tight">Yapılan Görevler</h1>
<p className="text-muted-foreground">Projeniz kapsamında üzerinde çalışılan ve tamamlanan görevler.</p>
</div>
<div className="flex min-h-72 flex-col items-center justify-center rounded-sm border border-dashed border-border bg-muted/20 p-8 text-center">
<FolderKanban className="h-10 w-10 text-muted-foreground" />
<h3 className="mt-4 text-lg font-semibold text-foreground">
Görev modülü yapım aşamasında
Görev detayları yapım aşamasında
</h3>
<p className="mt-2 max-w-md text-sm text-muted-foreground">
Yakında tüm görevlerinizi buradan takip edebileceksiniz. Şimdilik proje detay sayfasından görevlere ulaşabilirsiniz.
Yakında tüm görevlerin anlık durumlarını detaylıca buradan görebileceksiniz. Şimdilik proje detay sayfasından takip edebilirsiniz.
</p>
<Link href="/portal" className="mt-4 text-primary hover:underline text-sm font-medium">
Dashboard'a dön
+24 -9
View File
@@ -25,7 +25,7 @@ import {
} from "poyraz-ui/organisms";
import { portalSidebarData } from "@/config/portal-sidebar";
import { cn } from "@/lib/utils";
import { ChevronUp, LogOut, Menu, Settings } from "lucide-react";
import { Activity, ChevronUp, LogOut, Menu, Settings } from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { usePathname } from "next/navigation";
@@ -120,19 +120,34 @@ function AppSidebar({
variant="bordered"
className="flex h-dvh max-h-dvh flex-col overflow-hidden rounded-none border-0"
>
<SidebarHeader className="shrink-0 border-b-0 px-6 py-6">
<div className="flex flex-col gap-2">
<div className="flex items-center justify-between text-sm font-medium">
<span className="text-muted-foreground">Aktif İlerleme</span>
<span className="text-primary">%{progress}</span>
<SidebarHeader className="shrink-0 border-b-0 px-4 py-6">
<div className="flex flex-col gap-3 rounded-xl bg-primary/5 border border-primary/10 p-4 relative overflow-hidden">
<div className="flex items-center gap-2 relative z-10">
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-primary/20 text-primary">
<Activity className="h-4 w-4" />
</div>
<div className="h-2 w-full bg-secondary rounded-full overflow-hidden">
<div className="flex flex-col">
<span className="text-[10px] font-medium uppercase tracking-wider text-muted-foreground">Genel Durum</span>
<span className="text-sm font-semibold text-foreground">Proje İlerlemesi</span>
</div>
</div>
<div className="space-y-1.5 mt-1 relative z-10">
<div className="flex items-center justify-between text-xs font-medium">
<span className="text-primary">%{progress} Tamamlandı</span>
</div>
<div className="h-2 w-full bg-primary/10 rounded-full overflow-hidden">
<div
className="h-full bg-primary transition-all duration-500"
className="h-full bg-primary transition-all duration-700 ease-out relative"
style={{ width: `${progress}%` }}
/>
>
<div className="absolute top-0 right-0 bottom-0 left-0 bg-white/20 animate-pulse" />
</div>
</div>
</div>
<div className="absolute -right-4 -top-4 w-16 h-16 bg-primary/5 rounded-full blur-xl" />
</div>
</SidebarHeader>
<SidebarSeparator className="mx-0 my-0 w-full" />
+1 -1
View File
@@ -25,7 +25,7 @@ export const portalSidebarData: PortalSidebarNavGroup[] = [
{
title: "SÜREÇLER",
items: [
{ title: "Görevlerim", href: "/portal/tasks", icon: FolderKanban },
{ title: "Yapılan Görevler", href: "/portal/tasks", icon: FolderKanban },
{ title: "Revizyon Talepleri", href: "/portal/revisions", icon: Sparkles },
],
}