> Markdown version of [Creating UI](https://vaadin.com/docs/v23/create-ui). Section index: [llms.txt](https://vaadin.com/docs/v23/llms.txt)

# Creating UI in Vaadin Applications

The Vaadin Design System includes a set of [components](https://vaadin.com/docs/v23/components.md) that you can use to build your UI. The components have a server-side Java API in addition to the TypeScript API for client-side development.

[Browse components](https://vaadin.com/docs/v23/components.md)

You use a component by first creating it and then adding it to a containing layout.

For example, to add a [Button component](https://vaadin.com/docs/v23/components/button.md), create the object and add it to a layout.

`EventsLambda.java`

```java
Button button = new Button("Click me!",
        event -> event.getSource().setText("Clicked!!!"));
add(button);
```

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

- [Basic Features](https://vaadin.com/docs/v23/create-ui/basic-features.md): Common features available in all components.
- [Enabled State](https://vaadin.com/docs/v23/create-ui/enabled-state.md): Components that allow user interaction can have three different enabled states.
- [Keyboard Shortcuts](https://vaadin.com/docs/v23/create-ui/shortcut.md): Shortcuts allow you to assign keyboard shortcuts to your components to improve end-user experience.
- [HTML Elements](https://vaadin.com/docs/v23/create-ui/standard-html.md): Flow comes with a set of components for standard HTML elements.
- [Creating Components](https://vaadin.com/docs/v23/create-ui/creating-components.md): Creating components by combining or extending existing ones, or by constructing a new one using the Element API.
- [Integrating Web Components](https://vaadin.com/docs/v23/create-ui/web-components.md)
- [Element API](https://vaadin.com/docs/v23/create-ui/element-api.md): You can control the HTML DOM in the browser from the server-side using the Element API.
- [Drag and Drop](https://vaadin.com/docs/v23/create-ui/dnd.md): Drag and drop between components as well as between the UI and the operating system.
- [Templates](https://vaadin.com/docs/v23/create-ui/templates.md): In addition to imperative Java code, you can build views declaratively using templates. The components in such a template can be bound directly to data items.
