feat: create content Image, edit content, publish planning,edit task,edit blog,create blog

This commit is contained in:
Anang Yusman 2024-12-25 01:20:41 +07:00
commit 990fbf44a5
156 changed files with 12001 additions and 1714 deletions

View File

@ -1,24 +1,26 @@
FROM node:21-alpine
FROM node:23.5.0-alpine
ENV PORT 3000
# Install pnpm globally
RUN npm install -g pnpm
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Installing dependencies
COPY package*.json /usr/src/app/
COPY package*.json pnpm-lock.yaml* /usr/src/app/
# RUN npm install --force
RUN npm install -g npm@latest
RUN npm install next --legacy-peer-deps
# Install dependencies using pnpm
RUN pnpm install --frozen-lockfile
# Copying source files
COPY . /usr/src/app
# Building app
RUN npm run build
RUN pnpm run build
EXPOSE 3000
# Running the app
CMD "npm" "run" "start"
CMD ["pnpm", "run", "start"]

View File

@ -1,14 +1,14 @@
'use server'
import { redirect } from "next/navigation";
import { revalidatePath } from "next/cache";
import {signIn} from "@/lib/auth";
export const loginUser = async (data: any) => {
try {
const response = await signIn("credentials", {
email: data.email,
password: data.password,
redirect: false,
});
const response = undefined;
// await signIn("credentials", {
// email: data.email,
// password: data.password,
// redirect: false,
// });
return response;
} catch (error) {
throw new Error(error as string);

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

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

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -2,13 +2,14 @@ import PageTitle from "@/components/page-title";
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>
<PageTitle className="mb-6" />
{children}</>;
<PageTitle className="mb-6" />
{children}
</>
};
export default Layout;

View File

@ -1,3 +1,5 @@
'use client'
import { StatisticsBlock } from "@/components/blocks/statistics-block";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import DashboardDropdown from "@/components/dashboard-dropdown";

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

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

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -8,7 +8,7 @@ const LayerLinks = ({ height = 350 }: { height?: number }) => {
const onClick = (event: React.MouseEvent<SVGPathElement>) => {
const name = event.currentTarget.getAttribute("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

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,6 +1,6 @@
export const metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,6 +1,6 @@
export const metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const layout = ({ children }: { children: React.ReactNode }) => {

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -1,8 +1,8 @@
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
title: "Media Hub | POLRI",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -2,7 +2,7 @@ import { Metadata } from "next";
export const metadata: Metadata = {
title: "Dashcode Next Js",
description: "Dashcode is a popular dashboard template.",
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
};
const Layout = ({ children }: { children: React.ReactNode }) => {
return <>{children}</>;

View File

@ -101,7 +101,7 @@ const FilterPage = () => {
return (
<div className="flex flex-col">
{/* Header */}
<div className="flex flex-col md:flex-row items-start gap-5 p-10 bg-gray-200">
<div className="flex flex-col md:flex-row items-start gap-5 p-10 bg-[#f7f7f7] dark:bg-black">
<p>
{" "}
Audio {">"} <span className="font-bold">Semua Audio</span>
@ -114,11 +114,14 @@ const FilterPage = () => {
<Reveal>
{/* Sidebar Kiri */}
<div className="lg:w-1/4 w-max bg-white p-4 rounded-lg shadow-md">
<h2 className="text-lg font-semibold mb-4">Filter</h2>
<h2 className="text-lg font-semibold mb-4">
<Icon icon="stash:filter-light" fontSize={30} />
Filter
</h2>
<div className="space-y-6">
{/* Pencarian */}
<div>
<label htmlFor="search" className="block text-sm font-medium text-gray-700">
<label htmlFor="search" className="block text-sm font-medium text-gray-700 dark:text-white">
Pencarian
</label>
<input type="text" id="search" placeholder="Cari judul..." className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
@ -126,7 +129,7 @@ const FilterPage = () => {
{/* Tahun & Bulan */}
<div>
<label htmlFor="month" className="block text-sm font-medium text-gray-700">
<label htmlFor="month" className="block text-sm font-medium text-gray-700 dark:text-white">
Pilih Tahun & Bulan
</label>
<input type="month" id="month" className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
@ -134,7 +137,7 @@ const FilterPage = () => {
{/* Tanggal */}
<div>
<label htmlFor="date" className="block text-sm font-medium text-gray-700">
<label htmlFor="date" className="block text-sm font-medium text-gray-700 dark:text-white">
Pilih Tanggal
</label>
<input type="date" id="date" className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
@ -142,13 +145,13 @@ const FilterPage = () => {
{/* Kategori */}
<div>
<h3 className="text-sm font-medium text-gray-700">Kategori</h3>
<h3 className="text-sm font-medium text-gray-700 dark:text-white">Kategori</h3>
<ul className="mt-2 space-y-2">
{categories.map((category) => (
<li key={category?.id}>
<label className="inline-flex items-center">
<Checkbox id="terms" />
<span className="ml-2 text-gray-700">{category.title}</span>
<span className="ml-2 text-gray-700 dark:text-white">{category.title}</span>
</label>
</li>
))}
@ -158,18 +161,24 @@ const FilterPage = () => {
<div className="border-t border-black my-4"></div>
{/* Garis */}
<div>
<h3 className="text-sm font-medium text-gray-700">Format Foto</h3>
<h3 className="text-sm font-medium text-gray-700 dark:text-white">Format Foto</h3>
<ul className="mt-2 space-y-2">
{formatAudio.map((format) => (
<li key={format?.id}>
<label className="inline-flex items-center">
<Checkbox id="terms" />
<span className="ml-2 text-gray-700">{format.title}</span>
<span className="ml-2 text-gray-700 dark:text-white">{format.title}</span>
</label>
</li>
))}
</ul>
</div>
<div className="border-t border-black dark:border-white my-4"></div>
<div className="text-center">
<a href="#" className="text-[#bb3523]">
<b>Reset Filter</b>
</a>
</div>
</div>
</div>
</Reveal>
@ -187,8 +196,12 @@ const FilterPage = () => {
{/* Card */}
<div className=" grid grid-cols-1 gap-6 ">
{audioData?.map((audio: any) => (
<Link href={`/audio/detail/${audio?.slug}`} key={audio?.id} className="flex flex-col sm:flex-row items-center hover:scale-110 transition-transform duration-300 bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full">
<div className="flex items-center justify-center bg-red-500 text-white rounded-lg w-16 h-16">
<Link
href={`/audio/detail/${audio?.slug}`}
key={audio?.id}
className="flex flex-col sm:flex-row items-center hover:scale-110 transition-transform duration-300 bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full"
>
<div className="flex items-center justify-center bg-[#bb3523] text-white rounded-lg w-16 h-16">
<svg width="32" height="34" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
<path
d="M23.404 0.452014C23.7033 0.35857 24.0204 0.336816 24.3297 0.388509C24.639 0.440203 24.9318 0.563895 25.1845 0.749599C25.4371 0.935304 25.6426 1.17782 25.7843 1.45756C25.9259 1.73731 25.9998 2.04644 26 2.36001V14.414C25.3462 14.2296 24.6766 14.1064 24 14.046V8.36001L10 12.736V27C10 28.1264 9.6197 29.2197 8.92071 30.1029C8.22172 30.9861 7.24499 31.6075 6.14877 31.8663C5.05255 32.125 3.90107 32.0061 2.88089 31.5287C1.86071 31.0514 1.03159 30.2435 0.52787 29.2361C0.024152 28.2286 -0.124656 27.0806 0.105556 25.9781C0.335768 24.8755 0.931513 23.883 1.79627 23.1613C2.66102 22.4396 3.74413 22.031 4.87009 22.0017C5.99606 21.9724 7.09893 22.3242 8.00001 23V6.73601C7.99982 6.30956 8.13596 5.8942 8.38854 5.55059C8.64112 5.20698 8.99692 4.9531 9.40401 4.82601L23.404 0.452014ZM10 10.64L24 6.26601V2.36001L10 6.73601V10.64ZM5.00001 24C4.20436 24 3.44129 24.3161 2.87869 24.8787C2.31608 25.4413 2.00001 26.2044 2.00001 27C2.00001 27.7957 2.31608 28.5587 2.87869 29.1213C3.44129 29.6839 4.20436 30 5.00001 30C5.79566 30 6.55872 29.6839 7.12133 29.1213C7.68394 28.5587 8.00001 27.7957 8.00001 27C8.00001 26.2044 7.68394 25.4413 7.12133 24.8787C6.55872 24.3161 5.79566 24 5.00001 24ZM32 25C32 27.387 31.0518 29.6761 29.364 31.364C27.6761 33.0518 25.387 34 23 34C20.6131 34 18.3239 33.0518 16.636 31.364C14.9482 29.6761 14 27.387 14 25C14 22.6131 14.9482 20.3239 16.636 18.6361C18.3239 16.9482 20.6131 16 23 16C25.387 16 27.6761 16.9482 29.364 18.6361C31.0518 20.3239 32 22.6131 32 25ZM27.47 24.128L21.482 20.828C21.3298 20.7443 21.1583 20.7016 20.9846 20.7043C20.8108 20.707 20.6408 20.7549 20.4912 20.8433C20.3416 20.9317 20.2176 21.0576 20.1315 21.2086C20.0453 21.3595 20 21.5302 20 21.704V28.304C20 28.4778 20.0453 28.6486 20.1315 28.7995C20.2176 28.9504 20.3416 29.0763 20.4912 29.1647C20.6408 29.2531 20.8108 29.301 20.9846 29.3037C21.1583 29.3064 21.3298 29.2638 21.482 29.18L27.47 25.88C27.6268 25.7937 27.7575 25.6669 27.8486 25.5128C27.9397 25.3587 27.9877 25.183 27.9877 25.004C27.9877 24.825 27.9397 24.6493 27.8486 24.4952C27.7575 24.3412 27.6268 24.2143 27.47 24.128Z"

View File

@ -4,7 +4,7 @@ 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 { auth } from "@/lib/auth";
import { redirect } from "@/components/navigation";
import Footer from "@/components/landing-page/footer";
import Navbar from "@/components/landing-page/navbar";

View File

@ -4,7 +4,7 @@ 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 { auth } from "@/lib/auth";
import { redirect } from "@/components/navigation";
import Navbar from "@/components/landing-page/navbar";
import Footer from "@/components/landing-page/footer";

View File

@ -18,6 +18,7 @@ const DetailDocument = () => {
const params = useParams();
const slug = params?.slug;
const [detailDataDocument, setDetailDataDocument] = useState<any>();
const [selectedDocument, setSelectedDocument] = useState(0);
useEffect(() => {
initFetch();
@ -39,19 +40,34 @@ const DetailDocument = () => {
return (
<>
<div className="min-h-screen px-4 md:px-24 py-4">
{/* Container Utama */}
<div className="px-4 md:px-24 py-4">
<div className="rounded-md overflow-hidden md:flex">
{/* Bagian Kiri */}
<div className="md:w-3/4">
<div className="relative h-full rounded-lg bg-gray-600">
<img src="/assets/text-icon.png" className="flex items-center self-center" width={40} height={40} />
<div className="relative">
<img src={detailDataDocument?.files[selectedDocument]?.url} alt="Main" className="rounded-lg w-auto h-fit" />
<div className="absolute top-4 left-4"></div>
</div>
{/* Footer Informasi */}
<div className="p-4 text-sm text-gray-500 flex justify-between items-center border-t mt-4">
<p className="flex flex-row items-center">
oleh&nbsp;<span className="font-semibold text-black">{detailDataDocument?.uploadedBy?.userLevel?.name}</span>&nbsp;|&nbsp;Diupdate pada {detailDataDocument?.updatedAt} WIB&nbsp;|&nbsp;
<Icon icon="formkit:eye" width="15" height="15" />
&nbsp;
{detailDataDocument?.clickCount}
</p>
<p>Kreator: {detailDataDocument?.creatorName}</p>
</div>
{/* Keterangan */}
<div className="md:w-3/4">
<h1 className="flex flex-row font-bold text-2xl mx-5 my-8">{detailDataDocument?.title}</h1>
<div dangerouslySetInnerHTML={{ __html: detailDataDocument?.htmlDescription }} />
</div>
</div>
{/* Bagian Kanan */}
<div className="md:w-1/4 p-4 bg-gray-300 rounded-lg mx-4">
<div className="md:w-1/4 p-4 bg-[#f7f7f7] h-fit rounded-lg mx-4">
<div className="flex flex-col mb-3 items-center justify-center cursor-pointer">
<svg xmlns="http://www.w3.org/2000/svg" width="2.5em" height="2.5em" viewBox="0 0 24 24">
<path fill="black" d="m17 18l-5-2.18L7 18V5h10m0-2H7a2 2 0 0 0-2 2v16l7-3l7 3V5a2 2 0 0 0-2-2" />
@ -74,9 +90,7 @@ const DetailDocument = () => {
{/* Opsi Ukuran Foto */}
<h4 className="flex text-lg justify-center items-center font-semibold my-3">Opsi Ukuran Foto</h4>
<div className="border-t border-black my-4"></div>
<div className="space-y-2">
{sizes.map((size) => (
<label key={size.label} className="flex items-center space-x-2 cursor-pointer">
@ -105,30 +119,15 @@ const DetailDocument = () => {
</button>
</div>
</div>
{/* Footer Informasi */}
<div className="p-4 text-sm text-gray-500 flex justify-between items-center border-t mt-4">
<p className="flex flex-row items-center">
oleh&nbsp;<span className="font-semibold text-black">{detailDataDocument?.uploadedBy?.userLevel?.name}</span>&nbsp;|&nbsp;Diupdate pada {detailDataDocument?.updatedAt} WIB&nbsp;|&nbsp;
<Icon icon="formkit:eye" width="15" height="15" />
&nbsp;
{detailDataDocument?.clickCount}
</p>
<p>Kreator: {detailDataDocument?.creatorName}</p>
</div>
{/* Keterangan */}
<div className="md:w-3/4">
<h1 className="flex flex-row font-bold text-2xl mx-5 my-8">{detailDataDocument?.title}</h1>
<div dangerouslySetInnerHTML={{ __html: detailDataDocument?.htmlDescription }} />
</div>
</div>
<div className="w-full mb-8">
{/* Comment */}
<div className="flex flex-col my-16 gap-5 p-10 bg-gray-300">
<p className="flex items-start text-lg">Berikan Komentar</p>
<Textarea placeholder="Type your comments here." className="flex items-start justify-center" />
<button className="flex items-start bg-[#bb3523] rounded-lg w-fit px-4 py-1">Kirim</button>
<div className="flex flex-col my-16 p-10 bg-[#f7f7f7]">
<div className="gap-5 flex flex-col px-4 lg:px-20">
<p className="flex items-start text-lg">Berikan Komentar</p>
<Textarea placeholder="Type your comments here." className="flex w-full" />
<button className="flex items-start bg-[#bb3523] rounded-lg w-fit px-4 py-1">Kirim</button>
</div>
</div>
{/* Konten Serupa */}

View File

@ -105,7 +105,7 @@ const DocumentPage = () => {
return (
<div className="flex flex-col">
{/* Header */}
<div className="flex flex-col md:flex-row items-start gap-5 p-10 bg-gray-200">
<div className="flex flex-col md:flex-row items-start gap-5 p-10 bg-[#f7f7f7] dark:bg-black">
<p>
{" "}
Teks {">"} <span className="font-bold">Semua Teks</span>
@ -116,63 +116,70 @@ const DocumentPage = () => {
{/* Left */}
<div className="flex flex-col lg:flex-row gap-6 p-4">
{/* Sidebar Kiri */}
<div className="lg:w-1/4 w-full bg-white p-4 rounded-lg shadow-md">
<h2 className="text-lg font-semibold mb-4">Filter</h2>
<div className="lg:w-1/4 w-full bg-[#f7f7f7] dark:bg-black p-4 rounded-lg shadow-md">
<h2 className="text-xl font-semibold mb-4 flex items-center gap-1">
<Icon icon="stash:filter-light" fontSize={30} />
Filter
</h2>
<div className="border-t border-black dark:border-white my-4"></div>
<div className="space-y-6">
{/* Pencarian */}
<div>
<label htmlFor="search" className="block text-sm font-medium text-gray-700">
<label htmlFor="search" className="block text-sm font-medium text-gray-700 dark:text-white">
Pencarian
</label>
<input type="text" id="search" placeholder="Cari judul..." className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
</div>
{/* Tahun & Bulan */}
<div>
<label htmlFor="month" className="block text-sm font-medium text-gray-700">
<label htmlFor="month" className="block text-sm font-medium text-gray-700 dark:text-white">
Pilih Tahun & Bulan
</label>
<input type="month" id="month" className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
</div>
{/* Tanggal */}
<div>
<label htmlFor="date" className="block text-sm font-medium text-gray-700">
<label htmlFor="date" className="block text-sm font-medium text-gray-700 dark:text-white">
Pilih Tanggal
</label>
<input type="date" id="date" className="mt-1 w-full border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500" />
</div>
{/* Kategori */}
<div>
<h3 className="text-sm font-medium text-gray-700">Kategori</h3>
<h3 className="text-sm font-medium text-gray-700 dark:text-white">Kategori</h3>
<ul className="mt-2 space-y-2">
{categories.map((category) => (
<li key={category?.id}>
<label className="inline-flex items-center">
<Checkbox id="terms" />
<span className="ml-2 text-gray-700">{category.title}</span>
<span className="ml-2 text-gray-700 dark:text-white">{category.title}</span>
</label>
</li>
))}
</ul>
</div>
{/* Garis */}
<div className="border-t border-black my-4"></div>
<div className="border-t border-black dark:border-white my-4"></div>
{/* Garis */}
<div>
<h3 className="text-sm font-medium text-gray-700">Format Foto</h3>
<h3 className="text-sm font-medium text-gray-700 dark:text-white">Format Foto</h3>
<ul className="mt-2 space-y-2">
{formatAudio.map((format) => (
<li key={format?.id}>
<label className="inline-flex items-center">
<Checkbox id="terms" />
<span className="ml-2 text-gray-700">{format.title}</span>
<span className="ml-2 text-gray-700 dark:text-white">{format.title}</span>
</label>
</li>
))}
</ul>
</div>
<div className="border-t border-black dark:border-white my-4"></div>
<div className="text-center">
<a href="#" className="text-[#bb3523]">
<b>Reset Filter</b>
</a>
</div>
</div>
</div>
@ -203,12 +210,12 @@ const DocumentPage = () => {
</svg>
</div>
<div className="flex flex-col flex-1">
<div className="text-gray-500 dark:text-gray-400 flex flex-row text-sm">
<div className="flex flex-col flex-1 gap-2">
<div className="text-gray-500 dark:text-gray-400 flex flex-row items-center gap-2 text-xs">
{formatDateToIndonesian(new Date(document?.createdAt))} {document?.timezone ? document?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" /> 518
</div>
<div className="font-semibold text-gray-900 dark:text-white mt-1 text-sm">{document?.title}</div>
<div className="flex gap-2 items-center text-sm text-red-500 dark:text-red-500">
<div className="flex gap-2 items-center text-xs text-red-500 dark:text-red-500">
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 512 512">
<path fill="#f00" d="M224 30v256h-64l96 128l96-128h-64V30zM32 434v48h448v-48z" />
</svg>

View File

@ -4,7 +4,7 @@ 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 { auth } from "@/lib/auth";
import { redirect } from "@/components/navigation";
import Footer from "@/components/landing-page/footer";
import Navbar from "@/components/landing-page/navbar";

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

@ -4,7 +4,7 @@ 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 { auth } from "@/lib/auth";
import { redirect } from "@/components/navigation";
import Navbar from "@/components/landing-page/navbar";
import Footer from "@/components/landing-page/footer";

View File

@ -4,7 +4,7 @@ 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 { auth } from "@/lib/auth";
import { redirect } from "@/components/navigation";
import Navbar from "@/components/landing-page/navbar";
import Footer from "@/components/landing-page/footer";

View File

@ -1,8 +1,10 @@
"use client";
import { Reveal } from "@/components/landing-page/Reveal";
import { error, loading, successCallback } from "@/config/swal";
import { getFeedback, postUserFeedback } from "@/service/landing/landing";
import React, { useEffect, useState } from "react";
import { any } from "zod";
interface RatingProps {
label: string;
@ -32,6 +34,12 @@ const Rating: React.FC<RatingProps> = ({ label, onRate }) => {
};
const FeedbackForm: React.FC = () => {
const [ratings, setRatings] = useState({
accessibility: 0,
appearance: 0,
content: 0,
});
useEffect(() => {
async function initState() {
const response = await getFeedback();
@ -41,22 +49,71 @@ const FeedbackForm: React.FC = () => {
initState();
}, []);
const [ratings, setRatings] = useState({
accessibility: 0,
appearance: 0,
content: 0,
});
const handleRatingChange = (field: keyof typeof ratings, value: number) => {
setRatings((prev) => ({ ...prev, [field]: value }));
type Feedback = {
feedbackId: any;
score: any;
};
const [userFeedbacks, setUserFeedbacks] = useState<Feedback[]>([]);
const [hasMounted, setHasMounted] = useState(false);
const handleSubmit = async () => {
const response = await postUserFeedback();
console.log("Feedback submitted:", ratings);
alert("Terima kasih atas feedback Anda!");
const handleRatingChange = (id: any, score: any) => {
const listData = [...userFeedbacks];
const dataIdx = userFeedbacks.findIndex((o) => o.feedbackId === id);
console.log("idx :", dataIdx);
console.log("Before :", listData);
if (dataIdx !== -1) {
console.log("update");
listData[dataIdx].score = score;
} else {
const data = {
feedbackId: id,
score,
};
listData.push(data);
}
setUserFeedbacks(listData);
console.log("After :", userFeedbacks);
};
const handleSubmit = async () => {
loading();
console.log("Save Feedback :", userFeedbacks);
const response = await postUserFeedback();
close();
if (response.error) {
error(response.message);
return false;
}
successCallback("Terima kasih, feedback Anda telah terkirim");
};
async function onSubmit() {
// loading();
// let finalData = {
// name: data.name,
// email: data.email,
// title : data.title,
// message: data.title
// }
// console.log(finalData);
// const response = await sendMessage(finalData);
// close();
// successCallback();
}
// Hooks
useEffect(() => {
setHasMounted(true);
}, []);
// Render
if (!hasMounted) return null;
return (
<Reveal>

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