Koneksi internet Anda sedang bermasalah, mohon coba gunakan jaringan lain.Tutup
import React, { useState, useEffect, useCallback, useMemo } from "react";
import * as XLSX from "xlsx";
import {
LineChart, Line, BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip,
ResponsiveContainer, Cell,
} from "recharts";
import {
Stamp, Users, ClipboardList, TrendingUp, FileDown, Plus, Trash2,
ChevronRight, LogOut, Save, MessageSquare, Loader2, Copy, Building2, Lock, CalendarDays, ListChecks, Download, RefreshCw,
} from "lucide-react";
// ---------- embedded seed data (imported from the user's original Google Sheet) ----------
const SEED_DATA = {
"departments": [
{
"id": "sosmed",
"name": "Sosial Media Creative"
}
],
"employees": [
{
"id": "nabila",
"name": "Nabila",
"departmentId": "sosmed"
},
{
"id": "ardi",
"name": "Ardi",
"departmentId": "sosmed"
},
{
"id": "dara",
"name": "Dara",
"departmentId": "sosmed"
},
{
"id": "riza",
"name": "Riza",
"departmentId": "sosmed"
}
],
"entries": {
"nabila:2026-01": {
"indicators": [
{
"id": "i1",
"name": "Membuat content plan mingguan breakdown",
"target": 4.0,
"achievement": 4.0
},
{
"id": "i2",
"name": "Memproduksi konten harian Story DBL (24 hari)",
"target": 24.0,
"achievement": 22.0
},
{
"id": "i3",
"name": "Memproduksi konten harian Story RW (12 hari)",
"target": 12.0,
"achievement": 5.0
},
{
"id": "i4",
"name": "Mengupload konten harian feeds / reels DBL (1 Minggu 3 konten)",
"target": 9.0,
"achievement": 2.0
},
{
"id": "i5",
"name": "Mengupload konten harian feeds / reels RW (1 Minggu 3 konten)",
"target": 9.0,
"achievement": 4.0
},
{
"id": "i6",
"name": "Mengupload konten pada tiktok (4 kali/minggu)",
"target": 16.0,
"achievement": 12.0