import type { Component, Snippet } from 'svelte'; export type BulkActionVariant = 'primary' | 'secondary' | 'ghost' | 'outline' | 'destructive'; export type BulkActionBarSize = 'xs' | 'sm'; export type BulkActionBarPlacement = 'dock' | 'inline'; export type BulkActionBarTone = 'brand' | 'neutral'; export interface BulkAction { id: string; label: string; variant?: BulkActionVariant; disabled?: boolean; loading?: boolean; /** Prefer Lucide: `import { Archive } from '@lucide/svelte'` */ icon?: Component<{ class?: string; size?: number | string; strokeWidth?: number | string; }>; /** Icon only (label stays for a11y via aria-label) */ iconOnly?: boolean; /** Force into “More” menu */ overflow?: boolean; /** Ask before firing (useful for delete) */ confirm?: boolean; confirmLabel?: string; tooltip?: string; } interface BulkActionBarProps { count?: number; /** Total items in the list (shows “2 of 12”) */ total?: number; actions?: BulkAction[]; /** Override selection copy entirely */ label?: string; description?: string; itemLabel?: string; itemLabelPlural?: string; placement?: BulkActionBarPlacement; size?: BulkActionBarSize; tone?: BulkActionBarTone; sticky?: boolean; /** Cap visible primary actions; rest go to More */ maxPrimary?: number; /** Tight icon toolbar — badge + icon actions, no selection copy */ compact?: boolean; showSelectAll?: boolean; showClear?: boolean; showHint?: boolean; hint?: string; clearOnEscape?: boolean; disabled?: boolean; class?: string; leading?: Snippet; extra?: Snippet; trailing?: Snippet; onaction?: (id: string) => void; onclear?: () => void; onselectall?: () => void; onselectnone?: () => void; } declare const BulkActionBar: Component; type BulkActionBar = ReturnType; export default BulkActionBar;