/**
 * Copyright IBM Corp. 2020, 2026
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */

import { getDevtoolsProps } from "../../global/js/utils/devtools.js";
import { AddSelect } from "../AddSelect/AddSelect.js";
import React, { forwardRef } from "react";
import PropTypes from "prop-types";

//#region src/components/MultiAddSelect/MultiAddSelect.tsx
const componentName = "MultiAddSelect";
/**
* Used to add or select multiple or more items from larger lists or hierarchies.
*/
const MultiAddSelect = forwardRef((props, ref) => /* @__PURE__ */ React.createElement(AddSelect, {
	...props,
	multi: true,
	ref,
	...getDevtoolsProps(componentName)
}));
MultiAddSelect.propTypes = {
	className: PropTypes.string,
	columnInputPlaceholder: PropTypes.string,
	description: PropTypes.string,
	globalFilters: PropTypes.arrayOf(PropTypes.shape({
		id: PropTypes.string,
		label: PropTypes.string
	})),
	globalFiltersIconDescription: PropTypes.string,
	globalFiltersPlaceholderText: PropTypes.string,
	globalFiltersPrimaryButtonText: PropTypes.string,
	globalFiltersSecondaryButtonText: PropTypes.string,
	globalSearchLabel: PropTypes.string,
	globalSearchPlaceholder: PropTypes.string,
	illustrationTheme: PropTypes.oneOf(["light", "dark"]),
	influencerTitle: PropTypes.string,
	items: PropTypes.shape({
		modifiers: PropTypes.shape({
			label: PropTypes.string,
			options: PropTypes.array,
			multiSelect: PropTypes.bool
		}),
		sortBy: PropTypes.array,
		filterBy: PropTypes.array,
		entries: PropTypes.arrayOf(PropTypes.shape({
			avatar: PropTypes.shape({
				alt: PropTypes.string,
				icon: PropTypes.func,
				src: PropTypes.string,
				theme: PropTypes.oneOf(["light", "dark"])
			}),
			children: PropTypes.object,
			icon: PropTypes.func,
			id: PropTypes.string.isRequired,
			subtitle: PropTypes.string,
			title: PropTypes.string.isRequired,
			value: PropTypes.string.isRequired
		}))
	}),
	itemsLabel: PropTypes.string,
	noResultsDescription: PropTypes.string,
	noResultsTitle: PropTypes.string,
	noSelectionDescription: PropTypes.string,
	noSelectionTitle: PropTypes.string,
	noTearsheet: PropTypes.bool,
	onClose: PropTypes.func,
	onCloseButtonText: PropTypes.string,
	onSubmit: PropTypes.func,
	onSubmitButtonText: PropTypes.string,
	open: PropTypes.bool,
	searchResultsTitle: PropTypes.string,
	title: PropTypes.string
};
MultiAddSelect.displayName = componentName;

//#endregion
export { MultiAddSelect };