import type { IconButtonProps } from '@mui/material' import type { ReactNode } from 'react' import type { BaseWidgetState } from '../../stores/types' /** * Widget state extension for lock selection functionality. * Extends the base widget state with lock-specific properties. */ export type LockSelectionState = BaseWidgetState< T & LockSelectionStateProps > export interface LockSelectionProps { /** Widget ID to store lock selection state */ id: string /** Currently selected items (by name) */ selectedItems: string[] /** Execution order in the tool pipeline. Lower values execute first. Defaults to 30. */ order?: number /** Custom labels for the action */ labels?: { /** Tooltip when unlocked (button will lock selection) */ lock?: string /** Tooltip when locked (button will unlock selection) */ unlock?: string /** Accessibility label */ ariaLabel?: string } /** Props passed to the IconButton component */ IconButtonProps?: IconButtonProps /** Custom icon to display */ Icon?: ReactNode } /** * Lock selection specific state properties. */ export interface LockSelectionStateProps { /** Whether the selection is currently locked */ isLocked?: boolean /** Items locked for filtering */ lockedItems?: string[] }