'use client' import type { IComboboxState } from './types' import { PktIcon } from '../icon/Icon' interface IListboxProps { state: IComboboxState } export const Listbox = ({ state }: IListboxProps) => { const { listboxId, label, isOpen, options, filteredOptions, multiple, disabled, maxIsReached, maxlength, includeSearch, allowUserInput, addValueText, userInfoMessage, searchPlaceholder, searchValue, handleOptionClick, handleOptionKeydown, handleSearchInput, handleSearchKeydown, handleNewOptionClick, handleNewOptionKeydown, listboxRef, } = state const selectedCount = filteredOptions.filter((opt) => opt.selected).length const showMaxBanner = multiple && selectedCount > 0 && maxlength != null && maxlength > 0 const showNewOptionBanner = allowUserInput && addValueText && !maxIsReached const showUserMessage = !!userInfoMessage const listboxClasses = ['pkt-listbox', isOpen && 'pkt-listbox__open', 'pkt-txt-16-light'].filter(Boolean).join(' ') return ( <>