@use 'sass:map';

@use 'mixins/mixins' as *;
@use 'mixins/utils' as *;
@use 'mixins/var' as *;
@use 'common/var' as *;
@use 'common/popup' as *;

@include b(dialog) {
  // @include set-component-css-var('dialog', $dialog);

  position: relative;
  margin: var(#{getCssVarName('dialog-margin-top')}, 24px) 24px;
  background: getCssVar('color-white');
  border-radius: getCssVar('border-radius-md');
  box-shadow: getCssVar('box-shadow-lv2');
  box-sizing: border-box;
  width: var(#{getCssVarName('dialog-width')}, 50%);

  &:focus {
    outline: none !important;
  }

  @include when(fullscreen) {
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    border-radius: 0;

    display: flex;
    flex-direction: column;

    @include e(body) {
      flex-grow: 1;
      overflow-y: auto;
    }
  }

  @include e(wrapper) {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    overflow: auto;
    margin: 0;
  }

  @include when(draggable) {
    @include e(header) {
      cursor: move;
      user-select: none;
    }
  }

  @include e(header) {
    padding: 24px 24px 0;
    display: flex;
    align-items: center;
  }

  @include e(title) {
    flex-grow: 1;
    line-height: 28px;
    font-size: 24px;
    font-weight: 600;
  }

  @include e(body) {
    padding: 24px;
  }

  @include e(footer) {
    padding: 0 24px 24px;
  }

  // @include m(center) {
  // }
}

.#{$namespace}-overlay-dialog {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: auto;
  display: flex;
  align-items: flex-start;
  justify-content: center;

  @include when(center) {
    align-items: center;
  }

  @include when(fullscreen) {
    align-items: stretch;
  }
}

.dialog-fade-enter-active {
  animation: modal-fade-in getCssVar('transition-duration');
  .#{$namespace}-overlay-dialog {
    animation: dialog-fade-in getCssVar('transition-duration');
  }
}

.dialog-fade-leave-active {
  animation: modal-fade-out getCssVar('transition-duration');
  .#{$namespace}-overlay-dialog {
    animation: dialog-fade-out getCssVar('transition-duration');
  }
}

@keyframes dialog-fade-in {
  0% {
    transform: translate3d(0, -20px, 0);
    opacity: 0;
  }
  100% {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes dialog-fade-out {
  0% {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
  100% {
    transform: translate3d(0, -20px, 0);
    opacity: 0;
  }
}

@keyframes modal-fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes modal-fade-out {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
