Lumo is a design system foundation for modern web applications, used by Vaadin components

Usage no npm install needed!

<script type="module">
  import vaadinVaadinLumoStyles from 'https://cdn.skypack.dev/@vaadin/vaadin-lumo-styles';


npm version Bower version Gitter


⚠️ Starting from Vaadin 20, the source code and issues for this package are migrated to the vaadin/web-components monorepository. This repository contains the source code and releases of @vaadin/vaadin-lumo-styles for the Vaadin versions 10 to 19.

Lumo is a design system foundation for modern, beautiful and accessible web applications.

Lumo – ✨ enchantment (Finnish) and 🔆 light (Esperanto)

Lumo contains foundational styles – typography, colors, visual style, sizing & spacing and icons – that components and applications can use to achieve a consistent visual design.

The implementation of Lumo is based on CSS custom properties, and Polymer style modules. Note, that you don’t need to use Polymer to build your application in order to use Lumo.


🚧 Documentation will eventually be deployed at https://vaadin.com 🚧

For documentation and instructions how to get started, use the “Documentation” link in the latest release notes.

Part of the Vaadin platform

Lumo is maintained as a part of the Vaadin platform.

Vaadin components is a collection of web components that use the Lumo design language as their default theme. The Vaadin app starters are also based on Lumo.

Big Thanks

Cross-browser Testing Platform and Open Source <3 Provided by Sauce Labs.


Reporting issues and feature request is a great way to help! If you have questions, join the Vaadin components chat – we’re happy to answer Lumo related questions there.

Running demos and tests in a browser

  1. Fork the vaadin-lumo-styles repository and clone it locally.

  2. Make sure you have npm and Bower installed.

  3. When in the vaadin-lumo-styles directory, run npm install and then bower install to install dependencies.

  4. Run npm start, browser will automatically open the component API documentation.

  5. You can also open demo/documentation by adding demo to the URL, for example:

Adding or updating icons

  1. Open icons/Lumo Icons.sketch using Sketch

  2. Follow the instructions in the Sketch document

  3. Run npm install to install dependencies

  4. Run gulp icons to generate new versions of iconset.html and font-icons.html

Following the coding style

We are using ESLint for linting JavaScript code. You can check if your code is following our standards by running gulp lint, which will automatically lint all .js files as well as JavaScript snippets inside .html files. CSS inside .html files is also linted at the same time.

Creating a pull request

  • Make sure your code is compliant with our code linters: gulp lint
  • Submit a pull request with detailed title and description
  • Wait for response from one of Vaadin components team members

Updating the version number

Use npm version <new version> to update the version number in package.json and in other relevant places such as version.html, when preparing to release a new version.


Apache License 2.0