> Markdown version of [Components](https://vaadin.com/docs/next/building-apps/components). Section index: [llms.txt](https://vaadin.com/docs/next/building-apps/llms.txt)

# Components

Vaadin comes with a large set of ready-made [components](https://vaadin.com/docs/next/components.md). These guides show how to create components of your own, either in Java or by wrapping existing client-side code with a Java API.

To build a reusable component in Java, start with [Build a Component](https://vaadin.com/docs/next/building-apps/components/build-component.md) and [Style a Component](https://vaadin.com/docs/next/building-apps/components/style-component.md). To share it between projects, see [Package a Component](https://vaadin.com/docs/next/building-apps/components/package-component.md). To share it between your organization’s own applications, see [Share Components between Applications](https://vaadin.com/docs/next/building-apps/components/share-component.md). To make it available to everyone, see [Publish a Component](https://vaadin.com/docs/next/building-apps/components/publish-component.md).

To use existing client-side code from Java, pick the guide that matches what you have: a plain [JavaScript library](https://vaadin.com/docs/next/building-apps/components/wrap-js-library.md), a [web component](https://vaadin.com/docs/next/building-apps/components/wrap-web-component.md), or a [React component](https://vaadin.com/docs/next/building-apps/components/wrap-react-component.md).

If you’re new to components, read [Compose with Components](https://vaadin.com/docs/next/building-apps/ui-basics/compose.md) first.

## <a id="topics"></a>Topics

- [Build a Component](https://vaadin.com/docs/next/building-apps/components/build-component.md): Learn how to create reusable custom components with a clean API.
- [Style a Component](https://vaadin.com/docs/next/building-apps/components/style-component.md): Learn how to add consistent, maintainable styling to your custom components.
- [Package a Component](https://vaadin.com/docs/next/building-apps/components/package-component.md): Learn how to package a custom component as a JAR that can be shared across projects.
- [Share Components between Applications](https://vaadin.com/docs/next/building-apps/components/share-component.md): Learn how to share a component library and a theme between your organization's own applications.
- [Publish a Component](https://vaadin.com/docs/next/building-apps/components/publish-component.md): Learn how to publish your component add-on to Maven Central and the Vaadin Directory.
- [Wrap a JavaScript Library](https://vaadin.com/docs/next/building-apps/components/wrap-js-library.md): Learn how to create a Java API for a plain JavaScript library using @JsModule and the Element API.
- [Wrap a Web Component](https://vaadin.com/docs/next/building-apps/components/wrap-web-component.md): Learn how to create a Java API for a web component, whether third-party or your own.
- [Wrap a React Component](https://vaadin.com/docs/next/building-apps/components/wrap-react-component.md): Learn how to create a Java API for an existing React component using ReactAdapterComponent.
