feat: add api and adjust spacing ui

This commit is contained in:
sabdayagra 2024-12-24 23:27:04 +07:00
commit f9eb9a2f41
142 changed files with 2520 additions and 1308 deletions

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -14,7 +14,7 @@ import {
import { SortableContext, arrayMove } from "@dnd-kit/sortable"; import { SortableContext, arrayMove } from "@dnd-kit/sortable";
import ColumnContainer from "./column" import ColumnContainer from "./column"
import TaskCard from './task'; import TaskCard from './task';
import { createPortal } from "react-dom"; // import { createPortal } from "react-dom";
import AddBoard from './add-board'; import AddBoard from './add-board';
import CreateTask from "./create-task"; import CreateTask from "./create-task";
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
@ -147,7 +147,7 @@ const KanBanApp = ({ defaultCols, defaultTasks }: { defaultCols: Column[], defau
</div> </div>
</div> </div>
{createPortal( {/* {createPortal(
<DragOverlay> <DragOverlay>
{activeColumn && ( {activeColumn && (
<ColumnContainer <ColumnContainer
@ -159,7 +159,7 @@ const KanBanApp = ({ defaultCols, defaultTasks }: { defaultCols: Column[], defau
{activeTask && <TaskCard task={activeTask} />} {activeTask && <TaskCard task={activeTask} />}
</DragOverlay>, </DragOverlay>,
document.body document.body
)} )} */}
</DndContext> </DndContext>
</div> </div>
<CreateTask <CreateTask

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -12,6 +12,7 @@ import {
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge"; import { Badge } from "@/components/ui/badge";
import { format } from "date-fns"; import { format } from "date-fns";
import { Link } from "@/components/navigation";
const columns: ColumnDef<any>[] = [ const columns: ColumnDef<any>[] = [
{ {
@ -139,12 +140,12 @@ const columns: ColumnDef<any>[] = [
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="p-0" align="end"> <DropdownMenuContent className="p-0" align="end">
<a href="/contributor/task/detail/[id]"> <Link href={`/contributor/content/image/detail/${row.original.id}`}>
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none"> <DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
<Eye className="w-4 h-4 me-1.5" /> <Eye className="w-4 h-4 me-1.5" />
View View
</DropdownMenuItem> </DropdownMenuItem>
</a> </Link>
<DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"> <DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none">
<Trash2 className="w-4 h-4 me-1.5" /> <Trash2 className="w-4 h-4 me-1.5" />
Delete Delete

View File

@ -0,0 +1,15 @@
import SiteBreadcrumb from "@/components/site-breadcrumb";
import FormImageDetail from "@/components/form/content/image-detail-form";
const ImageDetailPage = async () => {
return (
<div>
<SiteBreadcrumb />
<div className="space-y-4">
<FormImageDetail />
</div>
</div>
);
};
export default ImageDetailPage;

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -118,10 +118,12 @@ const columns: ColumnDef<any>[] = [
View View
</DropdownMenuItem> </DropdownMenuItem>
</Link> </Link>
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none"> <Link href={`/contributor/task/update/${row.original.id}`}>
<SquarePen className="w-4 h-4 me-1.5" /> <DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
Edit <SquarePen className="w-4 h-4 me-1.5" />
</DropdownMenuItem> Edit
</DropdownMenuItem>
</Link>
<DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"> <DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none">
<Trash2 className="w-4 h-4 me-1.5" /> <Trash2 className="w-4 h-4 me-1.5" />
Delete Delete

View File

@ -0,0 +1,18 @@
import { Card, CardContent } from "@/components/ui/card";
import SiteBreadcrumb from "@/components/site-breadcrumb";
import FormTask from "@/components/form/task/task-form";
import FormTaskDetail from "@/components/form/task/task-detail-form";
import FormTaskEdit from "@/components/form/task/task-edit-form";
const TaskDetailPage = async () => {
return (
<div>
<SiteBreadcrumb />
<div className="space-y-4">
<FormTaskEdit />
</div>
</div>
);
};
export default TaskDetailPage;

View File

@ -1,14 +1,16 @@
import PageTitle from "@/components/page-title"; import PageTitle from "@/components/page-title";
import { Metadata } from "next"; import { Metadata } from "next";
import { Suspense } from "react";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {
return <> return <>
<PageTitle className="mb-6" /> <PageTitle className="mb-6" />
{children}</>; {children}
</>
}; };
export default Layout; export default Layout;

View File

@ -1,3 +1,5 @@
'use client'
import { StatisticsBlock } from "@/components/blocks/statistics-block"; import { StatisticsBlock } from "@/components/blocks/statistics-block";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import DashboardDropdown from "@/components/dashboard-dropdown"; import DashboardDropdown from "@/components/dashboard-dropdown";
@ -11,162 +13,165 @@ import BlogTable from "../contributor/blog/components/blog-table";
import ContentTable from "./routine-task/components/content-table"; import ContentTable from "./routine-task/components/content-table";
import RecentActivity from "./routine-task/components/recent-activity"; import RecentActivity from "./routine-task/components/recent-activity";
import { Link } from "@/components/navigation"; import { Link } from "@/components/navigation";
import { Suspense } from "react";
const DashboardPage = () => { const DashboardPage = () => {
const t = useTranslations("AnalyticsDashboard"); const t = useTranslations("AnalyticsDashboard");
return ( return (
<div> <Suspense>
<div className="my-3"> <div>
<Tabs defaultValue="routine-task" className="w-full"> <div className="my-3">
<Card className="py-3 px-2 my-4"> <Tabs defaultValue="routine-task" className="w-full">
<TabsList className="flex-wrap"> <Card className="py-3 px-2 my-4">
<TabsTrigger <TabsList className="flex-wrap">
value="routine-task" <TabsTrigger
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6" value="routine-task"
> className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
Tugas Rutin >
</TabsTrigger> Tugas Rutin
<TabsTrigger </TabsTrigger>
value="task" <TabsTrigger
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6" value="task"
> className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
Penugasan >
</TabsTrigger> Penugasan
<TabsTrigger </TabsTrigger>
value="schedule" <TabsTrigger
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6" value="schedule"
> className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
Jadwal >
</TabsTrigger> Jadwal
<TabsTrigger </TabsTrigger>
value="indeks" <TabsTrigger
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6" value="indeks"
> className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
Indeks >
</TabsTrigger> Indeks
</TabsList> </TabsTrigger>
</Card> </TabsList>
<TabsContent value="routine-task"> </Card>
<div className="grid grid-cols-12 items-center gap-5 mb-5"> <TabsContent value="routine-task">
<div className="2xl:col-span-12 lg:col-span-12 col-span-12"> <div className="grid grid-cols-12 items-center gap-5 mb-5">
<Card> <div className="2xl:col-span-12 lg:col-span-12 col-span-12">
<CardContent className="p-4"> <Card>
<div className="grid md:grid-cols-3 gap-4"> <CardContent className="p-4">
<StatisticsBlock <div className="grid md:grid-cols-3 gap-4">
title={"Hasil unggah disetujui hari ini"} <StatisticsBlock
total="3,564" title={"Hasil unggah disetujui hari ini"}
className="bg-info/10 border-none shadow-none" total="3,564"
/> className="bg-info/10 border-none shadow-none"
<StatisticsBlock />
title={"Hasil unggah direvisi hari ini"} <StatisticsBlock
total="564" title={"Hasil unggah direvisi hari ini"}
className="bg-warning/10 border-none shadow-none" total="564"
chartColor="#FB8F65" className="bg-warning/10 border-none shadow-none"
/> chartColor="#FB8F65"
<StatisticsBlock />
title={"Hasil unggah ditolak hari ini"} <StatisticsBlock
total="+5.0%" title={"Hasil unggah ditolak hari ini"}
className="bg-primary/10 border-none shadow-none" total="+5.0%"
chartColor="#2563eb" className="bg-primary/10 border-none shadow-none"
/> chartColor="#2563eb"
</div> />
</CardContent>
</Card>
</div>
</div>
<div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-4 col-span-12">
<Card>
<CardHeader className="flex flex-row items-center">
<CardTitle className="flex-1 text-lg">
{"Total Produksi Konten"}
</CardTitle>
<DashboardDropdown />
</CardHeader>
<CardContent>
<RecentActivity />
</CardContent>
</Card>
</div>
<div className="lg:col-span-8 col-span-12">
<Card>
<CardHeader className="flex flex-row items-center">
<CardTitle className="flex-1">{"Table"}</CardTitle>
<DashboardDropdown />
</CardHeader>
<CardContent className="p-0">
<ContentTable />
</CardContent>
</Card>
</div>
</div>
</TabsContent>
<TabsContent value="task">
<div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-12 col-span-12">
<Card>
<Card className="py-4 px-3">
<div className="flex flex-row justify-between items-center">
<div className="flex-1 text-xl font-medium text-default-900">
Table Penugasan
</div> </div>
<div> </CardContent>
<Link href={"/contributor/task/create"}>
<Button color="primary" className="text-white">
<UploadIcon />
Buat Penugasan
</Button>
</Link>
</div>
</div>
</Card> </Card>
<CardContent className="p-0 mt-3"> </div>
<TaskTable />
</CardContent>
</Card>
</div> </div>
</div> <div className="grid grid-cols-12 gap-5">
</TabsContent> <div className="lg:col-span-4 col-span-12">
<TabsContent value="schedule"> <Card>
<div className="grid grid-cols-12 gap-5"> <CardHeader className="flex flex-row items-center">
<div className="lg:col-span-12 col-span-12"> <CardTitle className="flex-1 text-lg">
<Card> {"Total Produksi Konten"}
<CardContent className="p-0 "> </CardTitle>
<PressConferenceTable /> <DashboardDropdown />
</CardContent> </CardHeader>
</Card> <CardContent>
</div> <RecentActivity />
</div> </CardContent>
</TabsContent>
<TabsContent value="indeks">
<div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-12 col-span-12">
<Card>
<Card className="py-4 px-3">
<div className="flex flex-row justify-between items-center">
<div className="flex-1 text-xl font-medium text-default-900">
Table Indeks
</div>
<div>
<Link href={"/contributor/blog/create"}>
<Button color="primary" className="text-white">
<UploadIcon />
Tambah Indeks
</Button>
</Link>
</div>
</div>
</Card> </Card>
<CardContent className="p-0 mt-3"> </div>
<BlogTable /> <div className="lg:col-span-8 col-span-12">
</CardContent> <Card>
</Card> <CardHeader className="flex flex-row items-center">
<CardTitle className="flex-1">{"Table"}</CardTitle>
<DashboardDropdown />
</CardHeader>
<CardContent className="p-0">
<ContentTable />
</CardContent>
</Card>
</div>
</div> </div>
</div> </TabsContent>
</TabsContent> <TabsContent value="task">
</Tabs> <div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-12 col-span-12">
<Card>
<Card className="py-4 px-3">
<div className="flex flex-row justify-between items-center">
<div className="flex-1 text-xl font-medium text-default-900">
Table Penugasan
</div>
<div>
<Link href={"/contributor/task/create"}>
<Button color="primary" className="text-white">
<UploadIcon />
Buat Penugasan
</Button>
</Link>
</div>
</div>
</Card>
<CardContent className="p-0 mt-3">
<TaskTable />
</CardContent>
</Card>
</div>
</div>
</TabsContent>
<TabsContent value="schedule">
<div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-12 col-span-12">
<Card>
<CardContent className="p-0 ">
<PressConferenceTable />
</CardContent>
</Card>
</div>
</div>
</TabsContent>
<TabsContent value="indeks">
<div className="grid grid-cols-12 gap-5">
<div className="lg:col-span-12 col-span-12">
<Card>
<Card className="py-4 px-3">
<div className="flex flex-row justify-between items-center">
<div className="flex-1 text-xl font-medium text-default-900">
Table Indeks
</div>
<div>
<Link href={"/contributor/blog/create"}>
<Button color="primary" className="text-white">
<UploadIcon />
Tambah Indeks
</Button>
</Link>
</div>
</div>
</Card>
<CardContent className="p-0 mt-3">
<BlogTable />
</CardContent>
</Card>
</div>
</div>
</TabsContent>
</Tabs>
</div>
</div> </div>
</div> </Suspense>
); );
}; };

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -4,22 +4,22 @@ import DashCodeSidebar from "@/components/partials/sidebar";
import DashCodeFooter from "@/components/partials/footer"; import DashCodeFooter from "@/components/partials/footer";
import ThemeCustomize from "@/components/partials/customizer"; import ThemeCustomize from "@/components/partials/customizer";
import DashCodeHeader from "@/components/partials/header"; import DashCodeHeader from "@/components/partials/header";
import { auth } from "@/lib/auth"; import MountedProvider from "@/providers/mounted.provider";
import { redirect } from "@/components/navigation";
const layout = async ({ children }: { children: React.ReactNode }) => {
const session = await auth();
if (!session) { const layout = async ({ children }: { children: React.ReactNode }) => {
redirect("/");
}
return ( return (
<LayoutProvider> <MountedProvider
<ThemeCustomize /> isProtected={true}
<DashCodeHeader /> >
<DashCodeSidebar /> <LayoutProvider>
<LayoutContentProvider>{children}</LayoutContentProvider> <ThemeCustomize />
<DashCodeFooter /> <DashCodeHeader />
</LayoutProvider> <DashCodeSidebar />
<LayoutContentProvider>{children}</LayoutContentProvider>
<DashCodeFooter />
</LayoutProvider>
</MountedProvider>
); );
}; };

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -8,7 +8,7 @@ const LayerLinks = ({ height = 350 }: { height?: number }) => {
const onClick = (event: React.MouseEvent<SVGPathElement>) => { const onClick = (event: React.MouseEvent<SVGPathElement>) => {
const name = event.currentTarget.getAttribute("name"); const name = event.currentTarget.getAttribute("name");
if (name) { if (name) {
window.open(`https://www.google.com/search?q=${name}%20nz`); // window.open(`https://www.google.com/search?q=${name}%20nz`);
} }
}; };

View File

@ -34,6 +34,7 @@ import "swiper/css/navigation";
import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules"; import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules";
import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { Avatar, AvatarImage } from "@/components/ui/avatar";
import JoditEditor from "jodit-react"; import JoditEditor from "jodit-react";
import { Badge } from "@/components/ui/badge";
const detailSchema = z.object({ const detailSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),
@ -286,12 +287,19 @@ export default function DetailDocument() {
</div> </div>
</RadioGroup> </RadioGroup>
</div> </div>
<div className=" py-3"> <div className="py-3">
<div className="space-y-2"> <div className="space-y-2">
<Label>Tag</Label> <Label>Tag</Label>
<p className="border rounded-md text-blue-600 px-2 py-2"> <div className="flex flex-wrap gap-2">
{detail?.tags} {detail?.tags?.split(",").map((tag, index) => (
</p> <Badge
key={index}
className="border rounded-md px-2 py-2"
>
{tag.trim()}
</Badge>
))}
</div>
</div> </div>
</div> </div>
<div className=" py-3"> <div className=" py-3">

View File

@ -33,6 +33,7 @@ import "swiper/css";
import "swiper/css/navigation"; import "swiper/css/navigation";
import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules"; import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules";
import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { Avatar, AvatarImage } from "@/components/ui/avatar";
import { Badge } from "@/components/ui/badge";
const detailSchema = z.object({ const detailSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),
@ -285,12 +286,19 @@ export default function DetailImage() {
</div> </div>
</RadioGroup> </RadioGroup>
</div> </div>
<div className=" py-3"> <div className="py-3">
<div className="space-y-2"> <div className="space-y-2">
<Label>Tag</Label> <Label>Tag</Label>
<p className="border rounded-md text-blue-600 px-2 py-2"> <div className="flex flex-wrap gap-2">
{detail?.tags} {detail?.tags?.split(",").map((tag, index) => (
</p> <Badge
key={index}
className="border rounded-md px-2 py-2"
>
{tag.trim()}
</Badge>
))}
</div>
</div> </div>
</div> </div>
<div className=" py-3"> <div className=" py-3">

View File

@ -33,6 +33,7 @@ import "swiper/css";
import "swiper/css/navigation"; import "swiper/css/navigation";
import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules"; import { FreeMode, Navigation, Pagination, Thumbs } from "swiper/modules";
import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { Avatar, AvatarImage } from "@/components/ui/avatar";
import { Badge } from "@/components/ui/badge";
const detailSchema = z.object({ const detailSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),
@ -292,12 +293,19 @@ export default function DetailImage() {
</div> </div>
</RadioGroup> </RadioGroup>
</div> </div>
<div className=" py-3"> <div className="py-3">
<div className="space-y-2"> <div className="space-y-2">
<Label>Tag</Label> <Label>Tag</Label>
<p className="border rounded-md text-blue-600 px-2 py-2"> <div className="flex flex-wrap gap-2">
{detail?.tags} {detail?.tags?.split(",").map((tag, index) => (
</p> <Badge
key={index}
className="border rounded-md px-2 py-2"
>
{tag.trim()}
</Badge>
))}
</div>
</div> </div>
</div> </div>
<div className=" py-3"> <div className=" py-3">

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,5 +1,5 @@
export const metadata = { export const metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };

View File

@ -1,5 +1,5 @@
export const metadata = { export const metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -0,0 +1,24 @@
"use client"; // Error components must be Client Components
import { useEffect } from "react";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
import { Info } from "lucide-react";
export default function Error({ error, reset }: {
error: Error & { digest?: string }
reset: () => void
}) {
return (
<div className="space-y-4">
<Alert color="destructive" variant="soft">
<Info className="h-5 w-5" />
<AlertDescription>Something went wrong!</AlertDescription>
</Alert>
<Button onClick={() => reset()} color="destructive" size="sm">
Try again
</Button>
</div>
);
}

View File

@ -0,0 +1,20 @@
import LayoutProvider from "@/providers/layout.provider";
import LayoutContentProvider from "@/providers/content.provider";
import DashCodeSidebar from "@/components/partials/sidebar";
import DashCodeFooter from "@/components/partials/footer";
import ThemeCustomize from "@/components/partials/customizer";
import DashCodeHeader from "@/components/partials/header";
import MountedProvider from "@/providers/mounted.provider";
const layout = async ({ children }: { children: React.ReactNode }) => {
return (
<MountedProvider
isProtected={false}
>
{children}
</MountedProvider>
);
};
export default layout;

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,7 +1,7 @@
import { Metadata } from "next"; import { Metadata } from "next";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashcode Next Js", title: "Media Hub | POLRI",
description: "Dashcode is a popular dashboard template.", description: "Dashcode is a popular dashboard template.",
}; };
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {

Some files were not shown because too many files have changed in this diff Show More