// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) KALEIDOS INC Sucursal en España SL

@use "ds/_utils.scss" as *;
@use "ds/borders.scss" as *;
@use "ds/_sizes.scss" as *;

.layer-row {
  --layer-indentation-size: var(--sp-xxl);
  --layer-background-color: var(--color-background-primary);
  --layer-foreground-color: inherit;
  --shadow-color: transparent;

  box-shadow: px2rem(16) px2rem(0) px2rem(0) px2rem(0) var(--shadow-color);
  display: flex;
  flex-direction: row;
  align-items: center;
  inline-size: 100%;
  background-color: var(--layer-background-color);
  border: $b-2 solid transparent;
  color: var(--layer-foreground-color);

  &.highlight,
  &:hover {
    --layer-background-color: var(--color-background-secondary);
    --shadow-color: var(--color-background-secondary);
    --context-hover-color: var(--layer-row-foreground-color-hover);
    --context-hover-opacity: 1;
    --layer-foreground-color: var(--layer-row-foreground-color-hover);

    &.hidden {
      opacity: 1;
    }
  }

  &.selected {
    --layer-background-color: var(--color-background-quaternary);
    --shadow-color: var(--color-background-quaternary);
  }

  &.selected.highlight,
  &.selected:hover {
    --layer-background-color: var(--color-background-quaternary);
  }

  .parent-selected & {
    --layer-background-color: var(--color-background-tertiary);
    --shadow-color: var(--color-background-tertiary);
  }

  .parent-selected &.highlight,
  .parent-selected &:hover {
    --layer-background-color: var(--color-background-secondary);
    --shadow-color: var(--color-background-secondary);
  }

  &.dnd-over-bot {
    border-block-end: $b-2 solid var(--color-accent-primary);
  }

  &.dnd-over-top {
    border-block-start: $b-2 solid var(--color-accent-primary);
  }

  &.dnd-over {
    border: $b-2 solid var(--color-accent-primary);
  }
}

.element-children {
  .layer-row.highlight &,
  .layer-row:hover & {
    --layer-background-color: var(--color-background-quaternary);
    --shadow-color: var(--color-background-quaternary);
  }

  .layer-row.type-comp & {
    --layer-foreground-color: var(--color-accent-secondary);
  }

  .layer-row.selected & {
    --layer-background-color: transparent;
    --layer-foreground-color: var(--color-accent-primary);
  }
}

.element-list-body {
  align-items: center;
  display: grid;
  grid-template-columns: auto 1fr auto;
  column-gap: var(--sp-xs);
  block-size: $sz-32;
  inline-size: calc(100% - (var(--depth) * var(--layer-indentation-size)));
  cursor: pointer;
  min-inline-size: px2rem(140);

  &.filtered {
    inline-size: calc(100% - $sz-12);
  }
}

.element-actions {
  display: flex;
  align-items: end;
  position: sticky;
  inset-inline-end: 0;
  block-size: $sz-32;

  &.selected {
    display: flex;
  }

  .layer-row.highlight &,
  .layer-row:hover & {
    display: flex;
  }
}

.button-content {
  display: flex;
  block-size: 100%;
}

.icon-shape {
  display: flex;
  justify-content: center;
  align-items: center;
  border: none;
  background: none;
  cursor: pointer;
  position: relative;
  justify-self: flex-end;
  block-size: 100%;
  inline-size: $sz-24;
  padding-inline-start: var(--sp-xs);
  color: var(--color-foreground-secondary);

  .layer-row.selected & {
    color: var(--color-accent-primary);
  }

  .layer-row.type-comp & {
    color: var(--color-accent-secondary);
  }

  .inverse & {
    transform: rotate(-90deg);
  }

  .layer-row.hidden & {
    opacity: 0.7;
  }

  .layer-row.highlight &,
  .layer-row:hover & {
    opacity: 1;

    svg {
      stroke: var(--color-accent-primary);
    }
  }
}

.absolute {
  position: absolute;
  background-color: var(--color-foreground-secondary);
  opacity: 0.4;
  inline-size: $sz-12;
  block-size: $sz-12;
  border-radius: px2rem(2);

  .layer-row.hidden & {
    opacity: 0.1;
  }

  .layer-row.type-comp & {
    background-color: var(--color-accent-secondary);
  }

  .layer-row.highlight &,
  .layer-row:hover & {
    opacity: 0.4;
    background-color: var(--color-accent-primary);
  }

  .layer-row.selected & {
    background-color: var(--color-accent-primary);
  }
}

.toggle-content {
  border: none;
  background: none;
  cursor: pointer;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  block-size: 100%;
  inline-size: $sz-24;
  padding-inline-start: var(--sp-s);

  svg {
    display: flex;
    justify-content: center;
    align-items: center;
    color: transparent;
    fill: none;
    block-size: $sz-12;
    inline-size: $sz-12;
    stroke-width: 1.33px;
    stroke: var(--color-foreground-secondary);

    .layer-row.hidden & {
      opacity: 0.7;
    }

    .layer-row.selected & {
      stroke: var(--color-accent-primary);
    }

    .layer-row.type-comp & {
      stroke: var(--color-accent-secondary);
    }

    .layer-row.highlight &,
    .layer-row:hover & {
      opacity: 1;
      stroke: var(--color-accent-primary);
    }
  }

  .layer-row.selected & {
    background-color: var(--color-background-quaternary);
  }

  &.inverse svg {
    transform: rotate(90deg);
  }
}

.toggle-element,
.block-element {
  --layer-row-action-btn-background: none;

  border: none;
  cursor: pointer;
  justify-content: center;
  align-items: center;
  block-size: 100%;
  inline-size: $sz-24;
  margin: 0;
  display: none;
  background: var(--layer-row-action-btn-background);
  padding-inline-end: px2rem(6);

  svg {
    display: flex;
    justify-content: center;
    align-items: center;
    color: transparent;
    fill: none;
    block-size: $sz-12;
    inline-size: $sz-12;
    stroke-width: 1.33px;
    stroke: var(--color-foreground-secondary);

    .layer-row.hidden & {
      opacity: 0.7;
    }

    .type-comp & {
      stroke: var(--color-accent-secondary);
    }
  }

  .element-actions.selected & {
    display: flex;
    opacity: 0;

    &.selected {
      opacity: 1;
    }
  }

  .layer-row:hover .element-actions.selected & {
    opacity: 1;
  }

  .layer-row.highlight &,
  .layer-row:hover & {
    display: flex;

    --layer-row-action-btn-background: var(--color-background-secondary);

    svg {
      opacity: 1;
      stroke: var(--color-accent-primary);
    }
  }

  .layer-row.selected & {
    display: flex;

    --layer-row-action-btn-background: var(--color-background-quaternary);

    svg {
      stroke: var(--color-accent-primary);
    }
  }
}

:global(.sticky) {
  position: sticky;
  inset-block-start: 0;
  z-index: 4;
}

.tab-indentation {
  display: block;
  block-size: $sz-16;
  min-inline-size: calc(var(--depth) * var(--layer-indentation-size));
}

.filtered {
  min-inline-size: $sz-12;
}

.lazy-load-sentinel {
  min-height: 1px;
  pointer-events: none;
}

.lazy-load-sentinel {
  min-height: 1px;
  pointer-events: none;
}
