/* eslint-disable @typescript-eslint/no-explicit-any */ import { Head, Link, usePage } from '@inertiajs/react'; import React from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Separator } from '@/components/ui/separator'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { Input } from '@/components/ui/input'; import AppLayout from '@/layouts/app-layout'; import { Search } from 'lucide-react'; import { useState, useEffect } from 'react'; import { useDebounce } from 'use-debounce'; import { router } from '@inertiajs/react'; import * as XLSX from 'xlsx'; interface Position { id: number; name: string; employees_count: number; } interface PageProps { positions: Position[]; filters: { search?: string }; [key: string]: unknown; } export default function Index({ positions, filters }: PageProps) { const [search, setSearch] = useState(filters.search || ''); const [debouncedSearch] = useDebounce(search, 500); useEffect(() => { if (debouncedSearch !== filters.search) { router.get( '/admin/positions', { search: debouncedSearch }, { preserveState: true, replace: true } ); } }, [debouncedSearch]); const exportExcel = () => { const rows = positions.map((p, i) => ({ No: i + 1, 'Nama Jabatan': p.name, 'Total Karyawan': p.employees_count, })); const ws = XLSX.utils.json_to_sheet(rows); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Jabatan'); XLSX.writeFile(wb, `Data_Jabatan_${new Date().toISOString().slice(0, 10)}.xlsx`); }; return (
{/* Page Header */}

Data Jabatan

Kelola level dan posisi pekerjaan.

Daftar Jabatan
setSearch(e.target.value)} />
{positions.length > 0 ? ( positions.map((pos) => ( )) ) : ( )}
Nama Jabatan Total Karyawan Aksi
{pos.name} 0 ? 'bg-blue-100 text-blue-800' : 'bg-gray-100 text-gray-600'}`}> {pos.employees_count} {pos.employees_count > 0 ? (

Tidak bisa dihapus: Digunakan oleh {pos.employees_count} karyawan.

) : ( { if (!confirm('Hapus jabatan ini?')) e.preventDefault(); }} className="inline-flex items-center justify-center rounded-md text-sm font-medium h-9 px-3 text-red-600 hover:bg-red-50" > Hapus )}
Belum ada data jabatan.
); }