@use "sass:color";
@use "sass:math";
@use "../base";
@use "../colors";

$color-default: color.scale(
  colors.fg(colors.$primary),
  $lightness: 75%
) !default;
$text-color: rgba(255, 255, 255, 0.5) !default;
$text-color-selected: color.scale($color-default, $lightness: 25%) !default;
$tab-color: transparent !default;
$tab-color-hovered: rgba(255, 255, 255, 0.075) !default;
$tab-color-selected: rgba(255, 255, 255, 0.125) !default;
$border-radius: base.$border-radius !default;
$fg-map: colors.$fg-map !default;

.Tabs {
  display: flex;
  align-items: stretch;
  overflow: hidden;
  background-color: base.$color-bg-section;
}

.Tabs--fill {
  height: 100%;
}

// Interoperability with sections
.Section .Tabs {
  background-color: transparent;
}

.Section:not(.Section--fitted) .Tabs {
  margin: 0 -0.5em 0.5em;

  &:first-child {
    margin-top: -0.5em;
  }
}

.Tabs--vertical {
  flex-direction: column;
  padding: 0.25em 0 0.25em 0.25em;
}

.Tabs--horizontal {
  margin-bottom: 0.5em;
  padding: 0.25em 0.25em 0 0.25em;

  &:last-child {
    margin-bottom: 0;
  }
}

.Tabs__Tab {
  flex-grow: 0;
}

.Tabs--fluid .Tabs__Tab {
  flex-grow: 1;
}

.Tab {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background-color: $tab-color;
  color: $text-color;
  min-height: 2.25em;
  min-width: 4em;
}

.Tab:not(.Tab--selected):hover {
  background-color: $tab-color-hovered;
}

.Tab--selected {
  background-color: $tab-color-selected;
  color: $text-color-selected;
}

.Tab__text {
  flex-grow: 1;
  margin: 0 0.5em;
}

.Tab__left {
  min-width: 1.5em;
  text-align: center;
  margin-left: 0.25em;
}

.Tab__right {
  min-width: 1.5em;
  text-align: center;
  margin-right: 0.25em;
}

.Tabs--horizontal {
  .Tab {
    border-top: math.div(1em, 6) solid transparent;
    border-bottom: math.div(1em, 6) solid transparent;
    border-top-left-radius: 0.25em;
    border-top-right-radius: 0.25em;
  }

  .Tab--selected {
    border-bottom: math.div(1em, 6) solid $color-default;
  }
}

.Tabs--vertical {
  .Tab {
    min-height: 2em;
    border-left: math.div(1em, 6) solid transparent;
    border-right: math.div(1em, 6) solid transparent;
    border-top-left-radius: 0.25em;
    border-bottom-left-radius: 0.25em;
  }

  .Tab--selected {
    border-right: math.div(1em, 6) solid $color-default;
  }
}

@each $color-name, $color-value in $fg-map {
  .Tab--selected.Tab--color--#{$color-name} {
    color: color.scale($color-value, $lightness: 25%);
  }

  .Tabs--horizontal .Tab--selected.Tab--color--#{$color-name} {
    border-bottom-color: $color-value;
  }

  .Tabs--vertical .Tab--selected.Tab--color--#{$color-name} {
    border-right-color: $color-value;
  }
}
