feat: initial commit with seeded database and premium ui changes

This commit is contained in:
Dodo
2026-06-11 18:41:42 +07:00
commit edf94ae5c1
1684 changed files with 33073 additions and 0 deletions
@@ -0,0 +1,35 @@
import { CosmicButton } from "@/components/ui/cosmic-button";
import { MapIcon } from "@/components/ui/phosphor-icons";
interface MapPageHeaderProps {
title: string;
description: string;
onOpenMap: () => void;
buttonText: string;
icon?: React.ReactNode;
children?: React.ReactNode;
}
export function MapPageHeader({ title, description, onOpenMap, buttonText, icon, children }: MapPageHeaderProps) {
return (
<div className="flex flex-col justify-between gap-4 border-b pb-5 md:flex-row md:items-center">
<div>
<h1 className="text-3xl font-bold tracking-tight">{title}</h1>
<p className="text-muted-foreground">{description}</p>
</div>
<div className="flex items-center gap-3">
<CosmicButton
as="button"
size="sm"
onClick={onOpenMap}
>
<span className="flex items-center gap-1.5">
{icon ?? <MapIcon className="h-4 w-4" />}
<span className="capitalize">{buttonText}</span>
</span>
</CosmicButton>
{children}
</div>
</div>
);
}
@@ -0,0 +1,82 @@
"use client";
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator
} from "@/components/ui/breadcrumb";
import { HouseIcon, GlobeHemisphereWestIcon, CaretDoubleRightIcon } from "@/components/ui/phosphor-icons";
import type { ReactNode } from "react";
interface MapsBreadcrumbProps {
currentPage: string;
currentIcon?: ReactNode;
isLeafletOpen?: boolean;
onExitMap?: () => void;
}
export function MapsBreadcrumb({ currentPage, currentIcon, isLeafletOpen = false, onExitMap }: MapsBreadcrumbProps) {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/dashboard" className="flex items-center gap-1">
<HouseIcon className="size-3.5" />
Beranda
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<CaretDoubleRightIcon />
</BreadcrumbSeparator>
{!isLeafletOpen ? (
<BreadcrumbItem>
<BreadcrumbPage className="flex items-center gap-1">
{currentIcon}
{currentPage}
</BreadcrumbPage>
</BreadcrumbItem>
) : (
<>
<BreadcrumbItem>
{onExitMap ? (
<BreadcrumbLink
render={<button type="button" onClick={onExitMap} />}
className="flex items-center gap-1"
>
{currentIcon}
{currentPage}
</BreadcrumbLink>
) : (
<BreadcrumbLink
href={
currentPage === "Peta Kemiskinan" || currentPage === "Poverty" ? "/dashboard/poverty" :
currentPage === "Lahan dan Jalan" || currentPage === "Lands and Roads" ? "/dashboard/land" :
currentPage === "SPBU dan Charger" || currentPage === "Gas Stations" ? "/dashboard/gas-station" :
"/dashboard"
}
className="flex items-center gap-1"
>
{currentIcon}
{currentPage}
</BreadcrumbLink>
)}
</BreadcrumbItem>
<BreadcrumbSeparator>
<CaretDoubleRightIcon />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbPage className="flex items-center gap-1">
<GlobeHemisphereWestIcon className="size-3.5" />
Peta
</BreadcrumbPage>
</BreadcrumbItem>
</>
)}
</BreadcrumbList>
</Breadcrumb>
);
}