import { ChevronRight, type LucideIcon } from "lucide-react";
import type { ReactNode } from "react";
import { cn } from "@/lib/utils";
import {
MAP_COMPACT_RADIUS_CLASS_NAME,
MAP_ICON_CELL_RADIUS_CLASS_NAME,
MAP_MAJOR_PANEL_RADIUS_CLASS_NAME,
MAP_READABLE_RADIUS_CLASS_NAME,
MAP_READABLE_SURFACE_CLASS_NAME,
MAP_READABLE_SURFACE_STRONG_CLASS_NAME,
MAP_TOOL_PANEL_SURFACE_CLASS_NAME
} from "./map-control-styles";
export type MapControlPanelProps = {
title: string;
description?: string;
icon: LucideIcon;
widthClassName?: string;
visible?: boolean;
children: ReactNode;
};
export function MapControlPanel({
title,
description,
icon: Icon,
widthClassName = "w-[292px]",
visible = true,
children
}: MapControlPanelProps) {
return (
{title}
{description ?
{description}
: null}
{children}
);
}
export function MapPanelSection({ title, children }: { title: string; children: ReactNode }) {
return (
);
}
export type MapModeButtonProps = {
icon: LucideIcon;
label: string;
active?: boolean;
disabled?: boolean;
onClick?: () => void;
};
export function MapModeButton({ icon: Icon, label, active = false, disabled = false, onClick }: MapModeButtonProps) {
return (
);
}
export function MapActionChip({
icon: Icon,
label,
disabled = false,
onClick
}: {
icon: LucideIcon;
label: string;
disabled?: boolean;
onClick?: () => void;
}) {
return (
);
}
export type MapActionRowProps = {
icon: LucideIcon;
label: string;
description: string;
status?: string;
strong?: boolean;
variant?: "default" | "primary";
selected?: boolean;
muted?: boolean;
disabled?: boolean;
tone?: "default" | "danger";
onClick?: () => void;
};
export function MapActionRow({
icon: Icon,
label,
description,
status,
strong = false,
variant = "default",
selected = false,
muted = false,
disabled = false,
tone = "default",
onClick
}: MapActionRowProps) {
const isDanger = tone === "danger";
const isPrimary = variant === "primary";
return (
);
}
export function MapMetricTile({ label, value }: { label: string; value: string }) {
return (
);
}