@use '../variables' as *;
@use '../mixins' as *;

/**
 * Dialog makes assumptions about the DOM structure of the dialog content.
 * The following selectors are used to style the dialog content based on its
 * position in the DOM hierarchy.
 *
 * .cat-backdrop
 *   |- .cat-dialog
 *        |- .cat-dialog-header
 *             |- .cat-dialog-header-content
 *        |- .cat-dialog-content
 *        |- .cat-dialog-actions
**/

$-dialog-padding: 1.5rem;

.cat-backdrop {
  background-color: RGB(#{cat-token('color.ui.background.backdrop', cat-token('opacity.backdrop'), $wrap: false)});
}

.cat-dialog {
  display: flex;
  flex-direction: column;
  background-color: cat-token('color.ui.background.surface');
  border-radius: cat-border-radius('l');
  @include cat-elevation(7);
  container: dialog / inline-size;
}

.cat-dialog-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: $-dialog-padding;
}

.cat-dialog-header-content {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  word-wrap: break-word;
  word-break: break-word;
}

.cat-dialog-content {
  overflow: auto;
  padding: 0 $-dialog-padding;

  > *:last-child {
    margin-bottom: 0;
  }
}

.cat-dialog-actions {
  display: flex;
  padding: $-dialog-padding;
  gap: 0.5rem;
  flex-wrap: wrap;

  @container dialog (max-width: 360px) {
    cat-button {
      width: 100%;
    }
  }
}

.cat-dialog-pull {
  &.cat-dialog-header,
  &.cat-dialog-actions {
    margin: -#{$-dialog-padding};
  }

  .cat-dialog-content & {
    margin-left: -#{$-dialog-padding};
    margin-right: -#{$-dialog-padding};
  }
}

.cat-dialog-pull-h {
  margin-left: -#{$-dialog-padding};
  margin-right: -#{$-dialog-padding};
}

.cat-dialog-pull-v {
  margin-top: -#{$-dialog-padding};
  margin-bottom: -#{$-dialog-padding};
}

.cat-dialog-pull-r {
  margin-right: -#{$-dialog-padding};
}

.cat-dialog-pull-l {
  margin-left: -#{$-dialog-padding};
}

.cat-dialog-pull-t {
  margin-top: -#{$-dialog-padding};
}

.cat-dialog-pull-b {
  margin-bottom: -#{$-dialog-padding};
}
