satupeta-main/app/(modules)/maps/components/sidebar/layer-controls/layer-control-item/layer-actions.tsx

59 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

2026-01-27 02:31:12 +00:00
import { Button } from "@/shared/components/ui/button";
import { Info, Trash2, Download, MousePointer2 } from "lucide-react";
import L from "leaflet";
import { ActiveLayer } from "@/app/(modules)/maps/state/active-layers";
interface LayerActionsProps {
layer: ActiveLayer;
onZoom: (bounds?: L.LatLngBoundsExpression | null) => void;
onInfo: () => void;
onRemove: () => void;
onDownload: () => void;
}
export const LayerActions = ({
layer,
onZoom,
onInfo,
onRemove,
onDownload,
}: LayerActionsProps) => {
return (
<div className="text-sm flex justify-between items-center border text-zinc-950 border-zinc-200">
<Button
variant="ghost"
className="flex items-center gap-1 hover:bg-transparent font-normal"
onClick={() => layer.layer.bounds && onZoom(layer.layer.bounds)}
>
<MousePointer2 size={24} />
<span>Pusatkan</span>
</Button>
<div className="h-full w-px bg-gray-200" />
<Button
variant="ghost"
className="flex items-center gap-1 hover:bg-transparent font-normal"
onClick={onInfo}
>
<Info size={24} />
<span>Informasi</span>
</Button>
<div className="h-full w-px bg-gray-200" />
<Button
variant="ghost"
className="flex items-center gap-1 hover:bg-transparent font-normal"
onClick={onRemove}
>
<Trash2 size={24} />
</Button>
<div className="h-full w-px bg-gray-200" />
<Button
variant="ghost"
className="flex items-center gap-1 hover:bg-transparent font-normal"
onClick={onDownload}
>
<Download size={24} />
</Button>
</div>
);
};