UNPKG

@vaadin/vaadin-lumo-styles

Version:

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

222 lines (192 loc) 7.47 kB
/** * @license * Copyright (c) 2017 - 2025 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import './version.js'; import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js'; import { addLumoGlobalStyles } from './global.js'; const colorBase = css` :host { /* Base (background) */ --lumo-base-color: #fff; /* Tint */ --lumo-tint-5pct: hsla(0, 0%, 100%, 0.3); --lumo-tint-10pct: hsla(0, 0%, 100%, 0.37); --lumo-tint-20pct: hsla(0, 0%, 100%, 0.44); --lumo-tint-30pct: hsla(0, 0%, 100%, 0.5); --lumo-tint-40pct: hsla(0, 0%, 100%, 0.57); --lumo-tint-50pct: hsla(0, 0%, 100%, 0.64); --lumo-tint-60pct: hsla(0, 0%, 100%, 0.7); --lumo-tint-70pct: hsla(0, 0%, 100%, 0.77); --lumo-tint-80pct: hsla(0, 0%, 100%, 0.84); --lumo-tint-90pct: hsla(0, 0%, 100%, 0.9); --lumo-tint: #fff; /* Shade */ --lumo-shade-5pct: hsla(214, 61%, 25%, 0.05); --lumo-shade-10pct: hsla(214, 57%, 24%, 0.1); --lumo-shade-20pct: hsla(214, 53%, 23%, 0.16); --lumo-shade-30pct: hsla(214, 50%, 22%, 0.26); --lumo-shade-40pct: hsla(214, 47%, 21%, 0.38); --lumo-shade-50pct: hsla(214, 45%, 20%, 0.52); --lumo-shade-60pct: hsla(214, 43%, 19%, 0.6); --lumo-shade-70pct: hsla(214, 42%, 18%, 0.69); --lumo-shade-80pct: hsla(214, 41%, 17%, 0.83); --lumo-shade-90pct: hsla(214, 40%, 16%, 0.94); --lumo-shade: hsl(214, 35%, 15%); /* Contrast */ --lumo-contrast-5pct: var(--lumo-shade-5pct); --lumo-contrast-10pct: var(--lumo-shade-10pct); --lumo-contrast-20pct: var(--lumo-shade-20pct); --lumo-contrast-30pct: var(--lumo-shade-30pct); --lumo-contrast-40pct: var(--lumo-shade-40pct); --lumo-contrast-50pct: var(--lumo-shade-50pct); --lumo-contrast-60pct: var(--lumo-shade-60pct); --lumo-contrast-70pct: var(--lumo-shade-70pct); --lumo-contrast-80pct: var(--lumo-shade-80pct); --lumo-contrast-90pct: var(--lumo-shade-90pct); --lumo-contrast: var(--lumo-shade); /* Text */ --lumo-header-text-color: var(--lumo-contrast); --lumo-body-text-color: var(--lumo-contrast-90pct); --lumo-secondary-text-color: var(--lumo-contrast-70pct); --lumo-tertiary-text-color: var(--lumo-contrast-50pct); --lumo-disabled-text-color: var(--lumo-contrast-30pct); /* Primary */ --lumo-primary-color: hsl(214, 100%, 48%); --lumo-primary-color-50pct: hsla(214, 100%, 49%, 0.76); --lumo-primary-color-10pct: hsla(214, 100%, 60%, 0.13); --lumo-primary-text-color: hsl(214, 100%, 43%); --lumo-primary-contrast-color: #fff; /* Error */ --lumo-error-color: hsl(3, 85%, 48%); --lumo-error-color-50pct: hsla(3, 85%, 49%, 0.5); --lumo-error-color-10pct: hsla(3, 85%, 49%, 0.1); --lumo-error-text-color: hsl(3, 89%, 42%); --lumo-error-contrast-color: #fff; /* Success */ --lumo-success-color: hsl(145, 72%, 30%); --lumo-success-color-50pct: hsla(145, 72%, 31%, 0.5); --lumo-success-color-10pct: hsla(145, 72%, 31%, 0.1); --lumo-success-text-color: hsl(145, 85%, 25%); --lumo-success-contrast-color: #fff; /* Warning */ --lumo-warning-color: hsl(48, 100%, 50%); --lumo-warning-color-10pct: hsla(48, 100%, 50%, 0.25); --lumo-warning-text-color: hsl(32, 100%, 30%); --lumo-warning-contrast-color: var(--lumo-shade-90pct); } /* forced-colors mode adjustments */ @media (forced-colors: active) { html { --lumo-disabled-text-color: GrayText; } } `; addLumoGlobalStyles('color-props', colorBase); const color = css` [theme~='dark'] { /* Base (background) */ --lumo-base-color: hsl(214, 35%, 21%); /* Tint */ --lumo-tint-5pct: hsla(214, 65%, 85%, 0.06); --lumo-tint-10pct: hsla(214, 60%, 80%, 0.14); --lumo-tint-20pct: hsla(214, 64%, 82%, 0.23); --lumo-tint-30pct: hsla(214, 69%, 84%, 0.32); --lumo-tint-40pct: hsla(214, 73%, 86%, 0.41); --lumo-tint-50pct: hsla(214, 78%, 88%, 0.5); --lumo-tint-60pct: hsla(214, 82%, 90%, 0.58); --lumo-tint-70pct: hsla(214, 87%, 92%, 0.69); --lumo-tint-80pct: hsla(214, 91%, 94%, 0.8); --lumo-tint-90pct: hsla(214, 96%, 96%, 0.9); --lumo-tint: hsl(214, 100%, 98%); /* Shade */ --lumo-shade-5pct: hsla(214, 0%, 0%, 0.07); --lumo-shade-10pct: hsla(214, 4%, 2%, 0.15); --lumo-shade-20pct: hsla(214, 8%, 4%, 0.23); --lumo-shade-30pct: hsla(214, 12%, 6%, 0.32); --lumo-shade-40pct: hsla(214, 16%, 8%, 0.41); --lumo-shade-50pct: hsla(214, 20%, 10%, 0.5); --lumo-shade-60pct: hsla(214, 24%, 12%, 0.6); --lumo-shade-70pct: hsla(214, 28%, 13%, 0.7); --lumo-shade-80pct: hsla(214, 32%, 13%, 0.8); --lumo-shade-90pct: hsla(214, 33%, 13%, 0.9); --lumo-shade: hsl(214, 33%, 13%); /* Contrast */ --lumo-contrast-5pct: var(--lumo-tint-5pct); --lumo-contrast-10pct: var(--lumo-tint-10pct); --lumo-contrast-20pct: var(--lumo-tint-20pct); --lumo-contrast-30pct: var(--lumo-tint-30pct); --lumo-contrast-40pct: var(--lumo-tint-40pct); --lumo-contrast-50pct: var(--lumo-tint-50pct); --lumo-contrast-60pct: var(--lumo-tint-60pct); --lumo-contrast-70pct: var(--lumo-tint-70pct); --lumo-contrast-80pct: var(--lumo-tint-80pct); --lumo-contrast-90pct: var(--lumo-tint-90pct); --lumo-contrast: var(--lumo-tint); /* Text */ --lumo-header-text-color: var(--lumo-contrast); --lumo-body-text-color: var(--lumo-contrast-90pct); --lumo-secondary-text-color: var(--lumo-contrast-70pct); --lumo-tertiary-text-color: var(--lumo-contrast-50pct); --lumo-disabled-text-color: var(--lumo-contrast-30pct); /* Primary */ --lumo-primary-color: hsl(214, 90%, 48%); --lumo-primary-color-50pct: hsla(214, 90%, 70%, 0.69); --lumo-primary-color-10pct: hsla(214, 90%, 55%, 0.13); --lumo-primary-text-color: hsl(214, 90%, 77%); --lumo-primary-contrast-color: #fff; /* Error */ --lumo-error-color: hsl(3, 79%, 49%); --lumo-error-color-50pct: hsla(3, 75%, 62%, 0.5); --lumo-error-color-10pct: hsla(3, 75%, 62%, 0.14); --lumo-error-text-color: hsl(3, 100%, 80%); /* Success */ --lumo-success-color: hsl(145, 72%, 30%); --lumo-success-color-50pct: hsla(145, 92%, 51%, 0.5); --lumo-success-color-10pct: hsla(145, 92%, 51%, 0.1); --lumo-success-text-color: hsl(145, 85%, 46%); /* Warning */ --lumo-warning-color: hsl(43, 100%, 48%); --lumo-warning-color-10pct: hsla(40, 100%, 50%, 0.2); --lumo-warning-text-color: hsl(45, 100%, 60%); --lumo-warning-contrast-color: var(--lumo-shade-90pct); } html { color: var(--lumo-body-text-color); background-color: var(--lumo-base-color); color-scheme: light; } [theme~='dark'] { color: var(--lumo-body-text-color); background-color: var(--lumo-base-color); color-scheme: dark; } h1, h2, h3, h4, h5, h6 { color: var(--lumo-header-text-color); } a:where(:any-link) { color: var(--lumo-primary-text-color); } a:not(:any-link) { color: var(--lumo-disabled-text-color); } blockquote { color: var(--lumo-secondary-text-color); } code, pre { background-color: var(--lumo-contrast-10pct); border-radius: var(--lumo-border-radius-m); } pre code { background: transparent; } `; registerStyles('', color, { moduleId: 'lumo-color' }); export { colorBase, color };