import type { ExpressionInputType } from 'maplibre-gl'; export type DataFrame = Record[]; export type Color = string; /** * Opens in a new tab when clicked (standard anchor behaviour). */ export interface LinkHref { href: string; label: string; /** Optional SVG string to display as an icon next to the label */ icon?: string; /** Optional side-effect callback invoked before the href is followed. Does not intercept or prevent navigation. */ onClick?: () => void; /** * Optional filename hint passed to the browser as the `download` attribute on the anchor. * Browsers honor this for same-origin URLs (cross-origin downloads ignore it and fall back * to the server-provided filename). */ download?: string; } /** * Runs a client-side callback. Renders as a menu button, not an anchor. */ export interface LinkAction { onClick: () => void; label: string; icon?: string; } /** * Menu item in LinksMenu: either a navigational link or an action. */ export type Link = LinkHref | LinkAction; export declare function isLinkHref(link: Link): link is LinkHref; /** * Root CSS class of the LinksMenu wrapper. Consumers can use this to filter the menu from DOM * clones (e.g. image export). LinksMenu.svelte applies it via `class={LINKS_MENU_CLASS}`, so the * single source of truth is this constant (scoped CSS still matches via the `.links-menu` rule in * the component's