feat: add multi-user admin panel and featured partners toggle on home page
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { Trash2, Save, Edit2, X } from "lucide-react";
|
||||
import { updatePartner } from "../../actions";
|
||||
import { Trash2, Save, Edit2, X, Star } from "lucide-react";
|
||||
import { updatePartner, togglePartnerFeatured } from "../../actions";
|
||||
import { useRouter } from "next/navigation";
|
||||
import Image from "next/image";
|
||||
|
||||
@@ -11,6 +11,7 @@ export default function PartnerRow({ partner, onDelete }: { partner: any, onDele
|
||||
const [name, setName] = useState(partner.name);
|
||||
const [displayOrder, setDisplayOrder] = useState(partner.display_order);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [isFeatured, setIsFeatured] = useState(partner.is_featured);
|
||||
const router = useRouter();
|
||||
|
||||
const handleSave = async () => {
|
||||
@@ -25,6 +26,18 @@ export default function PartnerRow({ partner, onDelete }: { partner: any, onDele
|
||||
}
|
||||
};
|
||||
|
||||
const handleToggleFeatured = async () => {
|
||||
const nextState = !isFeatured;
|
||||
setIsFeatured(nextState);
|
||||
const res = await togglePartnerFeatured(partner.id, nextState);
|
||||
if (res.success) {
|
||||
router.refresh();
|
||||
} else {
|
||||
setIsFeatured(!nextState);
|
||||
alert("Öne çıkarma durumu güncellenemedi");
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<tr className="hover:bg-white/[0.02] transition-colors border-b border-white/10 last:border-0">
|
||||
<td className="px-6 py-4">
|
||||
@@ -73,6 +86,19 @@ export default function PartnerRow({ partner, onDelete }: { partner: any, onDele
|
||||
<div className="font-bold text-white tracking-wide">{partner.name}</div>
|
||||
)}
|
||||
</td>
|
||||
<td className="px-6 py-4">
|
||||
<button
|
||||
onClick={handleToggleFeatured}
|
||||
className={`flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs font-bold transition-all ${
|
||||
isFeatured
|
||||
? "bg-yellow-500/10 text-yellow-500 hover:bg-yellow-500/20"
|
||||
: "bg-white/5 text-white/20 hover:text-white/60 hover:bg-white/10"
|
||||
}`}
|
||||
>
|
||||
<Star className={`w-4 h-4 ${isFeatured ? "fill-yellow-500" : ""}`} />
|
||||
{isFeatured ? "Öne Çıkarıldı" : "Öne Çıkar"}
|
||||
</button>
|
||||
</td>
|
||||
<td className="px-6 py-4 text-right">
|
||||
<div className="flex justify-end items-center gap-2">
|
||||
{isEditing ? (
|
||||
|
||||
Reference in New Issue
Block a user