/* This example requires some changes to your config: ``` // tailwind.config.js module.exports = { // ... plugins: [ // ... require('@tailwindcss/forms'), ], } ``` */ import { Fragment, useState } from 'react' import { MagnifyingGlassIcon } from '@heroicons/react/20/solid' import { FaceFrownIcon, GlobeAmericasIcon } from '@heroicons/react/24/outline' import { Combobox, Dialog, Transition } from '@headlessui/react' const items = [ { id: 1, name: 'Workflow Inc.', category: 'Clients', url: '#' }, // More items... ] function classNames(...classes) { return classes.filter(Boolean).join(' ') } export default function Example() { const [query, setQuery] = useState('') const [open, setOpen] = useState(true) const filteredItems = query === '' ? [] : items.filter((item) => { return item.name.toLowerCase().includes(query.toLowerCase()) }) const groups = filteredItems.reduce((groups, item) => { return { ...groups, [item.category]: [...(groups[item.category] || []), item] } }, {}) return ( setQuery('')} appear>
(window.location = item.url)}>
{query === '' && (
)} {filteredItems.length > 0 && ( {Object.entries(groups).map(([category, items]) => (
  • {category}

      {items.map((item) => ( classNames('cursor-default select-none px-4 py-2', active && 'bg-indigo-600 text-white') } > {item.name} ))}
  • ))}
    )} {query !== '' && filteredItems.length === 0 && (
    )}
    ) }