diff --git a/docs/design/tokens.md b/docs/design/tokens.md index 5220e977e..aa26c5589 100644 --- a/docs/design/tokens.md +++ b/docs/design/tokens.md @@ -13,49 +13,7 @@ TODO Spacing tokens are used to provide consistent spacing in your app. -
-
- -
- --sl-spacing--xxs -
- -
- -
- --sl-spacing--xs -
- -
- -
- --sl-spacing--sm -
- -
- -
- --sl-spacing--md -
- -
- -
- --sl-spacing--lg -
- -
- -
- --sl-spacing--xl -
- -
- -
- --sl-spacing--xxl -
-
+TODO ## Elevation @@ -63,11 +21,11 @@ Spacing tokens are used to provide consistent spacing in your app. Elevation tokens are used to give elements the appearance of being raised off the page. They are especially useful for menus, popovers, dialogs, etc.
-
--sl-elevation--xs
-
--sl-elevation--sm
-
--sl-elevation--md
-
--sl-elevation--lg
-
--sl-elevation--xl
+
--sl-elevation-0
+
--sl-elevation-1
+
--sl-elevation-2
+
--sl-elevation-3
+
--sl-elevation-4
## Animation diff --git a/docs/styles/docs.css b/docs/styles/docs.css index 77991b48a..2291c9ed5 100644 --- a/docs/styles/docs.css +++ b/docs/styles/docs.css @@ -1,7 +1,7 @@ body { - font-family: var(--sl-font-sans-serif); + font-family: var(--sl-font-sans); font-size: 16px; - font-weight: var(--sl-font-weight--normal); + font-weight: var(--sl-font-weight-normal); } .sidebar h1 { @@ -102,7 +102,7 @@ body.close .sidebar-toggle { .content pre, .content pre > code { border-radius: 3px; - font-family: var(--sl-font-monospace); + font-family: var(--sl-font-mono); font-size: 0.825rem; color: var(--sl-color-gray-20); -webkit-font-smoothing: auto; @@ -117,7 +117,7 @@ body.close .sidebar-toggle { .content code { background-color: transparent; - font-family: var(--sl-font-monospace); + font-family: var(--sl-font-mono); font-size: 0.875em; color: var(--sl-color-warning-50); padding: 0; diff --git a/package-lock.json b/package-lock.json index daa5e97e7..0ba1b5977 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3469,6 +3469,11 @@ "remove-trailing-separator": "^1.0.1" } }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", diff --git a/package.json b/package.json index 97bc87445..ce75213d3 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "dependencies": { "@stencil/core": "^1.9.2", "@stencil/sass": "^1.1.1", + "normalize.css": "^8.0.1", "popper.js": "^1.16.0", "resize-observer-polyfill": "^1.5.1", "tippy.js": "^5.1.3" diff --git a/src/components/alert/alert.scss b/src/components/alert/alert.scss index 1b8b8eea3..bfc5beaf5 100644 --- a/src/components/alert/alert.scss +++ b/src/components/alert/alert.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: block; @@ -11,7 +11,7 @@ background-color: var(--sl-color-white); border-left: solid 4px; border-radius: 0; - font-family: var(--sl-font-sans-serif); + font-family: var(--sl-font-sans); font-size: 14px; font-weight: var(--sl-font-weight-normal); line-height: 1.6; @@ -73,13 +73,13 @@ align-items: center; ::slotted(*) { - margin-left: var(--sl-spacing--lg); + margin-left: var(--sl-spacing-6); } } .sl-alert__body { flex: 1 1 auto; - padding: var(--sl-spacing--md) var(--sl-spacing--lg); + padding: var(--sl-spacing-5) var(--sl-spacing-6); } .sl-alert__close { @@ -91,7 +91,7 @@ font-size: inherit; font-weight: inherit; color: currentColor; - padding: 0 var(--sl-spacing--lg); + padding: 0 var(--sl-spacing-6); cursor: pointer; -webkit-appearance: none; transition: var(--sl-form-control-transition-speed) background-color, var(--sl-form-control-transition-speed) color; diff --git a/src/components/button/button.scss b/src/components/button/button.scss index 4755620c6..34976711a 100644 --- a/src/components/button/button.scss +++ b/src/components/button/button.scss @@ -1,5 +1,5 @@ -@import 'reset'; -@import 'button.mixins.scss'; +@import 'component'; +@import 'mixins/button'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles @@ -16,7 +16,7 @@ border-style: solid; border-width: var(--sl-form-control-border-width); font-family: var(--sl-form-control-font-sans-serif); - font-weight: var(--sl-font-weight--bold); + font-weight: var(--sl-font-weight-semibold); user-select: none; white-space: nowrap; vertical-align: middle; diff --git a/src/components/checkbox/checkbox.scss b/src/components/checkbox/checkbox.scss index ae0d24c20..86e10a204 100644 --- a/src/components/checkbox/checkbox.scss +++ b/src/components/checkbox/checkbox.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: inline-block; @@ -9,7 +9,7 @@ align-items: center; font-family: var(--sl-form-control-font-sans-serif); font-size: var(--sl-form-control-font-size--medium); - font-weight: var(--sl-font-weight--normal); + font-weight: var(--sl-font-weight-normal); color: var(--sl-form-control-color); vertical-align: middle; cursor: pointer; diff --git a/src/components/dropdown-divider/dropdown-divider.scss b/src/components/dropdown-divider/dropdown-divider.scss index 9a8700cf0..429607dc2 100644 --- a/src/components/dropdown-divider/dropdown-divider.scss +++ b/src/components/dropdown-divider/dropdown-divider.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles diff --git a/src/components/dropdown-item/dropdown-item.scss b/src/components/dropdown-item/dropdown-item.scss index f45417549..78af3ccfb 100644 --- a/src/components/dropdown-item/dropdown-item.scss +++ b/src/components/dropdown-item/dropdown-item.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles diff --git a/src/components/dropdown/dropdown.scss b/src/components/dropdown/dropdown.scss index 3c5a04d27..b2ec70e5a 100644 --- a/src/components/dropdown/dropdown.scss +++ b/src/components/dropdown/dropdown.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: inline-block; diff --git a/src/components/input/input.scss b/src/components/input/input.scss index 047100c7e..83ce5989b 100644 --- a/src/components/input/input.scss +++ b/src/components/input/input.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles diff --git a/src/components/progress-bar/progress-bar.scss b/src/components/progress-bar/progress-bar.scss index c80ad6830..11acf2d69 100644 --- a/src/components/progress-bar/progress-bar.scss +++ b/src/components/progress-bar/progress-bar.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: block; @@ -14,9 +14,9 @@ .sl-progress-bar__indicator { height: 100%; - font-family: var(--sl-font-sans-serif); + font-family: var(--sl-font-sans); font-size: 12px; - font-weight: var(--sl-font-weight--normal); + font-weight: var(--sl-font-weight-normal); background-color: var(--sl-color-primary-50); color: var(--sl-color-white); text-align: center; diff --git a/src/components/progress-ring/progress-ring.scss b/src/components/progress-ring/progress-ring.scss index f9a982c05..2a9324b1d 100644 --- a/src/components/progress-ring/progress-ring.scss +++ b/src/components/progress-ring/progress-ring.scss @@ -3,9 +3,9 @@ align-items: center; justify-content: center; position: relative; - font-family: var(--sl-font-sans-serif); + font-family: var(--sl-font-sans); font-size: 12px; - font-weight: var(--sl-font-weight--normal); + font-weight: var(--sl-font-weight-normal); } .sl-progress-ring__track { diff --git a/src/components/radio/radio.scss b/src/components/radio/radio.scss index a83bc0540..47954f7f1 100644 --- a/src/components/radio/radio.scss +++ b/src/components/radio/radio.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: inline-block; @@ -9,7 +9,7 @@ align-items: center; font-family: var(--sl-form-control-font-sans-serif); font-size: var(--sl-form-control-font-size--medium); - font-weight: var(--sl-font-weight--normal); + font-weight: var(--sl-font-weight-normal); color: var(--sl-form-control-color); vertical-align: middle; cursor: pointer; diff --git a/src/components/range/range.scss b/src/components/range/range.scss index b9e81dd52..c1593f7ba 100644 --- a/src/components/range/range.scss +++ b/src/components/range/range.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { --thumb-size: 20px; diff --git a/src/components/spinner/spinner.scss b/src/components/spinner/spinner.scss index 57f113c1f..e9db78407 100644 --- a/src/components/spinner/spinner.scss +++ b/src/components/spinner/spinner.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles diff --git a/src/components/switch/switch.scss b/src/components/switch/switch.scss index d94b80ad3..5456ccfa1 100644 --- a/src/components/switch/switch.scss +++ b/src/components/switch/switch.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { --height: var(--sl-form-control-checkbox-size); diff --git a/src/components/tab-panel/tab-panel.scss b/src/components/tab-panel/tab-panel.scss index 104a167a8..39f3f5904 100644 --- a/src/components/tab-panel/tab-panel.scss +++ b/src/components/tab-panel/tab-panel.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { display: block; diff --git a/src/components/tab/tab.scss b/src/components/tab/tab.scss index 7d521098e..6a3092555 100644 --- a/src/components/tab/tab.scss +++ b/src/components/tab/tab.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; :host { --focus-ring-box-shadow: inset 0 0 0 var(--sl-focus-ring-width) @@ -8,9 +8,9 @@ } .sl-tab { - font-family: var(--sl-font-sans-serif); + font-family: var(--sl-font-sans); font-size: var(--sl-form-control-font-size--medium); - font-weight: var(--sl-font-weight--bold); + font-weight: var(--sl-font-weight-semibold); border-radius: 4px; color: var(--sl-color-gray-40); padding: 16px 20px; diff --git a/src/components/tabs/tabs.scss b/src/components/tabs/tabs.scss index 8b196ff3d..5f9e0e67d 100644 --- a/src/components/tabs/tabs.scss +++ b/src/components/tabs/tabs.scss @@ -1,5 +1,5 @@ -@import 'reset'; -@import 'mixins'; +@import 'component'; +@import 'mixins/hide-scrollbar'; :host { display: block; diff --git a/src/components/textarea/textarea.scss b/src/components/textarea/textarea.scss index df2a8fbde..6b39f7fe5 100644 --- a/src/components/textarea/textarea.scss +++ b/src/components/textarea/textarea.scss @@ -1,4 +1,4 @@ -@import 'reset'; +@import 'component'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Base styles diff --git a/src/components/tooltip/tooltip.scss b/src/components/tooltip/tooltip.scss deleted file mode 100644 index 1a9d919a0..000000000 --- a/src/components/tooltip/tooltip.scss +++ /dev/null @@ -1,39 +0,0 @@ -// -// Tooltip styles are imported globally in shoelace.scss because we're using Tippy.js. This library appends tooltips -// directly to the element, so we need the styles to not be scoped to the component. -// -@import 'tippy.js/dist/tippy'; - -.tippy-tooltip { - border-radius: var(--sl-tooltip-border-radius); - background-color: var(--sl-tooltip-background-color); - - .tippy-arrow { - transform: scale(0.75); - } - - &[data-placement^='top'] .tippy-arrow { - border-top-color: var(--sl-tooltip-background-color); - } - - &[data-placement^='bottom'] .tippy-arrow { - border-bottom-color: var(--sl-tooltip-background-color); - } - - &[data-placement^='left'] .tippy-arrow { - border-left-color: var(--sl-tooltip-background-color); - } - - &[data-placement^='right'] .tippy-arrow { - border-right-color: var(--sl-tooltip-background-color); - } - - .tippy-content { - font-family: var(--sl-tooltip-font-family); - font-size: var(--sl-tooltip-font-size); - font-weight: var(--sl-tooltip-font-weight); - line-height: var(--sl-tooltip-line-height); - color: var(--sl-tooltip-color); - padding: var(--sl-tooltip-padding-y) var(--sl-tooltip-padding-x); - } -} diff --git a/src/styles/reset.scss b/src/styles/component.scss similarity index 100% rename from src/styles/reset.scss rename to src/styles/component.scss diff --git a/src/components/button/button.mixins.scss b/src/styles/mixins/button.scss similarity index 100% rename from src/components/button/button.mixins.scss rename to src/styles/mixins/button.scss diff --git a/src/styles/mixins.scss b/src/styles/mixins/hide-scrollbar.scss similarity index 100% rename from src/styles/mixins.scss rename to src/styles/mixins/hide-scrollbar.scss diff --git a/src/styles/shoelace.scss b/src/styles/shoelace.scss index 0f553fd66..7b24dd32c 100644 --- a/src/styles/shoelace.scss +++ b/src/styles/shoelace.scss @@ -1,83 +1,25 @@ -@import '../components/tooltip/tooltip'; +/*! Shoelace */ +@import './tokens/border-radius.scss'; +@import './tokens/color.scss'; +@import './tokens/elevation.scss'; +@import './tokens/spacing.scss'; +@import './tokens/transition.scss'; +@import './tokens/typography.scss'; +@import './tokens/z-index.scss'; +// Third-party libs +@import 'node_modules/normalize.css/normalize'; +@import 'tippy.js/dist/tippy'; + +// +// TODO: +// +// - eliminate what we can using spacing and other tokens +// - remove CSS vars that are only being used for customizations (we have ::part now) +// - Add new tokens based on what's left as necessary +// :root { - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Fonts - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-font-monospace: Menlo, Monaco, 'Courier New', monospace; - --sl-font-sans-serif: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', - 'Helvetica Neue', sans-serif; - --sl-font-serif: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; - --sl-font-weight--light: 300; - --sl-font-weight--normal: 400; - --sl-font-weight--bold: 500; - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Spacing - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-spacing--xxs: 4px; - --sl-spacing--xs: 8px; - --sl-spacing--sm: 16px; - --sl-spacing--md: 32px; - --sl-spacing--lg: 48px; - --sl-spacing--xl: 64px; - --sl-spacing--xxl: 96px; - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Elevation - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-elevation--xs: 0 1px 2px rgba(0, 0, 0, 0.1); - --sl-elevation--sm: 0 2px 4px rgba(0, 0, 0, 0.1); - --sl-elevation--md: 0 4px 8px rgba(0, 0, 0, 0.1); - --sl-elevation--lg: 0 8px 16px rgba(0, 0, 0, 0.1); - --sl-elevation--xl: 0 16px 32px rgba(0, 0, 0, 0.1); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Animation & Transitions - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-transition--slow: 500ms; - --sl-transition--medium: 325ms; - --sl-transition--fast: 150ms; - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Colors - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-color-primary-hue: 203; - --sl-color-primary-saturation: 100%; - --sl-color-primary-text: var(--sl-color-white); - - --sl-color-success-hue: 110; - --sl-color-success-saturation: 60%; - --sl-color-success-text: var(--sl-color-white); - - --sl-color-info-hue: var(--sl-color-primary-hue); - --sl-color-info-saturation: 10%; - --sl-color-info-text: var(--sl-color-white); - - --sl-color-warning-hue: 36; - --sl-color-warning-saturation: 90%; - --sl-color-warning-text: var(--sl-color-white); - - --sl-color-danger-hue: 0; - --sl-color-danger-saturation: 80%; - --sl-color-danger-text: var(--sl-color-white); - - --sl-color-gray-hue: var(--sl-color-primary-hue); - --sl-color-gray-saturation: 10%; - --sl-color-gray-text: var(--sl-color-white); - - --sl-color-white: white; - --sl-color-black: black; - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Form controls - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - --sl-focus-ring-alpha: 0.33; --sl-focus-ring-box-shadow: 0 0 0 var(--sl-focus-ring-width) hsla(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 50%, var(--sl-focus-ring-alpha)); @@ -99,11 +41,11 @@ --sl-form-control-color--focus: var(--sl-color-gray-30); --sl-form-control-color--hover: var(--sl-color-gray-30); --sl-form-control-color: var(--sl-color-gray-30); - --sl-form-control-font-family: var(--sl-font-sans-serif); + --sl-form-control-font-family: var(--sl-font-sans); --sl-form-control-font-size--large: 16px; --sl-form-control-font-size--medium: 14px; --sl-form-control-font-size--small: 12px; - --sl-form-control-font-weight: var(--sl-font-weight--normal); + --sl-form-control-font-weight: var(--sl-font-weight-normal); --sl-form-control-height--large: 50px; --sl-form-control-height--medium: 40px; --sl-form-control-height--small: 30px; @@ -115,16 +57,13 @@ --sl-form-control-placeholder-color: var(--sl-color-gray-60); --sl-form-control-transition-speed: 150ms; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Menus - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - --sl-menu-background-color: var(--sl-color-white); --sl-menu-border-color: var(--sl-color-gray-90); --sl-menu-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); - --sl-menu-font-family: var(--sl-font-sans-serif); + --sl-menu-font-family: var(--sl-font-sans); --sl-menu-font-size: var(--text-size-default); - --sl-menu-font-weight: var(--sl-font-weight--normal); + --sl-menu-font-weight: var(--sl-font-weight-normal); --sl-menu-padding-x: 30px; --sl-menu-padding-y: 10px; --sl-menu-transition-speed: 150ms; @@ -137,10 +76,7 @@ --sl-menu-item-color: var(--sl-color-gray-40); --sl-menu-item-transition-speed: 150ms; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tooltips - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - --sl-tooltip-background-color: var(--sl-color-gray-10); --sl-tooltip-border-radius: 4px; --sl-tooltip-color: var(--sl-color-white); @@ -150,128 +86,46 @@ --sl-tooltip-line-height: 1.4; --sl-tooltip-padding-x: 10px; --sl-tooltip-padding-y: 5px; - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // 🐉 Here be color palettes for each theme color. No need to change these...update hues & saturations instead! - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - --sl-color-primary-05: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 5%); - --sl-color-primary-10: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 10%); - --sl-color-primary-15: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 15%); - --sl-color-primary-20: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 20%); - --sl-color-primary-25: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 25%); - --sl-color-primary-30: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 30%); - --sl-color-primary-35: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 35%); - --sl-color-primary-40: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 40%); - --sl-color-primary-45: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 45%); - --sl-color-primary-50: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 50%); - --sl-color-primary-55: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 55%); - --sl-color-primary-60: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 60%); - --sl-color-primary-65: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 65%); - --sl-color-primary-70: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 70%); - --sl-color-primary-75: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 75%); - --sl-color-primary-80: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 80%); - --sl-color-primary-85: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 85%); - --sl-color-primary-90: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 90%); - --sl-color-primary-95: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 95%); - - --sl-color-success-05: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 5%); - --sl-color-success-10: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 10%); - --sl-color-success-15: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 15%); - --sl-color-success-20: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 20%); - --sl-color-success-25: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 25%); - --sl-color-success-30: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 30%); - --sl-color-success-35: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 35%); - --sl-color-success-40: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 40%); - --sl-color-success-45: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 45%); - --sl-color-success-50: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 50%); - --sl-color-success-55: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 55%); - --sl-color-success-60: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 60%); - --sl-color-success-65: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 65%); - --sl-color-success-70: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 70%); - --sl-color-success-75: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 75%); - --sl-color-success-80: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 80%); - --sl-color-success-85: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 85%); - --sl-color-success-90: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 90%); - --sl-color-success-95: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 95%); - - --sl-color-info-05: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 5%); - --sl-color-info-10: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 10%); - --sl-color-info-15: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 15%); - --sl-color-info-20: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 20%); - --sl-color-info-25: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 25%); - --sl-color-info-30: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 30%); - --sl-color-info-35: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 35%); - --sl-color-info-40: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 40%); - --sl-color-info-45: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 45%); - --sl-color-info-50: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 50%); - --sl-color-info-55: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 55%); - --sl-color-info-60: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 60%); - --sl-color-info-65: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 65%); - --sl-color-info-70: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 70%); - --sl-color-info-75: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 75%); - --sl-color-info-80: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 80%); - --sl-color-info-85: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 85%); - --sl-color-info-90: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 90%); - --sl-color-info-95: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 95%); - - --sl-color-warning-05: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 5%); - --sl-color-warning-10: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 10%); - --sl-color-warning-15: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 15%); - --sl-color-warning-20: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 20%); - --sl-color-warning-25: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 25%); - --sl-color-warning-30: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 30%); - --sl-color-warning-35: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 35%); - --sl-color-warning-40: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 40%); - --sl-color-warning-45: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 45%); - --sl-color-warning-50: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 50%); - --sl-color-warning-55: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 55%); - --sl-color-warning-60: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 60%); - --sl-color-warning-65: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 65%); - --sl-color-warning-70: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 70%); - --sl-color-warning-75: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 75%); - --sl-color-warning-80: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 80%); - --sl-color-warning-85: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 85%); - --sl-color-warning-90: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 90%); - --sl-color-warning-95: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 95%); - - --sl-color-danger-05: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 5%); - --sl-color-danger-10: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 10%); - --sl-color-danger-15: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 15%); - --sl-color-danger-20: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 20%); - --sl-color-danger-25: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 25%); - --sl-color-danger-30: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 30%); - --sl-color-danger-35: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 35%); - --sl-color-danger-40: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 40%); - --sl-color-danger-45: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 45%); - --sl-color-danger-50: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 50%); - --sl-color-danger-55: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 55%); - --sl-color-danger-60: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 60%); - --sl-color-danger-65: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 65%); - --sl-color-danger-70: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 70%); - --sl-color-danger-75: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 75%); - --sl-color-danger-80: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 80%); - --sl-color-danger-85: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 85%); - --sl-color-danger-90: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 90%); - --sl-color-danger-95: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 95%); - - --sl-color-gray-05: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 5%); - --sl-color-gray-10: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 10%); - --sl-color-gray-15: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 15%); - --sl-color-gray-20: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 20%); - --sl-color-gray-25: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 25%); - --sl-color-gray-30: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 30%); - --sl-color-gray-35: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 35%); - --sl-color-gray-40: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 40%); - --sl-color-gray-45: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 45%); - --sl-color-gray-50: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 50%); - --sl-color-gray-55: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 55%); - --sl-color-gray-60: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 60%); - --sl-color-gray-65: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 65%); - --sl-color-gray-70: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 70%); - --sl-color-gray-75: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 75%); - --sl-color-gray-80: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 80%); - --sl-color-gray-85: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 85%); - --sl-color-gray-90: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 90%); - --sl-color-gray-95: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 95%); +} + +// Base styles +body { + font-family: var(--sl-font-body); + font-weight: var(--sl-font-weight-body); + font-size: 16px; +} + +// Customize tooltips using our own tokens +.tippy-tooltip { + border-radius: var(--sl-tooltip-border-radius); + background-color: var(--sl-tooltip-background-color); + + .tippy-arrow { + transform: scale(0.75); + } + + &[data-placement^='top'] .tippy-arrow { + border-top-color: var(--sl-tooltip-background-color); + } + + &[data-placement^='bottom'] .tippy-arrow { + border-bottom-color: var(--sl-tooltip-background-color); + } + + &[data-placement^='left'] .tippy-arrow { + border-left-color: var(--sl-tooltip-background-color); + } + + &[data-placement^='right'] .tippy-arrow { + border-right-color: var(--sl-tooltip-background-color); + } + + .tippy-content { + font-family: var(--sl-tooltip-font-family); + font-size: var(--sl-tooltip-font-size); + font-weight: var(--sl-tooltip-font-weight); + line-height: var(--sl-tooltip-line-height); + color: var(--sl-tooltip-color); + padding: var(--sl-tooltip-padding-y) var(--sl-tooltip-padding-x); + } } diff --git a/src/styles/tokens/border-radius.scss b/src/styles/tokens/border-radius.scss new file mode 100644 index 000000000..9bb56bdb0 --- /dev/null +++ b/src/styles/tokens/border-radius.scss @@ -0,0 +1,10 @@ +:host { + --sl-border-radius-0: 0; + --sl-border-radius-1: 0.125rem; + --sl-border-radius-2: 0.25rem; + --sl-border-radius-3: 0.5rem; + --sl-border-radius-4: 1rem; + + --sl-border-radius-circle: 50%; + --sl-border-radius-pill: 9999px; +} diff --git a/src/styles/tokens/color.scss b/src/styles/tokens/color.scss new file mode 100644 index 000000000..ad099338e --- /dev/null +++ b/src/styles/tokens/color.scss @@ -0,0 +1,152 @@ +:root { + --sl-color-primary-hue: 203; + --sl-color-primary-saturation: 100%; + --sl-color-primary-text: var(--sl-color-white); + + --sl-color-success-hue: 110; + --sl-color-success-saturation: 60%; + --sl-color-success-text: var(--sl-color-white); + + --sl-color-info-hue: var(--sl-color-primary-hue); + --sl-color-info-saturation: 10%; + --sl-color-info-text: var(--sl-color-white); + + --sl-color-warning-hue: 36; + --sl-color-warning-saturation: 90%; + --sl-color-warning-text: var(--sl-color-white); + + --sl-color-danger-hue: 0; + --sl-color-danger-saturation: 80%; + --sl-color-danger-text: var(--sl-color-white); + + --sl-color-gray-hue: var(--sl-color-primary-hue); + --sl-color-gray-saturation: 10%; + --sl-color-gray-text: var(--sl-color-white); + + --sl-color-white: white; + --sl-color-black: black; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 🐉 Here be color palettes. No need to change these...just update hues and saturations above! + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + --sl-color-primary-05: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 5%); + --sl-color-primary-10: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 10%); + --sl-color-primary-15: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 15%); + --sl-color-primary-20: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 20%); + --sl-color-primary-25: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 25%); + --sl-color-primary-30: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 30%); + --sl-color-primary-35: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 35%); + --sl-color-primary-40: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 40%); + --sl-color-primary-45: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 45%); + --sl-color-primary-50: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 50%); + --sl-color-primary-55: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 55%); + --sl-color-primary-60: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 60%); + --sl-color-primary-65: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 65%); + --sl-color-primary-70: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 70%); + --sl-color-primary-75: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 75%); + --sl-color-primary-80: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 80%); + --sl-color-primary-85: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 85%); + --sl-color-primary-90: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 90%); + --sl-color-primary-95: hsl(var(--sl-color-primary-hue), var(--sl-color-primary-saturation), 95%); + + --sl-color-success-05: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 5%); + --sl-color-success-10: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 10%); + --sl-color-success-15: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 15%); + --sl-color-success-20: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 20%); + --sl-color-success-25: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 25%); + --sl-color-success-30: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 30%); + --sl-color-success-35: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 35%); + --sl-color-success-40: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 40%); + --sl-color-success-45: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 45%); + --sl-color-success-50: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 50%); + --sl-color-success-55: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 55%); + --sl-color-success-60: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 60%); + --sl-color-success-65: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 65%); + --sl-color-success-70: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 70%); + --sl-color-success-75: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 75%); + --sl-color-success-80: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 80%); + --sl-color-success-85: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 85%); + --sl-color-success-90: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 90%); + --sl-color-success-95: hsl(var(--sl-color-success-hue), var(--sl-color-success-saturation), 95%); + + --sl-color-info-05: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 5%); + --sl-color-info-10: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 10%); + --sl-color-info-15: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 15%); + --sl-color-info-20: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 20%); + --sl-color-info-25: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 25%); + --sl-color-info-30: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 30%); + --sl-color-info-35: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 35%); + --sl-color-info-40: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 40%); + --sl-color-info-45: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 45%); + --sl-color-info-50: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 50%); + --sl-color-info-55: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 55%); + --sl-color-info-60: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 60%); + --sl-color-info-65: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 65%); + --sl-color-info-70: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 70%); + --sl-color-info-75: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 75%); + --sl-color-info-80: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 80%); + --sl-color-info-85: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 85%); + --sl-color-info-90: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 90%); + --sl-color-info-95: hsl(var(--sl-color-info-hue), var(--sl-color-info-saturation), 95%); + + --sl-color-warning-05: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 5%); + --sl-color-warning-10: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 10%); + --sl-color-warning-15: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 15%); + --sl-color-warning-20: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 20%); + --sl-color-warning-25: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 25%); + --sl-color-warning-30: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 30%); + --sl-color-warning-35: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 35%); + --sl-color-warning-40: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 40%); + --sl-color-warning-45: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 45%); + --sl-color-warning-50: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 50%); + --sl-color-warning-55: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 55%); + --sl-color-warning-60: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 60%); + --sl-color-warning-65: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 65%); + --sl-color-warning-70: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 70%); + --sl-color-warning-75: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 75%); + --sl-color-warning-80: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 80%); + --sl-color-warning-85: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 85%); + --sl-color-warning-90: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 90%); + --sl-color-warning-95: hsl(var(--sl-color-warning-hue), var(--sl-color-warning-saturation), 95%); + + --sl-color-danger-05: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 5%); + --sl-color-danger-10: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 10%); + --sl-color-danger-15: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 15%); + --sl-color-danger-20: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 20%); + --sl-color-danger-25: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 25%); + --sl-color-danger-30: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 30%); + --sl-color-danger-35: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 35%); + --sl-color-danger-40: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 40%); + --sl-color-danger-45: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 45%); + --sl-color-danger-50: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 50%); + --sl-color-danger-55: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 55%); + --sl-color-danger-60: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 60%); + --sl-color-danger-65: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 65%); + --sl-color-danger-70: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 70%); + --sl-color-danger-75: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 75%); + --sl-color-danger-80: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 80%); + --sl-color-danger-85: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 85%); + --sl-color-danger-90: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 90%); + --sl-color-danger-95: hsl(var(--sl-color-danger-hue), var(--sl-color-danger-saturation), 95%); + + --sl-color-gray-05: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 5%); + --sl-color-gray-10: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 10%); + --sl-color-gray-15: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 15%); + --sl-color-gray-20: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 20%); + --sl-color-gray-25: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 25%); + --sl-color-gray-30: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 30%); + --sl-color-gray-35: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 35%); + --sl-color-gray-40: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 40%); + --sl-color-gray-45: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 45%); + --sl-color-gray-50: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 50%); + --sl-color-gray-55: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 55%); + --sl-color-gray-60: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 60%); + --sl-color-gray-65: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 65%); + --sl-color-gray-70: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 70%); + --sl-color-gray-75: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 75%); + --sl-color-gray-80: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 80%); + --sl-color-gray-85: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 85%); + --sl-color-gray-90: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 90%); + --sl-color-gray-95: hsl(var(--sl-color-gray-hue), var(--sl-color-gray-saturation), 95%); +} diff --git a/src/styles/tokens/elevation.scss b/src/styles/tokens/elevation.scss new file mode 100644 index 000000000..6a7658f13 --- /dev/null +++ b/src/styles/tokens/elevation.scss @@ -0,0 +1,7 @@ +:root { + --sl-shadow-0: none; + --sl-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.2); + --sl-shadow-2: 0 2px 4px rgba(0, 0, 0, 0.2); + --sl-shadow-3: 0 4px 8px rgba(0, 0, 0, 0.2); + --sl-shadow-4: 0 8px 16px rgba(0, 0, 0, 0.2); +} diff --git a/src/styles/tokens/spacing.scss b/src/styles/tokens/spacing.scss new file mode 100644 index 000000000..6201fd61c --- /dev/null +++ b/src/styles/tokens/spacing.scss @@ -0,0 +1,15 @@ +:root { + --sl-spacing-0: 0; + --sl-spacing-1: 0.25rem; + --sl-spacing-2: 0.5rem; + --sl-spacing-3: 0.75rem; + --sl-spacing-4: 1rem; + --sl-spacing-5: 1.25rem; + --sl-spacing-6: 1.5rem; + --sl-spacing-7: 2rem; + --sl-spacing-8: 2.5rem; + --sl-spacing-9: 3rem; + --sl-spacing-10: 3.5rem; + --sl-spacing-11: 4rem; + --sl-spacing-12: 4.5rem; +} diff --git a/src/styles/tokens/transition.scss b/src/styles/tokens/transition.scss new file mode 100644 index 000000000..f8e9d9d25 --- /dev/null +++ b/src/styles/tokens/transition.scss @@ -0,0 +1,7 @@ +:root { + --sl-transition-slower: 1000ms; + --sl-transition-slow: 500ms; + --sl-transition-default: 250ms; + --sl-transition-fast: 100ms; + --sl-transition-faster: 50ms; +} diff --git a/src/styles/tokens/typography.scss b/src/styles/tokens/typography.scss new file mode 100644 index 000000000..a6abe8f3f --- /dev/null +++ b/src/styles/tokens/typography.scss @@ -0,0 +1,50 @@ +:root { + // Font families + --sl-font-mono: Menlo, Monaco, 'Courier New', monospace; + --sl-font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', + 'Helvetica Neue', sans-serif; + --sl-font-serif: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + + --sl-font-heading: var(--sl-font-sans); + --sl-font-body: var(--sl-font-sans); + + // Font sizes + --sl-font-size-0: 0.75rem; + --sl-font-size-1: 0.875rem; + --sl-font-size-2: 1rem; + --sl-font-size-3: 1.125rem; + --sl-font-size-4: 1.25rem; + --sl-font-size-5: 1.5rem; + --sl-font-size-6: 1.75rem; + --sl-font-size-7: 2rem; + --sl-font-size-8: 2.25rem; + --sl-font-size-9: 0.2625rem; + --sl-font-size-10: 3rem; + --sl-font-size-11: 3.375rem; + --sl-font-size-12: 3.75rem; + --sl-font-size-13: 4.25rem; + --sl-font-size-14: 4.75rem; + --sl-font-size-15: 5.25rem; + --sl-font-size-16: 5.75rem; + + // Font weights + --sl-font-weight-light: 300; + --sl-font-weight-normal: 400; + --sl-font-weight-semibold: 500; + --sl-font-weight-bold: 600; + + --sl-font-weight-body: var(--sl-font-weight-default); + + // Letter spacings + --sl-letter-spacing-dense: -0.015em; + --sl-letter-spacing-normal: normal; + --sl-letter-spacing-loose: 0.075em; + + // Line heights + --sl-line-height-dense: 1.25; + --sl-line-height-normal: 1.5; + --sl-line-height-loose: 1.75; + + --sl-line-height-body: var(--sl-line-height-default); + --sl-line-height-heading: var(--sl-line-height-dense); +} diff --git a/src/styles/tokens/z-index.scss b/src/styles/tokens/z-index.scss new file mode 100644 index 000000000..f302e7d3e --- /dev/null +++ b/src/styles/tokens/z-index.scss @@ -0,0 +1,6 @@ +:root { + --sl-z-index-default: 1; + --sl-z-index-panel: 80; + --sl-z-index-notification: 90; + --sl-z-index-dialog: 100; +}