// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

@import "theme";

.pf-button {
  font-family: $pf-font;
  line-height: 1;
  user-select: none;
  transition: background $pf-anim-timing, box-shadow $pf-anim-timing;
  border-radius: $pf-border-radius;
  padding: 4px 8px;
  white-space: nowrap;
  min-width: max-content;

  & > .pf-left-icon {
    float: left;
    margin-right: 6px; // Make some room between the icon and label
  }

  & > .pf-right-icon {
    float: right;
    margin-left: 6px; // Make some room between the icon and label
  }

  & > .material-icons,
  & > .material-icons-filled {
    font-size: inherit;
    line-height: inherit;
  }

  &:focus-visible {
    @include focus;
  }

  background: $pf-minimal-background;
  color: inherit;

  &:hover {
    background: $pf-minimal-background-hover;
  }

  &:active,
  &.pf-active {
    background: $pf-minimal-background-active;
  }

  &[disabled] {
    color: $pf-minimal-foreground-disabled;
    background: $pf-minimal-background-disabled;
    cursor: not-allowed;
  }

  // Remove default background in minimal mode, showing only the text
  &.pf-intent-primary {
    color: $pf-primary-foreground;
    background: $pf-primary-background;

    &:hover {
      background: $pf-primary-background-hover;
    }

    &:active,
    &.pf-active {
      transition: none;
      background: $pf-primary-background-active;
      box-shadow: inset 1px 1px 4px #00000040;
    }
    &[disabled] {
      background: $pf-primary-background-disabled;
      color: $pf-primary-foreground-disabled;
      box-shadow: none;
      cursor: not-allowed;
    }
  }

  // Reduce padding when compact
  &.pf-compact {
    padding: 2px 4px;
    & > .pf-left-icon {
      margin-right: 2px;
    }

    & > .pf-right-icon {
      margin-left: 2px;
    }
  }

  // Reduce padding when we are icon-only
  &.pf-icon-only {
    & > .pf-left-icon {
      margin: 0;
    }

    padding: 4px;

    &.pf-compact {
      padding: 0;
    }
  }
}

.pf-button-bar {
  display: flex;
  flex-direction: row;
  gap: 2px;
}
