diff --git a/packages/common/styles.js b/packages/common/styles.js new file mode 100644 index 0000000000000000000000000000000000000000..4cf471a6b34ad7148504430ed0ac254c3b384ba3 --- /dev/null +++ b/packages/common/styles.js @@ -0,0 +1,212 @@ +import {css} from 'lit-element'; + +/** + * We want to have "neutral" colors here + * + * @returns {CSSResult} + */ +export function getThemeCSS() { + // language=css + return css` + :host { + --vpu-primary-bg-color: var(--vpu-override-primary-bg-color, #007bff); + --vpu-primary-text-color: var(--vpu-override-primary-text-color, #fff); + --vpu-secondary-bg-color: var(--vpu-override-secondary-bg-color, #6c757d); + --vpu-secondary-text-color: var(--vpu-override-secondary-text-color, #fff); + --vpu-info-bg-color: var(--vpu-override-info-bg-color, #17a2b8); + --vpu-info-text-color: var(--vpu-override-info-text-color, #fff); + --vpu-success-bg-color: var(--vpu-override-success-bg-color, #28a745); + --vpu-success-text-color: var(--vpu-override-success-text-color, #fff); + --vpu-warning-bg-color: var(--vpu-override-warning-bg-color, #ffc107); + --vpu-warning-text-color: var(--vpu-override-warning-text-color, #343a40); + --vpu-danger-bg-color: var(--vpu-override-danger-bg-color, #dc3545); + --vpu-danger-text-color: var(--vpu-override-danger-text-color, #fff); + --vpu-light: var(--vpu-override-light, #f8f9fa); + --vpu-dark: var(--vpu-override-dark, #343a40); + --vpu-muted-text: var(--vpu-override-muted-text, #6c757d); + --vpu-border-radius: var(--vpu-override-border-radius, 0px); + --vpu-border-width: var(--vpu-override-border-width, 1px); + } + `; +} + +export function getGeneralCSS() { + // language=css + return css` + code { + background-color: var(--vpu-light); + color: var(--vpu-danger-bg-color); + font-size: 0.875em; + font-weight: normal; + padding: 0.25em 0.5em 0.25em; + } + + .field:not(:last-child) { + margin-bottom: 0.75rem; + } + + .field.has-addons { + display: flex; + justify-content: flex-start; + } + + .input, .textarea, .select select { + border-radius: var(--vpu-border-radius); + padding-bottom: calc(.375em - 1px); + padding-left: calc(.625em - 1px); + padding-right: calc(.625em - 1px); + padding-top: calc(.375em - 1px); + } + + input, ::placeholder, textarea, select, .select select { + font-size: inherit; + font-family: inherit; + } + + .control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: left; + } + + .label { + margin-bottom: .5em; + display: block; + font-weight: 600; + } + + .hidden { display: none; } + + *, ::after, ::before { + box-sizing: inherit; + } + `; +} + +export function getNotificationCSS() { + // language=css + return css` + .notification { + background-color: var(--vpu-light); + padding: 1.25rem 2.5rem 1.25rem 1.5rem; + position: relative; + border-radius: var(--vpu-border-radius); + } + + .notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; + } + + .notification strong { + color: currentColor; + } + + .notification code, + .notification pre { + color: var(--vpu-light); + background: var(--vpu-muted-text); + } + + .notification pre code { + background: transparent; + } + + .notification > .delete { + position: absolute; + right: 0.5rem; + top: 0.5rem; + } + + .notification .title, + .notification .subtitle, + .notification .content { + color: currentColor; + } + + .notification.is-primary { + background-color: var(--vpu-primary-bg-color); + color: var(--vpu-primary-text-color); + } + + .notification.is-info { + background-color: var(--vpu-info-bg-color); + color: var(--vpu-info-text-color); + } + + .notification.is-success { + background-color: var(--vpu-success-bg-color); + color: var(--vpu-success-text-color); + } + + .notification.is-warning { + background-color: var(--vpu-warning-bg-color); + color: var(--vpu-warning-text-color); + } + + .notification.is-danger { + background-color: var(--vpu-danger-bg-color); + color: var(--vpu-danger-text-color); + } + `; +} + +export function getButtonCSS() { + // language=css + return css` + .button { + border-color: black; + border-width: 1px; + border-radius: var(--vpu-border-radius); + color: black; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.375em - 1px); + padding-left: 0.75em; + padding-right: 0.75em; + padding-top: calc(0.375em - 1px); + text-align: center; + white-space: nowrap; + font-size: inherit; + font-family: inherit; + background-color: transparent; + } + + .button:hover { + color: white; + background-color: black; + } + + .button.is-small { + border-radius: calc(var(--vpu-border-radius) / 2); + font-size: .75rem; + } + + .button.is-primary { + background-color: var(--vpu-primary-bg-color); + color: var(--vpu-primary-text-color); + } + + .button.is-info { + background-color: var(--vpu-info-bg-color); + color: var(--vpu-info-text-color); + } + + .button.is-success { + background-color: var(--vpu-success-bg-color); + color: var(--vpu-success-text-color); + } + + .button.is-warning { + background-color: var(--vpu-warning-bg-color); + color: var(--vpu-warning-text-color); + } + + .button.is-danger { + background-color: var(--vpu-danger-bg-color); + color: var(--vpu-danger-text-color); + } + `; +} diff --git a/packages/common/utils.js b/packages/common/utils.js index 03c85f0ee20941863a650e69531ab47b1ca24cc9..e4bae26b0ed2da185be88fbe795b13de56be76d6 100644 --- a/packages/common/utils.js +++ b/packages/common/utils.js @@ -1,218 +1,5 @@ -import {css} from 'lit-element'; import env from './env.js'; -/** - * We want to have "neutral" colors here - * - * @returns {CSSResult} - */ -export function getThemeCSS() { - // language=css - return css` - :host { - --vpu-primary-bg-color: var(--vpu-override-primary-bg-color, #007bff); - --vpu-primary-text-color: var(--vpu-override-primary-text-color, #fff); - --vpu-secondary-bg-color: var(--vpu-override-secondary-bg-color, #6c757d); - --vpu-secondary-text-color: var(--vpu-override-secondary-text-color, #fff); - --vpu-info-bg-color: var(--vpu-override-info-bg-color, #17a2b8); - --vpu-info-text-color: var(--vpu-override-info-text-color, #fff); - --vpu-success-bg-color: var(--vpu-override-success-bg-color, #28a745); - --vpu-success-text-color: var(--vpu-override-success-text-color, #fff); - --vpu-warning-bg-color: var(--vpu-override-warning-bg-color, #ffc107); - --vpu-warning-text-color: var(--vpu-override-warning-text-color, #343a40); - --vpu-danger-bg-color: var(--vpu-override-danger-bg-color, #dc3545); - --vpu-danger-text-color: var(--vpu-override-danger-text-color, #fff); - --vpu-light: var(--vpu-override-light, #f8f9fa); - --vpu-dark: var(--vpu-override-dark, #343a40); - --vpu-muted-text: var(--vpu-override-muted-text, #6c757d); - --vpu-border-radius: var(--vpu-override-border-radius, 0px); - --vpu-border-width: var(--vpu-override-border-width, 1px); - } - `; -} - -export function getGeneralCSS() { - // language=css - return css` - code { - background-color: var(--vpu-light); - color: var(--vpu-danger-bg-color); - font-size: 0.875em; - font-weight: normal; - padding: 0.25em 0.5em 0.25em; - } - - .field:not(:last-child) { - margin-bottom: 0.75rem; - } - - .field.has-addons { - display: flex; - justify-content: flex-start; - } - - .input, .textarea, .select select { - border-radius: var(--vpu-border-radius); - padding-bottom: calc(.375em - 1px); - padding-left: calc(.625em - 1px); - padding-right: calc(.625em - 1px); - padding-top: calc(.375em - 1px); - } - - input, ::placeholder, textarea, select, .select select { - font-size: inherit; - font-family: inherit; - } - - .control { - box-sizing: border-box; - clear: both; - font-size: 1rem; - position: relative; - text-align: left; - } - - .label { - margin-bottom: .5em; - display: block; - font-weight: 600; - } - - .hidden { display: none; } - - *, ::after, ::before { - box-sizing: inherit; - } - `; -} - -export function getNotificationCSS() { - // language=css - return css` - .notification { - background-color: var(--vpu-light); - padding: 1.25rem 2.5rem 1.25rem 1.5rem; - position: relative; - border-radius: var(--vpu-border-radius); - } - - .notification a:not(.button):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; - } - - .notification strong { - color: currentColor; - } - - .notification code, - .notification pre { - color: var(--vpu-light); - background: var(--vpu-muted-text); - } - - .notification pre code { - background: transparent; - } - - .notification > .delete { - position: absolute; - right: 0.5rem; - top: 0.5rem; - } - - .notification .title, - .notification .subtitle, - .notification .content { - color: currentColor; - } - - .notification.is-primary { - background-color: var(--vpu-primary-bg-color); - color: var(--vpu-primary-text-color); - } - - .notification.is-info { - background-color: var(--vpu-info-bg-color); - color: var(--vpu-info-text-color); - } - - .notification.is-success { - background-color: var(--vpu-success-bg-color); - color: var(--vpu-success-text-color); - } - - .notification.is-warning { - background-color: var(--vpu-warning-bg-color); - color: var(--vpu-warning-text-color); - } - - .notification.is-danger { - background-color: var(--vpu-danger-bg-color); - color: var(--vpu-danger-text-color); - } - `; -} - -export function getButtonCSS() { - // language=css - return css` - .button { - border-color: black; - border-width: 1px; - border-radius: var(--vpu-border-radius); - color: black; - cursor: pointer; - justify-content: center; - padding-bottom: calc(0.375em - 1px); - padding-left: 0.75em; - padding-right: 0.75em; - padding-top: calc(0.375em - 1px); - text-align: center; - white-space: nowrap; - font-size: inherit; - font-family: inherit; - background-color: transparent; - } - - .button:hover { - color: white; - background-color: black; - } - - .button.is-small { - border-radius: calc(var(--vpu-border-radius) / 2); - font-size: .75rem; - } - - .button.is-primary { - background-color: var(--vpu-primary-bg-color); - color: var(--vpu-primary-text-color); - } - - .button.is-info { - background-color: var(--vpu-info-bg-color); - color: var(--vpu-info-text-color); - } - - .button.is-success { - background-color: var(--vpu-success-bg-color); - color: var(--vpu-success-text-color); - } - - .button.is-warning { - background-color: var(--vpu-warning-bg-color); - color: var(--vpu-warning-text-color); - } - - .button.is-danger { - background-color: var(--vpu-danger-bg-color); - color: var(--vpu-danger-text-color); - } - - `; -} - /** * Parses a link header * diff --git a/packages/common/vpu-button.js b/packages/common/vpu-button.js index 6e9e93e7a0a6b96d5c2456d6348ab104a2f96c80..317aaad6c1cd2648f92298a9b4192e53cc096d97 100644 --- a/packages/common/vpu-button.js +++ b/packages/common/vpu-button.js @@ -1,5 +1,6 @@ import {html, LitElement, css} from 'lit-element'; import * as commonUtils from './utils.js'; +import * as commonStyles from './styles.js'; import VPULitElement from './vpu-lit-element.js'; /** @@ -72,8 +73,8 @@ class Button extends VPULitElement { static get styles() { // language=css return css` - ${commonUtils.getThemeCSS()} - ${commonUtils.getButtonCSS()} + ${commonStyles.getThemeCSS()} + ${commonStyles.getButtonCSS()} `; } diff --git a/packages/common/vpu-common-demo.js b/packages/common/vpu-common-demo.js index 9d192a6e339b6c02601fc74f68a4cf29de0f2d94..bd450d6aa1b5cc55460ba07db459d6c4f59cff15 100644 --- a/packages/common/vpu-common-demo.js +++ b/packages/common/vpu-common-demo.js @@ -1,6 +1,7 @@ import {i18n} from './i18n.js'; import {css, html, unsafeCSS} from 'lit-element'; import * as commonUtils from './utils.js'; +import * as commonStyles from './styles.js'; import './vpu-mini-spinner.js'; import './vpu-spinner.js'; import {getIconCSS} from './vpu-icon.js'; @@ -32,7 +33,7 @@ class VpuCommonDemo extends VPULitElement { static get styles() { // language=css return css` - ${ commonUtils.getThemeCSS() } + ${ commonStyles.getThemeCSS() } h1.title {margin-bottom: 1em;} div.container {margin-bottom: 1.5em;}