import type { ReactNode } from "react"; import { cn } from "@/lib/utils"; export interface CollectionToolbarProps { /** Primary context such as tabs, a view title, or a result count. */ context?: ReactNode; /** The collection's canonical search control. */ search?: ReactNode; /** Filter, sort, column, density, and view controls. */ controls?: ReactNode; /** Collection-specific actions such as create or bulk operations. */ actions?: ReactNode; /** Optional second row for active-filter chips or selection feedback. */ feedback?: ReactNode; className?: string; ariaLabel?: string; } /** * Presentation-only shell for list and board controls. * * State, queries, and control behavior stay with the consuming surface. Keeping * this component slot-based lets Inbox, Tasks, routine runs, and scoped task * lists share geometry without coupling their data models. * Canonical proposal composition reference: Components / Toolbars / Collection. */ export function CollectionToolbar({ context, search, controls, actions, feedback, className, ariaLabel = "Collection controls", }: CollectionToolbarProps) { return (