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

/* Helpers that define anything with the CSS flexbox or CSS grid. */

/* Flexbox helpers */
.is-flex {
  display: flex !important;
}

.is-flex-column {
  display: flex;
  flex-direction: column;
}

.is-flex-row {
  display: flex;
  flex-direction: row;
}

// Alignment of the items
.is-flex-v-centered {
  display: flex;
  align-items: center;
  align-self: center;
  justify-content: center;
}

.is-flex-center {
  display: flex;
  align-items: center;
}

.is-flex-align-baseline {
  display: flex;
  align-items: baseline;
}

// Justify-content
.is-centered {
  justify-content: center;
}

.is-flex-end {
  display: flex !important;
  justify-content: flex-end;
}

.is-flex-start {
  display: flex !important;
  justify-content: flex-start;

  &.has-gap {
    gap: $spacing-m;
  }
}

.is-flex-between,
.is-grouped-split {
  display: flex;
  justify-content: space-between !important;
}

// Flex basis, grow, stretch and flow
.is-flex-full {
  flex-basis: 100%;
}

.is-flex-1 {
  flex-grow: 1;
  &.basis-0 {
    flex-basis: 0;
  }
}

.is-no-flex-grow {
  flex-grow: 0 !important;
}

.is-flex-wrap {
  flex-flow: row wrap;
}

.is-flex-half {
  flex: 50%;
}

/* Flex Responsive */
@media screen and (min-width: 769px), print {
  .is-flex-v-centered-tablet {
    display: flex;
    align-items: center;
    align-self: center;
    justify-content: center;
  }
}

/* CSS GRID */
.is-grid {
  display: grid;
}

.is-grid-3-columns {
  grid-template-columns: repeat(3, 1fr);
}

.is-medium-height {
  height: 125px;
}

.is-grid-column-span-3 {
  grid-column-end: span 3;
}
