diff --git a/app/details/[slug]/page.tsx b/app/details/[slug]/page.tsx
new file mode 100644
index 0000000..a509a5b
--- /dev/null
+++ b/app/details/[slug]/page.tsx
@@ -0,0 +1,19 @@
+import DetailContent from "@/components/details/details-content";
+import Footer from "@/components/landing-page/footer";
+import Navbar from "@/components/landing-page/navbar";
+import Image from "next/image";
+
+export default function Slug() {
+ return (
+
{articleDetail?.tags ? (
-
- {articleDetail.tags}
-
+ articleDetail.tags
+ .split(",") // pisahkan berdasarkan koma
+ .map((tag: string, index: number) => (
+
+ {tag.trim()}
+
+ ))
) : (
Tidak ada tag
)}
diff --git a/components/landing-page/bottom-article.tsx b/components/landing-page/bottom-article.tsx
index cc6ff72..9fe4651 100644
--- a/components/landing-page/bottom-article.tsx
+++ b/components/landing-page/bottom-article.tsx
@@ -11,6 +11,7 @@ type Article = {
title: string;
description: string;
categoryName: string;
+ slug: string;
createdAt: string;
createdByName: string;
thumbnailUrl: string;
@@ -49,7 +50,7 @@ export default function BottomArticlesSection() {
{articles.map((item) => (
-
+
{articles.map((item) => (
-
+
0 && (
-
+
{/* Item pertama tampil besar */}
-
+
0{i + 2}
diff --git a/components/landing-page/header.tsx b/components/landing-page/header.tsx
index 3393f1a..09db7e3 100644
--- a/components/landing-page/header.tsx
+++ b/components/landing-page/header.tsx
@@ -11,6 +11,7 @@ type Article = {
title: string;
description: string;
categoryName: string;
+ slug: string;
createdAt: string;
createdByName: string;
thumbnailUrl: string;
@@ -60,7 +61,7 @@ export default function Header() {
key={item.id}
className="relative w-full h-[220px] md:h-[400px] overflow-hidden"
>
-
+
-
+
{articles.map((article) => (
-
+
READ MORE >
@@ -144,7 +145,7 @@ export default function HeaderLatest() {
Recent Posts
{recentPosts.map((post, index) => (
-
+
{articles.slice(0, 4).map((article) => (
-
+
{articles.slice(4, 8).map((article) => (
-
+
{
+ const copyUrlArticle = async (slug: any) => {
const url =
`${window.location.protocol}//${window.location.host}` +
- "/detail/" +
- `${id}`;
+ "/details/" +
+ `${slug}`;
try {
await navigator.clipboard.writeText(url);
successToast("Success", "Article Copy to Clipboard");
@@ -263,7 +263,9 @@ export default function ArticleTable() {
- copyUrlArticle(article.id)}>
+ copyUrlArticle(article.slug)}
+ >
Copy Url Article
diff --git a/service/article.ts b/service/article.ts
index 569cef0..4f338cd 100644
--- a/service/article.ts
+++ b/service/article.ts
@@ -106,6 +106,13 @@ export async function getArticleById(id: any) {
return await httpGet(`/articles/${id}`, headers);
}
+export async function getArticleBySlug(slug: any) {
+ const headers = {
+ "content-type": "application/json",
+ };
+ return await httpGet(`/articles/slug/${slug}`, headers);
+}
+
export async function deleteArticle(id: string) {
const headers = {
"content-type": "application/json",