Theme: V8 Theme updates (#33050)

* GraphNG: Use new theme props

* Minor fix to letterspacing in button

* Minor tweaks

* Updated

* Revert to roboto

* Added concept of a dark or white base

* Style updates

* Sass

* Updated light text blue

* updates

* reverting button group design

* Fixed tests

* updates

* Updated tests
This commit is contained in:
Torkel Ödegaard 2021-04-16 09:48:52 +02:00 committed by GitHub
parent da03175d0b
commit 66485b3e70
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 318 additions and 182 deletions

View File

@ -34,7 +34,7 @@ export const colors = {
lightBorder1: '#E4E7E7', lightBorder1: '#E4E7E7',
blueDarkMain: '#4165F5', blueDarkMain: '#4165F5',
blueDarkText: '#33a2e5', // '#5790FF', blueDarkText: '#58a6ff', //'#33a2e5', // '#5790FF',
redDarkMain: '#D10E5C', redDarkMain: '#D10E5C',
redDarkText: '#FF5286', redDarkText: '#FF5286',
greenDarkMain: '#1A7F4B', greenDarkMain: '#1A7F4B',
@ -43,7 +43,7 @@ export const colors = {
orangeDarkText: '#F8D06B', orangeDarkText: '#F8D06B',
blueLightMain: '#3871DC', blueLightMain: '#3871DC',
blueLightText: '#1F62E0', blueLightText: '#0465d7', // '#1F62E0',
redLightMain: '#E0226E', redLightMain: '#E0226E',
redLightText: '#CF0E5B', redLightText: '#CF0E5B',
greenLightMain: '#1A7F4B', greenLightMain: '#1A7F4B',

View File

@ -79,10 +79,12 @@ export type ThemePaletteInput = DeepPartial<ThemePaletteBase<ThemePaletteColor>>
class DarkPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> { class DarkPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
mode: ThemePaletteMode = 'dark'; mode: ThemePaletteMode = 'dark';
whiteBase = '201, 209, 217';
text = { text = {
primary: 'rgba(255, 255, 255, 0.77)', primary: `rgb(${this.whiteBase})`,
secondary: 'rgba(255, 255, 255, 0.50)', secondary: `rgba(${this.whiteBase}, 0.65)`,
disabled: 'rgba(255, 255, 255, 0.35)', disabled: `rgba(${this.whiteBase}, 0.40)`,
link: colors.blueDarkText, link: colors.blueDarkText,
maxContrast: colors.white, maxContrast: colors.white,
}; };
@ -94,10 +96,10 @@ class DarkPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
}; };
secondary = { secondary = {
main: 'rgba(255,255,255,0.1)', main: `rgba(${this.whiteBase}, 0.1)`,
shade: 'rgba(255,255,255,0.15)', shade: `rgba(${this.whiteBase}, 0.15)`,
text: 'rgba(255,255,255,0.13)', text: `rgba(${this.whiteBase}, 0.13)`,
contrastText: 'rgba(255, 255, 255, 0.8)', contrastText: `rgb(${this.whiteBase})`,
}; };
info = this.primary; info = this.primary;
@ -121,19 +123,19 @@ class DarkPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
layer1 = colors.gray10; layer1 = colors.gray10;
layer2 = colors.gray15; layer2 = colors.gray15;
divider = 'rgba(218,224,254,0.06)'; divider = `rgba(${this.whiteBase}, 0.10)`;
border0 = this.layer1; border0 = this.layer1;
border1 = 'rgba(218,224,254,0.15)'; border1 = `rgba(${this.whiteBase}, 0.15)`;
border2 = 'rgba(218,224,254,0.20)'; border2 = `rgba(${this.whiteBase}, 0.20)`;
action = { action = {
hover: 'rgba(255, 255, 255, 0.08)', hover: `rgba(${this.whiteBase}, 0.08)`,
selected: 'rgba(255, 255, 255, 0.12)', selected: `rgba(${this.whiteBase}, 0.12)`,
focus: 'rgba(255, 255, 255, 0.16)', focus: `rgba(${this.whiteBase}, 0.16)`,
hoverOpacity: 0.08, hoverOpacity: 0.08,
disabledText: this.text.disabled, disabledText: this.text.disabled,
disabledBackground: 'rgba(255,255,255,0.07)', disabledBackground: `rgba(${this.whiteBase}, 0.07)`,
disabledOpacity: 0.38, disabledOpacity: 0.38,
}; };
@ -143,13 +145,15 @@ class DarkPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
}; };
contrastThreshold = 3; contrastThreshold = 3;
hoverFactor = 0.15; hoverFactor = 0.03;
tonalOffset = 0.15; tonalOffset = 0.15;
} }
class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> { class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
mode: ThemePaletteMode = 'light'; mode: ThemePaletteMode = 'light';
blackBase = '36, 41, 46';
primary = { primary = {
main: colors.blueLightMain, main: colors.blueLightMain,
border: colors.blueLightText, border: colors.blueLightText,
@ -157,9 +161,9 @@ class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
}; };
secondary = { secondary = {
main: 'rgba(0,0,0,0.11)', main: `rgba(${this.blackBase}, 0.11)`,
shade: 'rgba(0,0,0,0.16)', shade: `rgba(${this.blackBase}, 0.16)`,
contrastText: 'rgba(0, 0, 0, 0.75)', contrastText: `rgba(${this.blackBase}, 1)`,
}; };
info = { info = {
@ -184,9 +188,9 @@ class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
}; };
text = { text = {
primary: 'rgba(0, 0, 0, 0.75)', primary: `rgba(${this.blackBase}, 1)`,
secondary: 'rgba(0, 0, 0, 0.60)', secondary: `rgba(${this.blackBase}, 0.75)`,
disabled: 'rgba(0, 0, 0, 0.45)', disabled: `rgba(${this.blackBase}, 0.50)`,
link: this.primary.text, link: this.primary.text,
maxContrast: colors.black, maxContrast: colors.black,
}; };
@ -195,18 +199,18 @@ class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
layer1 = colors.white; layer1 = colors.white;
layer2 = colors.gray100; layer2 = colors.gray100;
divider = 'rgba(0, 2, 78, 0.07)'; divider = `rgba(${this.blackBase}, 0.12)`;
border0 = this.layer1; border0 = this.layer1;
border1 = 'rgba(0, 2, 78, 0.20)'; border1 = `rgba(${this.blackBase}, 0.30)`;
border2 = 'rgba(0, 2, 78, 0.30)'; border2 = `rgba(${this.blackBase}, 0.40)`;
action = { action = {
hover: 'rgba(0, 0, 0, 0.04)', hover: `rgba(${this.blackBase}, 0.04)`,
selected: 'rgba(0, 0, 0, 0.08)', selected: `rgba(${this.blackBase}, 0.08)`,
hoverOpacity: 0.08, hoverOpacity: 0.08,
focus: 'rgba(0, 0, 0, 0.12)', focus: `rgba(${this.blackBase}, 0.12)`,
disabledBackground: 'rgba(0,0,0,0.07)', disabledBackground: `rgba(${this.blackBase}, 0.07)`,
disabledText: this.text.disabled, disabledText: this.text.disabled,
disabledOpacity: 0.38, disabledOpacity: 0.38,
}; };
@ -217,7 +221,7 @@ class LightPalette implements ThemePaletteBase<Partial<ThemePaletteColor>> {
}; };
contrastThreshold = 3; contrastThreshold = 3;
hoverFactor = 0.15; hoverFactor = 0.03;
tonalOffset = 0.2; tonalOffset = 0.2;
} }
@ -240,7 +244,7 @@ export function createPalette(palette: ThemePaletteInput): ThemePalette {
function getContrastText(background: string) { function getContrastText(background: string) {
const contrastText = const contrastText =
getContrastRatio(background, dark.text.primary) >= contrastThreshold getContrastRatio(background, dark.text.maxContrast) >= contrastThreshold
? dark.text.maxContrast ? dark.text.maxContrast
: light.text.maxContrast; : light.text.maxContrast;
// todo, need color framework // todo, need color framework

View File

@ -63,7 +63,7 @@ export interface ThemeTypographyInput {
htmlFontSize?: number; htmlFontSize?: number;
} }
const defaultFontFamily = '"Inter", "Helvetica", "Arial", sans-serif'; const defaultFontFamily = '"Roboto", "Helvetica", "Arial", sans-serif';
const defaultFontFamilyMonospace = "'Roboto Mono', monospace"; const defaultFontFamilyMonospace = "'Roboto Mono', monospace";
export function createTypography(palette: ThemePalette, typographyInput: ThemeTypographyInput = {}): ThemeTypography { export function createTypography(palette: ThemePalette, typographyInput: ThemeTypographyInput = {}): ThemeTypography {
@ -104,19 +104,19 @@ export function createTypography(palette: ThemePalette, typographyInput: ThemeTy
fontWeight, fontWeight,
fontSize: pxToRem(size), fontSize: pxToRem(size),
lineHeight, lineHeight,
letterSpacing: `${letterSpacing}em`, ...(fontFamily === defaultFontFamily ? { letterSpacing: `${round(letterSpacing / size)}em` } : {}),
...casing, ...casing,
}); });
const variants = { const variants = {
h1: buildVariant(fontWeightMedium, 28, 1.2, -0.01), h1: buildVariant(fontWeightLight, 28, 1.167, -0.25),
h2: buildVariant(fontWeightMedium, 24, 1.2, -0.01), h2: buildVariant(fontWeightLight, 24, 1.2, 0),
h3: buildVariant(fontWeightMedium, 21, 1.3, -0.01), h3: buildVariant(fontWeightRegular, 21, 1.167, 0),
h4: buildVariant(fontWeightRegular, 18, 1.4, -0.005), h4: buildVariant(fontWeightRegular, 18, 1.235, 0.25),
h5: buildVariant(fontWeightRegular, 16, 1.334, -0.005), h5: buildVariant(fontWeightRegular, 16, 1.334, 0),
h6: buildVariant(fontWeightRegular, 14, 1.6, -0.005), h6: buildVariant(fontWeightMedium, 14, 1.6, 0.15),
body: buildVariant(fontWeightRegular, 14, 1.5, -0.005), body: buildVariant(fontWeightRegular, 14, 1.5, 0.15),
bodySmall: buildVariant(fontWeightRegular, 12, 1.5, -0.005), bodySmall: buildVariant(fontWeightRegular, 12, 1.5, 0.15),
}; };
const size = { const size = {
@ -141,3 +141,7 @@ export function createTypography(palette: ThemePalette, typographyInput: ThemeTy
...variants, ...variants,
}; };
} }
function round(value: number) {
return Math.round(value * 1e5) / 1e5;
}

View File

@ -43,6 +43,7 @@ export const parameters = {
dark: GrafanaDark, dark: GrafanaDark,
light: GrafanaLight, light: GrafanaLight,
}, },
layout: 'fullscreen',
actions: { argTypesRegex: '^on[A-Z].*' }, actions: { argTypesRegex: '^on[A-Z].*' },
options: { options: {
showPanel: true, showPanel: true,

View File

@ -23,11 +23,11 @@ const createTheme = (theme: GrafanaTheme) => {
fontCode: theme.v2.typography.fontFamilyMonospace, fontCode: theme.v2.typography.fontFamilyMonospace,
// Text colors // Text colors
textColor: theme.v2.palette.text.primary, textColor: theme.v2.palette.primary.text,
textInverseColor: theme.v2.palette.primary.contrastText, textInverseColor: theme.v2.palette.primary.contrastText,
// Toolbar default and active colors // Toolbar default and active colors
barTextColor: theme.v2.palette.primary.text, barTextColor: theme.v2.palette.text.primary,
barSelectedColor: theme.v2.palette.emphasize(theme.v2.palette.primary.text), barSelectedColor: theme.v2.palette.emphasize(theme.v2.palette.primary.text),
barBg: theme.v2.palette.layer1, barBg: theme.v2.palette.layer1,

View File

@ -2,7 +2,7 @@
exports[`CustomScrollbar renders correctly 1`] = ` exports[`CustomScrollbar renders correctly 1`] = `
<div <div
className="css-1xduqpt" className="css-d4ozb2"
style={ style={
Object { Object {
"height": "auto", "height": "auto",

View File

@ -3,7 +3,6 @@ import { GrafanaTheme } from '@grafana/data';
import { focusCss } from '../../themes/mixins'; import { focusCss } from '../../themes/mixins';
import { css as cssCore } from '@emotion/react'; import { css as cssCore } from '@emotion/react';
import { css } from '@emotion/css'; import { css } from '@emotion/css';
import tinycolor from 'tinycolor2';
export const getFocusStyle = (theme: GrafanaTheme) => css` export const getFocusStyle = (theme: GrafanaTheme) => css`
&:focus { &:focus {
@ -12,11 +11,11 @@ export const getFocusStyle = (theme: GrafanaTheme) => css`
`; `;
export const getStyles = stylesFactory((theme: GrafanaTheme, isHorizontal: boolean) => { export const getStyles = stylesFactory((theme: GrafanaTheme, isHorizontal: boolean) => {
const { spacing, palette } = theme; const { spacing } = theme;
const railColor = theme.isLight ? palette.gray5 : palette.dark6; const railColor = theme.v2.palette.border2;
const trackColor = theme.isLight ? palette.blue85 : palette.blue77; const trackColor = theme.v2.palette.primary.main;
const handleColor = theme.isLight ? palette.blue85 : palette.blue80; const handleColor = theme.v2.palette.primary.main;
const blueOpacity = tinycolor(handleColor).setAlpha(0.2).toString(); const blueOpacity = theme.v2.palette.primary.transparent;
const hoverSyle = `box-shadow: 0px 0px 0px 6px ${blueOpacity}`; const hoverSyle = `box-shadow: 0px 0px 0px 6px ${blueOpacity}`;
return { return {
@ -37,6 +36,7 @@ export const getStyles = stylesFactory((theme: GrafanaTheme, isHorizontal: boole
.rc-slider-handle { .rc-slider-handle {
border: none; border: none;
background-color: ${handleColor}; background-color: ${handleColor};
box-shadow: ${theme.v2.shadows.z1};
cursor: pointer; cursor: pointer;
} }
.rc-slider-handle:hover, .rc-slider-handle:hover,
@ -51,7 +51,6 @@ export const getStyles = stylesFactory((theme: GrafanaTheme, isHorizontal: boole
} }
.rc-slider-rail { .rc-slider-rail {
background-color: ${railColor}; background-color: ${railColor};
border: 1px solid ${railColor};
cursor: pointer; cursor: pointer;
} }
`, `,

View File

@ -9,7 +9,7 @@ const getStyles = stylesFactory((theme: GrafanaTheme) => {
label: counter; label: counter;
margin-left: ${theme.spacing.sm}; margin-left: ${theme.spacing.sm};
border-radius: ${theme.spacing.lg}; border-radius: ${theme.spacing.lg};
background-color: ${theme.colors.bg2}; background-color: ${theme.v2.palette.action.hover};
padding: ${theme.spacing.xxs} ${theme.spacing.sm}; padding: ${theme.spacing.xxs} ${theme.spacing.sm};
color: ${theme.colors.textWeak}; color: ${theme.colors.textWeak};
font-weight: ${theme.typography.weight.semibold}; font-weight: ${theme.typography.weight.semibold};

View File

@ -50,16 +50,14 @@ export class UPlotAxisBuilder extends PlotConfigBuilder<AxisProps, Axis> {
theme, theme,
} = this.props; } = this.props;
let { typography } = theme; const font = `12px ${theme.v2.typography.fontFamily}`;
let font = `${typography.size.sm} ${typography.fontFamily.sansSerif}`; const gridColor = theme.v2.isDark ? 'rgba(240, 250, 255, 0.09)' : 'rgba(0, 10, 23, 0.09)';
const gridColor = theme.isDark ? theme.palette.gray25 : theme.palette.gray90;
let config: Axis = { let config: Axis = {
scale: scaleKey, scale: scaleKey,
show, show,
stroke: theme.colors.text, stroke: theme.v2.palette.text.primary,
side: getUPlotSideFromAxis(placement), side: getUPlotSideFromAxis(placement),
font, font,
labelFont: font, labelFont: font,

View File

@ -299,15 +299,15 @@ describe('UPlotConfigBuilder', () => {
Object { Object {
"axes": Array [ "axes": Array [
Object { Object {
"font": "12px 'Inter', 'Helvetica Neue', Arial, sans-serif", "font": "12px \\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif",
"gap": 5, "gap": 5,
"grid": Object { "grid": Object {
"show": false, "show": false,
"stroke": "#2c3235", "stroke": "rgba(240, 250, 255, 0.09)",
"width": 1, "width": 1,
}, },
"label": "test label", "label": "test label",
"labelFont": "12px 'Inter', 'Helvetica Neue', Arial, sans-serif", "labelFont": "12px \\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif",
"labelSize": 18, "labelSize": 18,
"scale": "scale-x", "scale": "scale-x",
"show": true, "show": true,
@ -315,10 +315,10 @@ describe('UPlotConfigBuilder', () => {
"size": [Function], "size": [Function],
"space": [Function], "space": [Function],
"splits": undefined, "splits": undefined,
"stroke": "rgba(255, 255, 255, 0.77)", "stroke": "rgb(201, 209, 217)",
"ticks": Object { "ticks": Object {
"show": true, "show": true,
"stroke": "#2c3235", "stroke": "rgba(240, 250, 255, 0.09)",
"width": 1, "width": 1,
}, },
"timeZone": "browser", "timeZone": "browser",

View File

@ -51,6 +51,10 @@ export function getElementStyles(theme: GrafanaThemeV2) {
margin: 0 0 ${theme.spacing(2)}; margin: 0 0 ${theme.spacing(2)};
} }
button {
letter-spacing: ${theme.typography.body.letterSpacing};
}
// Ex: 14px base font * 85% = about 12px // Ex: 14px base font * 85% = about 12px
small { small {
font-size: ${theme.typography.bodySmall.fontSize}; font-size: ${theme.typography.bodySmall.fontSize};

View File

@ -31,7 +31,7 @@ const theme: GrafanaThemeCommons = {
name: 'Grafana Default', name: 'Grafana Default',
typography: { typography: {
fontFamily: { fontFamily: {
sansSerif: "'Inter', 'Helvetica Neue', Arial, sans-serif", sansSerif: "'Roboto', 'Helvetica Neue', Arial, sans-serif",
monospace: "'Roboto Mono', monospace", monospace: "'Roboto Mono', monospace",
}, },
size: { size: {

View File

@ -21,7 +21,7 @@ export function getCanvasContext() {
* @beta * @beta
*/ */
export function measureText(text: string, fontSize: number): TextMetrics { export function measureText(text: string, fontSize: number): TextMetrics {
const fontStyle = `${fontSize}px 'Inter'`; const fontStyle = `${fontSize}px 'Roboto'`;
const cacheKey = text + fontStyle; const cacheKey = text + fontStyle;
const fromCache = cache[cacheKey]; const fromCache = cache[cacheKey];

View File

@ -1,14 +1,18 @@
import React from 'react'; import React from 'react';
import { GlobalStyles } from '../../themes'; import { GlobalStyles, useTheme } from '../../themes';
import { RenderFunction } from '../../types'; import { RenderFunction } from '../../types';
const PaddedStory: React.FunctionComponent<{}> = ({ children }) => { const PaddedStory: React.FunctionComponent<{}> = ({ children }) => {
const theme = useTheme();
return ( return (
<div <div
style={{ style={{
width: '100%', width: '100%',
padding: '20px', padding: '20px',
display: 'flex', display: 'flex',
minHeight: '80vh',
background: `${theme.v2.palette.layer1}`,
}} }}
> >
<GlobalStyles /> <GlobalStyles />

View File

@ -8,7 +8,7 @@ exports[`Render should render component 1`] = `
onCancel={[Function]} onCancel={[Function]}
styles={ styles={
Object { Object {
"actionsRow": "css-sxfls", "actionsRow": "css-l02n0m",
"actionsWrapper": "css-gxxmom", "actionsWrapper": "css-gxxmom",
"backButton": "css-1cdxa9p", "backButton": "css-1cdxa9p",
"headerRow": "css-3sdqvi", "headerRow": "css-3sdqvi",
@ -25,7 +25,7 @@ exports[`Render should render component 1`] = `
className="css-gxxmom" className="css-gxxmom"
> >
<div <div
className="css-sxfls" className="css-l02n0m"
> >
<div <div
aria-label="Add new panel" aria-label="Add new panel"

View File

@ -114,15 +114,11 @@ const getStyles = (theme: GrafanaTheme) => {
cursor: pointer; cursor: pointer;
align-items: baseline; align-items: baseline;
padding: ${theme.spacing.sm}; padding: ${theme.spacing.sm};
color: ${theme.v2.palette.text.secondary}; color: ${theme.v2.palette.text.primary};
font-weight: ${theme.typography.weight.semibold}; font-weight: ${theme.typography.weight.semibold};
&:hover { &:hover {
color: ${theme.v2.palette.text.primary}; background: ${theme.v2.palette.emphasize(theme.v2.palette.layer1, 0.03)};
.editor-options-group-toggle {
color: ${theme.colors.text};
}
} }
`, `,
headerExpanded: css` headerExpanded: css`

View File

@ -183,7 +183,7 @@ export function getFieldOverrideCategories(props: OptionPaneRenderProps): Option
<ValuePicker <ValuePicker
label="Add override property" label="Add override property"
variant="secondary" variant="secondary"
isFullWidth={false} isFullWidth={true}
icon="plus" icon="plus"
menuPlacement="auto" menuPlacement="auto"
options={configPropertiesOptions} options={configPropertiesOptions}
@ -209,9 +209,9 @@ export function getFieldOverrideCategories(props: OptionPaneRenderProps): Option
icon="plus" icon="plus"
label="Add a field override" label="Add a field override"
variant="secondary" variant="secondary"
size="sm"
menuPlacement="auto" menuPlacement="auto"
isFullWidth={false} isFullWidth={true}
size="md"
options={fieldMatchersUI options={fieldMatchersUI
.list() .list()
.filter((o) => !o.excludeFromPicker) .filter((o) => !o.excludeFromPicker)

View File

@ -2,7 +2,7 @@
exports[`MetaInfoText should render component 1`] = ` exports[`MetaInfoText should render component 1`] = `
<div <div
className="css-7qzshi" className="css-1nu680j"
> >
<Memo(MetaInfoItem) <Memo(MetaInfoItem)
key="0-label" key="0-label"

Binary file not shown.

Binary file not shown.

View File

@ -62,10 +62,10 @@ $layer0: #111217;
$layer1: #181b1f; $layer1: #181b1f;
$layer2: #22252b; $layer2: #22252b;
$divider: rgba(218,224,254,0.06); $divider: rgba(201, 209, 217, 0.10);
$border0: #181b1f; $border0: #181b1f;
$border1: rgba(218,224,254,0.15); $border1: rgba(201, 209, 217, 0.20);
// Accent colors // Accent colors
// ------------------------- // -------------------------
@ -74,7 +74,7 @@ $red: $red-base;
$yellow: #ecbb13; $yellow: #ecbb13;
$orange: #eb7b18; $orange: #eb7b18;
$purple: #9933cc; $purple: #9933cc;
$variable: #33a2e5; $variable: #58a6ff;
$brand-primary: #eb7b18; $brand-primary: #eb7b18;
$brand-success: #299c46; $brand-success: #299c46;
@ -99,12 +99,12 @@ $page-bg: #181b1f;
$dashboard-bg: #111217; $dashboard-bg: #111217;
$text-color-strong: #fff; $text-color-strong: #fff;
$text-color: rgba(255, 255, 255, 0.77); $text-color: rgb(201, 209, 217);
$text-color-semi-weak: rgba(255, 255, 255, 0.50); $text-color-semi-weak: rgba(201, 209, 217, 0.65);
$text-color-weak: rgba(255, 255, 255, 0.50); $text-color-weak: rgba(201, 209, 217, 0.65);
$text-color-faint: rgba(255, 255, 255, 0.35); $text-color-faint: rgba(201, 209, 217, 0.40);
$text-color-emphasis: #fff; $text-color-emphasis: #fff;
$text-blue: #33a2e5; $text-blue: #58a6ff;
$text-shadow-faint: 1px 1px 4px rgb(45, 45, 45); $text-shadow-faint: 1px 1px 4px rgb(45, 45, 45);
$textShadow: none; $textShadow: none;
@ -122,7 +122,7 @@ $external-link-color: #33a2e5;
// Typography // Typography
// ------------------------- // -------------------------
$headings-color: rgba(255, 255, 255, 0.77); $headings-color: rgb(201, 209, 217);
$abbr-border-color: $gray-2 !default; $abbr-border-color: $gray-2 !default;
$text-muted: $text-color-weak; $text-muted: $text-color-weak;
@ -132,7 +132,7 @@ $hr-border-color: $dark-9;
// ------------------------- // -------------------------
$panel-bg: #181b1f; $panel-bg: #181b1f;
$panel-border: #181b1f; $panel-border: #181b1f;
$panel-header-hover-bg: rgba(255, 255, 255, 0.08); $panel-header-hover-bg: rgba(201, 209, 217, 0.08);
$panel-box-shadow: 0px 1px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.15),0px 1px 3px 0px rgba(0,0,0,0.1); $panel-box-shadow: 0px 1px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.15),0px 1px 3px 0px rgba(0,0,0,0.1);
$panel-corner: $panel-bg; $panel-corner: $panel-bg;
@ -147,7 +147,7 @@ $divider-border-color: $gray-1;
$tight-form-func-bg: #22252b; $tight-form-func-bg: #22252b;
$tight-form-func-highlight-bg: rgb(40, 43, 49); $tight-form-func-highlight-bg: rgb(40, 43, 49);
$modal-backdrop-bg: rgba(255, 255, 255, 0.08); $modal-backdrop-bg: rgba(201, 209, 217, 0.08);
$code-tag-bg: $dark-1; $code-tag-bg: $dark-1;
$code-tag-border: $dark-9; $code-tag-border: $dark-9;
@ -171,7 +171,7 @@ $scrollbarBorder: black;
// Tables // Tables
// ------------------------- // -------------------------
$table-bg-accent: #22252b; $table-bg-accent: #22252b;
$table-border: rgba(218,224,254,0.15); $table-border: rgba(201, 209, 217, 0.20);
$table-bg-odd: rgb(28, 31, 35); $table-bg-odd: rgb(28, 31, 35);
$table-bg-hover: rgb(35, 38, 42); $table-bg-hover: rgb(35, 38, 42);
@ -213,11 +213,11 @@ $input-bg: $input-black;
$input-bg-disabled: $dark-6; $input-bg-disabled: $dark-6;
$input-color: #c7d0d9; $input-color: #c7d0d9;
$input-border-color: rgba(218,224,254,0.15); $input-border-color: rgba(201, 209, 217, 0.20);
$input-box-shadow: none; $input-box-shadow: none;
$input-border-focus: #5794f2; $input-border-focus: #5794f2;
$input-box-shadow-focus: $blue-light !default; $input-box-shadow-focus: $blue-light !default;
$input-color-placeholder: rgba(255, 255, 255, 0.35); $input-color-placeholder: rgba(201, 209, 217, 0.40);
$input-label-bg: #22252b; $input-label-bg: #22252b;
$input-color-select-arrow: $white; $input-color-select-arrow: $white;
@ -233,8 +233,8 @@ $typeahead-selected-color: $yellow;
// ------------------------- // -------------------------
$dropdownBackground: #22252b; $dropdownBackground: #22252b;
$dropdownBorder: #181b1f; $dropdownBorder: #181b1f;
$dropdownDividerTop: rgba(218,224,254,0.06); $dropdownDividerTop: rgba(201, 209, 217, 0.10);
$dropdownDividerBottom: rgba(218,224,254,0.06); $dropdownDividerBottom: rgba(201, 209, 217, 0.10);
$dropdownLinkColor: $link-color; $dropdownLinkColor: $link-color;
$dropdownLinkColorHover: $white; $dropdownLinkColorHover: $white;
@ -258,12 +258,12 @@ $side-menu-border: none;
$side-menu-item-hover-bg: #22252b; $side-menu-item-hover-bg: #22252b;
$side-menu-shadow: 0 0 30px #111; $side-menu-shadow: 0 0 30px #111;
$side-menu-icon-color: #9fa7b3; $side-menu-icon-color: #9fa7b3;
$side-menu-header-color: rgba(255, 255, 255, 0.77); $side-menu-header-color: rgb(201, 209, 217);
// Menu dropdowns // Menu dropdowns
// ------------------------- // -------------------------
$menu-dropdown-bg: #22252b; $menu-dropdown-bg: #22252b;
$menu-dropdown-hover-bg: rgba(255, 255, 255, 0.08); $menu-dropdown-hover-bg: rgba(201, 209, 217, 0.08);
$menu-dropdown-shadow: 0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.15),0px 1px 10px 0px rgba(0,0,0,0.1); $menu-dropdown-shadow: 0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.15),0px 1px 10px 0px rgba(0,0,0,0.1);
// Tabs // Tabs
@ -288,14 +288,14 @@ $tooltipLinkColor: $link-color;
$graph-tooltip-bg: $dark-1; $graph-tooltip-bg: $dark-1;
$tooltipBackground: #22252b; $tooltipBackground: #22252b;
$tooltipColor: rgba(255, 255, 255, 0.77); $tooltipColor: rgb(201, 209, 217);
$tooltipArrowColor: #22252b; $tooltipArrowColor: #22252b;
$tooltipBackgroundError: #D10E5C; $tooltipBackgroundError: #D10E5C;
$tooltipShadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.15),0px 1px 5px 0px rgba(0,0,0,0.1); $tooltipShadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.15),0px 1px 5px 0px rgba(0,0,0,0.1);
$popover-bg: #22252b; $popover-bg: #22252b;
$popover-color: rgba(255, 255, 255, 0.77); $popover-color: rgb(201, 209, 217);
$popover-border-color: rgba(218,224,254,0.15); $popover-border-color: rgba(201, 209, 217, 0.20);
$popover-header-bg: #22252b; $popover-header-bg: #22252b;
$popover-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.15),0px 3px 14px 2px rgba(0,0,0,0.1); $popover-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.15),0px 3px 14px 2px rgba(0,0,0,0.1);
@ -332,14 +332,14 @@ $json-explorer-url-color: #027bff;
// Changelog and diff // Changelog and diff
// ------------------------- // -------------------------
$diff-label-bg: rgba(255, 255, 255, 0.08); $diff-label-bg: rgba(201, 209, 217, 0.08);
$diff-label-fg: $white; $diff-label-fg: $white;
$diff-group-bg: #22252b; $diff-group-bg: #22252b;
$diff-arrow-color: $white; $diff-arrow-color: $white;
$diff-json-bg: #22252b; $diff-json-bg: #22252b;
$diff-json-fg: rgba(255, 255, 255, 0.77); $diff-json-fg: rgb(201, 209, 217);
$diff-json-added: $blue-shade; $diff-json-added: $blue-shade;
$diff-json-deleted: $red-shade; $diff-json-deleted: $red-shade;

View File

@ -99,7 +99,7 @@ $height-lg: 48;
// Typography // Typography
// ------------------------- // -------------------------
$font-family-sans-serif: 'Inter', 'Helvetica Neue', Arial, sans-serif; $font-family-sans-serif: 'Roboto', 'Helvetica Neue', Arial, sans-serif;
$font-family-monospace: 'Roboto Mono', monospace; $font-family-monospace: 'Roboto Mono', monospace;
$font-size-base: 14px !default; $font-size-base: 14px !default;

View File

@ -57,19 +57,19 @@ $layer0: #F4F5F5;
$layer1: #fff; $layer1: #fff;
$layer2: #F4F5F5; $layer2: #F4F5F5;
$divider: rgba(0, 2, 78, 0.07); $divider: rgba(36, 41, 46, 0.12);
$border0: #fff; $border0: #fff;
$border1: rgba(0, 2, 78, 0.20); $border1: rgba(36, 41, 46, 0.30);
// Accent colors // Accent colors
// ------------------------- // -------------------------
$blue: #1F62E0; $blue: #0465d7;
$red: $red-base; $red: $red-base;
$yellow: #ff851b; $yellow: #ff851b;
$orange: #ff7941; $orange: #ff7941;
$purple: #9954bb; $purple: #9954bb;
$variable: #1F62E0; $variable: #0465d7;
$brand-primary: #ff7941; $brand-primary: #ff7941;
$brand-success: #3eb15b; $brand-success: #3eb15b;
@ -93,13 +93,13 @@ $body-bg: #fff;
$page-bg: #fff; $page-bg: #fff;
$dashboard-bg: #F4F5F5; $dashboard-bg: #F4F5F5;
$text-color: rgba(0, 0, 0, 0.75); $text-color: rgba(36, 41, 46, 1);
$text-color-strong: #000; $text-color-strong: #000;
$text-color-semi-weak: rgba(0, 0, 0, 0.60); $text-color-semi-weak: rgba(36, 41, 46, 0.75);
$text-color-weak: rgba(0, 0, 0, 0.60); $text-color-weak: rgba(36, 41, 46, 0.75);
$text-color-faint: rgba(0, 0, 0, 0.45); $text-color-faint: rgba(36, 41, 46, 0.50);
$text-color-emphasis: #000; $text-color-emphasis: #000;
$text-blue: #1F62E0; $text-blue: #0465d7;
$text-shadow-faint: none; $text-shadow-faint: none;
@ -109,14 +109,14 @@ $brand-gradient-vertical: linear-gradient(#f05a28 30%, #fbca0a 99%);
// Links // Links
// ------------------------- // -------------------------
$link-color: rgba(0, 0, 0, 0.75); $link-color: rgba(36, 41, 46, 1);
$link-color-disabled: rgba(0, 0, 0, 0.60); $link-color-disabled: rgba(36, 41, 46, 0.75);
$link-hover-color: #000; $link-hover-color: #000;
$external-link-color: #33a2e5; $external-link-color: #33a2e5;
// Typography // Typography
// ------------------------- // -------------------------
$headings-color: rgba(0, 0, 0, 0.75); $headings-color: rgba(36, 41, 46, 1);
$abbr-border-color: $gray-2 !default; $abbr-border-color: $gray-2 !default;
$text-muted: $text-color-weak; $text-muted: $text-color-weak;
@ -126,7 +126,7 @@ $hr-border-color: $gray-4 !default;
// ------------------------- // -------------------------
$panel-bg: #fff; $panel-bg: #fff;
$panel-border: #fff; $panel-border: #fff;
$panel-header-hover-bg: rgba(0, 0, 0, 0.04); $panel-header-hover-bg: rgba(36, 41, 46, 0.04);
$panel-box-shadow: 0px 1px 1px -1px rgba(0,0,0,0.15),0px 0px 0px 0px rgba(0,0,0,0.1),0px 1px 3px 0px rgba(0,0,0,0.1); $panel-box-shadow: 0px 1px 1px -1px rgba(0,0,0,0.15),0px 0px 0px 0px rgba(0,0,0,0.1),0px 1px 3px 0px rgba(0,0,0,0.1);
$panel-corner: $panel-bg; $panel-corner: $panel-bg;
@ -165,7 +165,7 @@ $scrollbarBorder: $gray-7;
// Tables // Tables
// ------------------------- // -------------------------
$table-bg-accent: #F4F5F5; $table-bg-accent: #F4F5F5;
$table-border: rgba(0, 2, 78, 0.20); $table-border: rgba(36, 41, 46, 0.30);
$table-bg-odd: rgb(249, 249, 249); $table-bg-odd: rgb(249, 249, 249);
$table-bg-hover: rgb(242, 242, 242); $table-bg-hover: rgb(242, 242, 242);
@ -206,12 +206,12 @@ $btn-active-box-shadow: 0px 0px 4px rgba(234, 161, 51, 0.6);
$input-bg: $white; $input-bg: $white;
$input-bg-disabled: $gray-5; $input-bg-disabled: $gray-5;
$input-color: rgba(0, 0, 0, 0.75); $input-color: rgba(36, 41, 46, 1);
$input-border-color: #c7d0d9; $input-border-color: #c7d0d9;
$input-box-shadow: none; $input-box-shadow: none;
$input-border-focus: #5794f2; $input-border-focus: #5794f2;
$input-box-shadow-focus: #5794f2; $input-box-shadow-focus: #5794f2;
$input-color-placeholder: rgba(0, 0, 0, 0.45); $input-color-placeholder: rgba(36, 41, 46, 0.50);
$input-label-bg: #F4F5F5; $input-label-bg: #F4F5F5;
$input-color-select-arrow: #7b8087; $input-color-select-arrow: #7b8087;
@ -227,8 +227,8 @@ $typeahead-selected-color: $yellow;
// ------------------------- // -------------------------
$dropdownBackground: #F4F5F5; $dropdownBackground: #F4F5F5;
$dropdownBorder: #fff; $dropdownBorder: #fff;
$dropdownDividerTop: rgba(0, 2, 78, 0.07); $dropdownDividerTop: rgba(36, 41, 46, 0.12);
$dropdownDividerBottom: rgba(0, 2, 78, 0.07); $dropdownDividerBottom: rgba(36, 41, 46, 0.12);
$dropdownLinkColor: $dark-2; $dropdownLinkColor: $dark-2;
$dropdownLinkColorHover: $link-color; $dropdownLinkColorHover: $link-color;
@ -259,7 +259,7 @@ $side-menu-header-color: #e9edf2;
// Menu dropdowns // Menu dropdowns
// ------------------------- // -------------------------
$menu-dropdown-bg: #F4F5F5; $menu-dropdown-bg: #F4F5F5;
$menu-dropdown-hover-bg: rgba(0, 0, 0, 0.04); $menu-dropdown-hover-bg: rgba(36, 41, 46, 0.04);
$menu-dropdown-shadow: 0px 2px 4px -1px rgba(0,0,0,0.15),0px 4px 5px 0px rgba(0,0,0,0.1),0px 1px 10px 0px rgba(0,0,0,0.1); $menu-dropdown-shadow: 0px 2px 4px -1px rgba(0,0,0,0.15),0px 4px 5px 0px rgba(0,0,0,0.1),0px 1px 10px 0px rgba(0,0,0,0.1);
// Tabs // Tabs
@ -279,14 +279,14 @@ $alert-info-bg: linear-gradient(100deg, $blue-base, $blue-shade);
// Tooltips and popovers // Tooltips and popovers
$tooltipBackground: #F4F5F5; $tooltipBackground: #F4F5F5;
$tooltipColor: rgba(0, 0, 0, 0.75); $tooltipColor: rgba(36, 41, 46, 1);
$tooltipArrowColor: #F4F5F5; $tooltipArrowColor: #F4F5F5;
$tooltipBackgroundError: #E0226E; $tooltipBackgroundError: #E0226E;
$tooltipShadow: 0px 2px 1px -2px rgba(0,0,0,0.15),0px 2px 2px 0px rgba(0,0,0,0.1),0px 1px 5px 0px rgba(0,0,0,0.1); $tooltipShadow: 0px 2px 1px -2px rgba(0,0,0,0.15),0px 2px 2px 0px rgba(0,0,0,0.1),0px 1px 5px 0px rgba(0,0,0,0.1);
$popover-bg: #F4F5F5; $popover-bg: #F4F5F5;
$popover-color: rgba(0, 0, 0, 0.75); $popover-color: rgba(36, 41, 46, 1);
$popover-border-color: rgba(0, 2, 78, 0.20); $popover-border-color: rgba(36, 41, 46, 0.30);
$popover-header-bg: #F4F5F5; $popover-header-bg: #F4F5F5;
$popover-shadow: 0px 5px 5px -5px rgba(0,0,0,0.15),0px 8px 10px 1px rgba(0,0,0,0.1),0px 3px 14px 2px rgba(0,0,0,0.1); $popover-shadow: 0px 5px 5px -5px rgba(0,0,0,0.15),0px 8px 10px 1px rgba(0,0,0,0.1),0px 3px 14px 2px rgba(0,0,0,0.1);
@ -328,14 +328,14 @@ $json-explorer-url-color: $blue-base;
// Changelog and diff // Changelog and diff
// ------------------------- // -------------------------
$diff-label-bg: rgba(0, 0, 0, 0.04); $diff-label-bg: rgba(36, 41, 46, 0.04);
$diff-label-fg: $gray-2; $diff-label-fg: $gray-2;
$diff-arrow-color: $dark-2; $diff-arrow-color: $dark-2;
$diff-group-bg: #F4F5F5; $diff-group-bg: #F4F5F5;
$diff-json-bg: #F4F5F5; $diff-json-bg: #F4F5F5;
$diff-json-fg: rgba(0, 0, 0, 0.75); $diff-json-fg: rgba(36, 41, 46, 1);
$diff-json-added: $blue-shade; $diff-json-added: $blue-shade;
$diff-json-deleted: $red-shade; $diff-json-deleted: $red-shade;

View File

@ -3,131 +3,257 @@
/* cyrillic-ext */ /* cyrillic-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2) format('woff2'); url(../fonts/roboto/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; unicode-range: U+0460-052f, U+20b4, U+2de0-2dff, U+A640-A69F;
} }
/* cyrillic */ /* cyrillic */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2) format('woff2'); url(../fonts/roboto/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; unicode-range: U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116;
} }
/* greek-ext */ /* greek-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2) format('woff2'); url(../fonts/roboto/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+1F00-1FFF; unicode-range: U+1f00-1fff;
} }
/* greek */ /* greek */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2) format('woff2'); src: url(../fonts/roboto/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');
unicode-range: U+0370-03FF; unicode-range: U+0370-03FF;
} }
/* vietnamese */ /* vietnamese */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2) format('woff2'); url(../fonts/roboto/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; unicode-range: U+0102-0103, U+1ea0-1ef9, U+20ab;
} }
/* latin-ext */ /* latin-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2) format('woff2'); url(../fonts/roboto/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; unicode-range: U+0100-024f, U+1-1eff, U+20a0-20ab, U+20ad-20cf, U+2c60-2c7f, U+A720-A7FF;
} }
/* latin */ /* latin */
@font-face { @font-face {
font-family: 'Inter'; font-display: swap;
font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; src: local('Roboto'), local('Roboto-Regular'), url(../fonts/roboto/CWB0XYA8bzo0kSThX0UTuA.woff2) format('woff2');
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2) format('woff2'); unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2212, U+2215;
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC,
U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
} }
/* cyrillic-ext */ /* cyrillic-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2) format('woff2'); url(../fonts/roboto/ZLqKeelYbATG60EpZBSDyxJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; unicode-range: U+0460-052f, U+20b4, U+2de0-2dff, U+A640-A69F;
} }
/* cyrillic */ /* cyrillic */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2) format('woff2'); url(../fonts/roboto/oHi30kwQWvpCWqAhzHcCSBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; unicode-range: U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116;
} }
/* greek-ext */ /* greek-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2) format('woff2'); url(../fonts/roboto/rGvHdJnr2l75qb0YND9NyBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+1F00-1FFF; unicode-range: U+1f00-1fff;
} }
/* greek */ /* greek */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2) format('woff2'); url(../fonts/roboto/mx9Uck6uB63VIKFYnEMXrRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0370-03FF; unicode-range: U+0370-03ff;
} }
/* vietnamese */ /* vietnamese */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2) format('woff2'); url(../fonts/roboto/mbmhprMH69Zi6eEPBYVFhRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; unicode-range: U+0102-0103, U+1ea0-1ef9, U+20ab;
} }
/* latin-ext */ /* latin-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'),
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2) format('woff2'); url(../fonts/roboto/oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; unicode-range: U+0100-024f, U+1-1eff, U+20a0-20ab, U+20ad-20cf, U+2c60-2c7f, U+A720-A7FF;
} }
/* latin */ /* latin */
@font-face { @font-face {
font-family: 'Inter'; font-display: swap;
font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'),
url(../fonts/roboto/RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2) format('woff2');
unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/WxrXJa0C3KdtC7lMafG4dRTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0460-052f, U+20b4, U+2de0-2dff, U+A640-A69F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/OpXUqTo0UgQQhGj_SFdLWBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/1hZf02POANh32k2VkgEoUBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+1f00-1fff;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/cDKhRaXnQTOVbaoxwdOr9xTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0370-03ff;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/K23cxWVTrIFD6DJsEVi07RTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0102-0103, U+1ea0-1ef9, U+20ab;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/vSzulfKSK0LLjjfeaxcREhTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0100-024f, U+1-1eff, U+20a0-20ab, U+20ad-20cf, U+2c60-2c7f, U+A720-A7FF;
}
/* latin */
@font-face {
font-display: swap; font-display: swap;
src: url(../fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2) format('woff2'); font-family: 'Roboto';
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, font-style: italic;
U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; font-weight: 400;
src: local('Roboto Italic'), local('Roboto-Italic'),
url(../fonts/roboto/vPcynSL0qHq_6dX7lKVByfesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0TTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2');
unicode-range: U+0460-052f, U+20b4, U+2de0-2dff, U+A640-A69F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0TUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2');
unicode-range: U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0UbcKLIaa1LC45dFaAfauRA.woff2) format('woff2');
unicode-range: U+1f00-1fff;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0Wo_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2');
unicode-range: U+0370-03ff;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0b6up8jxqWt8HVA3mDhkV_0.woff2) format('woff2');
unicode-range: U+0102-0103, U+1ea0-1ef9, U+20ab;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0SYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2');
unicode-range: U+0100-024f, U+1-1eff, U+20a0-20ab, U+20ad-20cf, U+2c60-2c7f, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
url(../fonts/roboto/OLffGBTaF0XFOW1gnuHF0Y4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2');
unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2212, U+2215;
} }
/* latin */ /* latin */

View File

@ -12,7 +12,7 @@
<link <link
rel="preload" rel="preload"
href="[[.ContentDeliveryURL]]public/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2" href="[[.ContentDeliveryURL]]public/fonts/roboto/RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2"
as="font" as="font"
crossorigin crossorigin
/> />