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 ( 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="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"> <div className="flex flex-col gap-2">
<h1 className="text-3xl font-semibold tracking-tight">Görevlerim</h1> <h1 className="text-3xl font-semibold tracking-tight">Yapılan Görevler</h1>
<p className="text-muted-foreground">Size atanan ve herkese açık olan proje görevleri.</p> <p className="text-muted-foreground">Projeniz kapsamında üzerinde çalışılan ve tamamlanan görevler.</p>
</div> </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"> <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" /> <FolderKanban className="h-10 w-10 text-muted-foreground" />
<h3 className="mt-4 text-lg font-semibold text-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> </h3>
<p className="mt-2 max-w-md text-sm text-muted-foreground"> <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> </p>
<Link href="/portal" className="mt-4 text-primary hover:underline text-sm font-medium"> <Link href="/portal" className="mt-4 text-primary hover:underline text-sm font-medium">
Dashboard'a dön Dashboard'a dön
+26 -11
View File
@@ -25,7 +25,7 @@ import {
} from "poyraz-ui/organisms"; } from "poyraz-ui/organisms";
import { portalSidebarData } from "@/config/portal-sidebar"; import { portalSidebarData } from "@/config/portal-sidebar";
import { cn } from "@/lib/utils"; 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 Image from "next/image";
import Link from "next/link"; import Link from "next/link";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
@@ -120,18 +120,33 @@ function AppSidebar({
variant="bordered" variant="bordered"
className="flex h-dvh max-h-dvh flex-col overflow-hidden rounded-none border-0" 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"> <SidebarHeader className="shrink-0 border-b-0 px-4 py-6">
<div className="flex flex-col gap-2"> <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 justify-between text-sm font-medium"> <div className="flex items-center gap-2 relative z-10">
<span className="text-muted-foreground">Aktif İlerleme</span> <div className="flex h-8 w-8 items-center justify-center rounded-full bg-primary/20 text-primary">
<span className="text-primary">%{progress}</span> <Activity className="h-4 w-4" />
</div>
<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>
<div className="h-2 w-full bg-secondary rounded-full overflow-hidden">
<div <div className="space-y-1.5 mt-1 relative z-10">
className="h-full bg-primary transition-all duration-500" <div className="flex items-center justify-between text-xs font-medium">
style={{ width: `${progress}%` }} <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-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>
<div className="absolute -right-4 -top-4 w-16 h-16 bg-primary/5 rounded-full blur-xl" />
</div> </div>
</SidebarHeader> </SidebarHeader>
+1 -1
View File
@@ -25,7 +25,7 @@ export const portalSidebarData: PortalSidebarNavGroup[] = [
{ {
title: "SÜREÇLER", title: "SÜREÇLER",
items: [ 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 }, { title: "Revizyon Talepleri", href: "/portal/revisions", icon: Sparkles },
], ],
} }