//
// Copyright IBM Corp. 2022
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//

//-----------------------------
// Fluid Time Picker
//-----------------------------
@use '../../config' as *;
@use '../../motion' as *;
@use '../../spacing' as *;
@use '../../theme' as *;
@use '../../utilities/convert';
@use '../../utilities/focus-outline' as *;
@use '../fluid-text-input';
@use '../fluid-select';

@mixin fluid-time-picker {
  .#{$prefix}--time-picker--fluid {
    background: $field;
  }

  .#{$prefix}--time-picker--fluid .#{$prefix}--time-picker--fluid__wrapper {
    display: flex;
  }

  .#{$prefix}--time-picker--fluid__wrapper > *:nth-child(1),
  .#{$prefix}--time-picker--fluid__wrapper > *:nth-child(2) {
    flex-basis: 25%;
  }

  .#{$prefix}--time-picker--equal-width
    .#{$prefix}--time-picker--fluid__wrapper
    > * {
    flex-basis: 50%;
  }

  // Simulated borders
  .#{$prefix}--time-picker--fluid__wrapper
    > *:nth-child(2):not(:last-child)
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid__wrapper
    > *:last-child
    .#{$prefix}--select-input__wrapper::before {
    position: absolute;
    display: block;
    background-color: $border-strong;
    block-size: calc(100% - 1px);
    content: '';
    inline-size: 1px;
    opacity: 1;
    transition: opacity $duration-fast-01 motion(standard, productive);
  }

  .#{$prefix}--select--readonly .#{$prefix}--select-input__wrapper::before {
    background-color: $border-subtle !important; /* stylelint-disable-line declaration-no-important */
    opacity: 1 !important; /* stylelint-disable-line declaration-no-important */
    transition: none;
  }

  .#{$prefix}--time-picker--fluid__wrapper
    .#{$prefix}--select-input__wrapper::after {
    inset-inline-end: 0;
  }

  .#{$prefix}--time-picker--fluid__wrapper
    .#{$prefix}--select-input__wrapper::before {
    inset-inline-start: 0;
  }

  .#{$prefix}--time-picker--fluid:not(.#{$prefix}--time-picker--fluid--disabled)
    .#{$prefix}--time-picker--fluid__wrapper
    > *:nth-child(2):not(:last-child):hover
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid:not(.#{$prefix}--time-picker--fluid--disabled)
    .#{$prefix}--time-picker--fluid__wrapper
    > *:nth-child(2):hover:not(:last-child)
    ~ *
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid:not(.#{$prefix}--time-picker--fluid--disabled)
    .#{$prefix}--time-picker--fluid__wrapper
    > *:last-child:hover
    .#{$prefix}--select-input__wrapper::before {
    opacity: 0;
  }

  .#{$prefix}--time-picker--fluid--disabled
    .#{$prefix}--time-picker--fluid__wrapper
    .#{$prefix}--select--disabled
    .#{$prefix}--select-input__wrapper::before {
    background: $border-disabled;
  }

  // Invalid + Warn states
  .#{$prefix}--time-picker--fluid .#{$prefix}--form-requirement {
    padding: $spacing-03 convert.to-rem(40px) $spacing-03 $spacing-05;
    margin: 0;
    background: $field;
  }

  .#{$prefix}--time-picker--fluid--invalid {
    @include focus-outline('invalid');

    position: relative;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--text-input,
  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--text-input-wrapper,
  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--select-input,
  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--select {
    background: transparent;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--select-input {
    border-block-start: 2px solid transparent;
    padding-block-start: convert.to-rem(30px);
  }

  .#{$prefix}--time-picker--fluid
    .#{$prefix}--select--fluid:last-of-type
    .#{$prefix}--select-input {
    border-inline-end: 2px solid transparent;
  }

  .#{$prefix}--time-picker--fluid--invalid
    .#{$prefix}--select-input:hover:not([disabled]) {
    background: $field-hover;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--select-input:hover {
    border-block-start: 2px solid $support-error;
  }

  .#{$prefix}--time-picker--fluid--invalid
    .#{$prefix}--select--fluid:last-of-type
    .#{$prefix}--select-input:hover {
    border-inline-end: 2px solid $support-error;
  }

  .#{$prefix}--time-picker--fluid--warning {
    position: relative;
  }

  .#{$prefix}--time-picker__icon {
    display: none;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--time-picker__icon,
  .#{$prefix}--time-picker--fluid--warning .#{$prefix}--time-picker__icon {
    position: absolute;
    display: block;
    inset-block-start: convert.to-rem(72px);
    inset-inline-end: $spacing-05;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--time-picker__icon {
    fill: $support-error;
  }

  .#{$prefix}--time-picker--fluid--warning .#{$prefix}--time-picker__icon {
    fill: $support-warning;
  }

  .#{$prefix}--time-picker--fluid--warning
    .#{$prefix}--time-picker__icon
    path:first-of-type {
    fill: $icon-primary;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--form-requirement,
  .#{$prefix}--time-picker--fluid--warning .#{$prefix}--form-requirement {
    display: block;
    overflow: visible;
    max-block-size: 100%;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--form-requirement {
    color: $text-error;
  }

  .#{$prefix}--time-picker--fluid--invalid
    .#{$prefix}--time-picker--fluid__wrapper
    > *:nth-child(2):not(:last-child)
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid--invalid
    .#{$prefix}--time-picker--fluid__wrapper
    > *:last-child
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid--warning
    .#{$prefix}--time-picker--fluid__wrapper
    > *:nth-child(2):not(:last-child)
    .#{$prefix}--select-input__wrapper::before,
  .#{$prefix}--time-picker--fluid--warning
    .#{$prefix}--time-picker--fluid__wrapper
    > *:last-child
    .#{$prefix}--select-input__wrapper::before {
    block-size: calc(100% - 1rem);
    inset-block-start: 8px;
  }

  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--text-input,
  .#{$prefix}--time-picker--fluid--warning .#{$prefix}--text-input,
  .#{$prefix}--time-picker--fluid--invalid .#{$prefix}--select-input,
  .#{$prefix}--time-picker--fluid--warning .#{$prefix}--select-input {
    border-block-end: 1px solid transparent;
  }

  .#{$prefix}--time-picker--fluid.#{$prefix}--time-picker--fluid--invalid
    .#{$prefix}--time-picker__divider,
  .#{$prefix}--time-picker--fluid.#{$prefix}--time-picker--fluid--warning
    .#{$prefix}--time-picker__divider {
    border-style: solid;
    border-color: $border-subtle;
    margin: 0 1rem;
    border-block-end: none;
    inline-size: calc(100% - 2rem);
  }

  // Skeleton styles
  .#{$prefix}--time-picker--fluid--skeleton {
    display: flex;
    block-size: convert.to-rem(64px);
    inline-size: 100%;
  }

  .#{$prefix}--time-picker--fluid--skeleton > * {
    block-size: 100%;
    inline-size: auto;
  }

  .#{$prefix}--time-picker--fluid--skeleton > *:nth-child(1),
  .#{$prefix}--time-picker--fluid--skeleton > *:nth-child(2) {
    inline-size: 25%;
  }

  .#{$prefix}--time-picker--fluid--skeleton > *:last-child,
  .#{$prefix}--time-picker--fluid--skeleton.#{$prefix}--time-picker--equal-width
    > *:first-child {
    inline-size: 50%;
  }
}
