feat: add kependudukan seeders, API routes, year filter, and navbar menu

- Add Prisma models: DataBanjar, DistribusiAgama, DistribusiUmur, MigrasiPenduduk, DinamikaPenduduk
- Create seeders for all kependudukan models with year 2026 data
- Register Kependudukan API routes in route.ts
- Update API findMany endpoints to make tahun parameter optional
- Add YearFilter reusable component for admin pages
- Update 4 kependudukan admin pages with year filter UI
- Fix Mantine color array in AdminThemeProvider (add 10th element)
- Fix invalid Mantine color scale in paguTable.tsx (gray.50 -> gray.1)
- Add Kependudukan menu to navbar-list-menu.ts
- Fix Bun JSON import resolution with loadJsonData helper
- Update 74 seeder files to use dynamic JSON loading

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-04-10 11:54:36 +08:00
parent 5e822f0b05
commit 8b14c6ce44
146 changed files with 3051 additions and 201 deletions

View File

@@ -1,6 +1,8 @@
import prisma from "@/lib/prisma";
import kategoriDesaAntiKorupsi from "../../../data/landing-page/desa-anti-korupsi/kategoriDesaAntiKorupsi.json"
import desaAntiKorupsi from "../../../data/landing-page/desa-anti-korupsi/desaantiKorpusi.json"
import { loadJsonData } from "../../../load-json";
const kategoriDesaAntiKorupsi = loadJsonData("landing-page/desa-anti-korupsi/kategoriDesaAntiKorupsi.json");
const desaAntiKorupsi = loadJsonData("landing-page/desa-anti-korupsi/desaantiKorpusi.json");
export async function seedDesaAntiKorupsi() {
for (const k of kategoriDesaAntiKorupsi) {

View File

@@ -1,6 +1,8 @@
import prisma from "@/lib/prisma";
import prestasiDesa from "../../../data/landing-page/prestasi-desa/prestasi-desa.json"
import kategoriPrestasiDesa from "../../../data/landing-page/prestasi-desa/kategori-prestasi.json"
import { loadJsonData } from "../../../load-json";
const prestasiDesa = loadJsonData("landing-page/prestasi-desa/prestasi-desa.json");
const kategoriPrestasiDesa = loadJsonData("landing-page/prestasi-desa/kategori-prestasi.json");
export async function seedPrestasiDesa() {

View File

@@ -1,5 +1,7 @@
import prisma from "@/lib/prisma";
import mediaSosial from "../../../data/landing-page/profile/mediaSosial.json"
import { loadJsonData } from "../../../load-json";
const mediaSosial = loadJsonData("landing-page/profile/mediaSosial.json");
export async function seedMediaSosial() {
console.log("🔄 Seeding Media Sosial...");

View File

@@ -1,5 +1,7 @@
import prisma from "@/lib/prisma";
import profilePejabatDesa from "../../../data/landing-page/profile/profile.json";
import { loadJsonData } from "../../../load-json";
const profilePejabatDesa = loadJsonData("landing-page/profile/profile.json");
export async function seedProfileLP() {
console.log("🔄 Seeding Pejabat Desa...");

View File

@@ -1,5 +1,7 @@
import prisma from "@/lib/prisma";
import programInovasi from "../../../data/landing-page/profile/programInovasi.json";
import { loadJsonData } from "../../../load-json";
const programInovasi = loadJsonData("landing-page/profile/programInovasi.json");
export async function seedProgramInovasi() {
console.log("🔄 Seeding Program Inovasi...");

View File

@@ -1,5 +1,7 @@
import prisma from "@/lib/prisma";
import sdgsDesa from "../../../data/landing-page/sdgs-desa/sdgs-desa.json";
import { loadJsonData } from "../../../load-json";
const sdgsDesa = loadJsonData("landing-page/sdgs-desa/sdgs-desa.json");
export async function seedSDGSDesa() {
console.log("🔄 Seeding SDGS Desa...");