/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

@import 'layouts/index';

/* position main app-view when there are/aren't breadcrumbs */
.app-view {
  margin-top: 50px;
}
@media #{$--lt-spacious-page-header} {
  html:not(.with-breadcrumbs) .app-view {
    margin-top: 10px;
  }
}
/**/

/* transition the initial brand-loader out */
html body > .brand-loader {
  @extend %transition-pushover;
  transition-property: transform, opacity;
  transform: translate(0, 0);
  opacity: 1;
}
html[data-state]:not(.ember-loading) body > .brand-loader {
  @extend %animation-pushover, %animation-remove-from-flow;
  opacity: 0;
}
@media #{$--sidebar-open} {
  html[data-state] body > .brand-loader {
    transform: translate(calc(var(--chrome-width) / 2), 0);
  }
}
/**/

/* hide the Consul::Loader/spinning loader when idle/hide content when loading */
html.ember-loading .view-loader,
html[data-state='idle'] .view-loader {
  display: none;
}
.outlet[data-state='loading'] {
  display: none;
}
/**/

/* all forms have a margin below the header */
html[data-route$='create'] .app-view > header + div > *:first-child,
html[data-route$='edit'] .app-view > header + div > *:first-child {
  margin-top: 1.8em;
}
/* most tabs have margin after the tab bar, unless the tab has a filter bar */
/* if it is a filter bar and the thing after the filter bar is a p then it also */
/* needs a top margun :S */
%app-view-content .tab-section > *:first-child:not(.filter-bar):not(table),
%app-view-content .tab-section > .search-bar + p,
%app-view-content .tab-section .consul-health-check-list,
%app-view-content .container {
  margin-top: 1.25em;
}

%list-after-secondary-nav {
  margin-top: 0 !important;
}
%list-after-secondary-nav ul {
  border-top-width: 0 !important;
}
%list-after-filter-bar {
  border-top-width: 0 !important;
}

.consul-upstream-instance-list {
  margin-top: 0 !important;
}
/* turn off top borders for things flush up to a filter bar */
html[data-route='dc.services.index'] .consul-service-list ul,
.consul-nspace-list ul,
.consul-service-instance-list ul,
.consul-node-list ul,
.consul-role-list ul,
.consul-policy-list ul,
.consul-token-list ul,
.consul-peer-list ul,
.consul-auth-method-list ul {
  @extend %list-after-filter-bar;
}

// TODO: This shouldn't be done here, decide the best way to do this
// %main-decoration ? %main-skin ? %content-skin ?
// it includes layouts of components, but not layout of itself?
// %main-components? What about %app-view-content
main,
%modal-window {
  @extend %main-content;
}
html:not(.has-nspaces) [class*='nspace-'] {
  display: none;
}
html:not(.has-partitions) [class*='partition-'] {
  display: none;
}
#wrapper {
  @extend %viewport-container;
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
main {
  position: relative;
  flex: 1;
}
main,
#wrapper > footer {
  @extend %content-container;
}
html[data-route$='create'] main,
html[data-route$='edit'] main {
  @extend %content-container-restricted;
}
html:not([data-route$='index']):not([data-route$='instances']) main {
  margin-bottom: 2em;
}

@media #{$--lt-spacious-page-header} {
  .actions button.copy-btn {
    margin-top: -56px;
    padding: 0;
  }
}
%main-content p:not(:last-child) {
  margin-bottom: 1em;
}
/* TODO: keep margin below forms, move elsewhere? */
%main-content form:not(.filter-bar),
%main-content form + div .with-confirmation {
  margin-bottom: 2em;
}
@media #{$--lt-wide-form} {
  main form [type='reset'] {
    float: right;
    margin-right: 0 !important;
  }
}
