# Short benchmark on [Headless UI](https://headlessui.dev/) Positive feedback: - Good looking docs - Accessibility notes & When to use sections on each component's page - Nice separation between unstyled (component page) and styled examples - Support for React & Vue Negative feedback: - Small set of components supported - Circular nagivation not implemented on Menus (this was the first things from accessibility point of view that I tried) - A bit off name for the Disclosure component - Examples are too long and hard to be implementd without coping. For example, the simples component - Checkbox, requires ~20 lines of code, as well as knowledge about different details, like screen-reader only texts. In my experience the less code developers should write, the better as writing things over and over is much more prone to errors. ```javascript= import { useState } from "react"; import { Switch } from "@headlessui/react"; export default function Example() { const [enabled, setEnabled] = useState(false); return ( <div className="py-16"> <Switch checked={enabled} onChange={setEnabled} className={`${enabled ? "bg-teal-900" : "bg-teal-700"} relative inline-flex flex-shrink-0 h-[38px] w-[74px] border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75`} > <span className="sr-only">Use setting</span> <span aria-hidden="true" className={`${enabled ? "translate-x-9" : "translate-x-0"} pointer-events-none inline-block h-[34px] w-[34px] rounded-full bg-white shadow-lg transform ring-0 transition ease-in-out duration-200`} /> </Switch> </div> ); } ``` - Lost of the components are implemented to support `children` as function, which I don't think it's the best API there is. Another notes: It's really great how they talk about the component great deal, and then link to the styled examples, probably this is a good way of how we can document the components once we have the `unstyled` package.