260320:1549 Refactor Overrall #08 Fix: pnpm frontend deploy
Build and Deploy / deploy (push) Failing after 1m16s

This commit is contained in:
admin
2026-03-20 15:49:01 +07:00
parent 506ab9d5d5
commit 47d60993dc
6 changed files with 0 additions and 533 deletions
@@ -1,95 +0,0 @@
// File: app/(dashboard)/dashboard/can/page.tsx
'use client';
import { useAuthStore } from '@/lib/stores/auth-store';
import { Can } from '@/components/common/can';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { toast } from 'sonner';
export default function CanTestPage() {
const { user } = useAuthStore();
return (
<div className="space-y-6">
<h1 className="text-2xl font-bold">RBAC / Permission Test Page</h1>
{/* User Info Card */}
<Card>
<CardHeader>
<CardTitle>Current User Info</CardTitle>
</CardHeader>
<CardContent className="space-y-2">
<div className="flex gap-2">
<span className="font-semibold">Username:</span>
<span>{user?.username || 'Not logged in'}</span>
</div>
<div className="flex gap-2">
<span className="font-semibold">Role:</span>
<Badge variant="outline">{user?.role || 'None'}</Badge>
</div>
<div className="flex gap-2">
<span className="font-semibold">Permissions:</span>
<span>{user?.permissions?.join(', ') || 'No explicit permissions'}</span>
</div>
</CardContent>
</Card>
{/* Permission Tests */}
<Card>
<CardHeader>
<CardTitle>Component Visibility Tests (using &lt;Can /&gt;)</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<div className="p-4 border rounded bg-gray-50 flex flex-col gap-2">
<p className="text-sm font-medium">1. Admin Role Check</p>
<Can role="Admin" fallback={<span className="text-red-500 text-sm"> You are NOT an Admin (Hidden)</span>}>
<Button variant="default" className="w-fit"> Visible to Admin Only</Button>
</Can>
</div>
<div className="p-4 border rounded bg-gray-50 flex flex-col gap-2">
<p className="text-sm font-medium">2. &apos;document:create&apos; Permission</p>
<Can permission="document:create" fallback={<span className="text-red-500 text-sm"> Missing &apos;document:create&apos; (Hidden)</span>}>
<Button variant="secondary" className="w-fit"> Visible with &apos;document:create&apos;</Button>
</Can>
</div>
<div className="p-4 border rounded bg-gray-50 flex flex-col gap-2">
<p className="text-sm font-medium">3. &apos;document:delete&apos; Permission</p>
<Can permission="document:delete" fallback={<span className="text-red-500 text-sm"> Missing &apos;document:delete&apos; (Hidden)</span>}>
<Button variant="destructive" className="w-fit"> Visible with &apos;document:delete&apos;</Button>
</Can>
</div>
</CardContent>
</Card>
{/* Toast Test */}
<Card>
<CardHeader>
<CardTitle>Toast Notification Test</CardTitle>
</CardHeader>
<CardContent className="flex gap-4">
<Button
onClick={() => toast.success("Operation Successful", { description: "This is a success toast message." })}
>
Trigger Success Toast
</Button>
<Button
variant="destructive"
onClick={() => toast.error("Operation Failed", { description: "This is an error toast message." })}
>
Trigger Error Toast
</Button>
</CardContent>
</Card>
<div className="p-4 bg-blue-50 text-blue-800 rounded">
<strong>Tip:</strong> You can mock different roles by modifying the user state in local storage or using the `setAuth` method in console.
</div>
</div>
);
}
-32
View File
@@ -1,32 +0,0 @@
// File: app/layout.tsx
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css"; // Import CSS Variables
import { cn } from "@/lib/utils";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "LCBP3-DMS",
description: "Document Management System for Laem Chabang Port Phase 3",
};
interface RootLayoutProps {
children: React.ReactNode;
}
export default function RootLayout({ children }: RootLayoutProps) {
return (
<html lang="en" suppressHydrationWarning>
<head />
<body
className={cn(
"min-h-screen bg-background font-sans antialiased",
inter.className
)}
>
{children}
</body>
</html>
);
}
-39
View File
@@ -1,39 +0,0 @@
"use client";
import { AdminSidebar } from "@/components/admin/sidebar";
export default function TestAdminSidebarPage() {
return (
<div className="flex min-h-screen bg-background">
<AdminSidebar />
<div className="flex-1 p-6">
<div className="space-y-6">
<h1 className="text-3xl font-bold tracking-tight">Admin Sidebar Test</h1>
<p className="text-muted-foreground">
admin sidebar
</p>
<div className="grid gap-4">
<div className="p-4 border rounded-lg">
<h2 className="text-xl font-semibold mb-2"> Admin:</h2>
<ul className="list-disc list-inside space-y-1 text-sm">
<li>Access Control - Users, Roles, Organizations</li>
<li>Document Control - Projects, Contracts, Numbering, Reference Data, Workflows</li>
<li>Drawing Master - Contract/Shop Categories</li>
<li>Monitoring - Audit Logs, System Logs, Sessions</li>
<li>Migration - Review Queue, Error Logs</li>
<li>Settings</li>
</ul>
</div>
<div className="p-4 bg-blue-50 border border-blue-200 rounded-lg">
<p className="text-sm text-blue-800">
Admin sidebar collapsible
</p>
</div>
</div>
</div>
</div>
</div>
);
}
-56
View File
@@ -1,56 +0,0 @@
"use client";
import { Sidebar } from "@/components/layout/sidebar";
import { Header } from "@/components/layout/header";
export default function TestSidebarPage() {
return (
<div className="flex min-h-screen bg-background">
<Sidebar />
<div className="flex-1 flex flex-col min-h-screen overflow-hidden">
<Header />
<main className="flex-1 overflow-y-auto p-6 bg-muted/10">
<div className="space-y-6">
<h1 className="text-3xl font-bold tracking-tight">Sidebar Menu Test</h1>
<p className="text-muted-foreground">
sidebar
</p>
<div className="grid gap-4">
<div className="p-4 border rounded-lg">
<h2 className="text-xl font-semibold mb-2">:</h2>
<ul className="list-disc list-inside space-y-1 text-sm">
<li>Dashboard - /dashboard</li>
<li>Correspondences - /correspondences</li>
<li>RFAs - /rfas</li>
<li>Drawings - /drawings</li>
<li>Circulations - /circulation</li>
<li>Transmittals - /transmittals</li>
<li>Search - /search</li>
<li>Admin Panel - /admin ( admin/DC )</li>
</ul>
</div>
<div className="p-4 border rounded-lg">
<h2 className="text-xl font-semibold mb-2">:</h2>
<ol className="list-decimal list-inside space-y-1 text-sm">
<li> sidebar</li>
<li></li>
<li> active state </li>
<li> collapse/expand sidebar</li>
<li> responsive menu </li>
</ol>
</div>
<div className="p-4 bg-green-50 border border-green-200 rounded-lg">
<p className="text-sm text-green-800">
Sidebar component -
</p>
</div>
</div>
</div>
</main>
</div>
</div>
);
}