feat(docs-infra): implement dark mode (#41129)

defines styles for a first iteration of an aio darkmode

PR Close #41129
This commit is contained in:
AleksanderBodurri 2021-03-08 23:27:16 -05:00 committed by Andrew Kushnir
parent 8d9d1c293d
commit cdb8f556fb
94 changed files with 945 additions and 1070 deletions

View File

@ -44,14 +44,14 @@
"src/styles/main.scss", "src/styles/main.scss",
{ {
"inject": false, "inject": false,
"input": "src/styles/custom-themes/light.scss", "input": "src/styles/custom-themes/dark-theme.scss",
"bundleName": "assets/light" "bundleName": "dark-theme"
}, },
{ {
"inject": false, "inject": false,
"input": "src/styles/custom-themes/dark.scss", "input": "src/styles/custom-themes/light-theme.scss",
"bundleName": "assets/dark" "bundleName": "light-theme"
}, }
], ],
"scripts": [], "scripts": [],
"budgets": [ "budgets": [

View File

@ -8,9 +8,7 @@
<section id="intro"> <section id="intro">
<!-- LOGO --> <!-- LOGO -->
<div class="hero-logo"> <div class="hero-logo"></div>
<img src="assets/images/logos/angular/angular.svg" alt="Angular">
</div>
<!-- CONTAINER --> <!-- CONTAINER -->
<div class="homepage-container"> <div class="homepage-container">

View File

@ -37,7 +37,7 @@
<div class="presskit-icon-item"> <div class="presskit-icon-item">
<div class="presskit-image-container"> <div class="presskit-image-container">
<img src="assets/images/logos/angular/angular_solidBlack.svg" alt="Black logo Angular"> <img src="assets/images/logos/angular/angular_solidBlack.svg" class="transparent-img" alt="Black logo Angular">
</div> </div>
<div> <div>
<h3>One Color Logo</h3> <h3>One Color Logo</h3>
@ -54,7 +54,7 @@
<div class="presskit-icon-item"> <div class="presskit-icon-item">
<div class="presskit-image-container"> <div class="presskit-image-container">
<img src="assets/images/logos/angular/angular_whiteTransparent.svg" class="transparent-img" alt="Transparent logo Angular"> <img src="assets/images/logos/angular/angular_whiteTransparent.svg" class="transparent-img-inverse" alt="Transparent logo Angular">
</div> </div>
<div> <div>
<h3>One Color Inverse Logo</h3> <h3>One Color Inverse Logo</h3>

View File

@ -1,4 +1,5 @@
<div id="top-of-page"></div> <div id="top-of-page"></div>
<div *ngIf="isFetching" class="progress-bar-container"> <div *ngIf="isFetching" class="progress-bar-container">
<mat-progress-bar mode="indeterminate" color="warn"></mat-progress-bar> <mat-progress-bar mode="indeterminate" color="warn"></mat-progress-bar>
</div> </div>
@ -23,7 +24,7 @@
</a> </a>
<aio-top-menu *ngIf="showTopMenu" [nodes]="topMenuNodes" [currentNode]="currentNodes?.TopBar"></aio-top-menu> <aio-top-menu *ngIf="showTopMenu" [nodes]="topMenuNodes" [currentNode]="currentNodes?.TopBar"></aio-top-menu>
<aio-search-box class="search-container" #searchBox (onSearch)="doSearch($event)" (onFocus)="doSearch($event)"></aio-search-box> <aio-search-box class="search-container" #searchBox (onSearch)="doSearch($event)" (onFocus)="doSearch($event)"></aio-search-box>
<aio-theme-picker></aio-theme-picker> <aio-theme-toggle></aio-theme-toggle>
<div class="toolbar-external-icons-container"> <div class="toolbar-external-icons-container">
<a href="https://twitter.com/angular" title="Twitter" aria-label="Angular on twitter"> <a href="https://twitter.com/angular" title="Twitter" aria-label="Angular on twitter">
<mat-icon svgIcon="logos:twitter"></mat-icon> <mat-icon svgIcon="logos:twitter"></mat-icon>

View File

@ -42,6 +42,7 @@ import { SharedModule } from 'app/shared/shared.module';
import { SwUpdatesModule } from 'app/sw-updates/sw-updates.module'; import { SwUpdatesModule } from 'app/sw-updates/sw-updates.module';
import {environment} from '../environments/environment'; import {environment} from '../environments/environment';
import { ThemeToggleComponent } from './shared/theme-picker/theme-toggle.component';
// These are the hardcoded inline svg sources to be used by the `<mat-icon>` component. // These are the hardcoded inline svg sources to be used by the `<mat-icon>` component.
// tslint:disable: max-line-length // tslint:disable: max-line-length
@ -170,6 +171,7 @@ export const svgIconProviders = [
SearchBoxComponent, SearchBoxComponent,
NotificationComponent, NotificationComponent,
TopMenuComponent, TopMenuComponent,
ThemeToggleComponent
], ],
providers: [ providers: [
Deployment, Deployment,

View File

@ -2,7 +2,6 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { SearchResultsComponent } from './search-results/search-results.component'; import { SearchResultsComponent } from './search-results/search-results.component';
import { SelectComponent } from './select/select.component'; import { SelectComponent } from './select/select.component';
import { ThemePickerComponent } from './theme-picker/theme-picker.component';
@NgModule({ @NgModule({
imports: [ imports: [
@ -10,13 +9,11 @@ import { ThemePickerComponent } from './theme-picker/theme-picker.component';
], ],
exports: [ exports: [
SearchResultsComponent, SearchResultsComponent,
SelectComponent, SelectComponent
ThemePickerComponent
], ],
declarations: [ declarations: [
SearchResultsComponent, SearchResultsComponent,
SelectComponent, SelectComponent
ThemePickerComponent
] ]
}) })
export class SharedModule {} export class SharedModule {}

View File

@ -1,3 +0,0 @@
// Taken from Angular Material docs repo
export * from './style-manager';

View File

@ -1,56 +0,0 @@
// Taken from Angular Material docs repo
import {HttpClientTestingModule} from '@angular/common/http/testing';
import {inject, TestBed} from '@angular/core/testing';
import {StyleManager} from './style-manager';
describe('StyleManager', () => {
let styleManager: StyleManager;
beforeEach(() => TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [StyleManager]
}));
beforeEach(inject([StyleManager], (sm: StyleManager) => {
styleManager = sm;
}));
afterEach(() => {
const links = document.head.querySelectorAll('link');
for (const link of Array.prototype.slice.call(links)) {
if (link.className.includes('style-manager-')) {
document.head.removeChild(link);
}
}
});
it('should add stylesheet to head', () => {
styleManager.setStyle('test', 'test.css');
const styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement;
expect(styleEl).not.toBeNull();
expect(styleEl.href.endsWith('test.css')).toBe(true);
});
it('should change existing stylesheet', () => {
styleManager.setStyle('test', 'test.css');
const styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement;
expect(styleEl).not.toBeNull();
expect(styleEl.href.endsWith('test.css')).toBe(true);
styleManager.setStyle('test', 'new.css');
expect(styleEl.href.endsWith('new.css')).toBe(true);
});
it('should remove existing stylesheet', () => {
styleManager.setStyle('test', 'test.css');
let styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement;
expect(styleEl).not.toBeNull();
expect(styleEl.href.endsWith('test.css')).toBe(true);
styleManager.removeStyle('test');
styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement;
expect(styleEl).toBeNull();
});
});

View File

@ -1,48 +0,0 @@
// Taken from Angular Material docs repo
import {Injectable} from '@angular/core';
/**
* Class for managing stylesheets. Stylesheets are loaded into named slots so that they can be
* removed or changed later.
*/
@Injectable()
export class StyleManager {
/**
* Set the stylesheet with the specified key.
*/
setStyle(key: string, href: string) {
getLinkElementForKey(key).setAttribute('href', href);
}
/**
* Remove the stylesheet with the specified key.
*/
removeStyle(key: string) {
const existingLinkElement = getExistingLinkElementByKey(key);
if (existingLinkElement) {
document.head.removeChild(existingLinkElement);
}
}
}
function getLinkElementForKey(key: string) {
return getExistingLinkElementByKey(key) || createLinkElementWithKey(key);
}
function getExistingLinkElementByKey(key: string) {
return document.head.querySelector(`link[rel="stylesheet"].${getClassNameForKey(key)}`);
}
function createLinkElementWithKey(key: string) {
const linkEl = document.createElement('link');
linkEl.setAttribute('rel', 'stylesheet');
linkEl.classList.add(getClassNameForKey(key));
document.head.appendChild(linkEl);
return linkEl;
}
function getClassNameForKey(key: string) {
return `style-manager-${key}`;
}

View File

@ -1,3 +0,0 @@
<button (click)="selectTheme({ 'light': 'dark', 'dark': 'light' }[currentTheme])">
Change theme (Current: {{ currentTheme }})
</button>

View File

@ -1,25 +0,0 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ThemePickerComponent } from './theme-picker.component';
describe('ThemePickerComponent', () => {
let component: ThemePickerComponent;
let fixture: ComponentFixture<ThemePickerComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ ThemePickerComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(ThemePickerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -1,36 +0,0 @@
import { Component, OnInit } from '@angular/core';
import { StyleManager } from './style-manager';
import { ThemeStorage } from './theme-storage/theme-storage';
@Component({
selector: 'aio-theme-picker',
templateUrl: './theme-picker.component.html',
providers: [ThemeStorage, StyleManager]
})
export class ThemePickerComponent implements OnInit {
currentTheme: 'light' | 'dark' = 'light';
constructor(private _themeStorage: ThemeStorage, private _styleManager: StyleManager) { }
ngOnInit(): void {
const theme = this._themeStorage.getStoredThemeName();
if (theme) {
this.selectTheme(theme);
}
}
selectTheme(theme: string) {
this.currentTheme = theme as 'light' | 'dark';
if (theme === 'light') {
this._styleManager.removeStyle('theme');
} else {
this._styleManager.setStyle('theme', `assets/${theme}.css`);
}
if (this.currentTheme) {
this._themeStorage.storeTheme(this.currentTheme);
}
}
}

View File

@ -1,3 +0,0 @@
// Taken from Angular Material docs repo
export * from './theme-storage';

View File

@ -1,28 +0,0 @@
import { Injectable } from '@angular/core';
@Injectable()
export class ThemeStorage {
static storageKey = 'io-theme-storage-current-name';
storeTheme(theme: 'light' | 'dark') {
try {
window.localStorage[ThemeStorage.storageKey] = theme;
} catch { }
}
getStoredThemeName(): 'light' | 'dark' | null {
try {
return window.localStorage[ThemeStorage.storageKey] || null;
} catch {
return null;
}
}
clearStorage(): void {
try {
window.localStorage.removeItem(ThemeStorage.storageKey);
} catch { }
}
}

View File

@ -0,0 +1,92 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { DebugElement } from '@angular/core';
import { By } from '@angular/platform-browser';
import { ThemeStorage, ThemeToggleComponent } from './theme-toggle.component';
class FakeThemeStorage implements ThemeStorage {
fakeStorage: string | null = null;
getThemePreference(): string | null {
return this.fakeStorage;
}
setThemePreference(isDark: boolean): void {
this.fakeStorage = String(isDark);
}
}
let themeStorage: ThemeStorage;
// Verify that FakeThemeStorage behaves like ThemeStorage would
describe('FakeThemeStorage', () => {
beforeEach(() => {
themeStorage = new FakeThemeStorage();
});
it('should have null stored initially', () => {
expect(themeStorage.getThemePreference()).toBeNull();
});
it('should store true as a string if isDark is true', () => {
themeStorage.setThemePreference(true);
expect(themeStorage.getThemePreference()).toBe('true');
});
it('should store false as a string if isDark is false', () => {
themeStorage.setThemePreference(false);
expect(themeStorage.getThemePreference()).toBe('false');
});
});
let component: ThemeToggleComponent;
let fixture: ComponentFixture<ThemeToggleComponent>;
let debugElement: DebugElement;
describe('ThemeToggleComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ ThemeToggleComponent ],
providers: [ { provide: ThemeStorage, useClass: FakeThemeStorage } ],
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(ThemeToggleComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should show toggle button', () => {
expect(getToggleButton()).toBeDefined();
});
it('should toggle between light and dark mode', () => {
expect(component.getThemeName()).toBe('light');
getToggleButton().click();
expect(component.getThemeName()).toBe('dark');
});
it('should have the correct next theme', () => {
component.toggleTheme();
expect(component.getThemeName()).toBe('dark');
component.toggleTheme();
expect(component.getThemeName()).toBe('light');
});
it('should have the correct aria-label', () => {
expect(component.getToggleLabel()).toBe(`Switch to dark mode`);
component.toggleTheme();
expect(component.getToggleLabel()).toBe(`Switch to light mode`);
});
});
function getToggleButton(): HTMLButtonElement {
return debugElement.query(By.css('button')).nativeElement;
}

View File

@ -0,0 +1,91 @@
import { DOCUMENT } from '@angular/common';
import { Component, Inject, Injectable } from '@angular/core';
/** Injectable facade around localStorage for theme preference to make testing easier. */
@Injectable({ providedIn: 'root' })
export class ThemeStorage {
getThemePreference(): string | null {
// Wrap localStorage access in try/catch because user agents can block localStorage. If it is
// blocked, we treat it as if no preference was previously stored.
try {
return localStorage.getItem('aio-theme');
} catch {
return null;
}
}
setThemePreference(isDark: boolean): void {
// Wrap localStorage access in try/catch because user agents can block localStorage. If it
// fails, we persist nothing.
try {
localStorage.setItem('aio-theme', String(isDark));
} catch { }
}
}
@Component({
selector: 'aio-theme-toggle',
template: `
<button mat-icon-button type="button" (click)="toggleTheme()"
[title]="getToggleLabel()" [attr.aria-label]="getToggleLabel()">
<mat-icon>
{{ isDark ? 'light' : 'dark' }}_mode
</mat-icon>
</button>
`,
})
export class ThemeToggleComponent {
isDark = false;
constructor(@Inject(DOCUMENT) private document: Document, private readonly themeStorage: ThemeStorage) {
this.initializeThemeFromPreferences();
}
toggleTheme(): void {
this.isDark = !this.isDark;
this.updateRenderedTheme();
}
private initializeThemeFromPreferences(): void {
// Check whether there's an explicit preference in localStorage.
const storedPreference = this.themeStorage.getThemePreference();
// If we do have a preference in localStorage, use that. Otherwise,
// initialize based on the prefers-color-scheme media query.
if (storedPreference) {
this.isDark = storedPreference === 'true';
} else {
this.isDark = matchMedia?.('(prefers-color-scheme: dark)').matches ?? false;
}
const initialTheme = this.document.querySelector('#aio-initial-theme');
if (initialTheme) {
// todo(aleksanderbodurri): change to initialTheme.remove() when ie support is dropped
initialTheme.parentElement?.removeChild(initialTheme);
}
const themeLink = this.document.createElement('link');
themeLink.id = 'aio-custom-theme';
themeLink.rel = 'stylesheet';
themeLink.href = `${this.getThemeName()}-theme.css`;
this.document.head.appendChild(themeLink);
}
getThemeName(): string {
return this.isDark ? 'dark' : 'light';
}
getToggleLabel(): string {
return `Switch to ${this.isDark ? 'light' : 'dark'} mode`;
}
private updateRenderedTheme(): void {
// If we're calling this method, the user has explicitly interacted with the theme toggle.
const customLinkElement = this.document.getElementById('aio-custom-theme') as HTMLLinkElement | null;
if (customLinkElement) {
customLinkElement.href = `${this.getThemeName()}-theme.css`;
}
this.themeStorage.setThemePreference(this.isDark);
}
}

View File

@ -30,6 +30,11 @@
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons&display=block"> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons&display=block">
<!-- --> <!-- -->
<style id="aio-initial-theme">
@import url("light-theme.css") (prefers-color-scheme: light);
@import url("dark-theme.css") (prefers-color-scheme: dark);
</style>
<link rel="manifest" href="pwa-manifest.json"> <link rel="manifest" href="pwa-manifest.json">
<meta name="theme-color" content="#1976d2"> <meta name="theme-color" content="#1976d2">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
@ -97,14 +102,12 @@
<noscript> <noscript>
<div class="background-sky hero"></div> <div class="background-sky hero"></div>
<section id="intro" style="text-shadow: 1px 1px #1976d2;"> <section id="intro" style="text-shadow: 1px 1px #1976d2;">
<div class="hero-logo"> <div class="hero-logo"></div>
<img src="assets/images/logos/angular/angular.svg" width="250" height="250" alt="Angular">
</div>
<div class="homepage-container"> <div class="homepage-container">
<div class="hero-headline">The modern web<br>developer's platform</div> <div class="hero-headline">The modern web<br>developer's platform</div>
</div> </div>
</section> </section>
<h2 style="color: red; margin-top: 40px; position: relative; text-align: center; text-shadow: 1px 1px #fafafa;"> <h2 style="color: red; margin-top: 40px; position: relative; text-align: center; text-shadow: 1px 1px #fafafa; border-top: none;">
<b><i>This website requires JavaScript.</i></b> <b><i>This website requires JavaScript.</i></b>
</h2> </h2>
</noscript> </noscript>

View File

@ -1,52 +1,52 @@
@use '../constants' as *; @use '../constants';
@use '~@angular/material/theming' as *;
@mixin typography-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary); $is-dark-theme: map-get($theme, is-dark);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
body { body {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$darkgray);
} }
h1, h1,
h2, h2,
h3, h3,
h4, h4,
h5, h5,
h6 { h6 {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$deepgray);
} }
h6 { h6 {
color: if($is-dark-theme, $offwhite, $mediumgray); color: if($is-dark-theme, constants.$offwhite, constants.$mediumgray);
} }
p, h2 {
ol, border-top: 1px solid if($is-dark-theme, constants.$mediumgray, constants.$lightgray);
ul, }
ol,
li,
input,
a {
color: if($is-dark-theme, $white, $darkgray);
}
.app-toolbar a { p,
color: if($is-dark-theme, $darkgray, $white); ol,
} ul,
ol,
li,
input,
a {
color: if($is-dark-theme, constants.$white, constants.$darkgray);
}
code { .app-toolbar a {
color: if($is-dark-theme, $white, $darkgray); color: constants.$white;
} }
.sidenav-content a { code {
color: if($is-dark-theme, lighten($blue, 20), $blue); color: if($is-dark-theme, constants.$white, constants.$darkgray);
} }
.error-text { .sidenav-content a {
color: $brightred; color: if($is-dark-theme, constants.$lightblue, constants.$blue);
} }
.error-text {
color: constants.$brightred;
}
} }

View File

@ -1,14 +1,14 @@
@use '../constants' as *; @use '../constants';
@use '../mixins' as *; @use '../mixins';
html { html {
font-size: 62.5%; font-size: 62.5%;
} }
body { body {
font-family: $main-font; font-family: constants.$main-font;
margin: 0; margin: 0;
@include font-size(16); @include mixins.font-size(16);
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
@ -19,7 +19,7 @@ h1, h2, h3, h4, h5, h6 {
} }
h1 { h1 {
@include font-size(40); @include mixins.font-size(40);
display: inline-block; display: inline-block;
margin: 1.6rem 0; margin: 1.6rem 0;
@ -29,13 +29,12 @@ h1 {
} }
h2 { h2 {
border-top: 1px solid $lightgray;
clear: both; clear: both;
@include font-size(32); @include mixins.font-size(32);
margin-top: 4rem; margin-top: 4rem;
padding-top: 4rem; padding-top: 4rem;
@include marketing-pages($extraSelectors: ('.page-api'), $nestParentSelector: true) { @include mixins.marketing-pages($extraSelectors: ('.page-api'), $nestParentSelector: true) {
border-top: 0; border-top: 0;
margin-top: 2rem; margin-top: 2rem;
padding-top: 0; padding-top: 0;
@ -43,25 +42,25 @@ h2 {
} }
h3 { h3 {
@include font-size(24); @include mixins.font-size(24);
margin-top: 3rem; margin-top: 3rem;
clear: both; clear: both;
} }
h4 { h4 {
@include font-size(20); @include mixins.font-size(20);
margin-top: 3rem; margin-top: 3rem;
clear: both; clear: both;
} }
h5 { h5 {
@include font-size(18); @include mixins.font-size(18);
margin-top: 2rem; margin-top: 2rem;
clear: both; clear: both;
} }
h6 { h6 {
@include font-size(16); @include mixins.font-size(16);
margin-top: 2rem; margin-top: 2rem;
clear: both; clear: both;
} }
@ -90,13 +89,13 @@ ul,
li, li,
input, input,
a { a {
@include font-size(16); @include mixins.font-size(16);
@include line-height(32); @include mixins.line-height(32);
font-family: inherit; font-family: inherit;
font-weight: 400; font-weight: 400;
& > em { & > em {
@include letter-spacing(0.3); @include mixins.letter-spacing(0.3);
} }
} }
@ -125,7 +124,7 @@ ol ol {
li { li {
padding-bottom: 8px; padding-bottom: 8px;
@include line-height(24); @include mixins.line-height(24);
p { p {
margin: 0; margin: 0;
@ -137,9 +136,9 @@ a {
} }
.app-toolbar a { .app-toolbar a {
@include font-size(16); @include mixins.font-size(16);
font-weight: 400; font-weight: 400;
font-family: $main-font; font-family: constants.$main-font;
text-transform: uppercase; text-transform: uppercase;
} }
@ -176,14 +175,14 @@ td {
} }
th { th {
@include font-size(16); @include mixins.font-size(16);
font-weight: 500; font-weight: 500;
padding: 13px 32px; padding: 13px 32px;
text-align: left; text-align: left;
} }
code { code {
font-family: $code-font; font-family: constants.$code-font;
font-size: 90%; font-size: 90%;
} }
@ -197,7 +196,7 @@ code {
// `doc-viewer` component when it is displaying docs for the different areas of the documentation. // `doc-viewer` component when it is displaying docs for the different areas of the documentation.
// We add the icon to all external links which are identified as absolute links (those that start with `http:` or https:`). // We add the icon to all external links which are identified as absolute links (those that start with `http:` or https:`).
// For more info see PR #36601. // For more info see PR #36601.
@include docs-pages { @include mixins.docs-pages {
aio-doc-viewer { aio-doc-viewer {
// The docs-viewer also contain links to GitHub (e.g. the "edit this page" icon) identified with // The docs-viewer also contain links to GitHub (e.g. the "edit this page" icon) identified with
// the `.github-links` class. We don't want to add the external link icon to these links. // the `.github-links` class. We don't want to add the external link icon to these links.

View File

@ -1,15 +1,15 @@
@use 'footer/footer-theme' as *; @use 'footer/footer-theme';
@use 'layout-global/layout-global-theme' as *; @use 'layout-global/layout-global-theme';
@use 'marketing-layout/marketing-layout-theme' as *; @use 'marketing-layout/marketing-layout-theme';
@use 'not-found/not-found-theme' as *; @use 'not-found/not-found-theme';
@use 'sidenav/sidenav-theme' as *; @use 'sidenav/sidenav-theme';
@use 'top-menu/top-menu-theme' as *; @use 'top-menu/top-menu-theme';
@mixin layout-themes($theme) { @mixin theme($theme) {
@include footer-theme($theme); @include footer-theme.theme($theme);
@include layout-global-theme($theme); @include layout-global-theme.theme($theme);
@include marketing-layout-theme($theme); @include marketing-layout-theme.theme($theme);
@include not-found-theme($theme); @include not-found-theme.theme($theme);
@include sidenav-theme($theme); @include sidenav-theme.theme($theme);
@include top-menu-theme($theme); @include top-menu-theme.theme($theme);
} }

View File

@ -1,4 +1,4 @@
@use '../../mixins' as *; @use '../../mixins';
.sidenav-container { .sidenav-container {
width: 100%; width: 100%;
@ -22,7 +22,7 @@
padding: 80px 1rem 1rem; padding: 80px 1rem 1rem;
} }
@include marketing-pages( @include mixins.marketing-pages(
$extraSelectors: ('.page-api', '.page-file-not-found', '.page-guide-cheatsheet'), $extraSelectors: ('.page-api', '.page-file-not-found', '.page-guide-cheatsheet'),
$nestParentSelector: true) { $nestParentSelector: true) {
max-width: none; max-width: none;

View File

@ -1,25 +1,25 @@
@use '../../constants' as *; @use '../../constants';
@import '~@angular/material/theming';
@mixin footer-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary); $primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
footer { footer {
background-color: $blue; // Because the footer background is always the same color in both light and dark mode, there is no need to specify a foreground color
background-color: mat-color($primary, if($is-dark-theme, 900, 700));
aio-footer { aio-footer {
& > * { & > * {
color: $white; color: constants.$white;
} }
a { a {
color: $white; color: constants.$white;
} }
h3 { h3 {
color: $white; color: constants.$white;
} }
} }
} }

View File

@ -1,9 +1,9 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
footer { footer {
position: relative; position: relative;
@include line-height(24); @include mixins.line-height(24);
flex: 1; flex: 1;
padding: 48px; padding: 48px;
z-index: 0; z-index: 0;
@ -37,19 +37,19 @@ footer {
&:focus { &:focus {
// `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto. // `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto.
outline: 1px solid rgba($white, 0.8); outline: 1px solid rgba(constants.$white, 0.8);
outline-offset: 2px; outline-offset: 2px;
} }
} }
h3 { h3 {
@include font-size(16); @include mixins.font-size(16);
text-transform: uppercase; text-transform: uppercase;
font-weight: 400; font-weight: 400;
margin: 8px 0 12px; margin: 8px 0 12px;
@media (max-width: 600px) { @media (max-width: 600px) {
@include font-size(14); @include mixins.font-size(14);
} }
} }

View File

@ -1,15 +1,13 @@
@use '../../constants' as *; @use '../../constants' ;
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin layout-global-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
html, html,
body, body,
.content { .content {
background: if($is-dark-theme, mat-color($background, background), $white); background: if($is-dark-theme, mat-color($background, background), constants.$white);
} }
} }

View File

@ -1,78 +1,72 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin marketing-layout-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary); $primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground); $foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.background-sky { .background-sky {
background-color: mat-color($primary, default); background: linear-gradient(145deg, mat-color($primary, 900), if($is-dark-theme, mat-color($primary, 700), #42a5f5));
background: linear-gradient(145deg, mat-color($primary, 900), mat-color($primary, 400));
color: mat-color($foreground, text); color: mat-color($foreground, text);
} }
section#intro { section#intro {
color: $white; color: constants.$white;
@if $is-dark-theme { .hero-logo {
.hero-logo { background-image: url(/assets/images/logos/angular/angular.svg);
img {
filter: brightness(1.1);
}
}
} }
} }
.announcement-bar { .announcement-bar {
background-color: $white; background-color: constants.$white;
.button { .button {
color: $white; color: constants.$white;
background-color: $blue; background-color: constants.$blue;
&:hover { &:hover {
color: rgba($white, 0.7); color: rgba(constants.$white, 0.7);
} }
} }
} }
.home-row .card { .home-row .card {
background-color: if($is-dark-theme, $darkgray, $white); background-color: if($is-dark-theme, constants.$darkgray, constants.$white);
.card-text-container { .card-text-container {
p { p {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$darkgray);
} }
} }
&:hover { &:hover {
h2 { h2 {
color: $blue; color: if($is-dark-theme, constants.$cyan, constants.$blue);
} }
} }
} }
.button.hero-cta { .button.hero-cta {
background-color: if($is-dark-theme, $darkgray, $white); background-color: if($is-dark-theme, constants.$darkgray, constants.$white);
} }
.cta-bar { .cta-bar {
.hero-cta { .hero-cta {
color: if($is-dark-theme, lighten($blue, 10), $blue); color: if($is-dark-theme, constants.$cyan, constants.$blue);
} }
} }
.text-headline { .text-headline {
color: if($is-dark-theme, lighten($blue, 10), $blue); color: if($is-dark-theme, constants.$lightblue, constants.$blue);
} }
.marketing-banner { .marketing-banner {
background-color: if($is-dark-theme, $blue, lighten($blue, 10)); background-color: if($is-dark-theme, mat-color($primary, 800), mat-color($primary, 600));
.banner-headline { .banner-headline {
color: $white; color: constants.$white;
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
.hero { .hero {
display: flex; display: flex;
@ -25,9 +25,9 @@
.hero-title { .hero-title {
display: inline-block; display: inline-block;
@include font-size(28); @include mixins.font-size(28);
font-weight: 400; font-weight: 400;
@include line-height(48); @include mixins.line-height(48);
margin: 0 8px 0 0; margin: 0 8px 0 0;
text-transform: uppercase; text-transform: uppercase;
@ -60,7 +60,7 @@ section#intro {
} }
.homepage-container { .homepage-container {
width: 100%; width: 50%;
max-width: 1040px; max-width: 1040px;
margin: 0 auto; margin: 0 auto;
margin-top: -7%; margin-top: -7%;
@ -78,8 +78,8 @@ section#intro {
} }
.hero-headline { .hero-headline {
@include font-size(40); @include mixins.font-size(40);
@include line-height(64); @include mixins.line-height(64);
font-weight: 500; font-weight: 500;
margin: 32px 0; margin: 32px 0;
@ -92,30 +92,20 @@ section#intro {
} }
@media (max-width: 575px) { @media (max-width: 575px) {
@include font-size(32); @include mixins.font-size(32);
@include line-height(50); @include mixins.line-height(50);
} }
} }
.hero-logo { .hero-logo {
display: flex; display: flex;
width: 50%;
@media (max-width: 780px) { min-width: 250px;
justify-content: center; height: 400px;
} background-size: contain;
background-position: center;
img { background-repeat: no-repeat;
width: 400px; margin-bottom: 8px;
height: 400px;
margin-bottom: 8px;
max-width: none;
padding: 0;
@media (max-width: 780px) {
width: 250px;
height: 250px;
}
}
} }
} }
@ -129,7 +119,7 @@ section#intro {
margin: 0 auto; margin: 0 auto;
padding: 16px; padding: 16px;
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12); box-shadow: 0 2px 2px rgba(constants.$black, 0.24), 0 0 2px rgba(constants.$black, 0.12);
box-sizing: border-box; box-sizing: border-box;
transition: all 0.3s ease-in; transition: all 0.3s ease-in;
@ -154,7 +144,7 @@ section#intro {
align-items: center; align-items: center;
height: 40px; height: 40px;
min-width: 160px; min-width: 160px;
@include font-size(16); @include mixins.font-size(16);
border-radius: 48px; border-radius: 48px;
box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
box-sizing: border-box; box-sizing: border-box;
@ -166,11 +156,11 @@ section#intro {
right: 0; right: 0;
position: static; position: static;
transition: all 0.3s ease-in; transition: all 0.3s ease-in;
@include font-size(16); @include mixins.font-size(16);
} }
p { p {
@include font-size(16); @include mixins.font-size(16);
margin: 8px; margin: 8px;
text-align: center; text-align: center;
} }
@ -179,7 +169,7 @@ section#intro {
// ANGULAR LINE // ANGULAR LINE
.home-row .card { .home-row .card {
@include card(70%, auto); @include mixins.card(70%, auto);
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
@ -228,9 +218,9 @@ section#intro {
.button.hero-cta { .button.hero-cta {
padding: 2px 34px 0; padding: 2px 34px 0;
@include font-size(18); @include mixins.font-size(18);
font-weight: 600; font-weight: 600;
@include line-height(40); @include mixins.line-height(40);
border-radius: 48px; border-radius: 48px;
box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
box-sizing: border-box; box-sizing: border-box;
@ -241,7 +231,7 @@ section#intro {
} }
} }
@include marketing-pages { @include mixins.marketing-pages {
.sidenav-content { .sidenav-content {
padding: 0 0 3rem; padding: 0 0 3rem;
} }
@ -269,7 +259,7 @@ section#intro {
} }
.text-headline { .text-headline {
@include font-size(20); @include mixins.font-size(20);
font-weight: 500; font-weight: 500;
margin-top: 10px; margin-top: 10px;
text-transform: uppercase; text-transform: uppercase;
@ -355,14 +345,14 @@ div[layout=row]{
.banner-headline { .banner-headline {
text-transform: uppercase; text-transform: uppercase;
@include font-size(24); @include mixins.font-size(24);
font-weight: 300; font-weight: 300;
margin: 0; margin: 0;
-webkit-margin-before: 0; -webkit-margin-before: 0;
-webkit-margin-after: 0; -webkit-margin-after: 0;
@media (max-width: 600px) { @media (max-width: 600px) {
@include font-size(18); @include mixins.font-size(18);
font-weight: 400; font-weight: 400;
} }

View File

@ -1,19 +1,16 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin not-found-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.nf-response { .nf-response {
h1 { h1 {
color: $blue; color: if($is-dark-theme, constants.$lightblue, constants.$blue);
} }
} }
.nf-icon.material-icons { .nf-icon.material-icons {
color: $blue; color: constants.$blue;
} }
} }

View File

@ -1,24 +1,23 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.nf-container { .nf-container {
align-items: center; align-items: center;
padding: 32px; padding: 32px;
} }
.nf-response { .nf-response {
margin: 32px; margin: 32px;
height: 100%; height: 100%;
flex-direction: column; flex-direction: column;
h1 { h1 {
@include font-size(48); @include mixins.font-size(48);
text-transform: uppercase; text-transform: uppercase;
margin: 8px 0; margin: 8px 0;
} }
} }
.nf-icon.material-icons { .nf-icon.material-icons {
@include font-size(100); @include mixins.font-size(100);
position: static; position: static;
} }

View File

@ -1,21 +1,19 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin sidenav-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
mat-sidenav-container.sidenav-container { mat-sidenav-container.sidenav-container {
background-color: if($is-dark-theme, mat-color($background, background), $white); background-color: if($is-dark-theme, mat-color($background, background), constants.$white);
mat-sidenav.sidenav { mat-sidenav.sidenav {
background-color: if($is-dark-theme, $deepgray, $superlightgray); background-color: if($is-dark-theme, constants.$deepgray, constants.$superlightgray);
border-right: 1px solid if($is-dark-theme, $darkgray, $lightgray); border-right: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
.doc-version { .doc-version {
border-top: 1px solid if($is-dark-theme, $darkgray, $lightgray); border-top: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
} }
} }
} }
@ -23,20 +21,20 @@
aio-nav-menu { aio-nav-menu {
aio-nav-item { aio-nav-item {
.vertical-menu-item { .vertical-menu-item {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$darkgray);
&:hover { &:hover {
background-color: if($is-dark-theme, $darkgray, $lightgray); background-color: if($is-dark-theme, constants.$darkgray, constants.$lightgray);
color: if($is-dark-theme, $powderblue, $blue); color: if($is-dark-theme, constants.$powderblue, constants.$blue);
text-shadow: 0 0 5px if($is-dark-theme, $black, $white); text-shadow: 0 0 5px if($is-dark-theme, constants.$black, constants.$white);
&.selected { &.selected {
color: if($is-dark-theme, $powderblue, $darkblue); color: if($is-dark-theme, constants.$powderblue, constants.$darkblue);
} }
} }
&.selected { &.selected {
color: if($is-dark-theme, $lightblue, $darkblue); color: if($is-dark-theme, constants.$lightblue, constants.$darkblue);
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
// Disable sidenav animations for the initial render. // Disable sidenav animations for the initial render.
.starting.mat-drawer-transition .mat-drawer-content { .starting.mat-drawer-transition .mat-drawer-content {
@ -71,7 +71,7 @@ aio-nav-menu {
word-wrap: break-word; word-wrap: break-word;
&:focus { &:focus {
outline: $focus-outline-onlight auto 2px; outline: constants.$focus-outline-onlight auto 2px;
} }
span { span {
@ -119,8 +119,8 @@ aio-nav-menu {
} }
.level-1 { .level-1 {
@include font-size(16); @include mixins.font-size(16);
@include line-height(28); @include mixins.line-height(28);
font-weight: 400; font-weight: 400;
padding-left: 20px; padding-left: 20px;
margin: 0; margin: 0;
@ -128,34 +128,34 @@ aio-nav-menu {
} }
.level-2 { .level-2 {
@include font-size(14); @include mixins.font-size(14);
@include line-height(24); @include mixins.line-height(24);
font-weight: 400; font-weight: 400;
margin: 0; margin: 0;
padding-left: 36px; padding-left: 36px;
} }
.level-3 { .level-3 {
@include font-size(14); @include mixins.font-size(14);
@include line-height(24); @include mixins.line-height(24);
margin: 0; margin: 0;
padding-left: 44px; padding-left: 44px;
} }
.level-4 { .level-4 {
@include font-size(14); @include mixins.font-size(14);
@include line-height(24); @include mixins.line-height(24);
margin: 0; margin: 0;
padding-left: 52px; padding-left: 52px;
} }
.level-1, .level-2, .level-3 { .level-1, .level-2, .level-3 {
&.collapsed > .mat-icon { &.collapsed > .mat-icon {
@include rotate(0deg); @include mixins.rotate(0deg);
} }
&.expanded > .mat-icon { &.expanded > .mat-icon {
@include rotate(90deg); @include mixins.rotate(90deg);
} }
} }
} }

View File

@ -1,31 +1,35 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin top-menu-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary); $primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
mat-toolbar.app-toolbar { mat-toolbar.app-toolbar {
@if $is-dark-theme {
&.mat-primary {
background: mat-color($primary, darker)
}
}
// HOME PAGE OVERRIDE: TOPNAV TOOLBAR // HOME PAGE OVERRIDE: TOPNAV TOOLBAR
.page-home & { .page-home & {
background-color: $blue; background: if($is-dark-theme, mat-color($primary, darker), constants.$blue);
} }
mat-icon { mat-icon {
color: $white; color: constants.$white;
} }
// HAMBURGER BUTTON // HAMBURGER BUTTON
.hamburger { .hamburger {
&:hover { &:hover {
color: $offwhite; color: constants.$offwhite;
} }
& .mat-icon { & .mat-icon {
color: $white; color: constants.$white;
} }
} }
@ -33,7 +37,7 @@
.nav-link.home { .nav-link.home {
&:focus { &:focus {
// `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto. // `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto.
outline: 1px solid $focus-outline-ondark; outline: 1px solid constants.$focus-outline-ondark;
} }
} }
@ -44,20 +48,20 @@
a.nav-link { a.nav-link {
.nav-link-inner { .nav-link-inner {
&:hover { &:hover {
background: rgba($white, 0.15); background: rgba(constants.$white, 0.15);
} }
} }
&:focus { &:focus {
.nav-link-inner { .nav-link-inner {
background: rgba($white, 0.15); background: rgba(constants.$white, 0.15);
box-shadow: 0 0 1px 2px $focus-outline-ondark; box-shadow: 0 0 1px 2px constants.$focus-outline-ondark;
} }
} }
&:active { &:active {
.nav-link-inner { .nav-link-inner {
background: rgba($white, 0.15); background: rgba(constants.$white, 0.15);
} }
} }
} }
@ -65,7 +69,7 @@
&.selected { &.selected {
a.nav-link { a.nav-link {
.nav-link-inner { .nav-link-inner {
background: rgba($white, 0.15); background: rgba(constants.$white, 0.15);
} }
} }
} }
@ -76,20 +80,18 @@
// SEARCH BOX // SEARCH BOX
aio-search-box.search-container { aio-search-box.search-container {
input { input {
color: $darkgray; color: constants.$darkgray;
background-color: $white; background-color: constants.$white;
@include placeholder { @include mixins.placeholder {
color: $mediumgray; color: constants.$mediumgray;
} }
} }
} }
// THEME PICKER aio-theme-toggle {
@media screen and (min-width: 351px) {
aio-theme-picker { border-right: 1px solid constants.$white;
button {
color: $offwhite;
} }
} }
@ -98,7 +100,7 @@
a { a {
&:focus { &:focus {
// `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto. // `outline-offset` is not applied on Chrome on Windows, if `outline-style` is `auto.
outline: 1px solid $focus-outline-ondark; outline: 1px solid constants.$focus-outline-ondark;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
// VARIABLES // VARIABLES
$showTopMenuWidth: 1048px; $showTopMenuWidth: 1048px;
@ -29,7 +28,7 @@ mat-toolbar.app-toolbar {
} }
// DOCS PAGES OVERRIDE: HAMBURGER // DOCS PAGES OVERRIDE: HAMBURGER
@include docs-pages($nestParentSelector: true) { @include mixins.docs-pages($nestParentSelector: true) {
@media (min-width: $showTopMenuWidth) { @media (min-width: $showTopMenuWidth) {
.hamburger { .hamburger {
// Hamburger shown on non-marketing pages even on large screens. // Hamburger shown on non-marketing pages even on large screens.
@ -172,8 +171,8 @@ mat-toolbar.app-toolbar {
outline: none; outline: none;
} }
@include placeholder { @include mixins.placeholder {
@include font-size(14); @include mixins.font-size(14);
} }
@media (min-width: 1000px) { @media (min-width: 1000px) {
@ -190,6 +189,13 @@ mat-toolbar.app-toolbar {
} }
} }
aio-theme-toggle {
@media screen and (min-width: 350px) {
padding-right: 2px;
margin-right: 2px;
}
}
// EXTERNAL LINK ICONS // EXTERNAL LINK ICONS
.toolbar-external-icons-container { .toolbar-external-icons-container {
display: flex; display: flex;
@ -197,14 +203,26 @@ mat-toolbar.app-toolbar {
flex-shrink: 0; // This is required for the icons to be displayed correctly in IE11. flex-shrink: 0; // This is required for the icons to be displayed correctly in IE11.
height: 100%; height: 100%;
@media screen and (max-width: 350px) {
a[title="GitHub"] {
display: none;
}
}
a[title="Twitter"], a[title="YouTube"] {
@media screen and (max-width: 420px) {
display: none;
}
}
a { a {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 24px; padding: 0;
margin: 0 -16px; margin: 24px 8px;
&:focus { &:focus {
outline-offset: -16px; outline-offset: 8px;
} }
@media screen and (max-width: 480px) { @media screen and (max-width: 480px) {

View File

@ -27,6 +27,7 @@
@forward 'progress-bar/progress-bar'; @forward 'progress-bar/progress-bar';
@forward 'presskit/presskit'; @forward 'presskit/presskit';
@forward 'resources/resources'; @forward 'resources/resources';
@forward 'roadmap';
@forward 'search-results/search-results'; @forward 'search-results/search-results';
@forward 'select-menu/select-menu'; @forward 'select-menu/select-menu';
@forward 'table/table'; @forward 'table/table';

View File

@ -1,51 +1,52 @@
@use 'alert/alert-theme' as *; @use 'alert/alert-theme';
@use 'api-list/api-list-theme' as *; @use 'api-list/api-list-theme';
@use 'api-pages/api-pages-theme' as *; @use 'api-pages/api-pages-theme';
@use 'api-symbols/api-symbols-theme' as *; @use 'api-symbols/api-symbols-theme';
@use 'buttons/buttons-theme' as *; @use 'buttons/buttons-theme';
@use 'callout/callout-theme' as *; @use 'callout/callout-theme';
@use 'card/card-theme' as *; @use 'card/card-theme';
@use 'code/code-theme' as *; @use 'code/code-theme';
@use 'contributor/contributor-theme' as *; @use 'contributor/contributor-theme';
@use 'details/details-theme' as *; @use 'deploy-theme/deploy-theme';
@use 'errors/errors-theme' as *; @use 'details/details-theme';
@use 'filetree/filetree-theme' as *; @use 'errors/errors-theme';
@use 'guides/guides-theme' as *; @use 'filetree/filetree-theme';
@use 'heading-anchors/heading-anchors-theme' as *; @use 'guides/guides-theme';
@use 'hr/hr-theme' as *; @use 'heading-anchors/heading-anchors-theme';
@use 'images/images-theme' as *; @use 'hr/hr-theme';
@use 'label/label-theme' as *; @use 'images/images-theme';
@use 'notification/notification-theme' as *; @use 'label/label-theme';
@use 'presskit/presskit-theme' as *; @use 'notification/notification-theme';
@use 'resources/resources-theme' as *; @use 'presskit/presskit-theme';
@use 'search-results/search-results-theme' as *; @use 'resources/resources-theme';
@use 'select-menu/select-menu-theme' as *; @use 'search-results/search-results-theme';
@use 'table/table-theme' as *; @use 'select-menu/select-menu-theme';
@use 'toc/toc-theme' as *; @use 'table/table-theme';
@use 'toc/toc-theme';
@mixin module-themes($theme) { @mixin theme($theme) {
@include alert-theme($theme); @include alert-theme.theme($theme);
@include api-list-theme($theme); @include api-list-theme.theme($theme);
@include api-symbols-theme($theme); @include api-symbols-theme.theme($theme);
@include buttons-theme($theme); @include buttons-theme.theme($theme);
@include callout-theme($theme); @include callout-theme.theme($theme);
@include card-theme($theme); @include card-theme.theme($theme);
@include code-theme($theme); @include code-theme.theme($theme);
@include contributor-theme($theme); @include contributor-theme.theme($theme);
@include deploy-theme($theme); @include deploy-theme.theme($theme);
@include details-theme($theme); @include details-theme.theme($theme);
@include errors-theme($theme); @include errors-theme.theme($theme);
@include filetree-theme($theme); @include filetree-theme.theme($theme);
@include guides-theme($theme); @include guides-theme.theme($theme);
@include heading-anchors-theme($theme); @include heading-anchors-theme.theme($theme);
@include hr-theme($theme); @include hr-theme.theme($theme);
@include images-theme($theme); @include images-theme.theme($theme);
@include label-theme($theme); @include label-theme.theme($theme);
@include notification-theme($theme); @include notification-theme.theme($theme);
@include presskit-theme($theme); @include presskit-theme.theme($theme);
@include resources-theme($theme); @include resources-theme.theme($theme);
@include search-results-theme($theme); @include search-results-theme.theme($theme);
@include select-menu-theme($theme); @include select-menu-theme.theme($theme);
@include table-theme($theme); @include table-theme.theme($theme);
@include toc-theme($theme); @include toc-theme.theme($theme);
} }

View File

@ -1,18 +1,15 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin alert-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.alert { .alert {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$darkgray);
&.is-critical { &.is-critical {
border-left: 8px solid $brightred; border-left: 8px solid constants.$brightred;
background-color: if($is-dark-theme, $deepgray, rgba($brightred, 0.05)); background-color: if($is-dark-theme, constants.$deepgray, rgba(constants.$brightred, 0.05));
h1, h1,
h2, h2,
@ -20,13 +17,13 @@
h4, h4,
h5, h5,
h6 { h6 {
color: $brightred; color: constants.$brightred;
} }
} }
&.is-important { &.is-important {
border-left: 8px solid $orange; border-left: 8px solid constants.$orange;
background-color: if($is-dark-theme, $deepgray, rgba($orange, 0.05)); background-color: if($is-dark-theme, constants.$deepgray, rgba(constants.$orange, 0.05));
h1, h1,
h2, h2,
@ -34,13 +31,13 @@
h4, h4,
h5, h5,
h6 { h6 {
color: $orange; color: constants.$orange;
} }
} }
&.is-helpful { &.is-helpful {
border-left: 8px solid $blue; border-left: 8px solid constants.$blue;
background-color: if($is-dark-theme, $deepgray, rgba($blue, 0.05)); background-color: if($is-dark-theme, constants.$deepgray, rgba(constants.$blue, 0.05));
h1, h1,
h2, h2,
@ -48,19 +45,19 @@
h4, h4,
h5, h5,
h6 { h6 {
color: $blue; color: constants.$blue;
} }
} }
&.archive-warning { &.archive-warning {
background-color: if($is-dark-theme, $deepgray, $darkred); background-color: if($is-dark-theme, constants.$deepgray, constants.$darkred);
* { * {
color: $white; color: constants.$white;
} }
a { a {
color: $white; color: constants.$white;
} }
} }
} }

View File

@ -1,10 +1,9 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.alert { .alert {
padding: 16px; padding: 16px;
margin: 24px 0px; margin: 24px 0px;
@include font-size(14); @include mixins.font-size(14);
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
clear: both; clear: both;

View File

@ -1,47 +1,49 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin api-list-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
aio-api-list { aio-api-list {
.api-filter { .api-filter {
.form-search { .form-search {
input { input {
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12); box-shadow: 0 2px 2px rgba(constants.$black, 0.24), 0 0 2px rgba(constants.$black, 0.12);
border: 1px solid if($is-dark-theme, $darkgray, $white); border: 1px solid if($is-dark-theme, constants.$darkgray, constants.$white);
background-color: if($is-dark-theme, $darkgray, $white); background-color: if($is-dark-theme, constants.$darkgray, constants.$white);
color: if($is-dark-theme, $white, $darkgray); color: if($is-dark-theme, constants.$white, constants.$darkgray);
@include placeholder { @include mixins.placeholder {
color: if($is-dark-theme, $offwhite, $mediumgray); color: if($is-dark-theme, constants.$offwhite, constants.$mediumgray);
} }
&:focus { &:focus {
border: 1px solid $blue-400; border: 1px solid constants.$blue-400;
box-shadow: 0 2px 2px rgba($blue-400, 0.24), 0 0 2px rgba($blue-400, 0.12); box-shadow: 0 2px 2px rgba(constants.$blue-400, 0.24), 0 0 2px rgba(constants.$blue-400, 0.12);
} }
} }
.material-icons { .material-icons {
color: if($is-dark-theme, $lightblue, $blue-grey-600); color: if($is-dark-theme, constants.$lightblue, constants.$blue-grey-600);
} }
} }
} }
.api-list-container { .api-list-container {
a {
color: if($is-dark-theme, constants.$warmblue, constants.$blue);
}
.api-list { .api-list {
li { li {
a { a {
color: if($is-dark-theme, $cyan, $blue-grey-600); color: if($is-dark-theme, constants.$coldblue, constants.$blue-grey-600);
&:hover { &:hover {
background: if($is-dark-theme, $darkgray, $blue-grey-50); background: if($is-dark-theme, constants.$darkgray, constants.$blue-grey-50);
color: if($is-dark-theme, $offwhite, $blue-500); color: if($is-dark-theme, constants.$offwhite, constants.$blue-500);
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
/* API LIST STYLES */ /* API LIST STYLES */
@ -44,15 +44,15 @@ aio-api-list {
input { input {
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
@include font-size(14); @include mixins.font-size(14);
@include line-height(32); @include mixins.line-height(32);
outline: none; outline: none;
padding: 4px 16px 4px 32px; padding: 4px 16px 4px 32px;
transition: all .2s; transition: all .2s;
width: 182px; width: 182px;
@include placeholder { @include mixins.placeholder {
@include font-size(14); @include mixins.font-size(14);
} }
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
@ -61,13 +61,13 @@ aio-api-list {
} }
.material-icons { .material-icons {
@include font-size(20); @include mixins.font-size(20);
left: 8px; left: 8px;
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
top: 12px; top: 12px;
width: 20px; width: 20px;
z-index: $layer-1; z-index: constants.$layer-1;
} }
} }
@ -85,9 +85,9 @@ aio-api-list {
padding: 16px 0; padding: 16px 0;
position: relative; position: relative;
@media handheld and (max-width: $phone-breakpoint), @media handheld and (max-width: constants.$phone-breakpoint),
screen and (max-device-width: $phone-breakpoint), screen and (max-device-width: constants.$phone-breakpoint),
screen and (max-width: $tablet-breakpoint) { screen and (max-width: constants.$tablet-breakpoint) {
padding: 24px 0 0; padding: 24px 0 0;
} }
@ -108,9 +108,9 @@ aio-api-list {
} }
li { li {
@include font-size(14); @include mixins.font-size(14);
margin: 8px 0; margin: 8px 0;
@include line-height(14); @include mixins.line-height(14);
padding: 0; padding: 0;
float: left; float: left;
width: 33%; width: 33%;
@ -120,7 +120,7 @@ aio-api-list {
white-space: nowrap; white-space: nowrap;
a { a {
@include line-height(16); @include mixins.line-height(16);
padding: 0 16px; padding: 0 16px;
text-decoration: none; text-decoration: none;
transition: all .3s; transition: all .3s;

View File

@ -1,21 +1,16 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin api-pages-theme($theme) { @mixin api-pages-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
.api-body { .api-body {
details.overloads { details.overloads {
.detail-contents { .detail-contents {
border: 1px solid $lightgray; border: 1px solid constants.$lightgray;
} }
summary { summary {
.actions { .actions {
color: $blue; color: constants.$blue;
} }
} }
} }
@ -27,10 +22,10 @@
.with-github-links { .with-github-links {
.github-links { .github-links {
a { a {
color: $mediumgray; color: constants.$mediumgray;
.material-icons:hover { .material-icons:hover {
color: $blue; color: constants.$blue;
} }
} }
} }
@ -38,21 +33,21 @@
} }
tr { tr {
border-bottom: 1px solid $lightgray; border-bottom: 1px solid constants.$lightgray;
} }
} }
.from-constructor, .from-constructor,
.read-only-property, .read-only-property,
.write-only-property { .write-only-property {
background-color: $lightgray; background-color: constants.$lightgray;
} }
} }
.github-links { .github-links {
.material-icons { .material-icons {
&:hover { &:hover {
background-color: $mist; background-color: constants.$mist;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.api-body { .api-body {
max-width: 1200px; max-width: 1200px;
@ -42,7 +41,7 @@
} }
.actions { .actions {
display: flex; display: flex;
@include font-size(14); @include mixins.font-size(14);
} }
.show-all { .show-all {
display: initial; display: initial;
@ -84,7 +83,7 @@
&.parameters-table { &.parameters-table {
margin-top: 0; margin-top: 0;
@include font-size(14); @include mixins.font-size(14);
box-shadow: none; box-shadow: none;
tr { tr {
@ -143,7 +142,7 @@
} }
h4 { h4 {
@include font-size(14); @include mixins.font-size(14);
font-weight: bold; font-weight: bold;
margin-top: 12px; margin-top: 12px;
} }
@ -151,7 +150,7 @@
th { th {
text-transform: none; text-transform: none;
@include font-size(16); @include mixins.font-size(16);
font-weight: bold; font-weight: bold;
} }
@ -199,16 +198,16 @@
} }
.api-heading { .api-heading {
@include font-size(14); @include mixins.font-size(14);
margin: 16px; margin: 16px;
} }
.from-constructor, .from-constructor,
.read-only-property, .read-only-property,
.write-only-property { .write-only-property {
@include font-size(12); @include mixins.font-size(12);
font-weight: 600; font-weight: 600;
@include letter-spacing(0.5); @include mixins.letter-spacing(0.5);
font-style: italic; font-style: italic;
border-radius: 4px; border-radius: 4px;
padding: 4px 6px; padding: 4px 6px;
@ -242,7 +241,7 @@
.material-icons { .material-icons {
border-radius: 4px; border-radius: 4px;
padding: 4px; padding: 4px;
@include font-size(20); @include mixins.font-size(20);
} }
} }
@ -263,7 +262,7 @@
} }
h1 { h1 {
@include font-size(24); @include mixins.font-size(24);
margin: 0; margin: 0;
} }
} }

View File

@ -1,19 +1,14 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin api-symbols-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
.symbol { .symbol {
box-shadow: 0 1px 2px rgba($black, 0.24); box-shadow: 0 1px 2px rgba(constants.$black, 0.24);
color: $white; color: constants.$white;
// SYMBOL TYPES // SYMBOL TYPES
// Symbol mapping variables in *constants* // Symbol mapping variables in *constants*
@each $name, $symbol in $api-symbols { @each $name, $symbol in constants.$api-symbols {
&.#{$name} { &.#{$name} {
background: map-get($symbol, background); background: map-get($symbol, background);

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
/* API SYMBOLS */ /* API SYMBOLS */
@ -8,9 +7,9 @@
.symbol { .symbol {
border-radius: 2px; border-radius: 2px;
display: inline-block; display: inline-block;
@include font-size(10); @include mixins.font-size(10);
font-weight: 600; font-weight: 600;
@include line-height(16); @include mixins.line-height(16);
margin-right: 8px; margin-right: 8px;
text-align: center; text-align: center;
width: 16px; width: 16px;

View File

@ -1,12 +1,7 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin buttons-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
// This rule overrides some Angular Material styles defined for `.mat-button` // This rule overrides some Angular Material styles defined for `.mat-button`
// (hence we include `.mat-button` in the selector). // (hence we include `.mat-button` in the selector).
a.button.mat-button, a.button.mat-button,
@ -14,43 +9,43 @@
// COLORS // COLORS
&.button-secondary { &.button-secondary {
background: $mediumgray; background: constants.$mediumgray;
color: rgba($white, 0.87); color: rgba(constants.$white, 0.87);
} }
&.button-plain { &.button-plain {
background: $white; background: constants.$white;
color: rgba($darkgray, 0.87); color: rgba(constants.$darkgray, 0.87);
} }
&.button-subtle { &.button-subtle {
background: $mediumgray; background: constants.$mediumgray;
color: darken($offwhite, 10%); color: darken(constants.$offwhite, 10%);
&:hover { &:hover {
color: rgba($white, 0.7); color: rgba(constants.$white, 0.7);
} }
} }
&.button-blue { &.button-blue {
background: $blue; background: constants.$blue;
color: rgba($white, 0.87); color: rgba(constants.$white, 0.87);
&:hover { &:hover {
color: rgba($white, 0.7); color: rgba(constants.$white, 0.7);
} }
} }
&.button-banner { &.button-banner {
background: $darkgray; background: constants.$darkgray;
color: rgba($white, 0.87); color: rgba(constants.$white, 0.87);
} }
} }
.cta-bar { .cta-bar {
.button { .button {
&:hover { &:hover {
color: $offwhite; color: constants.$offwhite;
} }
} }
} }
@ -59,11 +54,11 @@
// This rule overrides some Angular Material styles defined for `.mat-button` // This rule overrides some Angular Material styles defined for `.mat-button`
// (hence we include `.mat-button` in the selector). // (hence we include `.mat-button` in the selector).
a.button.mat-button.filter-button { a.button.mat-button.filter-button {
background-color: rgba($blue, 0.2); background-color: rgba(constants.$blue, 0.2);
&.selected, &.selected,
&:hover { &:hover {
background-color: $blue; background-color: constants.$blue;
color: $white; color: constants.$white;
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
/* Button Styles */ /* Button Styles */
@ -13,9 +13,9 @@ a.button.mat-button,
.button { .button {
color: inherit; color: inherit;
display: inline-block; display: inline-block;
@include line-height(32); @include mixins.line-height(32);
padding: 0px 16px; padding: 0px 16px;
@include font-size(14); @include mixins.font-size(14);
font-weight: 400; font-weight: 400;
border-radius: 3px; border-radius: 3px;
text-decoration: none; text-decoration: none;
@ -25,20 +25,20 @@ a.button.mat-button,
// SIZES // SIZES
&.button-small { &.button-small {
@include font-size(12); @include mixins.font-size(12);
@include line-height(24); @include mixins.line-height(24);
padding: 0px 8px; padding: 0px 8px;
} }
&.button-large { &.button-large {
@include font-size(15); @include mixins.font-size(15);
@include line-height(48); @include mixins.line-height(48);
padding: 0px 24px; padding: 0px 24px;
} }
&.button-x-large { &.button-x-large {
@include font-size(16); @include mixins.font-size(16);
@include line-height(56); @include mixins.line-height(56);
padding: 0px 24px; padding: 0px 24px;
} }
} }
@ -64,14 +64,14 @@ a.button.mat-button,
// (hence we include `.mat-button` in the selector). // (hence we include `.mat-button` in the selector).
a.button.mat-button.filter-button { a.button.mat-button.filter-button {
border-radius: 4px; border-radius: 4px;
@include font-size(16); @include mixins.font-size(16);
@include line-height(48); @include mixins.line-height(48);
margin: 8px; margin: 8px;
padding: 0px 16px; padding: 0px 16px;
width: 168px; width: 168px;
@media (max-width: 480px) { @media (max-width: 480px) {
@include font-size(14); @include mixins.font-size(14);
width: auto; width: auto;
} }
} }

View File

@ -1,42 +1,39 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin callout-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.callout { .callout {
header { header {
color: $white; color: constants.$white;
} }
&.is-critical { &.is-critical {
border-color: $brightred; border-color: constants.$brightred;
background: rgba($brightred, 0.05); background: rgba(constants.$brightred, if($is-dark-theme, 0.1, 0.05));
header { header {
background: $brightred; background: constants.$brightred;
} }
} }
&.is-important { &.is-important {
border-color: $orange; border-color: constants.$orange;
background: rgba($orange, 0.05); background: rgba(constants.$orange,if($is-dark-theme, 0.1, 0.05));
header { header {
background: $amber-700; background: constants.$amber-700;
} }
} }
&.is-helpful { &.is-helpful {
border-color: $blue; border-color: constants.$blue;
background: rgba($blue, 0.05); background: rgba(constants.$blue, if($is-dark-theme, 0.1, 0.05));
header { header {
background: $blue; background: constants.$blue;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
@use '../alert/alert'; @use '../alert/alert';
.callout { .callout {
@ -9,7 +8,7 @@
border-radius: 4px; border-radius: 4px;
header { header {
@include line-height(24); @include mixins.line-height(24);
font-weight: 500; font-weight: 500;
padding: 8px 16px; padding: 8px 16px;
margin: 0; margin: 0;
@ -20,7 +19,7 @@
p { p {
padding: 16px; padding: 16px;
margin: 0px; margin: 0px;
@include font-size(14); @include mixins.font-size(14);
} }
> *:not(:first-child) { > *:not(:first-child) {

View File

@ -1,37 +1,31 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin card-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.card-container { .card-container {
.docs-card { .docs-card {
background-color: if($is-dark-theme, $darkgray, $white); background-color: if($is-dark-theme, constants.$deepgray, constants.$white);
section { section {
color: if($is-dark-theme, $powderblue, $blue); color: if($is-dark-theme, constants.$cyan, constants.$blue);
} }
p { p {
color: if($is-dark-theme, $offwhite, $darkgray); color: if($is-dark-theme, constants.$offwhite, constants.$darkgray);
} }
.card-footer { .card-footer {
color: if($is-dark-theme, $cyan, $darkblue); color: if($is-dark-theme, constants.$powderblue, constants.$darkblue);
background-color: if($is-dark-theme, $deepgray, rgba($blue, 0.1)); background-color: if($is-dark-theme, constants.$darkgray, rgba(constants.$blue, 0.1));
border-top: 0.5px solid if($is-dark-theme, $darkgray, $lightgray); border-top: 0.5px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
a { a {
color: $mediumgray; color: constants.$mediumgray;
} }
} }
} }
} }
.card-section {
@include card(auto, 90%, if($is-dark-theme, $darkgray, $white));
}
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
.card-container { .card-container {
display: flex; display: flex;
@ -9,7 +9,8 @@
margin: 16px 0; margin: 16px 0;
.docs-card { .docs-card {
@include card(194px, 35%); @include mixins.card(194px, 35%);
max-width: 340px; max-width: 340px;
min-width: 300px; min-width: 300px;
margin: 24px 16px; margin: 24px 16px;
@ -23,8 +24,8 @@
} }
section { section {
@include font-size(20); @include mixins.font-size(20);
@include line-height(24); @include mixins.line-height(24);
margin: 0; margin: 0;
padding: 32px 0 24px; padding: 32px 0 24px;
text-transform: none; text-transform: none;
@ -32,8 +33,8 @@
} }
p { p {
@include font-size(13); @include mixins.font-size(13);
@include line-height(24); @include mixins.line-height(24);
padding: 0 16px; padding: 0 16px;
margin: 0; margin: 0;
text-align: center; text-align: center;
@ -42,21 +43,20 @@
.card-footer { .card-footer {
bottom: 0; bottom: 0;
box-sizing: border-box; box-sizing: border-box;
@include line-height(48); @include mixins.line-height(48);
left: 0; left: 0;
position: absolute; position: absolute;
right: 0; right: 0;
text-align: right; text-align: right;
a { a {
@include font-size(13); @include mixins.font-size(13);
} }
} }
} }
} }
.card-section { .card-section {
@include card(auto, 90%);
padding: 16px 32px; padding: 16px 32px;
margin: 16px 0; margin: 16px 0;
display: flex; display: flex;
@ -65,7 +65,7 @@
// Removes on-hover effect from card mixin // Removes on-hover effect from card mixin
&:hover { &:hover {
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12); box-shadow: 0 2px 2px rgba(constants.$black, 0.24), 0 0 2px rgba(constants.$black, 0.12);
} }
h1, h1,

View File

@ -1,29 +1,26 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import "~@angular/material/theming";
@mixin code-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
code-example { code-example {
&:not(.no-box) { &:not(.no-box) {
background-color: if($is-dark-theme, $deepgray, rgb($backgroundgray, 0.2)); background-color: if($is-dark-theme, constants.$deepgray, rgb(constants.$backgroundgray, 0.2));
border: 0.5px solid if($is-dark-theme, $darkgray, $lightgray); border: 0.5px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
color: $darkgray; color: constants.$darkgray;
} }
// TERMINAL / SHELL TEXT STYLES // TERMINAL / SHELL TEXT STYLES
&.code-shell, &.code-shell,
&[language="sh"], &[language="sh"],
&[language="bash"] { &[language="bash"] {
background-color: $darkgray; background-color: constants.$darkgray;
} }
header { header {
background-color: if($is-dark-theme, $blue-900, $accentblue); background-color: constants.$accentblue;
color: $offwhite; color: constants.$offwhite;
} }
} }
@ -39,50 +36,50 @@
code-example.avoid header, code-example.avoid header,
code-example.avoidFile header { code-example.avoidFile header {
border: 2px solid $anti-pattern; border: 2px solid constants.$anti-pattern;
background: $anti-pattern; background: constants.$anti-pattern;
} }
code-example.avoid, code-example.avoid,
code-example.avoidFile, code-example.avoidFile,
code-tabs.avoid mat-tab-body, code-tabs.avoid mat-tab-body,
code-tabs.avoidFile mat-tab-body { code-tabs.avoidFile mat-tab-body {
border: 0.5px solid $anti-pattern; border: 0.5px solid constants.$anti-pattern;
} }
aio-code { aio-code {
pre.prettyprint { pre.prettyprint {
code { code {
ol.linenums { ol.linenums {
color: lighten($mediumgray, 25%); color: lighten(constants.$mediumgray, 25%);
li { li {
&::marker { &::marker {
color: lighten($mediumgray, 25%); color: lighten(constants.$mediumgray, 25%);
} }
} }
} }
.code-missing { .code-missing {
color: $darkred; color: constants.$darkred;
} }
} }
.copy-button { .copy-button {
color: $blue-grey-200; color: constants.$blue-grey-200;
&:hover { &:hover {
color: $mediumgray; color: constants.$mediumgray;
} }
} }
&.lang-sh, &.lang-sh,
&.lang-bash { &.lang-bash {
.copy-button { .copy-button {
color: if($is-dark-theme, $blue-grey-200, $lightgray); color: if($is-dark-theme, constants.$blue-grey-200, constants.$lightgray);
&:hover { &:hover {
color: if($is-dark-theme, $blue-grey-300, $superlightgray); color: if($is-dark-theme, constants.$blue-grey-300, constants.$superlightgray);
} }
} }
} }
@ -92,14 +89,14 @@
.sidenav-content { .sidenav-content {
code { code {
a { a {
color: if($is-dark-theme, $cyan, $darkblue); color: if($is-dark-theme, constants.$cyan, constants.$darkblue);
} }
} }
:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(pre) { :not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(pre) {
> code { > code {
background-color: if($is-dark-theme, $darkgray, rgba($lightgray, 0.5)); background-color: if($is-dark-theme, constants.$darkgray, rgba(constants.$lightgray, 0.5));
color: if($is-dark-theme, $white, $darkgray); color: if($is-dark-theme, constants.$white, constants.$darkgray);
} }
} }
} }
@ -107,7 +104,7 @@
// Dark Mode Code Palette // Dark Mode Code Palette
$code-lightteal: #17d3ff; $code-lightteal: #17d3ff;
$code-lightred: #ffb0b0; $code-lightred: #ffb0b0;
$code-lightgreen: #a9ef5f; $code-lightgreen: #c3e88d;
$code-lightpurple: #d1b4ff; $code-lightpurple: #d1b4ff;
$code-lightorange: #ffd779; $code-lightorange: #ffd779;
$code-lightblue: #98caff; $code-lightblue: #98caff;
@ -119,7 +116,7 @@
/* SPAN elements with the classes below are added by prettyprint. */ /* SPAN elements with the classes below are added by prettyprint. */
.pln { .pln {
color: if($is-dark-theme, $white, #000); color: if($is-dark-theme, constants.$white, #000);
} /* plain text */ } /* plain text */
@media screen { @media screen {
@ -219,7 +216,7 @@
.lit, .lit,
.pun, .pun,
.dec { .dec {
color: $codegreen; color: constants.$codegreen;
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
code-example, code-example,
code-tabs { code-tabs {
@ -42,7 +42,7 @@ code-example {
header { header {
border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0;
@include font-size(16); @include mixins.font-size(16);
padding: 8px 16px; padding: 8px 16px;
} }
} }
@ -81,7 +81,7 @@ aio-code {
} }
span { span {
@include line-height(24); @include mixins.line-height(24);
} }
ol.linenums { ol.linenums {
@ -89,9 +89,9 @@ aio-code {
li { li {
margin: 0; margin: 0;
font-family: $code-font; font-family: constants.$code-font;
font-size: 90%; font-size: 90%;
@include line-height(24); @include mixins.line-height(24);
} }
} }
} }

View File

@ -1,29 +1,26 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin contributor-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
aio-contributor { aio-contributor {
background: mat-color($background, background); background: mat-color($background, background);
.contributor-info { .contributor-info {
background: rgba($darkgray, 0.5); background: rgba(constants.$darkgray, 0.5);
.info-item { .info-item {
color: $white; color: constants.$white;
&:hover { &:hover {
color: $lightgray; color: constants.$lightgray;
} }
} }
} }
.contributor-image { .contributor-image {
border: 2px solid $lightgray; border: 2px solid constants.$lightgray;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
aio-contributor-list { aio-contributor-list {
.contributor-group { .contributor-group {
@ -58,7 +57,7 @@ aio-contributor {
.info-item { .info-item {
display: flex; display: flex;
@include font-size(14); @include mixins.font-size(14);
font-weight: 500; font-weight: 500;
margin: 8px; margin: 8px;
padding: 0; padding: 0;
@ -128,8 +127,8 @@ aio-contributor {
p { p {
margin: 8px 0; margin: 8px 0;
@include font-size(12); @include mixins.font-size(12);
@include line-height(14); @include mixins.line-height(14);
text-align: left; text-align: left;
} }
} }
@ -158,8 +157,8 @@ aio-contributor {
p { p {
cursor: pointer; cursor: pointer;
@include font-size(14); @include mixins.font-size(14);
@include line-height(18); @include mixins.line-height(18);
margin: 8px 16px; margin: 8px 16px;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow-y: auto; overflow-y: auto;

View File

@ -1,14 +1,18 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
aio-shell.mode-archive { @mixin theme($theme) {
@include deploy-theme($blue-grey-900, $blue-grey-400); $is-dark-theme: map-get($theme, is-dark);
}
aio-shell.mode-next { aio-shell.mode-archive {
@include deploy-theme($brightred, $darkred); @include mixins.deploy-theme(constants.$blue-grey-900, constants.$blue-grey-400, if($is-dark-theme, constants.$powderblue, constants.$blue-grey-900));
} }
aio-shell.mode-rc { aio-shell.mode-next {
@include deploy-theme($tangerine, $darkgoldenrod); @include mixins.deploy-theme(constants.$brightred, constants.$darkred, if($is-dark-theme, constants.$powderblue, constants.$brightred));
}
aio-shell.mode-rc {
@include mixins.deploy-theme(constants.$tangerine, constants.$darkgoldenrod, if($is-dark-theme, constants.$powderblue, constants.$tangerine));
}
} }

View File

@ -1,17 +1,12 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin details-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
details { details {
box-shadow: 0 1px 4px 0 rgba($black, 0.37); box-shadow: 0 1px 4px 0 rgba(constants.$black, 0.37);
> summary { > summary {
color: $black; color: constants.$black;
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
/* /*
* General styling to make detail/summary tags look a bit more material * General styling to make detail/summary tags look a bit more material
@ -18,7 +18,7 @@
details { details {
> summary { > summary {
cursor: pointer; cursor: pointer;
@include font-size(16); @include mixins.font-size(16);
position: relative; position: relative;
padding: 16px 24px; padding: 16px 24px;
height: 16px; height: 16px;
@ -31,10 +31,10 @@ details {
// Rotate the icon // Rotate the icon
i.material-icons.expand { i.material-icons.expand {
@include rotate(0deg); @include mixins.rotate(0deg);
@at-root #{selector-replace(&, 'details', 'details[open]')} { @at-root #{selector-replace(&, 'details', 'details[open]')} {
@include rotate(180deg); @include mixins.rotate(180deg);
} }
} }

View File

@ -1,32 +1,27 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import "~@angular/material/theming";
@mixin errors-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary); .error-list {
$background: map-get($theme, background); li {
$foreground: map-get($theme, foreground); .symbol {
$is-dark-theme: map-get($theme, is-dark); &.runtime {
background: constants.$green-500;
.error-list {
li {
.symbol {
&.runtime {
background: $green-500;
}
&.compiler {
background: $blue-500;
}
}
a {
color: $blue-grey-600;
&:hover {
background: $blue-grey-50;
color: $blue-500;
}
}
} }
&.compiler {
background: constants.$blue-500;
}
}
a {
color: constants.$blue-grey-600;
&:hover {
background: constants.$blue-grey-50;
color: constants.$blue-500;
}
}
} }
}
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.error-list { .error-list {
display: grid; display: grid;
@ -12,9 +11,9 @@
} }
li { li {
@include font-size(14); @include mixins.font-size(14);
margin: 8px 0; margin: 8px 0;
@include line-height(14); @include mixins.line-height(14);
padding: 0; padding: 0;
float: left; float: left;
overflow: hidden; overflow: hidden;
@ -32,7 +31,7 @@
a { a {
display: inline-block; display: inline-block;
@include line-height(16); @include mixins.line-height(16);
padding: 0 16px 0; padding: 0 16px 0;
text-decoration: none; text-decoration: none;
transition: all .3s; transition: all .3s;

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
// FEATURES MARKETING PAGE SPECIFIC STYLES // FEATURES MARKETING PAGE SPECIFIC STYLES
@ -16,7 +15,7 @@
} }
.feature-title { .feature-title {
@include font-size(16); @include mixins.font-size(16);
font-weight: 500; font-weight: 500;
margin: 8px 0px; margin: 8px 0px;
clear: both; clear: both;

View File

@ -1,24 +1,19 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin filetree-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
.filetree { .filetree {
background: $white; background: constants.$white;
border: 4px solid $lightgray; border: 4px solid constants.$lightgray;
.file { .file {
color: $darkgray; color: constants.$darkgray;
} }
.children { .children {
.file { .file {
&:before { &:before {
border-color: $lightgray; border-color: constants.$lightgray;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.filetree { .filetree {
border-radius: 4px; border-radius: 4px;
@ -8,8 +7,8 @@
.file { .file {
display: block; display: block;
@include letter-spacing(0.3); @include mixins.letter-spacing(0.3);
@include line-height(32); @include mixins.line-height(32);
} }
.children { .children {

View File

@ -1,13 +1,10 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin guides-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.reviewed { .reviewed {
color: lighten($darkgray, 10); color: if($is-dark-theme, constants.$offwhite, lighten(constants.$darkgray, 10));
} }
} }

View File

@ -1,8 +1,7 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.reviewed { .reviewed {
@include font-size(13); @include mixins.font-size(13);
font-style: italic; font-style: italic;
text-align: right; text-align: right;
} }

View File

@ -1,12 +1,7 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin heading-anchors-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
.sidenav-content { .sidenav-content {
h1, h1,
h2, h2,
@ -15,7 +10,7 @@
h5, h5,
h6 { h6 {
.header-link { .header-link {
color: $mediumgray; color: constants.$mediumgray;
} }
} }
} }

View File

@ -1,5 +1,3 @@
@use '../../constants' as *;
.sidenav-content { .sidenav-content {
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {

View File

@ -1,13 +1,10 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin hr-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
hr { hr {
background: if($is-dark-theme, $mediumgray, $lightgray); background: if($is-dark-theme, constants.$mediumgray, constants.$lightgray);
} }
} }

View File

@ -1,5 +1,3 @@
@use '../../constants' as *;
hr { hr {
border: none; border: none;
height: 1px; height: 1px;

View File

@ -1,19 +1,16 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin images-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.content { .content {
.lightbox { .lightbox {
border: 1px solid if($is-dark-theme, $darkgray, $lightgray); border: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
background-color: if($is-dark-theme, $deepgray, $lightboxgray); background-color: if($is-dark-theme, constants.$deepgray, constants.$lightboxgray);
img { img {
background-color: $white; background-color: constants.$white;
} }
} }
} }

View File

@ -1,5 +1,3 @@
@use '../../constants' as *;
.content { .content {
img { img {

View File

@ -1,27 +1,22 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin label-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
.api-header label { .api-header label {
color: $white; color: constants.$white;
&.api-status-label { &.api-status-label {
background-color: $mediumgray; background-color: constants.$mediumgray;
&.deprecated, &.security, &.impure-pipe { &.deprecated, &.security, &.impure-pipe {
background-color: $brightred; background-color: constants.$brightred;
} }
} }
&.api-type-label { &.api-type-label {
background-color: $accentblue; background-color: constants.$accentblue;
@each $name, $symbol in $api-symbols { @each $name, $symbol in constants.$api-symbols {
&.#{$name} { &.#{$name} {
background: map-get($symbol, background); background: map-get($symbol, background);
} }
@ -29,13 +24,13 @@
} }
&.page-label { &.page-label {
background-color: $mist; background-color: constants.$mist;
color: $mediumgray; color: constants.$mediumgray;
} }
&.property-type-label { &.property-type-label {
background-color: $darkgray; background-color: constants.$darkgray;
color: $white; color: constants.$white;
} }
} }
} }

View File

@ -1,11 +1,10 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.api-header label { .api-header label {
border-radius: 4px; border-radius: 4px;
padding: 2px 10px; padding: 2px 10px;
display: inline; display: inline;
@include font-size(12); @include mixins.font-size(12);
margin-right: 8px; margin-right: 8px;
font-weight: 500; font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
@ -29,7 +28,7 @@
} }
&.property-type-label { &.property-type-label {
@include font-size(12); @include mixins.font-size(12);
text-transform: none; text-transform: none;
} }
} }

View File

@ -1,24 +1,19 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin notification-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
@mixin theme($theme) {
aio-notification { aio-notification {
background: $darkgray; background: constants.$darkgray;
.close-button { .close-button {
background: $darkgray; background: constants.$darkgray;
} }
.content { .content {
background: $darkgray; background: constants.$darkgray;
.action-button { .action-button {
background: $brightred; background: constants.$brightred;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
$notificationHeight: 56px; $notificationHeight: 56px;
@ -57,7 +56,7 @@ aio-notification {
border-radius: 15px; border-radius: 15px;
text-transform: uppercase; text-transform: uppercase;
padding: 0 10px; padding: 0 10px;
@include font-size(12); @include mixins.font-size(12);
@media (max-width: 780px) { @media (max-width: 780px) {
display: none; display: none;
} }
@ -91,7 +90,7 @@ aio-notification {
} }
} }
@include marketing-pages { @include mixins.marketing-pages {
&.aio-notification-show { &.aio-notification-show {
mat-sidenav-container.sidenav-container { mat-sidenav-container.sidenav-container {
.sidenav-content { .sidenav-content {

View File

@ -1,26 +1,24 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin presskit-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
.presskit-container { .presskit-container {
.presskit-section { .presskit-section {
&:not(:first-child) { &:not(:first-child) {
border-top: 1px solid $lightgray; border-top: 1px solid constants.$lightgray;
} }
.presskit-icon-group { .presskit-icon-group {
.presskit-icon-item { .presskit-icon-item {
.presskit-image-container { .presskit-image-container {
.transparent-img { .transparent-img {
background-color: $white; background-color: constants.$white;
&-inverse { &-inverse {
background-color: if($is-dark-theme, mat-color($background, background), $deepgray); background-color: if($is-dark-theme, mat-color($background, background), constants.$deepgray);
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
.presskit-container { .presskit-container {
padding: 0 32px 32px 32px; padding: 0 32px 32px 32px;
@ -40,7 +39,7 @@
margin-right: 0; margin-right: 0;
} }
.transparent-img { .transparent-img, .transparent-img-inverse {
border-radius: 50%; border-radius: 50%;
} }
} }
@ -57,7 +56,7 @@
&::after { &::after {
content: "cloud_download"; content: "cloud_download";
font-family: "Material Icons"; font-family: "Material Icons";
@include font-size(24); @include mixins.font-size(24);
position: absolute; position: absolute;
right: 0; right: 0;
} }

View File

@ -1,22 +1,19 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin resources-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
aio-resource-list { aio-resource-list {
.subcategory-title { .subcategory-title {
background-color: if($is-dark-theme, $deepgray, $mist); background-color: if($is-dark-theme, constants.$deepgray, constants.$mist);
} }
.resource-row-link { .resource-row-link {
background-color: if($is-dark-theme, $darkgray, $white); background-color: if($is-dark-theme, constants.$darkgray, constants.$white);
&:hover { &:hover {
border-color: if($is-dark-theme, rgba($lightblue, 0.5), rgba($blue, 0.5)); border-color: if($is-dark-theme, rgba(constants.$lightblue, 0.5), rgba(constants.$blue, 0.5));
box-shadow: 0 8px 8px rgb(1 131 163 / 24%), 0 0 8px rgb(1 67 163 / 12%), 0 6px 18px rgb(43 133 231 / 12%); box-shadow: 0 8px 8px rgb(1 131 163 / 24%), 0 0 8px rgb(1 67 163 / 12%), 0 6px 18px rgb(43 133 231 / 12%);
} }
} }

View File

@ -1,10 +1,10 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
aio-resource-list { aio-resource-list {
.showcase { .showcase {
transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 1px 4px 0 rgba($black, 0.37); box-shadow: 0 1px 4px 0 rgba(constants.$black, 0.37);
border-radius: 4px; border-radius: 4px;
margin-bottom: 8px * 6; margin-bottom: 8px * 6;
} }
@ -12,7 +12,7 @@ aio-resource-list {
.resource-item { .resource-item {
h4 { h4 {
margin: 0; margin: 0;
@include line-height(24); @include mixins.line-height(24);
} }
p { p {

View File

@ -1,39 +1,37 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin search-results-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground); $foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
aio-search-results { aio-search-results {
.search-results { .search-results {
background-color: $darkgray; background-color: constants.$darkgray;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.3); box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.3);
.search-area { .search-area {
.search-section-header { .search-section-header {
color: $white; color: constants.$white;
} }
ul { ul {
.search-result-item { .search-result-item {
color: $lightgray; color: if($is-dark-theme, constants.$offwhite , constants.$lightgray);
&:hover { &:hover {
color: $white; color: constants.$white;
} }
} }
} }
} }
.no-results { .no-results {
color: $white; color: mat-color($foreground, text);
} }
a { a {
color: $white; color: mat-color($foreground, text);
} }
} }
@ -41,24 +39,24 @@
.search-results { .search-results {
.search-area { .search-area {
.search-section-header { .search-section-header {
color: $darkgray; color: constants.$darkgray;
} }
.search-result-item { .search-result-item {
color: lighten($darkgray, 10); color: if($is-dark-theme, constants.$offwhite ,lighten(constants.$darkgray, 10));
&:hover { &:hover {
color: $accentblue; color: constants.$accentblue;
} }
} }
} }
.no-results { .no-results {
color: $darkgray; color: mat-color($foreground, text);
} }
a { a {
color: $blue; color: constants.$blue;
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
aio-search-results { aio-search-results {
z-index: 10; z-index: 10;
@ -24,7 +23,7 @@ aio-search-results {
padding: 16px; padding: 16px;
.search-section-header { .search-section-header {
@include font-size(16); @include mixins.font-size(16);
font-weight: 400; font-weight: 400;
margin: 10px 0px 5px; margin: 10px 0px 5px;
text-transform: uppercase; text-transform: uppercase;
@ -39,8 +38,8 @@ aio-search-results {
} }
.search-result-item { .search-result-item {
@include font-size(14); @include mixins.font-size(14);
@include line-height(24); @include mixins.line-height(24);
display: inline-block; display: inline-block;
font-weight: normal; font-weight: normal;
padding: 0.6rem 0; padding: 0.6rem 0;

View File

@ -1,22 +1,20 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin select-menu-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
aio-select { aio-select {
.form-select-button { .form-select-button {
background: if($is-dark-theme, $darkgray, $white); background: if($is-dark-theme, constants.$darkgray, constants.$white);
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12); box-shadow: 0 2px 2px rgba(constants.$black, 0.24), 0 0 2px rgba(constants.$black, 0.12);
border: 1px solid if($is-dark-theme, $darkgray, $white); border: 1px solid if($is-dark-theme, constants.$darkgray, constants.$white);
color: if($is-dark-theme, $blue-grey-200, $blue-grey-600); color: if($is-dark-theme, constants.$blue-grey-200, constants.$blue-grey-600);
&:focus { &:focus {
border: 1px solid $blue-400; border: 1px solid constants.$blue-400;
box-shadow: 0 2px 2px rgba($blue-400, 0.24), 0 0 2px rgba($blue-400, 0.12); box-shadow: 0 2px 2px rgba(constants.$blue-400, 0.24), 0 0 2px rgba(constants.$blue-400, 0.12);
} }
&[disabled] { &[disabled] {
@ -26,16 +24,16 @@
.form-select-dropdown { .form-select-dropdown {
background: mat-color($background, background); background: mat-color($background, background);
box-shadow: 0 16px 16px rgba($black, 0.24), 0 0 16px rgba($black, 0.12); box-shadow: 0 16px 16px rgba(constants.$black, 0.24), 0 0 16px rgba(constants.$black, 0.12);
li { li {
&:hover { &:hover {
background-color: if($is-dark-theme, $darkgray, $blue-grey-50); background-color: if($is-dark-theme, constants.$darkgray, constants.$blue-grey-50);
color: f($is-dark-theme, $blue-grey-400, $blue-grey-500); color: f($is-dark-theme, constants.$blue-grey-400, constants.$blue-grey-500);
} }
&.selected { &.selected {
background-color: if($is-dark-theme, $darkgray, $blue-grey-100); background-color: if($is-dark-theme, constants.$darkgray, constants.$blue-grey-100);
} }
} }
} }

View File

@ -1,5 +1,5 @@
@use '../../constants' as *; @use '../../constants';
@use '../../mixins' as *; @use '../../mixins';
/* SELECT MENU */ /* SELECT MENU */
@ -11,9 +11,9 @@ aio-select {
.form-select-button { .form-select-button {
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
@include font-size(14); @include mixins.font-size(14);
font-weight: 400; font-weight: 400;
@include line-height(32); @include mixins.line-height(32);
outline: none; outline: none;
padding: 4px 16px; padding: 4px 16px;
text-align: left; text-align: left;
@ -42,12 +42,12 @@ aio-select {
position: absolute; position: absolute;
top: 0; top: 0;
width: 100%; width: 100%;
z-index: $layer-2; z-index: constants.$layer-2;
li { li {
cursor: pointer; cursor: pointer;
@include font-size(14); @include mixins.font-size(14);
@include line-height(32); @include mixins.line-height(32);
margin: 0; margin: 0;
padding: 4px 16px 4px 40px; padding: 4px 16px 4px 40px;
position: relative; position: relative;
@ -66,7 +66,7 @@ aio-select {
left: 16px; left: 16px;
position: absolute; position: absolute;
top: 12px; top: 12px;
z-index: $layer-5; z-index: constants.$layer-5;
} }
} }
} }

View File

@ -1,42 +1,40 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin table-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background); $background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
table { table {
box-shadow: 0 2px 2px rgba($mediumgray, 0.24), 0 0 2px rgba(if($is-dark-theme, $white, $black), 0.12); box-shadow: 0 2px 2px rgba(constants.$mediumgray, 0.24), 0 0 2px rgba(if($is-dark-theme, constants.$white, constants.$black), 0.12);
background-color: if($is-dark-theme, mat-color($background, background), $white); background-color: if($is-dark-theme, mat-color($background, background), constants.$white);
thead > { thead > {
tr > th { tr > th {
background: if($is-dark-theme, $deepgray, rgba($lightgray, 0.2)); background: if($is-dark-theme, constants.$deepgray, rgba(constants.$lightgray, 0.2));
border-bottom: 1px solid if($is-dark-theme, $darkgray, $lightgray); border-bottom: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
color: if($is-dark-theme, $white, $darkgray); color: if($is-dark-theme, constants.$white, constants.$darkgray);
} }
} }
tbody > tr > { tbody > tr > {
th, th,
td { td {
border-bottom: 1px solid if($is-dark-theme, $darkgray, $lightgray); border-bottom: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
} }
td { td {
tr td:first-child { tr td:first-child {
@media (max-width: 480px) { @media (max-width: 480px) {
background-color: $lightgray; background-color: constants.$lightgray;
} }
} }
} }
th { th {
background: if($is-dark-theme, $deepgray, rgba($lightgray, 0.2)); background: if($is-dark-theme, constants.$deepgray, rgba(constants.$lightgray, 0.2));
&:not(:last-child) { &:not(:last-child) {
border-right: 1px solid if($is-dark-theme, $darkgray, $lightgray); border-right: 1px solid if($is-dark-theme, constants.$darkgray, constants.$lightgray);
} }
} }
} }
@ -44,7 +42,7 @@
tbody > tr { tbody > tr {
&:last-child td { &:last-child td {
@media (max-width: 480px) { @media (max-width: 480px) {
border-bottom: 1px solid if($is-dark-theme, $deepgray, $lightgray); border-bottom: 1px solid if($is-dark-theme, constants.$deepgray, constants.$lightgray);
} }
} }
} }

View File

@ -1,5 +1,4 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
table { table {
margin: 24px 0px; margin: 24px 0px;
@ -23,12 +22,12 @@ table {
} }
tr > th { tr > th {
@include font-size(12); @include mixins.font-size(12);
font-weight: 500; font-weight: 500;
padding: 8px 24px; padding: 8px 24px;
text-align: left; text-align: left;
text-transform: uppercase; text-transform: uppercase;
@include line-height(28); @include mixins.line-height(28);
} }
} }
@ -37,7 +36,7 @@ table {
td { td {
padding: 16px; padding: 16px;
text-align: left; text-align: left;
@include line-height(24); @include mixins.line-height(24);
vertical-align: top; vertical-align: top;
@media (max-width: 480px) { @media (max-width: 480px) {
@ -50,7 +49,7 @@ table {
} }
td { td {
@include letter-spacing(0.3); @include mixins.letter-spacing(0.3);
} }
th { th {

View File

@ -1,9 +1,7 @@
@use '../../constants' as *; @use '../../constants';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
@mixin toc-theme($theme) { @mixin theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground); $foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark); $is-dark-theme: map-get($theme, is-dark);
@ -12,7 +10,7 @@
.toc-heading { .toc-heading {
&.secondary { &.secondary {
&:hover { &:hover {
color: $accentblue; color: constants.$accentblue;
} }
} }
} }
@ -21,22 +19,22 @@
&.toc-heading, &.toc-heading,
&.toc-more-items { &.toc-more-items {
&.embedded:focus { &.embedded:focus {
background: if($is-dark-theme, $darkgray, $lightgray); background: if($is-dark-theme, constants.$darkgray, constants.$lightgray);
color: if($is-dark-theme, $white, $mediumgray); color: if($is-dark-theme, constants.$white, constants.$mediumgray);
} }
} }
&.toc-heading { &.toc-heading {
&:hover:not(.embedded) { &:hover:not(.embedded) {
color: $accentblue; color: constants.$accentblue;
} }
} }
&.toc-more-items { &.toc-more-items {
color: $mediumgray; color: if($is-dark-theme, constants.$lightgray, constants.$mediumgray);
&:hover { &:hover {
color: $accentblue; color: constants.$accentblue;
} }
} }
} }
@ -44,38 +42,38 @@
ul.toc-list { ul.toc-list {
li { li {
&.h1:after { &.h1:after {
background: if($is-dark-theme, $mediumgray, $lightgray); background: if($is-dark-theme, constants.$mediumgray, constants.$lightgray);
} }
a { a {
color: if($is-dark-theme, $white, lighten($darkgray, 10)); color: if($is-dark-theme, constants.$white, lighten(constants.$darkgray, 10));
} }
&:hover { &:hover {
* { * {
color: if($is-dark-theme, $lightblue, $accentblue); color: if($is-dark-theme, constants.$lightblue, constants.$accentblue);
} }
} }
&.active { &.active {
* { * {
color: if($is-dark-theme, $cyan, $blue); color: if($is-dark-theme, constants.$cyan, constants.$blue);
} }
a:before { a:before {
background: if($is-dark-theme, $cyan, $blue); background: if($is-dark-theme, constants.$cyan, constants.$blue);
} }
} }
} }
&:not(.embedded) li { &:not(.embedded) li {
&:before { &:before {
border-left-color: if($is-dark-theme, $darkgray, $lightgray); border-left-color: if($is-dark-theme, constants.$darkgray, constants.$lightgray);
} }
&:not(.active):hover { &:not(.active):hover {
a:before { a:before {
background: $lightgray; background: constants.$lightgray;
} }
} }
} }

View File

@ -1,10 +1,9 @@
@use '../../constants' as *; @use '../../mixins';
@use '../../mixins' as *;
$tocItemLineHeight: 24; $tocItemLineHeight: 24;
$tocItemTopPadding: 9; $tocItemTopPadding: 9;
$tocMarkerSize: 6;
$tocMarkerRailSize: 1; $tocMarkerRailSize: 1;
$tocMarkerSize: 6;
@mixin tocMarker() { @mixin tocMarker() {
border-radius: 50%; border-radius: 50%;
@ -29,13 +28,13 @@ $tocMarkerRailSize: 1;
aio-toc { aio-toc {
.toc-inner { .toc-inner {
@include font-size(13); @include mixins.font-size(13);
overflow-y: visible; overflow-y: visible;
padding: 4px 0 0 10px; padding: 4px 0 0 10px;
.toc-heading, .toc-heading,
.toc-list .h1 { .toc-list .h1 {
@include font-size(16); @include mixins.font-size(16);
} }
.toc-heading { .toc-heading {
@ -92,11 +91,11 @@ aio-toc {
.mat-icon { .mat-icon {
&.collapsed { &.collapsed {
@include rotate(0deg); @include mixins.rotate(0deg);
} }
&:not(.collapsed) { &:not(.collapsed) {
@include rotate(90deg); @include mixins.rotate(90deg);
} }
} }
@ -111,7 +110,7 @@ aio-toc {
li { li {
box-sizing: border-box; box-sizing: border-box;
@include line-height($tocItemLineHeight); @include mixins.line-height($tocItemLineHeight);
padding: #{$tocItemTopPadding}px 0 #{$tocItemTopPadding}px 12px; padding: #{$tocItemTopPadding}px 0 #{$tocItemTopPadding}px 12px;
position: relative; position: relative;
transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out;
@ -131,7 +130,7 @@ aio-toc {
a { a {
overflow: visible; overflow: visible;
@include font-size(14); @include mixins.font-size(14);
line-height: inherit; line-height: inherit;
display: table-cell; display: table-cell;
} }

View File

@ -1,9 +1,9 @@
@use '0-base/typography-theme' as *; @use '0-base/typography-theme';
@use '1-layouts/theme' as *; @use '1-layouts/theme' as layout-themes;
@use '2-modules/theme' as *; @use '2-modules/theme' as module-themes;
@mixin app-theme($theme) { @mixin theme($theme) {
@include typography-theme($theme); @include typography-theme.theme($theme);
@include layout-themes($theme); @include layout-themes.theme($theme);
@include module-themes($theme); @include module-themes.theme($theme);
} }

View File

@ -10,7 +10,12 @@ $layer-4: 4;
$layer-5: 5; $layer-5: 5;
// COLOR PALETTE // COLOR PALETTE
$cyan: #39d0ff;
$powderblue: #bae0ff;
$lightblue: #7fc9ff;
$blue: #1976D2; $blue: #1976D2;
$warmblue: #7491ff;
$coldblue: #8ccade;
$darkblue: #1669bb; $darkblue: #1669bb;
$accentblue: #1E88E5; $accentblue: #1E88E5;
$brightred: #DD0031; $brightred: #DD0031;

View File

@ -1,4 +1,4 @@
@use './constants' as *; @use './constants';
// REM Font Adjustments // REM Font Adjustments
@mixin font-size($sizeValue) { @mixin font-size($sizeValue) {
@ -41,39 +41,38 @@
border-radius: 5px; border-radius: 5px;
padding: 20px; padding: 20px;
margin: 0 auto; // was 24 margin: 0 auto; // was 24
border: 0.5px solid $lightgray; border: 0.5px solid constants.$lightgray;
} }
// INFO CARD SKELETON // INFO CARD SKELETON
@mixin card($height, $width) { @mixin card($height, $width) {
height: $height; height: $height;
width: $width; width: $width;
background-color: $white;
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12); box-shadow: 0 2px 2px rgba(constants.$black, 0.24), 0 0 2px rgba(constants.$black, 0.12);
box-sizing: border-box; box-sizing: border-box;
transition: box-shadow .5s; transition: box-shadow .5s;
&:hover { &:hover {
box-shadow: 0 8px 8px rgba($black, 0.24), 0 0 8px rgba($black, 0.12); box-shadow: 0 8px 8px rgba(constants.$black, 0.24), 0 0 8px rgba(constants.$black, 0.12);
text-decoration: none; text-decoration: none;
} }
} }
@mixin deploy-theme($mainColor, $gradientTargetColor) { @mixin deploy-theme($mainColor, $gradientTargetColor, $textColor) {
.mat-toolbar.mat-primary, footer { .mat-toolbar.mat-primary, footer {
background: linear-gradient(145deg, $mainColor, $gradientTargetColor); background: linear-gradient(145deg, $mainColor, $gradientTargetColor);
} }
.vertical-menu-item { .vertical-menu-item {
&.selected, &:hover { &.selected, &:hover {
color: $mainColor; color: $textColor;
} }
} }
.toc-inner ul.toc-list li { .toc-inner ul.toc-list li {
&.active a { &.active a {
color: $mainColor; color: $textColor;
&:before { &:before {
background-color: $mainColor; background-color: $mainColor;
@ -81,7 +80,7 @@
} }
&:hover a { &:hover a {
color: $mainColor; color: $textColor;
} }
} }
} }

View File

@ -1,4 +1,4 @@
@use './constants' as *; @use './constants';
@media print { @media print {
// General Adjustments // General Adjustments
@ -13,7 +13,7 @@
h1 { h1 {
height: 40px !important; height: 40px !important;
color: $darkgray !important; color: constants.$darkgray !important;
} }
h1, h1,
@ -38,7 +38,7 @@
} }
table tbody tr:last-child td { table tbody tr:last-child td {
border-bottom: 1px solid $lightgray !important; border-bottom: 1px solid constants.$lightgray !important;
} }
img { img {
@ -52,7 +52,7 @@
p > code, p > code,
li > code, li > code,
table code { table code {
color: $blue !important; color: constants.$blue !important;
} }
// No Print Class // No Print Class
@ -104,19 +104,19 @@
.lit, .lit,
.pun, .pun,
.dec { .dec {
color: $darkgray; color: constants.$darkgray;
} }
} }
header { header {
background: none; background: none;
border: 0.5px solid $lightgray; border: 0.5px solid constants.$lightgray;
color: $darkgray; color: constants.$darkgray;
} }
} }
.content code { .content code {
border: 0.5px solid $lightgray; border: 0.5px solid constants.$lightgray;
} }
.mat-tab-labels { .mat-tab-labels {
@ -132,7 +132,7 @@
} }
.api-header label { .api-header label {
color: $darkgray !important; color: constants.$darkgray !important;
font-weight: bold !important; font-weight: bold !important;
margin: 2px !important; margin: 2px !important;
padding: 0 !important; padding: 0 !important;

View File

@ -2,9 +2,6 @@
@mixin docs-site-typography-theme($theme) { @mixin docs-site-typography-theme($theme) {
$primary: map-get($theme, primary); $primary: map-get($theme, primary);
$accent: map-get($theme, accent);
$warn: map-get($theme, warn);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground); $foreground: map-get($theme, foreground);
.docs-component-viewer-tabbed-content, .docs-component-viewer-tabbed-content,

View File

@ -1,10 +1,10 @@
@use '../app-theme' as *; @use '../app-theme';
@use '~@angular/material/theming' as *; @import "~@angular/material/theming";
$ng-io-primary: mat-palette($mat-blue, 700, 600, 800); $ng-io-primary: mat-palette($mat-blue, 700, 600, 900);
$ng-io-accent: mat-palette($mat-red, 700, 600, 800); $ng-io-accent: mat-palette($mat-red, 700, 600, 800);
$ng-io-warn: mat-palette($mat-red); $ng-io-warn: mat-palette($mat-red);
$ng-io-theme: mat-dark-theme($ng-io-primary, $ng-io-accent, $ng-io-warn); $ng-io-theme: mat-dark-theme($ng-io-primary, $ng-io-accent, $ng-io-warn);
@include angular-material-theme($ng-io-theme); @include angular-material-theme($ng-io-theme);
@include app-theme($ng-io-theme); @include app-theme.theme($ng-io-theme);

View File

@ -1,9 +1,10 @@
@use '../app-theme' as *; @use '../app-theme';
@use '~@angular/material/theming' as *; @import '~@angular/material/theming';
$ng-io-primary: mat-palette($mat-blue, 700, 600, 800); $ng-io-primary: mat-palette($mat-blue, 700, 600, 800);
$ng-io-accent: mat-palette($mat-red, 700, 600, 800); $ng-io-accent: mat-palette($mat-red, 700, 600, 800);
$ng-io-warn: mat-palette($mat-red); $ng-io-warn: mat-palette($mat-red);
$ng-io-theme: mat-light-theme($ng-io-primary, $ng-io-accent, $ng-io-warn); $ng-io-theme: mat-light-theme($ng-io-primary, $ng-io-accent, $ng-io-warn);
// We don't have to call theme mixins here because light.scss is used by default in ng-io-theme.scss @include angular-material-theme($ng-io-theme);
@include app-theme.theme($ng-io-theme);

View File

@ -1,5 +1,3 @@
@use './ng-io-theme.scss';
// import directories // import directories
@use './0-base' as base; @use './0-base' as base;
@use './1-layouts' as layouts; @use './1-layouts' as layouts;
@ -7,3 +5,9 @@
// import print styles // import print styles
@use './print'; @use './print';
@import '~@angular/material/theming';
// Include the base styles for Angular Material core. We include this here so that you only
// have to load a single css file for Angular Material in your app.
@include mat-core();

View File

@ -1,10 +0,0 @@
@use '~@angular/material/theming' as *;
@import 'app-theme';
// Plus imports for other components in your app.
// Include the base styles for Angular Material core. We include this here so that you only
// have to load a single css file for Angular Material in your app.
@include mat-core();
@include angular-material-theme(light.$ng-io-theme);
@include app-theme(light.$ng-io-theme);

View File

@ -2,8 +2,8 @@
"aio": { "aio": {
"master": { "master": {
"uncompressed": { "uncompressed": {
"runtime-es2015": 4538, "runtime-es2015": 4619,
"main-es2015": 451314, "main-es2015": 453172,
"polyfills-es2015": 55210 "polyfills-es2015": 55210
} }
} }
@ -11,8 +11,8 @@
"aio-local": { "aio-local": {
"master": { "master": {
"uncompressed": { "uncompressed": {
"runtime-es2015": 4538, "runtime-es2015": 4619,
"main-es2015": 451493, "main-es2015": 453394,
"polyfills-es2015": 55291 "polyfills-es2015": 55291
} }
} }