# @a11d > Libraries for building web components with Lit: `@a11d/lit`, a thin layer over Lit with additional lifecycle hooks, decorators and directives, and the type-safe utilities it is built on. Every package is published to npm as `@a11d/` and ships its README and changelog. Each page here is the README of a package, or of a feature of one, as Markdown. [llms-full.txt](https://a11delavar.github.io/lit/llms-full.txt) holds every page but the optional ones in one file. ## Packages - [@a11d/bidirectional-map](https://a11delavar.github.io/lit/docs/BidirectionalMap.md): Map with bidirectional lookups - query by key or value - [@a11d/constructor](https://a11delavar.github.io/lit/docs/Constructor.md): Global constructor types - [@a11d/equals](https://a11delavar.github.io/lit/docs/equals.md): A value equality utility library. - [@a11d/is-writable](https://a11delavar.github.io/lit/docs/isWritable.md): A function on the Object constructor that determines if a property is writable. - [@a11d/key-path](https://a11delavar.github.io/lit/docs/KeyPath.md): A set of type-safe utilities for working with objects and their properties with support for array members. - [@a11d/lit](https://a11delavar.github.io/lit/docs/Lit.md): A thin wrapper around the Lit library - [@a11d/lit-testing](https://a11delavar.github.io/lit/docs/LitTesting.md): Utilities to facilitate testing lit components ## @a11d/lit - [`Component` class](https://a11delavar.github.io/lit/docs/Lit/Component.md): The `Component` class is the base class for all components. - [`ComponentPart` class](https://a11delavar.github.io/lit/docs/Lit/ComponentPart.md): A `ComponentPart` is a part of a component, extracted into a class of its own **without introducing a component boundary**. - [`Controller` class](https://a11delavar.github.io/lit/docs/Lit/Controller.md): A base class for [reactive controllers](https://lit.dev/docs/composition/controllers/) which registers itself with its host, so implementations only define the callbacks they are interested in. - [`ElementRef` / `ElementRefs` classes](https://a11delavar.github.io/lit/docs/Lit/ElementRef.md): The element — or the elements — a template designates, with whatever it declares about them. - [`style` Directive](https://a11delavar.github.io/lit/docs/Lit/style.md): Apply inline styles to elements with proper typing and reactivity. - [`updated` Decorator](https://a11delavar.github.io/lit/docs/Lit/updated.md): React to property changes with callbacks. - [`eventListener` Decorator](https://a11delavar.github.io/lit/docs/Lit/eventListener.md): Declaratively register event listeners on methods. - [`event` Decorator](https://a11delavar.github.io/lit/docs/Lit/event.md): Create type-safe custom event dispatchers for your components. - [`bind` Directive](https://a11delavar.github.io/lit/docs/Lit/bind.md): Two-way data binding for Lit components. ## Optional - [@a11d/bidirectional-map changelog](https://a11delavar.github.io/lit/docs/BidirectionalMap/CHANGELOG.md): Every published version of `@a11d/bidirectional-map` with its changes, newest first. - [@a11d/constructor changelog](https://a11delavar.github.io/lit/docs/Constructor/CHANGELOG.md): Every published version of `@a11d/constructor` with its changes, newest first. - [@a11d/equals changelog](https://a11delavar.github.io/lit/docs/equals/CHANGELOG.md): Every published version of `@a11d/equals` with its changes, newest first. - [@a11d/is-writable changelog](https://a11delavar.github.io/lit/docs/isWritable/CHANGELOG.md): Every published version of `@a11d/is-writable` with its changes, newest first. - [@a11d/key-path changelog](https://a11delavar.github.io/lit/docs/KeyPath/CHANGELOG.md): Every published version of `@a11d/key-path` with its changes, newest first. - [@a11d/lit changelog](https://a11delavar.github.io/lit/docs/Lit/CHANGELOG.md): Every published version of `@a11d/lit` with its changes, newest first. - [@a11d/lit-testing changelog](https://a11delavar.github.io/lit/docs/LitTesting/CHANGELOG.md): Every published version of `@a11d/lit-testing` with its changes, newest first.