/** @jsx h */ import { h } from 'preact'; import { cx } from '@algolia/ui-components-shared'; import { find } from '../../lib/utils'; import Template from '../Template/Template'; import type { MenuSelectCSSClasses, MenuSelectTemplates, } from '../../widgets/menu-select/menu-select'; import type { MenuRenderState } from '../../connectors/menu/connectMenu'; import type { ComponentCSSClasses } from '../../types'; export type MenuSelectComponentCSSClasses = ComponentCSSClasses; export type MenuSelectComponentTemplates = Required; type MenuItem = { /** * The value of the menu item. **/ value: string; /** * Human-readable value of the menu item. **/ label: string; /** * Number of results matched after refinement is applied. **/ count: number; /** * Indicates if the refinement is applied. **/ isRefined: boolean; }; type Props = { cssClasses: MenuSelectComponentCSSClasses; items: MenuItem[]; refine: MenuRenderState['refine']; templateProps: { templates: MenuSelectComponentTemplates; }; }; function MenuSelect({ cssClasses, templateProps, items, refine }: Props) { const { value: selectedValue } = find(items, (item) => item.isRefined) || { value: '', }; return (