/**
 * Copyright (c) OpenLens Authors. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */

//-- Mixins
@import "+workloads/workloads-mixins";
@import "+storage/storage-mixins";
@import "+nodes/nodes-mixins";
@import "+namespaces/namespaces-mixins";
@import "table/table.mixins";
@import "+network/network-mixins";

// Hide scrollbar but keep the element scrollable
@mixin hidden-scrollbar {
  overflow: auto;
  // Chrome, Safari
  &::-webkit-scrollbar {
    width: 0;
    height: 0;
    background: transparent;
  }
}

@mixin stripeLinesAnimation($color1: #ccc, $color2: transparent, $spacing: 1rem) {
  background: repeating-linear-gradient(-45deg, $color2, $color2, $spacing, $color1 $spacing, $color1 $spacing * 2);
  background-size: 200% 200%;
  animation: stripeLines 10s linear infinite;

  @keyframes stripeLines {
    100% {
      background-position: 100% 100%;
    }
  }
}

@mixin pseudo-link($color: var(--primary)) {
  color: $color;
  text-decoration: underline;
  cursor: pointer;
}

@mixin set-draggable($is-draggable: true) {
  @if ($is-draggable) {
    -webkit-user-select: none;
    -webkit-app-region: drag;
  } @else {
    -webkit-app-region: no-drag;
  }
}

@mixin theme-light() {
  $selector: "theme-light"; // keep in sync with class in `theme.store.ts`

  body.#{$selector} {
    @content;
  }
  :global(body.#{$selector}) {
    @content; // css-modules (*.module.scss)
  }
}

// Makes custom @font-family available at earlier stages.
// Element must exist in DOM as soon as possible to initiate preloading.
@mixin font-preload($fontFamily) {
  position: absolute;
  visibility: hidden;
  height: 0;

  &:before {
    width: 0;
    display: block;
    overflow: hidden;
    content: "x"; // some text required to start applying font in document
    font-family: $fontFamily; // imported name in @font-face declaration
    @content;
  }
}
