diff --git a/.changelog/9553.txt b/.changelog/9553.txt
new file mode 100644
index 000000000..4a9f63c85
--- /dev/null
+++ b/.changelog/9553.txt
@@ -0,0 +1,3 @@
+```release-note:improvement
+ui: Move to a sidebar based main navigation
+```
diff --git a/ui/packages/consul-ui/app/components/app/index.hbs b/ui/packages/consul-ui/app/components/app/index.hbs
new file mode 100644
index 000000000..f18811831
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/app/index.hbs
@@ -0,0 +1,86 @@
+{{#let (hash
+ main=(concat guid '-main')
+) as |exported|}}
+
+
+
+
+
+
+
+
+
+ {{yield exported to="home-nav"}}
+
+{{!--
+ The viewport tolerances here give us a 10 pixel buffer to make sure the menu
+ is marked as out of the viewport, we use all sides so we don't need to change
+ this should any CSS change
+--}}
+
+ {{yield exported to="main-nav"}}
+
+{{!--
+ Whilst this has a role of navigation, it is 'complementary navigation' we
+ don't want to change the navigation role here, but we do want to label it as
+ 'complementary' to the main content. The phrase 'complementary navigation' as
+ read by a screenreader should convey the meaning we are after here.
+--}}
+
+ {{yield exported to="complementary-nav"}}
+
+
+
+
+
+ {{yield exported to="main"}}
+
+
+ {{yield exported to="content-info"}}
+
+
+
+{{/let}}
\ No newline at end of file
diff --git a/ui/packages/consul-ui/app/components/app/index.js b/ui/packages/consul-ui/app/components/app/index.js
new file mode 100644
index 000000000..150f5e89e
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/app/index.js
@@ -0,0 +1,31 @@
+import Component from '@glimmer/component';
+import { inject as service } from '@ember/service';
+import { action } from '@ember/object';
+
+export default class AppComponent extends Component {
+ @service('dom') dom;
+
+ constructor(args, owner) {
+ super(...arguments);
+ this.guid = this.dom.guid(this);
+ }
+
+ @action
+ keypressClick(e) {
+ e.target.dispatchEvent(new MouseEvent('click'));
+ }
+
+ @action
+ focus(e) {
+ const href = e.target.getAttribute('href');
+ if (href.startsWith('#')) {
+ e.preventDefault();
+ this.dom.focus(href);
+ }
+ }
+
+ @action
+ unfocus(e) {
+ e.target.blur();
+ }
+}
diff --git a/ui/packages/consul-ui/app/components/app/index.scss b/ui/packages/consul-ui/app/components/app/index.scss
new file mode 100644
index 000000000..880d0e98a
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/app/index.scss
@@ -0,0 +1,70 @@
+.app {
+ --chrome-width: 300px;
+ --chrome-height: 64px;
+}
+.app .skip-links {
+ @extend %skip-links;
+}
+[role='banner'] {
+ @extend %main-header-horizontal;
+}
+[role="banner"] > label {
+ @extend %main-nav-horizontal-toggle-button;
+}
+.hashicorp-consul > input[id] {
+ @extend %main-nav-horizontal-toggle;
+}
+%main-header-horizontal > div {
+ @extend %main-nav-horizontal-panel;
+}
+
+%main-header-horizontal nav:first-of-type {
+ @extend %main-nav-vertical, %main-nav-sidebar;
+}
+%main-header-horizontal nav:last-of-type {
+ @extend %main-nav-horizontal;
+ margin-left: auto;
+}
+%main-nav-sidebar,
+main {
+ @extend %transition-pushover;
+}
+%main-nav-sidebar {
+ transition-property: left;
+ z-index: 10;
+}
+main {
+ top: var(--chrome-height);
+ transition-property: margin-left;
+}
+
+
+@media #{$--sidebar-open} {
+ %main-nav-horizontal-toggle + header > div > nav:first-of-type {
+ left: 0;
+ }
+ %main-nav-horizontal-toggle:checked + header > div > nav:first-of-type {
+ left: calc(var(--chrome-width) * -1);
+ }
+ %main-nav-horizontal-toggle ~ main,
+ %main-nav-horizontal-toggle ~ footer {
+ margin-left: var(--chrome-width);
+ }
+ %main-nav-horizontal-toggle:checked ~ main,
+ %main-nav-horizontal-toggle:checked ~ footer {
+ margin-left: 0;
+ }
+}
+@media #{$--lt-sidebar-open} {
+ %main-nav-horizontal-toggle:checked + header > div > nav:first-of-type {
+ left: 0;
+ }
+ %main-nav-horizontal-toggle + header > div > nav:first-of-type {
+ left: calc(var(--chrome-width) * -1);
+ }
+ %main-nav-horizontal-toggle ~ main,
+ %main-nav-horizontal-toggle ~ footer {
+ margin-left: 0;
+ }
+}
+
diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs b/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs
index f9a1ec9c4..41df4d64b 100644
--- a/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs
+++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs
@@ -1,256 +1,274 @@
-
-
- Consul
-
-
- Toggle Menu
-
-
-
- Close
-
-
-{{#if dc}}
-
- {{#if (and (env 'CONSUL_NSPACES_ENABLED') (gt nspaces.length 0))}}
-
- {{#if (and (eq nspaces.length 1) (not canManageNspaces)) }}
- {{nspace.Name}}
- {{ else }}
-
-
- {{nspace.Name}}
-
- {{#if (is-href 'dc.nspaces')}}
-
-
- Namespaces themselves are not namespaced, so switching will not change the current view.
-
-
- {{/if}}
-
- {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
-
-
- Namespaces
-
-
-
- {{#each (reject-by 'DeletedAt' nspaces) as |item|}}
-
-
- {{item.Name}}
-
-
- {{/each}}
- {{#if canManageNspaces }}
-
-
-
- Manage Namespaces
-
-
- {{/if}}
- {{/let}}
-
-
- {{/if}}
-
- {{/if}}
-
- {{#if (or (not dcs) (eq dcs.length 1)) }}
- {{dc.Name}}
- {{ else }}
-
-
- {{dc.Name}}
-
-
- {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
-
-
- Datacenters
-
-
-
- {{#each (sort-by 'Name' dcs) as |item|}}
-
-
- {{item.Name}}
- {{#if item.Local}}
- Local
- {{/if}}
-
-
- {{/each}}
- {{/let}}
-
-
+
- {{/if}}
-
-
- Services
-
-
- Nodes
-
-
- Key/Value
-
-
- ACL
-
-
- Intentions
-
-
-{{/if}}
-
-
-
-
-
-
- Help
-
-
- {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
-
-
- Documentation
-
-
-
-
- HashiCorp Learn
-
-
-
-
-
- Provide Feedback
-
-
- {{/let}}
-
-
-
-
- Settings
-
-{{#if (env 'CONSUL_ACLS_ENABLED')}}
-
-
- {{#let components.AuthForm components.AuthProfile as |AuthForm AuthProfile|}}
-
-
- Log in
-
-
-
-
- Log in to Consul
-
-
-
-
-
-
-
-
- Continue without logging in
-
-
-
-
-
-
-
-
- Log in with a different token
-
-
-
-
-
-
-
-
- Continue without logging in
-
-
-
-
-
- Logout
-
-
- {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
- {{!TODO: It might be nice to use one of our recursive components here}}
- {{#if authDialog.token.AccessorID}}
-
-
-
-
+ <:home-nav>
+
+ Consul
+
+
+
+
+ <:main-nav>
+{{#if @dc}}
+
+ {{#let (or this.nspaces @nspaces) as |nspaces|}}
+ {{#if (and (env 'CONSUL_NSPACES_ENABLED') (gt nspaces.length 0))}}
+
+ Namespace
+
+
+ {{@nspace.Name}}
+
+ {{#if (is-href 'dc.nspaces')}}
+
+
+ Namespaces themselves are not namespaced, so switching will not change the current view.
+
+
+ {{/if}}
+
+ {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
+
+ {{#each (reject-by 'DeletedAt' nspaces) as |item|}}
+
+
+ {{item.Name}}
+
+
+ {{/each}}
+ {{#if this.canManageNspaces}}
+
+
+
+ Manage Namespaces
+
+
{{/if}}
-
-
- Logout
-
-
- {{/let}}
-
-
-
- {{/let}}
-
-
+ {{/let}}
+
+
+
+ {{/if}}
+ {{/let}}
+
+ Datacenter
+
+
+ {{@dc.Name}}
+
+
+ {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
+
+ {{#each (sort-by 'Name' @dcs) as |item|}}
+
+
+ {{item.Name}}
+ {{#if item.Local}}
+ Local
+ {{/if}}
+
+
+ {{/each}}
+ {{/let}}
+
+
+
+
+
+ Services
+
+
+ Nodes
+
+
+ Key/Value
+
+
+ Intentions
+
+ Access Controls
+
+ Tokens
+
+
+ Policies
+
+
+ Roles
+
+
{{/if}}
-
-
-
-
-
-{{yield}}
-
-
\ No newline at end of file
+
+
+
+ <:complementary-nav>
+
+
+
+
+ Help
+
+
+ {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
+
+
+ Documentation
+
+
+
+
+ HashiCorp Learn
+
+
+
+
+
+ Provide Feedback
+
+
+ {{/let}}
+
+
+
+
+ Settings
+
+{{#if (env 'CONSUL_ACLS_ENABLED')}}
+
+
+ {{#let components.AuthForm components.AuthProfile as |AuthForm AuthProfile|}}
+
+
+ Log in
+
+
+
+
+ Log in to Consul
+
+
+
+
+
+
+
+
+ Continue without logging in
+
+
+
+
+
+
+
+
+ Log in with a different token
+
+
+
+
+
+
+
+
+ Continue without logging in
+
+
+
+
+
+ Logout
+
+
+ {{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
+{{!TODO: It might be nice to use one of our recursive components here}}
+{{#if authDialog.token.AccessorID}}
+
+
+
+
+{{/if}}
+
+
+ Logout
+
+
+ {{/let}}
+
+
+
+ {{/let}}
+
+
+{{/if}}
+
+
+
+ <:main>
+ {{yield}}
+
+
+ <:content-info>
+
+ © {{env 'CONSUL_COPYRIGHT_YEAR'}} HashiCorp
+
+
+ Consul {{env 'CONSUL_VERSION'}}
+
+
+ Documentation
+
+ {{{concat ''}}}
+
+
\ No newline at end of file
diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.js b/ui/packages/consul-ui/app/components/hashicorp-consul/index.js
index 47d05bbb0..9865a03ca 100644
--- a/ui/packages/consul-ui/app/components/hashicorp-consul/index.js
+++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.js
@@ -1,48 +1,38 @@
-import Component from '@ember/component';
+import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
-import { computed } from '@ember/object';
+import { action } from '@ember/object';
-export default Component.extend({
- dom: service('dom'),
+export default class HashiCorpConsul extends Component {
+ @service('dom') dom;
+
+ constructor(args, owner) {
+ super(...arguments);
+ this.guid = this.dom.guid(this);
+ }
- didInsertElement: function() {
- this._super(...arguments);
- this.dom.root().classList.remove('template-with-vertical-menu');
- },
// TODO: Right now this is the only place where we need permissions
// but we are likely to need it elsewhere, so probably need a nice helper
- canManageNspaces: computed('permissions', function() {
+ get canManageNspaces() {
return (
- typeof (this.permissions || []).find(function(item) {
+ typeof (this.args.permissions || []).find(function(item) {
return item.Resource === 'operator' && item.Access === 'write' && item.Allow;
}) !== 'undefined'
);
- }),
- actions: {
- keypressClick: function(e) {
- e.target.dispatchEvent(new MouseEvent('click'));
- },
- open: function() {
- this.authForm.focus();
- },
- close: function() {
- this.authForm.reset();
- },
- reauthorize: function(e) {
- this.modal.close();
- this.onchange(e);
- },
- change: function(e) {
- const win = this.dom.viewport();
- const $root = this.dom.root();
- const $body = this.dom.element('body');
- if (e.target.checked) {
- $root.classList.add('template-with-vertical-menu');
- $body.style.height = $root.style.height = win.innerHeight + 'px';
- } else {
- $root.classList.remove('template-with-vertical-menu');
- $body.style.height = $root.style.height = null;
- }
- },
- },
-});
+ }
+
+ @action
+ open() {
+ this.authForm.focus();
+ }
+
+ @action
+ close() {
+ this.authForm.reset();
+ }
+
+ @action
+ reauthorize(e) {
+ this.modal.close();
+ this.args.onchange(e);
+ }
+}
diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss
new file mode 100644
index 000000000..0acde5815
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss
@@ -0,0 +1,14 @@
+.hashicorp-consul {
+ [role="banner"] a svg {
+ fill: var(--brand-600);
+ }
+ .docs-link a::after {
+ @extend %with-docs-mask, %as-pseudo;
+ }
+ .learn-link a::after {
+ @extend %with-learn-mask, %as-pseudo;
+ }
+ .feedback-link a::after {
+ @extend %with-logo-github-monochrome-mask, %as-pseudo;
+ }
+}
diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js b/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js
index 4a1128ad0..b5d3075c7 100644
--- a/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js
+++ b/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js
@@ -4,8 +4,10 @@ export default (collection, clickable, attribute, is, authForm, emptyState) => s
'services',
'nodes',
'kvs',
- 'acls',
'intentions',
+ 'tokens',
+ 'policies',
+ 'roles',
'help',
'settings',
'auth',
diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/index.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/index.scss
similarity index 100%
rename from ui/packages/consul-ui/app/styles/components/main-header-horizontal/index.scss
rename to ui/packages/consul-ui/app/components/main-header-horizontal/index.scss
diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss
similarity index 61%
rename from ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss
rename to ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss
index 483d5a7ba..302968093 100644
--- a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss
+++ b/ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss
@@ -1,9 +1,17 @@
%main-header-horizontal {
display: flex;
+ position: fixed;
+ z-index: 5;
+ left: 0;
+ padding: 0 25px;
+ width: calc(100% - 50px);
+}
+%main-header-horizontal,
+%main-header-horizontal::before {
+ height: var(--chrome-height);
}
%main-header-horizontal {
align-items: center;
- height: 48px;
}
%main-header-horizontal::before {
content: '';
@@ -11,11 +19,9 @@
z-index: -1;
left: 0;
width: 100vw;
- height: 48px;
}
%main-header-horizontal > a {
display: block;
- margin-right: 12px;
line-height: 0;
font-size: 0;
}
diff --git a/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss
new file mode 100644
index 000000000..96e21cf93
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss
@@ -0,0 +1,3 @@
+%main-header-horizontal::before {
+ background-color: var(--gray-000);
+}
diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/index.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss
similarity index 100%
rename from ui/packages/consul-ui/app/styles/components/main-nav-horizontal/index.scss
rename to ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss
diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss
new file mode 100644
index 000000000..ba9a3027f
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss
@@ -0,0 +1,45 @@
+%main-nav-horizontal > ul,
+%main-nav-horizontal-panel {
+ display: flex;
+}
+%main-nav-horizontal-toggle-button {
+ display: flex;
+ align-items: center;
+ height: 100%;
+ padding: 0 1rem;
+ padding-left: 5px;
+}
+%main-nav-horizontal-panel {
+ justify-content: space-between;
+ flex-grow: 1;
+}
+%main-nav-horizontal-menu-panel {
+ z-index: 400;
+ /* TODO: We should probably make menu-panel default to left hand side*/
+ left: 0;
+ right: auto;
+ top: 28px !important;
+}
+%main-nav-horizontal-action {
+ display: block;
+ padding: 5px 12px;
+ white-space: nowrap;
+}
+%main-nav-horizontal .popover-menu > label {
+ /* Usually there is no space between buttons which is */
+ /* fine as the button only highlights when its selected */
+ /* therefore no two siblings are highlighted at the same time */
+ /* which means you don't notice there is no space between the */
+ /* buttons. popover-menu triggers on the other hand can be */
+ /* at the same time as a sibling, therefore they need a little */
+ /* space between it and its sibling - this is a property of */
+ /* the main nav not the popover-menu */
+ padding-right: 5px;
+}
+%main-nav-horizontal .popover-menu > label > * {
+ /* less space as the chevron adds space */
+ padding-right: 4px !important;
+}
+%main-nav-horizontal .popover-menu > label > button::after {
+ top: 2px;
+}
diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss
new file mode 100644
index 000000000..10506efc9
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss
@@ -0,0 +1,26 @@
+%main-nav-horizontal-action {
+ border-radius: $decor-radius-200;
+ cursor: pointer;
+}
+%main-nav-horizontal-action > a {
+ color: inherit;
+}
+/**/
+/* reduced size hamburger menu */
+%main-nav-horizontal-toggle {
+ display: none;
+}
+%main-nav-horizontal-toggle-button::before {
+ @extend %with-menu-mask, %as-pseudo;
+ font-size: 1.2em;
+ cursor: pointer;
+}
+%main-nav-horizontal-toggle-button::before {
+ background-color: var(--gray-800);
+}
+%main-nav-horizontal-action,
+%main-nav-horizontal-action-intent,
+%main-nav-horizontal-action-active {
+ color: var(--gray-600);
+}
+/**/
diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss
new file mode 100644
index 000000000..5d07a5fd4
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss
@@ -0,0 +1,57 @@
+@import './skin';
+@import './layout';
+/* things that should look like nav buttons */
+%main-nav-vertical > ul > li > a,
+%main-nav-vertical > ul > li > span {
+ @extend %main-nav-vertical-action;
+}
+%main-nav-vertical > ul > li > a:active,
+%main-nav-vertical > ul > li.is-active > a {
+ @extend %main-nav-vertical-action-active;
+}
+
+%main-nav-vertical-action-active:hover:not(:active),
+%main-nav-vertical-action-active:focus:not(:active) {
+ @extend %main-nav-vertical-action-active-intent;
+}
+
+/* Whilst we want spans to look the same as actions */
+/* we don't want them to act the same */
+%main-nav-vertical-action:not(span):hover,
+%main-nav-vertical-action:not(span):focus {
+ @extend %main-nav-vertical-action-intent;
+}
+
+%main-nav-vertical > ul > li > label {
+ @extend %main-nav-vertical-action;
+}
+%main-nav-vertical .popover-menu {
+ margin-top: .5rem;
+}
+%main-nav-vertical .popover-menu .menu-panel {
+ top: 37px !important;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+%main-nav-vertical .popover-menu > label > button {
+ border: $decor-border-100;
+ border-color: var(--gray-500);
+ color: var(--gray-999);
+ width: calc(100% - 20px);
+ z-index: 100;
+ text-align: left;
+ padding: 10px;
+ border-radius: $decor-radius-100;
+}
+%main-nav-vertical .popover-menu > label > button::after {
+ float: right;
+}
+%main-nav-vertical .popover-menu .menu-panel {
+ top: 28px;
+ z-index: 100;
+}
+/* menu-panels in the main navigation are treated slightly differently */
+%main-nav-vertical label + div {
+ @extend %main-nav-vertical-menu-panel;
+}
+
diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss
new file mode 100644
index 000000000..2177b780e
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss
@@ -0,0 +1,41 @@
+%main-nav-vertical {
+ position: absolute;
+ left: 0;
+ top: var(--chrome-height, 47px);
+ width: var(--chrome-width, 300px);
+ height: calc(100vh - var(--chrome-height, 47px) - 35px);
+ padding-top: 35px;
+ overflow: auto;
+}
+// disable tabbing when not visible
+%main-nav-vertical:not(.in-viewport) {
+ visibility: hidden;
+}
+%main-nav-vertical li.nspaces,
+%main-nav-vertical li.dcs {
+ margin-bottom: 25px;
+ padding: 0 20px;
+}
+// TODO: We no longer have the rule that menu-panel buttons only contain two
+// items, left and right aligned. We should remove this and look to use
+// align-self for anything that needs right aligning instead.
+
+%main-nav-vertical [role="menuitem"] {
+ justify-content: flex-start !important;
+}
+%main-nav-vertical [role="menuitem"] span {
+ margin-left: .5rem;
+}
+%main-nav-vertical-action,
+%main-nav-vertical [role="separator"] {
+ display: block;
+ padding: 7px 25px;
+}
+%main-nav-vertical [role="separator"] {
+ margin-top: .7rem;
+ padding-bottom: 0;
+}
+
+%main-nav-vertical-menu-panel {
+ min-width: 260px;
+}
diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss
new file mode 100644
index 000000000..89853ab8b
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss
@@ -0,0 +1,53 @@
+%main-nav-vertical-action {
+ cursor: pointer;
+ border-right: $decor-border-400;
+ border-color: $transparent;
+ font-size: $typo-size-600;
+}
+%main-nav-vertical-action > a {
+ color: inherit;
+ font-size: inherit;
+}
+%main-nav-vertical [role="separator"] {
+ text-transform: uppercase;
+}
+%main-nav-vertical-action-intent {
+ text-decoration: underline;
+}
+%main-nav-vertical-action-active-intent {
+ text-decoration: none;
+}
+%main-nav-vertical {
+ background-color: var(--gray-050);
+ color: var(--gray-700);
+}
+%main-nav-vertical [role="separator"] {
+ color: var(--gray-600);
+}
+%main-nav-vertical-action {
+ color: var(--gray-800);
+}
+%main-nav-vertical-action-intent,
+%main-nav-vertical-action-active {
+ color: var(--gray-999);
+}
+%main-nav-vertical-action-active {
+ background-color: var(--gray-150);
+ border-color: var(--gray-999);
+}
+%main-nav-vertical .is-local span:last-of-type {
+ @extend %pill-200;
+ color: var(--gray-000);
+ background-color: var(--gray-500);
+}
+%main-nav-vertical .nspaces .menu-panel > div {
+ background-color: var(--gray-050);
+ color: var(--gray-999);
+ padding-left: 36px;
+}
+%main-nav-vertical .nspaces .menu-panel > div::before {
+ @extend %with-info-circle-fill-mask, %as-pseudo;
+ color: $blue-500;
+ /* sizes the icon not the text */
+ font-size: 1.1em;
+}
diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/index.scss b/ui/packages/consul-ui/app/components/menu-panel/index.scss
similarity index 100%
rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/index.scss
rename to ui/packages/consul-ui/app/components/menu-panel/index.scss
diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/layout.scss b/ui/packages/consul-ui/app/components/menu-panel/layout.scss
similarity index 100%
rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/layout.scss
rename to ui/packages/consul-ui/app/components/menu-panel/layout.scss
diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss b/ui/packages/consul-ui/app/components/menu-panel/skin.scss
similarity index 65%
rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss
rename to ui/packages/consul-ui/app/components/menu-panel/skin.scss
index de06dbcad..0948b81ca 100644
--- a/ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss
+++ b/ui/packages/consul-ui/app/components/menu-panel/skin.scss
@@ -3,32 +3,31 @@
border-radius: $decor-radius-200;
box-shadow: $decor-elevation-600;
}
-%menu-panel {
- border-color: $gray-300;
- background-color: $white;
-}
-%menu-panel dd {
- color: $gray-500;
-}
%menu-panel > ul > li {
list-style-type: none;
}
%menu-panel-separator {
text-transform: uppercase;
- color: $gray-400;
}
%menu-panel-header + ul,
%menu-panel-separator:not(:first-child) {
border-top: $decor-border-100;
- border-color: $gray-300;
-}
-
-%menu-panel .docs-link a::after {
- @extend %with-docs-mask, %as-pseudo;
-}
-%menu-panel .learn-link a::after {
- @extend %with-learn-mask, %as-pseudo;
}
%menu-panel .is-active > *::after {
@extend %with-check-plain-mask, %as-pseudo;
}
+%menu-panel {
+ border-color: var(--gray-300);
+ background-color: var(--gray-000);
+}
+%menu-panel dd {
+ color: $gray-500;
+}
+%menu-panel-separator {
+ color: var(--gray-400);
+}
+%menu-panel-header + ul,
+%menu-panel-separator:not(:first-child) {
+ border-color: var(--gray-300);
+}
+
diff --git a/ui/packages/consul-ui/app/components/skip-links/index.scss b/ui/packages/consul-ui/app/components/skip-links/index.scss
new file mode 100644
index 000000000..6734f9b32
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/skip-links/index.scss
@@ -0,0 +1,3 @@
+@import './skin';
+@import './layout';
+
diff --git a/ui/packages/consul-ui/app/components/skip-links/layout.scss b/ui/packages/consul-ui/app/components/skip-links/layout.scss
new file mode 100644
index 000000000..f8e78c6b1
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/skip-links/layout.scss
@@ -0,0 +1,13 @@
+%skip-links {
+ display: flex;
+ flex-direction: column;
+ position: absolute;
+ left: 50%;
+ padding: 20px;
+ top: -100px;
+ transform: translateX(-50%);
+}
+%skip-links:focus-within {
+ top: 0px;
+}
+
diff --git a/ui/packages/consul-ui/app/components/skip-links/skin.scss b/ui/packages/consul-ui/app/components/skip-links/skin.scss
new file mode 100644
index 000000000..76cec8c6a
--- /dev/null
+++ b/ui/packages/consul-ui/app/components/skip-links/skin.scss
@@ -0,0 +1,9 @@
+%skip-links {
+ outline: 1px solid $white;
+ color: $white;
+ background-color: $blue-500;
+}
+%skip-links a {
+ color: inherit;
+}
+
diff --git a/ui/packages/consul-ui/app/services/dom.js b/ui/packages/consul-ui/app/services/dom.js
index 9f55bf936..b0618e565 100644
--- a/ui/packages/consul-ui/app/services/dom.js
+++ b/ui/packages/consul-ui/app/services/dom.js
@@ -1,5 +1,4 @@
-import Service from '@ember/service';
-import { getOwner } from '@ember/application';
+import Service, { inject as service } from '@ember/service';
import { guidFor } from '@ember/object/internals';
// selecting
@@ -24,13 +23,12 @@ let $_;
let inViewportCallbacks;
const clickFirstAnchor = clickFirstAnchorFactory(closest);
export default class DomService extends Service {
- doc = document;
- win = window;
+ @service('-document') doc;
- init() {
- super.init(...arguments);
+ constructor(owner) {
+ super(...arguments);
inViewportCallbacks = new WeakMap();
- $_ = getComponentFactory(getOwner(this));
+ $_ = getComponentFactory(owner);
}
willDestroy() {
@@ -44,13 +42,29 @@ export default class DomService extends Service {
}
viewport() {
- return this.win;
+ return this.doc.defaultView;
}
guid(el) {
return guidFor(el);
}
+ focus($el) {
+ if (typeof $el === 'string') {
+ $el = this.element($el);
+ }
+ if (typeof $el !== 'undefined') {
+ let previousIndex = $el.getAttribute('tabindex');
+ $el.setAttribute('tabindex', '0');
+ $el.focus();
+ if (previousIndex === null) {
+ $el.removeAttribute('tabindex');
+ } else {
+ $el.setAttribute('tabindex', previousIndex);
+ }
+ }
+ }
+
// TODO: should this be here? Needs a better name at least
clickFirstAnchor = clickFirstAnchor;
diff --git a/ui/packages/consul-ui/app/styles/app.scss b/ui/packages/consul-ui/app/styles/app.scss
index 133fae6d4..30d5235ff 100644
--- a/ui/packages/consul-ui/app/styles/app.scss
+++ b/ui/packages/consul-ui/app/styles/app.scss
@@ -3,10 +3,6 @@
/* all variables and custom queries including generic base variables */
@import 'variables';
-/*TODO: Move this to its own local component*/
-@import 'ember-power-select';
-/**/
-
/* all components including generic base components */
@import 'components';
/* cascading typography */
@@ -15,3 +11,5 @@
@import 'layout';
/* pinpoint individual overwrites for those 'just on this page' problems */
@import 'routes';
+/* global control of themeable components */
+@import 'themes';
diff --git a/ui/packages/consul-ui/app/styles/base/animation/index.scss b/ui/packages/consul-ui/app/styles/base/animation/index.scss
index 1d6b6c31a..ab19562b4 100644
--- a/ui/packages/consul-ui/app/styles/base/animation/index.scss
+++ b/ui/packages/consul-ui/app/styles/base/animation/index.scss
@@ -17,3 +17,7 @@
opacity: 1;
pointer-events: auto;
}
+%transition-pushover {
+ transition-timing-function: cubic-bezier(0.1, 0.1, 0.25, 0.9);
+ transition-duration: 0.1s;
+}
diff --git a/ui/packages/consul-ui/app/styles/base/color/base-variables.scss b/ui/packages/consul-ui/app/styles/base/color/base-variables.scss
index dc4053afb..99cde386b 100644
--- a/ui/packages/consul-ui/app/styles/base/color/base-variables.scss
+++ b/ui/packages/consul-ui/app/styles/base/color/base-variables.scss
@@ -61,6 +61,7 @@ $cyan-900: #003346;
$gray-010: #fbfbfc;
$gray-050: #f7f8fa;
$gray-100: #ebeef2;
+$gray-150: #ebeef2;
$gray-200: #dce0e6;
$gray-300: #bac1cc;
$gray-400: #8e96a3;
@@ -68,7 +69,9 @@ $gray-500: #6f7682;
$gray-600: #626873;
$gray-700: #525761;
$gray-800: #373a42;
+$gray-850: #2c2e33;
$gray-900: #1f2124;
+$gray-950: #15171c;
$green-050: #ecf7ed;
$green-100: #c6e9c9;
$green-200: #a0dba5;
diff --git a/ui/packages/consul-ui/app/styles/base/color/index.scss b/ui/packages/consul-ui/app/styles/base/color/index.scss
index 1c892e1b4..8de1216ee 100644
--- a/ui/packages/consul-ui/app/styles/base/color/index.scss
+++ b/ui/packages/consul-ui/app/styles/base/color/index.scss
@@ -1,3 +1,4 @@
@import './base-variables';
@import './semantic-variables';
@import './frame-placeholders';
+@import './theme-placeholders';
diff --git a/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss b/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss
new file mode 100644
index 000000000..0983f227d
--- /dev/null
+++ b/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss
@@ -0,0 +1,90 @@
+%theme-light {
+ --gray-000: #{$white};
+ --gray-050: #{$gray-050};
+ --gray-100: #{$gray-100};
+ --gray-150: #{$gray-150};
+ --gray-200: #{$gray-200};
+ --gray-300: #{$gray-300};
+ --gray-400: #{$gray-400};
+ --gray-500: #{$gray-500};
+ --gray-600: #{$gray-600};
+ --gray-700: #{$gray-700};
+ --gray-800: #{$gray-800};
+ --gray-850: #{$gray-850};
+ --gray-900: #{$gray-900};
+ --gray-950: #{$gray-950};
+ --gray-999: #{$black};
+
+ --blue-500: #{$blue-500};
+
+ --transparent: #{$transparent};
+}
+%theme-high-contrast {
+ --transparent: #{$transparent};
+}
+%theme-low-contrast {
+ --transparent: #{$transparent};
+}
+%theme-light-low-contrast {
+ --transparent: #{$transparent};
+}
+%theme-dark-low-contrast {
+ --transparent: #{$transparent};
+}
+%theme-light-high-contrast {
+ --gray-000: #{$white};
+ --gray-050: #{$white};
+ --gray-100: #{$white};
+ --gray-150: #{$white};
+ --gray-200: #{$white};
+ --gray-300: #{$white};
+ --gray-400: #{$white};
+ --gray-500: #{$gray-500};
+ --gray-600: #{$black};
+ --gray-700: #{$black};
+ --gray-800: #{$black};
+ --gray-850: #{$black};
+ --gray-900: #{$black};
+ --gray-950: #{$black};
+ --gray-999: #{$black};
+
+ --transparent: #{$transparent};
+}
+%theme-dark-high-contrast {
+ --gray-000: #{$black};
+ --gray-050: #{$black};
+ --gray-100: #{$black};
+ --gray-150: #{$black};
+ --gray-200: #{$black};
+ --gray-300: #{$black};
+ --gray-400: #{$black};
+ --gray-500: #{$gray-500};
+ --gray-600: #{$white};
+ --gray-700: #{$white};
+ --gray-800: #{$white};
+ --gray-850: #{$white};
+ --gray-900: #{$white};
+ --gray-950: #{$white};
+ --gray-999: #{$white};
+
+ --transparent: #{$transparent};
+}
+%theme-dark {
+ --gray-000: #{$black};
+ --gray-050: #{$gray-950};
+ --gray-100: #{$gray-900};
+ --gray-150: #{$gray-850};
+ --gray-200: #{$gray-800};
+ --gray-300: #{$gray-700};
+ --gray-400: #{$gray-600};
+ --gray-500: #{$gray-500};
+ --gray-600: #{$gray-400};
+ --gray-700: #{$gray-300};
+ --gray-800: #{$gray-200};
+ --gray-850: #{$gray-150};
+ --gray-900: #{$gray-100};
+ --gray-950: #{$gray-050};
+ --gray-999: #{$white};
+
+ --transparent: #{$transparent};
+}
diff --git a/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss b/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss
index bc7627776..f3cf0309b 100644
--- a/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss
+++ b/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss
@@ -94,8 +94,8 @@
}
%internal-button {
- color: $gray-900;
- background-color: $white;
+ color: var(--gray-900);
+ background-color: var(--gray-000);
}
%internal-button-dangerous {
@extend %frame-red-300;
@@ -104,7 +104,7 @@
@extend %frame-red-700;
}
%internal-button-intent {
- background-color: $gray-050;
+ background-color: var(--gray-050);
}
%internal-button:focus,
%internal-button:hover {
diff --git a/ui/packages/consul-ui/app/styles/base/components/index.scss b/ui/packages/consul-ui/app/styles/base/components/index.scss
index 61474d718..2280b706b 100644
--- a/ui/packages/consul-ui/app/styles/base/components/index.scss
+++ b/ui/packages/consul-ui/app/styles/base/components/index.scss
@@ -5,7 +5,6 @@
@import './display-toggle/index';
@import './form-elements/index';
@import './inline-alert/index';
-@import './menu-panel/index';
@import './pill/index';
@import './popover-menu/index';
@import './radio-group/index';
diff --git a/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss b/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss
index 1a77c0cba..2e983a97a 100644
--- a/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss
+++ b/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss
@@ -7,6 +7,7 @@ $decor-border-000: none;
$decor-border-100: 1px solid;
$decor-border-200: 2px solid;
$decor-border-300: 3px solid;
+$decor-border-400: 4px solid;
$decor-elevation-100: 0 3px 2px rgba(0, 0, 0, 0.06);
$decor-elevation-200: 0 2px 4px rgba(0, 0, 0, 0.1);
$decor-elevation-300: 0 5px 1px -2px rgba($black, 0.12);
diff --git a/ui/packages/consul-ui/app/styles/base/reset/system.scss b/ui/packages/consul-ui/app/styles/base/reset/system.scss
index d30616b35..26c58a311 100644
--- a/ui/packages/consul-ui/app/styles/base/reset/system.scss
+++ b/ui/packages/consul-ui/app/styles/base/reset/system.scss
@@ -9,7 +9,7 @@ strong {
}
/* %typo-body */
body {
- color: $gray-900;
+ color: var(--gray-900);
}
/* TODO: Consider changing this to 'p a, dd a, td a' etc etc*/
a {
diff --git a/ui/packages/consul-ui/app/styles/components.scss b/ui/packages/consul-ui/app/styles/components.scss
index 6e7983ece..1a22481b4 100644
--- a/ui/packages/consul-ui/app/styles/components.scss
+++ b/ui/packages/consul-ui/app/styles/components.scss
@@ -38,13 +38,23 @@
@import './components/brand-loader';
@import './components/loader';
-@import './components/main-header-horizontal';
-@import './components/main-nav-horizontal';
@import './components/footer';
/**/
@import './components/app-view';
+@import 'consul-ui/components/skip-links';
+@import 'consul-ui/components/app';
+/* app chrome */
+@import 'consul-ui/components/main-header-horizontal';
+@import 'consul-ui/components/main-nav-horizontal';
+@import 'consul-ui/components/main-nav-vertical';
+@import 'consul-ui/components/hashicorp-consul';
+/**/
+@import 'ember-power-select';
+/**/
+@import 'consul-ui/components/menu-panel';
+
@import 'consul-ui/components/overlay';
@import 'consul-ui/components/tooltip';
@import 'consul-ui/components/notice';
diff --git a/ui/packages/consul-ui/app/styles/components/app-view.scss b/ui/packages/consul-ui/app/styles/components/app-view.scss
index f3624604b..f684be1dc 100644
--- a/ui/packages/consul-ui/app/styles/components/app-view.scss
+++ b/ui/packages/consul-ui/app/styles/components/app-view.scss
@@ -22,17 +22,17 @@
#toolbar-toggle {
display: none;
}
-@media #{$--horizontal-selects} {
- [for='toolbar-toggle'] {
- display: none;
- }
-}
@media #{$--lt-spacious-page-header} {
%app-view-actions {
margin-top: 9px;
}
}
// reduced search magnifying icon layout
+@media #{$--horizontal-selects} {
+ [for='toolbar-toggle'] {
+ display: none;
+ }
+}
@media #{$--lt-horizontal-selects} {
%app-view-header h1 {
display: inline-block;
diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss b/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss
deleted file mode 100644
index 2dc1b8ace..000000000
--- a/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import './main-header-horizontal/index';
-[role='banner'] {
- @extend %main-header-horizontal;
-}
-%main-header-horizontal::before {
- background-color: var(--swatch-brand-600, $black);
-}
diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/skin.scss b/ui/packages/consul-ui/app/styles/components/main-header-horizontal/skin.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss
deleted file mode 100644
index 3a8c0f218..000000000
--- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss
+++ /dev/null
@@ -1,67 +0,0 @@
-@import './main-nav-horizontal/index';
-
-%main-nav-horizontal-action,
-%main-nav-horizontal-toggle-button {
- color: var(--typo-brand-050, $black);
-}
-
-%main-nav-horizontal .docs-link a::after {
- @extend %with-docs-icon, %as-pseudo;
-}
-%main-nav-horizontal .learn-link a::after {
- @extend %with-learn-icon, %as-pseudo;
-}
-%main-nav-horizontal .feedback-link a::after {
- @extend %with-logo-github-monochrome-mask, %as-pseudo;
-}
-
-%main-header-horizontal nav:first-of-type {
- @extend %primary-nav;
-}
-%main-header-horizontal nav:last-of-type {
- @extend %secondary-nav;
-}
-%primary-nav,
-%secondary-nav {
- @extend %main-nav-horizontal;
-}
-
-%primary-nav .nspaces .menu-panel > div {
- background-color: $gray-050;
- padding-left: 36px;
-}
-%primary-nav .nspaces .menu-panel > div::before {
- @extend %with-info-circle-fill-mask, %as-pseudo;
- color: $blue-500;
- /* sizes the icon not the text */
- font-size: 1.1em;
-}
-
-%main-header-horizontal > div {
- @extend %main-nav-horizontal-panel;
-}
-%main-header-horizontal label[for='main-nav-toggle'] {
- @extend %main-nav-horizontal-toggle-button;
-}
-%main-header-horizontal > input {
- @extend %main-nav-horizontal-toggle;
-}
-@media #{$--lt-horizontal-nav} {
- %main-nav-horizontal-panel {
- background-color: var(--swatch-brand-600, $black);
- }
- %primary-nav {
- margin-top: 65px;
- }
- %secondary-nav li:first-child {
- display: none;
- }
- %primary-nav > ul > li.is-active > a {
- font-weight: $typo-weight-bold;
- }
-}
-@media #{$--horizontal-nav} {
- %main-nav-horizontal-action-active {
- background-color: var(--swatch-brand-800, $black);
- }
-}
diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss
deleted file mode 100644
index 32785cd15..000000000
--- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss
+++ /dev/null
@@ -1,116 +0,0 @@
-%main-nav-horizontal .popover-menu > label > * {
- /* less space as the chevron adds space */
- padding-right: 4px !important;
-}
-%main-nav-horizontal-action {
- display: block;
- padding: 5px 12px;
- white-space: nowrap;
-}
-%main-nav-horizontal-menu-panel {
- z-index: 400;
- /* TODO: We should probably make menu-panel default to left hand side*/
- left: 0;
- right: auto;
- top: 28px !important;
-}
-%main-nav-horizontal .popover-menu > label > button::after {
- top: 2px;
-}
-%main-nav-horizontal .is-local [role='menuitem'] {
- display: inline-block;
-}
-%main-nav-horizontal .is-local [role='menuitem']:after {
- display: inline-flex !important;
-}
-@media #{$--horizontal-nav} {
- %main-nav-horizontal > ul,
- %main-nav-horizontal-panel {
- display: flex;
- }
- %main-nav-horizontal-panel {
- justify-content: space-between;
- flex-grow: 1;
- }
- %main-nav-horizontal-menu-panel {
- min-width: 266px;
- }
- %main-nav-horizontal-toggle-button {
- display: none;
- }
- %main-nav-horizontal .popover-menu > label {
- /* Usually there is no space between buttons which is */
- /* fine as the button only highlights when its selected */
- /* therefore no two siblings are highlighted at the same time */
- /* which means you don't notice there is no space between the */
- /* buttons. popover-menu triggers on the other hand can be */
- /* at the same time as a sibling, therefore they need a little */
- /* space between it and its sibling - this is a poroperty of */
- /* the main nav not the popover-menu */
- padding-right: 5px;
- }
-}
-@media #{$--lt-horizontal-nav} {
- %main-nav-horizontal-action {
- padding-top: 15px;
- padding-bottom: 15px;
- text-align: right;
- }
- %main-nav-horizontal .popover-menu > label {
- display: flex;
- flex-direction: row-reverse;
- }
- %main-nav-horizontal-menu-panel {
- width: 180px;
- top: 38px !important;
- }
-
- %main-nav-horizontal-toggle:checked ~ div {
- width: 250px;
- right: 0;
- padding: 15px 35px;
- padding-top: 0;
- }
- %main-nav-horizontal-toggle:checked + label {
- width: 100vw;
- height: 100%;
- left: 0;
- top: 0;
- }
- %main-nav-horizontal-toggle-button {
- position: absolute;
- z-index: 200;
- right: 0;
- width: 100px;
- height: 48px;
- }
- %main-nav-horizontal-toggle-button::before {
- position: absolute;
- top: 50%;
- right: 2px;
- margin-top: -0.6em;
- }
- %main-nav-horizontal-panel {
- box-sizing: border-box;
- overflow: auto;
- position: absolute;
- z-index: 300;
- top: 0;
- right: -100%;
- width: 0;
- height: 100%;
- padding: 0;
- padding-top: 15px;
- }
- %main-nav-horizontal-panel {
- transition-timing-function: cubic-bezier(0.1, 0.1, 0.25, 0.9);
- transition-duration: 0.2s;
- transition-property: width right;
- }
- %main-nav-horizontal-panel label span {
- visibility: visible !important;
- display: inline-block;
- padding-right: 47px;
- padding-top: 13px;
- }
-}
diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss
deleted file mode 100644
index d49874614..000000000
--- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-/* nav buttons */
-%main-nav-horizontal-action {
- border-radius: $decor-radius-200;
- cursor: pointer;
-}
-%main-nav-horizontal-action,
-%main-nav-horizontal-action-intent,
-%main-nav-horizontal-action-active {
- color: $white;
-}
-%main-nav-horizontal-action > a {
- color: inherit;
-}
-/**/
-/* reduced size hamburger menu */
-%main-nav-horizontal-toggle {
- display: none;
-}
-%main-nav-horizontal-toggle-button {
- text-indent: -9000px;
-}
-%main-nav-horizontal-toggle-button::before {
- @extend %with-more-vertical-mask, %as-pseudo;
- background-color: $white;
- font-size: 1.2em;
-}
-%main-nav-horizontal-toggle-button span {
- visibility: hidden;
-}
-@media #{$--lt-horizontal-nav} {
- %main-nav-horizontal-toggle-button {
- cursor: pointer;
- }
- %main-nav-horizontal-toggle:checked + label {
- background-color: rgba($black, 0.4);
- }
-}
-/**/
-/* nav dropdown */
-%main-nav-horizontal .is-local span:nth-child(2) {
- @extend %pill-200, %frame-gray-600;
-}
-/**/
diff --git a/ui/packages/consul-ui/app/styles/layout.scss b/ui/packages/consul-ui/app/styles/layout.scss
index b8963f085..1efec2644 100644
--- a/ui/packages/consul-ui/app/styles/layout.scss
+++ b/ui/packages/consul-ui/app/styles/layout.scss
@@ -49,10 +49,6 @@ main,
%modal-window {
@extend %main-content;
}
-html.template-with-vertical-menu,
-html.template-with-vertical-menu body {
- overflow: hidden;
-}
html:not(.has-nspaces) [class*='nspace-'] {
display: none;
}
diff --git a/ui/packages/consul-ui/app/styles/layouts/containers.scss b/ui/packages/consul-ui/app/styles/layouts/containers.scss
index d6cd89dbc..56cad4306 100644
--- a/ui/packages/consul-ui/app/styles/layouts/containers.scss
+++ b/ui/packages/consul-ui/app/styles/layouts/containers.scss
@@ -25,14 +25,10 @@ $ideal-content-padding: 33px;
max-width: $ideal-content-width;
}
%viewport-container {
- padding-left: calc(#{$ideal-viewport-padding-num}% / (#{$ideal-viewport-width-num} / 100));
- padding-right: calc(#{$ideal-viewport-padding-num}% / (#{$ideal-viewport-width-num} / 100));
- padding-left: calc(#{$ideal-viewport-padding-num}vw / (#{$ideal-viewport-width-num} / 100));
+ padding-left: 25px;
padding-right: calc(#{$ideal-viewport-padding-num}vw / (#{$ideal-viewport-width-num} / 100));
}
%content-container {
- padding-left: calc(33% / (#{$ideal-viewport-width-num} / 100));
- padding-right: calc(33% / (#{$ideal-viewport-width-num} / 100));
padding-left: calc(24vw / (#{$ideal-viewport-width-num} / 100));
padding-right: calc(24vw / (#{$ideal-viewport-width-num} / 100));
}
diff --git a/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss b/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss
index 4f2944dff..54ac890e6 100644
--- a/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss
+++ b/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss
@@ -8,13 +8,6 @@ html[data-route^='dc.acls.index'] .filter-bar {
html[data-route^='dc.acls.index'] .filter-bar [role='radiogroup'] {
@extend %expanded-single-select;
}
-@media #{$--horizontal-tabs} {
- html[data-route^='dc.acls.policies.index'] main header .actions,
- html[data-route^='dc.acls.policies.index'] main header .actions {
- position: relative;
- top: 42px;
- }
-}
@media #{$--lt-wide-form} {
html[data-route^='dc.acls.create'] main header .actions,
diff --git a/ui/packages/consul-ui/app/styles/themes.scss b/ui/packages/consul-ui/app/styles/themes.scss
new file mode 100644
index 000000000..62cf0bb67
--- /dev/null
+++ b/ui/packages/consul-ui/app/styles/themes.scss
@@ -0,0 +1,18 @@
+:root {
+ @extend %theme-light;
+}
+%main-header-horizontal,
+%main-nav-vertical,
+%main-nav-horizontal {
+ @extend %theme-dark;
+}
+%main-nav-horizontal .menu-panel {
+ @extend %theme-light;
+}
+%main-nav-vertical .nspaces .menu-panel > div {
+ @extend %theme-light;
+}
+%main-nav-vertical .menu-panel a:hover,
+%main-nav-vertical .menu-panel a:focus {
+ background-color: var(--blue-500);
+}
diff --git a/ui/packages/consul-ui/app/styles/variables/custom-query.scss b/ui/packages/consul-ui/app/styles/variables/custom-query.scss
index bce53925c..c93bfb414 100644
--- a/ui/packages/consul-ui/app/styles/variables/custom-query.scss
+++ b/ui/packages/consul-ui/app/styles/variables/custom-query.scss
@@ -1,10 +1,10 @@
$ideal-width: 1260px;
-$--horizontal-filters: '(min-width: 1080px)';
-$--lt-horizontal-filters: '(max-width: 1079px)';
+$--horizontal-filters: '(min-width: 1300px)';
+$--lt-horizontal-filters: '(max-width: 1379px)';
-$--horizontal-selects: '(min-width: 696px)';
-$--lt-horizontal-selects: '(max-width: 695px)';
+$--horizontal-selects: '(min-width: 996px)';
+$--lt-horizontal-selects: '(max-width: 995px)';
$--horizontal-nav: '(min-width: 850px)';
$--lt-horizontal-nav: '(max-width: 849px)';
@@ -35,8 +35,5 @@ $--lt-wide-form: '(max-width: 420px)';
$--wide-table: '(min-width: 421px)';
$--lt-wide-table: '(max-width: 420px)';
-$--medium-table: '(min-width: 850px)';
-$--lt-medium-table: '(max-width: 849px)';
-/* */
-$--fixed-grid: '(min-width: 1260px)';
-$--lt-fixed-grid: '(max-width: 1259px)';
+$--sidebar-open: '(min-width: 900px)';
+$--lt-sidebar-open: '(max-width: 899px)';
diff --git a/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs b/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs
deleted file mode 100644
index 982fa9d35..000000000
--- a/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs
index afbad1918..052cfa257 100644
--- a/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs
+++ b/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs
@@ -46,14 +46,9 @@ as |sort filters items|}}
- Access Controls
+ Policies
-
- {{#if isAuthorized }}
- {{partial 'dc/acls/nav'}}
- {{/if}}
-
Create
diff --git a/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs
index 5cc11ccb5..aee311bdd 100644
--- a/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs
+++ b/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs
@@ -40,14 +40,9 @@ as |sort filters items|}}
- Access Controls
+ Roles
-
- {{#if isAuthorized }}
- {{partial 'dc/acls/nav'}}
- {{/if}}
-
Create
diff --git a/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs
index 849ba3cc1..609c9b9af 100644
--- a/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs
+++ b/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs
@@ -44,14 +44,9 @@ as |sort filters items|}}
- Access Controls
+ Tokens
-
- {{#if isAuthorized }}
- {{partial 'dc/acls/nav'}}
- {{/if}}
-
Create
diff --git a/ui/packages/consul-ui/package.json b/ui/packages/consul-ui/package.json
index b8376fa9e..5161b3f15 100644
--- a/ui/packages/consul-ui/package.json
+++ b/ui/packages/consul-ui/package.json
@@ -114,6 +114,7 @@
"ember-exam": "^4.0.0",
"ember-export-application-global": "^2.0.1",
"ember-href-to": "^3.1.0",
+ "ember-in-viewport": "^3.8.1",
"ember-inflector": "^3.0.0",
"ember-intl": "^5.5.1",
"ember-load-initializers": "^2.1.1",
diff --git a/ui/packages/consul-ui/tests/acceptance/page-navigation.feature b/ui/packages/consul-ui/tests/acceptance/page-navigation.feature
index eef74e1da..8ed54e09b 100644
--- a/ui/packages/consul-ui/tests/acceptance/page-navigation.feature
+++ b/ui/packages/consul-ui/tests/acceptance/page-navigation.feature
@@ -25,7 +25,7 @@ Feature: page-navigation
| Link | URL | Endpoint |
| nodes | /dc-1/nodes | /v1/internal/ui/nodes?dc=dc-1&ns=@namespace |
| kvs | /dc-1/kv | /v1/kv/?keys&dc=dc-1&separator=%2F&ns=@namespace |
- | acls | /dc-1/acls/tokens | /v1/acl/tokens?dc=dc-1&ns=@namespace |
+ | tokens | /dc-1/acls/tokens | /v1/acl/tokens?dc=dc-1&ns=@namespace |
# | settings | /settings | /v1/catalog/datacenters |
-------------------------------------------------------------------------------------
Scenario: Clicking a [Item] in the [Model] listing and back again
diff --git a/ui/packages/consul-ui/translations/en-us.yaml b/ui/packages/consul-ui/translations/en-us.yaml
index f80096fd0..db329791f 100644
--- a/ui/packages/consul-ui/translations/en-us.yaml
+++ b/ui/packages/consul-ui/translations/en-us.yaml
@@ -57,6 +57,14 @@ common:
desc: Healthy to Unhealthy
components:
+ app:
+ skip_to_content: Skip to Content
+ toggle_menu: Toggle Menu
+ # landmark aria-labels - only screen read, so potentially included with
+ # screenreader landmarks/phrases i.e. Main Navigation for nav elements and
+ # therefore potentially do not need the word 'navigation' adding to them
+ main: Main
+ complementary: Complementary
consul:
service:
search-bar:
diff --git a/ui/yarn.lock b/ui/yarn.lock
index 6a7d64f42..f160bfc67 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -16,6 +16,13 @@
dependencies:
"@babel/highlight" "^7.10.4"
+"@babel/code-frame@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
"@babel/compat-data@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0"
@@ -65,6 +72,27 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.12.3":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
+ integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.12.10"
+ "@babel/helper-module-transforms" "^7.12.1"
+ "@babel/helpers" "^7.12.5"
+ "@babel/parser" "^7.12.10"
+ "@babel/template" "^7.12.7"
+ "@babel/traverse" "^7.12.10"
+ "@babel/types" "^7.12.10"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.1"
+ json5 "^2.1.2"
+ lodash "^4.17.19"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
"@babel/generator@^7.11.6", "@babel/generator@^7.12.1", "@babel/generator@^7.9.6":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468"
@@ -74,6 +102,15 @@
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
+ integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
+ dependencies:
+ "@babel/types" "^7.12.11"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
"@babel/helper-annotate-as-pure@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
@@ -169,6 +206,15 @@
"@babel/template" "^7.10.4"
"@babel/types" "^7.10.4"
+"@babel/helper-function-name@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
+ integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.10"
+ "@babel/template" "^7.12.7"
+ "@babel/types" "^7.12.11"
+
"@babel/helper-get-function-arity@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
@@ -176,6 +222,13 @@
dependencies:
"@babel/types" "^7.10.4"
+"@babel/helper-get-function-arity@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
+ integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
+ dependencies:
+ "@babel/types" "^7.12.10"
+
"@babel/helper-hoist-variables@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
@@ -197,6 +250,13 @@
dependencies:
"@babel/types" "^7.12.1"
+"@babel/helper-module-imports@^7.12.5":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
+ integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
+ dependencies:
+ "@babel/types" "^7.12.5"
+
"@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
@@ -271,11 +331,23 @@
dependencies:
"@babel/types" "^7.11.0"
+"@babel/helper-split-export-declaration@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
+ integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
+ dependencies:
+ "@babel/types" "^7.12.11"
+
"@babel/helper-validator-identifier@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
+"@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
"@babel/helper-validator-option@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
@@ -300,6 +372,15 @@
"@babel/traverse" "^7.12.1"
"@babel/types" "^7.12.1"
+"@babel/helpers@^7.12.5":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
+ integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
+ dependencies:
+ "@babel/template" "^7.10.4"
+ "@babel/traverse" "^7.12.5"
+ "@babel/types" "^7.12.5"
+
"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
@@ -314,6 +395,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
+"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
+ integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
+
"@babel/plugin-proposal-async-generator-functions@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e"
@@ -829,6 +915,15 @@
resolve "^1.8.1"
semver "^5.5.1"
+"@babel/plugin-transform-runtime@^7.12.1":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562"
+ integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.5"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ semver "^5.5.1"
+
"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.8.3":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
@@ -1046,6 +1141,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.12.5":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
+ integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
@@ -1055,6 +1157,15 @@
"@babel/parser" "^7.10.4"
"@babel/types" "^7.10.4"
+"@babel/template@^7.12.7":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
+ integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/parser" "^7.12.7"
+ "@babel/types" "^7.12.7"
+
"@babel/traverse@^7.1.6", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.2.4", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e"
@@ -1070,6 +1181,21 @@
globals "^11.1.0"
lodash "^4.17.19"
+"@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
+ integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
+ dependencies:
+ "@babel/code-frame" "^7.12.11"
+ "@babel/generator" "^7.12.11"
+ "@babel/helper-function-name" "^7.12.11"
+ "@babel/helper-split-export-declaration" "^7.12.11"
+ "@babel/parser" "^7.12.11"
+ "@babel/types" "^7.12.12"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
"@babel/types@^7.1.6", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.3.2", "@babel/types@^7.3.4", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae"
@@ -1079,6 +1205,15 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
+ integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
"@base2/pretty-print-object@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047"
@@ -1282,6 +1417,45 @@
ember-cli-htmlbars-inline-precompile "^2.1.0"
ember-test-waiters "^1.1.1"
+"@embroider/core@0.33.0", "@embroider/core@^0.33.0":
+ version "0.33.0"
+ resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.33.0.tgz#0fb1752d6e34ea45368e65c42e13220a57ffae76"
+ integrity sha512-Kd3W4vBJCSwskVislwldhuoe1RtdA04lRr2r2ccnPI4msCXxLn292WBaS7/x0LdEu2EMO5ffRDeQva2/xoS4Yg==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/parser" "^7.12.3"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-transform-runtime" "^7.12.1"
+ "@babel/runtime" "^7.12.5"
+ "@babel/traverse" "^7.12.1"
+ "@babel/types" "^7.12.1"
+ "@embroider/macros" "0.33.0"
+ assert-never "^1.1.0"
+ babel-plugin-syntax-dynamic-import "^6.18.0"
+ broccoli-node-api "^1.7.0"
+ broccoli-persistent-filter "^3.1.2"
+ broccoli-plugin "^4.0.1"
+ broccoli-source "^3.0.0"
+ debug "^3.1.0"
+ escape-string-regexp "^4.0.0"
+ fast-sourcemap-concat "^1.4.0"
+ filesize "^4.1.2"
+ fs-extra "^7.0.1"
+ fs-tree-diff "^2.0.0"
+ handlebars "^4.4.2"
+ js-string-escape "^1.0.1"
+ jsdom "^16.4.0"
+ json-stable-stringify "^1.0.1"
+ lodash "^4.17.10"
+ pkg-up "^2.0.0"
+ resolve "^1.8.1"
+ resolve-package-path "^1.2.2"
+ semver "^7.3.2"
+ strip-bom "^3.0.0"
+ typescript-memoize "^1.0.0-alpha.3"
+ walk-sync "^1.1.3"
+ wrap-legacy-hbs-plugin-if-needed "^1.0.1"
+
"@embroider/core@0.4.3", "@embroider/core@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.4.3.tgz#117973b9761d68aee14d820bbaefeb05d5984ba8"
@@ -1316,6 +1490,21 @@
typescript-memoize "^1.0.0-alpha.3"
walk-sync "^1.1.3"
+"@embroider/macros@0.33.0":
+ version "0.33.0"
+ resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.33.0.tgz#d5826ea7565bb69b57ba81ed528315fe77acbf9d"
+ integrity sha512-nl/1zRn+Wd3MO8Bb+YPqHmFl/2vwQLTsEB6Zt+K9bWXsM/kA+dPCeeCReLN6PbkMP16xxqtNSIrQ8Y49hnWjpg==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/traverse" "^7.12.1"
+ "@babel/types" "^7.12.1"
+ "@embroider/core" "0.33.0"
+ assert-never "^1.1.0"
+ ember-cli-babel "^7.23.0"
+ lodash "^4.17.10"
+ resolve "^1.8.1"
+ semver "^7.3.2"
+
"@embroider/macros@0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.4.3.tgz#ea5604b8bd578520f15886a428a6c4fa9481abc0"
@@ -1478,6 +1667,14 @@
resolved "https://registry.yarnpkg.com/@glimmer/di/-/di-0.1.11.tgz#a6878c07a13a2c2c76fcde598a5c97637bfc4280"
integrity sha1-poeMB6E6LCx2/N5ZilyXY3v8QoA=
+"@glimmer/encoder@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.42.2.tgz#d3ba3dc9f1d4fa582d1d18b63da100fc5c664057"
+ integrity sha512-8xkdly0i0BP5HMI0suPB9ly0AnEq8x9Z8j3Gee1HYIovM5VLNtmh7a8HsaHYRs/xHmBEZcqtr8JV89w6F59YMQ==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/vm" "^0.42.2"
+
"@glimmer/env@0.1.7", "@glimmer/env@^0.1.7":
version "0.1.7"
resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07"
@@ -1490,6 +1687,55 @@
dependencies:
"@simple-dom/interface" "^1.4.0"
+"@glimmer/interfaces@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.42.2.tgz#9cf8d6f8f5eee6bfcfa36919ca68ae716e1f78db"
+ integrity sha512-7LOuQd02cxxNNHChzdHMAU8/qOeQvTro141CU5tXITP7z6aOv2D2gkFdau97lLQiVxezGrh8J7h8GCuF7TEqtg==
+
+"@glimmer/low-level@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.42.2.tgz#52c745414d1d04c4245c369bd132c0e786c816ef"
+ integrity sha512-s+Q44SnKdTBTnkgX0deBlVNnNPVas+Pg8xEnwky9VrUqOHKsIZRrPgfVULeC6bIdFXtXOKm5CjTajhb9qnQbXQ==
+
+"@glimmer/program@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.42.2.tgz#fe504679ca4df6251dd5fcf3003699bb51fa41fa"
+ integrity sha512-XpQ6EYzA1VL9ESKoih5XW5JftFmlRvwy3bF/I1ABOa3yLIh8mApEwrRI/sIHK0Nv5s1j0uW4itVF196WxnJXgw==
+ dependencies:
+ "@glimmer/encoder" "^0.42.2"
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/util" "^0.42.2"
+
+"@glimmer/reference@^0.42.1", "@glimmer/reference@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.42.2.tgz#57874e27c825fb7041b5295b5eb153f3f3f92f8f"
+ integrity sha512-XuhbRjr3M9Q/DP892jGxVfPE6jaGGHu5w9ppGMnuTY7Vm/x+A+68MCiaREhDcEwJlzGg4UkfVjU3fdgmUIrc5Q==
+ dependencies:
+ "@glimmer/util" "^0.42.2"
+
+"@glimmer/runtime@^0.42.1":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.42.2.tgz#50e7da5d3cf9144248048a7478be3c489784a4bb"
+ integrity sha512-52LVZJsLKM3GzI3TEmYcw2LdI9Uk0jotISc3w2ozQBWvkKoYxjDNvI/gsjyMpenj4s7FcG2ggOq0x4tNFqm1GA==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/low-level" "^0.42.2"
+ "@glimmer/program" "^0.42.2"
+ "@glimmer/reference" "^0.42.2"
+ "@glimmer/util" "^0.42.2"
+ "@glimmer/vm" "^0.42.2"
+ "@glimmer/wire-format" "^0.42.2"
+
+"@glimmer/syntax@^0.42.1":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.42.2.tgz#89bb3cb787285b84665dc0d8907d94b008e5be9a"
+ integrity sha512-SR26SmF/Mb5o2cc4eLHpOyoX5kwwXP4KRhq4fbWfrvan74xVWA38PLspPCzwGhyVH/JsE7tUEPMjSo2DcJge/Q==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/util" "^0.42.2"
+ handlebars "^4.0.13"
+ simple-html-tokenizer "^0.5.8"
+
"@glimmer/syntax@^0.62.3":
version "0.62.3"
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.62.3.tgz#8c4abd245a54e8cc084a47ab4a65c33194256fda"
@@ -1517,6 +1763,11 @@
"@glimmer/interfaces" "0.62.3"
"@simple-dom/interface" "^1.4.0"
+"@glimmer/util@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.42.2.tgz#9ca1631e42766ea6059f4b49d0bdfb6095aad2c4"
+ integrity sha512-Heck0baFSaWDanCYtmOcLeaz7v+rSqI8ovS7twrp2/FWEteb3Ze5sWQ2BEuSAG23L/k/lzVwYM/MY7ZugxBpaA==
+
"@glimmer/util@^0.44.0":
version "0.44.0"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.44.0.tgz#45df98d73812440206ae7bda87cfe04aaae21ed9"
@@ -1527,6 +1778,22 @@
resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.44.0.tgz#03d127097dc9cb23052cdb7fcae59d0a9dca53e1"
integrity sha512-i01plR0EgFVz69GDrEuFgq1NheIjZcyTy3c7q+w7d096ddPVeVcRzU3LKaqCfovvLJ+6lJx40j45ecycASUUyw==
+"@glimmer/vm@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.42.2.tgz#492a4f05eac587c3a37371b3c62593f20bef553d"
+ integrity sha512-D2MNU5glICLqvet5SfVPrv+l6JNK2TR+CdQhch1Ew+btOoqlW+2LIJIF/5wLb1POjIMEkt+78t/7RN0mDFXGzw==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/util" "^0.42.2"
+
+"@glimmer/wire-format@^0.42.2":
+ version "0.42.2"
+ resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.42.2.tgz#b95062b594dddeb8bd11cba3a6a0accbfabc9930"
+ integrity sha512-IqUo6mdJ7GRsK7KCyZxrc17ioSg9RBniEnb418ZMQxsV/WBv9NQ359MuClUck2M24z1AOXo4TerUw0U7+pb1/A==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.2"
+ "@glimmer/util" "^0.42.2"
+
"@handlebars/parser@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-1.1.0.tgz#d6dbc7574774b238114582410e8fee0dc3532bdf"
@@ -3150,7 +3417,7 @@ JSV@^4.0.x:
resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=
-abab@^2.0.0:
+abab@^2.0.0, abab@^2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
@@ -3183,6 +3450,14 @@ acorn-globals@^4.3.0:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-globals@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
+ integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+
acorn-jsx@^5.1.0, acorn-jsx@^5.2.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
@@ -3193,7 +3468,7 @@ acorn-walk@^6.0.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
-acorn-walk@^7.0.0:
+acorn-walk@^7.0.0, acorn-walk@^7.1.1:
version "7.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
@@ -3208,7 +3483,7 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
-acorn@^7.1.0, acorn@^7.4.0:
+acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -5341,6 +5616,23 @@ broccoli-persistent-filter@^3.1.0:
symlink-or-copy "^1.0.1"
sync-disk-cache "^2.0.0"
+broccoli-persistent-filter@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-3.1.2.tgz#41da6b9577be09a170ecde185f2c5a6099f99c4e"
+ integrity sha512-CbU95RXXVyy+eJV9XTiHUC7NnsY3EvdVrGzp3YgyvO2bzXZFE5/GzDp4X/VQqX+jsk4qyT1HvMOF0sD1DX68TQ==
+ dependencies:
+ async-disk-cache "^2.0.0"
+ async-promise-queue "^1.0.3"
+ broccoli-plugin "^4.0.3"
+ fs-tree-diff "^2.0.0"
+ hash-for-dep "^1.5.0"
+ heimdalljs "^0.2.1"
+ heimdalljs-logger "^0.1.7"
+ promise-map-series "^0.2.1"
+ rimraf "^3.0.0"
+ symlink-or-copy "^1.0.1"
+ sync-disk-cache "^2.0.0"
+
broccoli-plugin@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02"
@@ -5384,7 +5676,7 @@ broccoli-plugin@^3.1.0:
rimraf "^2.3.4"
symlink-or-copy "^1.1.8"
-broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3:
+broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.3.tgz#9dcfbfb6a1b27a37cc22e65c071719ce9f92bc1e"
integrity sha512-CtAIEYq5K+4yQv8c/BHymOteuyjDAJfvy/asu4LudIWcMSS7dTn3yGI5gNBkwHG+qlRangYkHJNVAcDZMQbSVQ==
@@ -6706,11 +6998,16 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-cssom@0.3.x, cssom@^0.3.4:
+cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6:
version "0.3.8"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+cssom@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
cssstyle@^1.1.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
@@ -6718,6 +7015,13 @@ cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
+cssstyle@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
csstype@^2.5.7:
version "2.6.13"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
@@ -6829,6 +7133,15 @@ data-urls@^1.0.1:
whatwg-mimetype "^2.2.0"
whatwg-url "^7.0.0"
+data-urls@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
+ integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+ dependencies:
+ abab "^2.0.3"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+
dayjs@^1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.3.tgz#b7f94b22ad2a136a4ca02a01ab68ae893fe1a268"
@@ -6874,6 +7187,11 @@ debuglog@^1.0.1:
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
+decimal.js@^10.2.0:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3"
+ integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==
+
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
@@ -7168,6 +7486,13 @@ domexception@^1.0.1:
dependencies:
webidl-conversions "^4.0.2"
+domexception@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
+ integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+ dependencies:
+ webidl-conversions "^5.0.0"
+
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -7375,6 +7700,40 @@ ember-auto-import@^1.2.13, ember-auto-import@^1.5.2, ember-auto-import@^1.5.3:
walk-sync "^0.3.3"
webpack "~4.28"
+ember-auto-import@^1.6.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.10.1.tgz#6c93a875e494aa0a58b759867d3f20adfd514ae3"
+ integrity sha512-7bOWzPELlVwdWDOkB+phDIjg8BNW+/2RiLLQ+Xa/eIvCLT4ABYhHV5wqW5gs5BnXTDVLfE4ddKZdllnGuPGGDQ==
+ dependencies:
+ "@babel/core" "^7.1.6"
+ "@babel/preset-env" "^7.10.2"
+ "@babel/traverse" "^7.1.6"
+ "@babel/types" "^7.1.6"
+ "@embroider/core" "^0.33.0"
+ babel-core "^6.26.3"
+ babel-loader "^8.0.6"
+ babel-plugin-syntax-dynamic-import "^6.18.0"
+ babylon "^6.18.0"
+ broccoli-debug "^0.6.4"
+ broccoli-node-api "^1.7.0"
+ broccoli-plugin "^4.0.0"
+ debug "^3.1.0"
+ ember-cli-babel "^7.0.0"
+ enhanced-resolve "^4.0.0"
+ fs-extra "^6.0.1"
+ fs-tree-diff "^2.0.0"
+ handlebars "^4.3.1"
+ js-string-escape "^1.0.1"
+ lodash "^4.17.19"
+ mkdirp "^0.5.1"
+ resolve-package-path "^3.1.0"
+ rimraf "^2.6.2"
+ semver "^7.3.4"
+ symlink-or-copy "^1.2.0"
+ typescript-memoize "^1.0.0-alpha.3"
+ walk-sync "^0.3.3"
+ webpack "^4.43.0"
+
ember-basic-dropdown@^3.0.10:
version "3.0.10"
resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-3.0.10.tgz#47ed9fe9ff9e69d1a021771a91823c730985ffe0"
@@ -7451,7 +7810,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879"
integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==
-ember-cli-babel@7, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.7.3, ember-cli-babel@^7.8.0:
+ember-cli-babel@7, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.7.3, ember-cli-babel@^7.8.0:
version "7.23.0"
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.0.tgz#ec580aa2c115d0810e454dd5c2fffce238284b92"
integrity sha512-ix58DlRDAbGITtdJoRUPcAoQwKLYr/x/kIXjU9u1ATyhmuUjqb+0FDXghOWbkNihGiNOqBBR49+LBgK9AeBcNw==
@@ -8143,6 +8502,18 @@ ember-in-element-polyfill@^1.0.0:
ember-cli-htmlbars "^4.3.1"
ember-cli-version-checker "^5.0.2"
+ember-in-viewport@^3.8.1:
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.8.1.tgz#fd8305366d425c3912def49210e63fd582a7e60d"
+ integrity sha512-abzKIa7FiOBz3fLkZ3ZSgxJQf5enGe1IdrLdjfo5HjdyWTq9j+B0lzuZCoOYUuWdoiTiXvT3gDFNqQ5j7ky2kw==
+ dependencies:
+ ember-auto-import "^1.6.0"
+ ember-cli-babel "^7.22.1"
+ ember-modifier "^2.1.0"
+ fast-deep-equal "^2.0.1"
+ intersection-observer-admin "~0.2.13"
+ raf-pool "~0.1.4"
+
ember-inflector@^3.0.0, ember-inflector@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-3.0.1.tgz#04be6df4d7e4000f6d6bd70787cdc995f77be4ab"
@@ -8795,7 +9166,12 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escodegen@^1.11.0, escodegen@^1.12.0:
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+escodegen@^1.11.0, escodegen@^1.12.0, escodegen@^1.14.1:
version "1.14.3"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
@@ -9206,6 +9582,11 @@ faker@^4.1.0:
resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f"
integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -10236,7 +10617,7 @@ gzip-size@5.1.1:
duplexer "^0.1.1"
pify "^4.0.1"
-handlebars@^4.0.11, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.7.3:
+handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.2, handlebars@^4.7.3:
version "4.7.6"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
@@ -10573,6 +10954,13 @@ html-encoding-sniffer@^1.0.2:
dependencies:
whatwg-encoding "^1.0.1"
+html-encoding-sniffer@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
+ integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+ dependencies:
+ whatwg-encoding "^1.0.5"
+
html-entities@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
@@ -10974,6 +11362,11 @@ interpret@^2.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
+intersection-observer-admin@~0.2.13:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/intersection-observer-admin/-/intersection-observer-admin-0.2.13.tgz#00a021695bf5aef8d198204514d2f849fd27d089"
+ integrity sha512-REIM59IHXPe9U5eTnowurzzfhgqVkSImZJnOSJZTAJ0LnyJqw8S/eD5s8ZYneQfm9JszhGIBwudF9gF02A3BpQ==
+
intl-messageformat-parser@6.0.18, intl-messageformat-parser@^6.0.5:
version "6.0.18"
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.0.18.tgz#bf2855b82b0749e1f34e452f0a15d08d3277c8c7"
@@ -11006,6 +11399,11 @@ invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+
ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@@ -11322,6 +11720,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-potential-custom-element-name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
+ integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
+
is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
@@ -11717,6 +12120,38 @@ jsdom@^12.0.0:
ws "^6.1.0"
xml-name-validator "^3.0.0"
+jsdom@^16.4.0:
+ version "16.4.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb"
+ integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==
+ dependencies:
+ abab "^2.0.3"
+ acorn "^7.1.1"
+ acorn-globals "^6.0.0"
+ cssom "^0.4.4"
+ cssstyle "^2.2.0"
+ data-urls "^2.0.0"
+ decimal.js "^10.2.0"
+ domexception "^2.0.1"
+ escodegen "^1.14.1"
+ html-encoding-sniffer "^2.0.1"
+ is-potential-custom-element-name "^1.0.0"
+ nwsapi "^2.2.0"
+ parse5 "5.1.1"
+ request "^2.88.2"
+ request-promise-native "^1.0.8"
+ saxes "^5.0.0"
+ symbol-tree "^3.2.4"
+ tough-cookie "^3.0.1"
+ w3c-hr-time "^1.0.2"
+ w3c-xmlserializer "^2.0.0"
+ webidl-conversions "^6.1.0"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+ ws "^7.2.3"
+ xml-name-validator "^3.0.0"
+
jsesc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@@ -13210,7 +13645,7 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-nwsapi@^2.0.9:
+nwsapi@^2.0.9, nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
@@ -13659,6 +14094,11 @@ parse5@5.1.0:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
+parse5@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
parse5@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
@@ -14304,6 +14744,11 @@ qunit@^2.9.3:
node-watch "0.6.4"
tiny-glob "0.2.6"
+raf-pool@~0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/raf-pool/-/raf-pool-0.1.4.tgz#6b9f75ea1903c16e162ffe8c76688f5a625bc2cd"
+ integrity sha512-BBPamTVuSprPq7CUmgxc+ycbsYUtUYnQtJYEfMHXMaostPaNpQzipLfSa/rwjmlgjBPiD7G+I+8W340sLOPu6g==
+
ramda@^0.21.0:
version "0.21.0"
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
@@ -14939,7 +15384,7 @@ request-promise-core@1.1.4:
dependencies:
lodash "^4.17.19"
-request-promise-native@^1.0.5:
+request-promise-native@^1.0.5, request-promise-native@^1.0.8:
version "1.0.9"
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28"
integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
@@ -14948,7 +15393,7 @@ request-promise-native@^1.0.5:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
-request@^2.88.0:
+request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -15053,6 +15498,14 @@ resolve-package-path@^2.0.0:
path-root "^0.1.1"
resolve "^1.13.1"
+resolve-package-path@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-3.1.0.tgz#35faaa5d54a9c7dd481eb7c4b2a44410c9c763d8"
+ integrity sha512-2oC2EjWbMJwvSN6Z7DbDfJMnD8MYEouaLn5eIX0j8XwPsYCVIyY9bbnX88YHVkbr8XHqvZrYbxaLPibfTYKZMA==
+ dependencies:
+ path-root "^0.1.1"
+ resolve "^1.17.0"
+
resolve-path@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
@@ -15264,6 +15717,13 @@ saxes@^3.1.3:
dependencies:
xmlchars "^2.1.1"
+saxes@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
+ integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+ dependencies:
+ xmlchars "^2.2.0"
+
scheduler@^0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
@@ -15342,6 +15802,13 @@ semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+semver@^7.3.4:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
+
send@0.17.1:
version "0.17.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@@ -15495,7 +15962,7 @@ silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1
dependencies:
debug "^2.2.0"
-simple-html-tokenizer@^0.5.10:
+simple-html-tokenizer@^0.5.10, simple-html-tokenizer@^0.5.8:
version "0.5.10"
resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.10.tgz#0843e4f00c9677f1c81e3dfeefcee0a4aca8e5d0"
integrity sha512-1DHMUmvUOGuUZ9/+cX/+hOhWhRD5dEw6lodn8WuV+T+cQ31hhBcCu1dcDsNotowi4mMaNhrLyKoS+DtB81HdDA==
@@ -16201,7 +16668,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-symbol-tree@^3.2.2:
+symbol-tree@^3.2.2, symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
@@ -16633,6 +17100,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.4.3, tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
@@ -16640,6 +17116,13 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
+tr46@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
+ integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
+ dependencies:
+ punycode "^2.1.1"
+
tracked-maps-and-sets@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tracked-maps-and-sets/-/tracked-maps-and-sets-2.1.0.tgz#762cf89fb22ca16aa4b1a7198c03e844e0ef238d"
@@ -17306,13 +17789,20 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-w3c-hr-time@^1.0.1:
+w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
dependencies:
browser-process-hrtime "^1.0.0"
+w3c-xmlserializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
+ integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+ dependencies:
+ xml-name-validator "^3.0.0"
+
walk-sync@^0.2.5:
version "0.2.7"
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.2.7.tgz#b49be4ee6867657aeb736978b56a29d10fa39969"
@@ -17407,6 +17897,16 @@ webidl-conversions@^4.0.2:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+webidl-conversions@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
+ integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+webidl-conversions@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
+ integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
webpack-dev-middleware@^3.7.0:
version "3.7.2"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3"
@@ -17531,7 +18031,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
-whatwg-mimetype@^2.2.0:
+whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
@@ -17545,6 +18045,15 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
+whatwg-url@^8.0.0:
+ version "8.4.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837"
+ integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^2.0.2"
+ webidl-conversions "^6.1.0"
+
which-boxed-primitive@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
@@ -17684,6 +18193,16 @@ wrap-ansi@^7.0.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-legacy-hbs-plugin-if-needed@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-legacy-hbs-plugin-if-needed/-/wrap-legacy-hbs-plugin-if-needed-1.0.1.tgz#6683eb74747f33e7caea54bb2ed85106ef9006b4"
+ integrity sha512-aJjXe5WwrY0u0dcUgKW3m2SGnxosJ66LLm/QaG0YMHqgA6+J2xwAFZfhSLsQ2BmO5x8PTH+OIxoAXuGz3qBA7A==
+ dependencies:
+ "@glimmer/reference" "^0.42.1"
+ "@glimmer/runtime" "^0.42.1"
+ "@glimmer/syntax" "^0.42.1"
+ "@simple-dom/interface" "^1.4.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -17718,6 +18237,11 @@ ws@^7.1.2:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
+ws@^7.2.3:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
+ integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
+
ws@~6.1.0:
version "6.1.4"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
@@ -17740,7 +18264,7 @@ xml-name-validator@^3.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
-xmlchars@^2.1.1:
+xmlchars@^2.1.1, xmlchars@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==