/**
 * @license EUPL-1.2+
 * Copyright Gemeente Amsterdam
 */

@use "../../common/resets" as *;
@use "../../common/text-rendering" as *;

.ams-text-area {
  @include reset-textarea;

  background-color: var(--ams-text-area-background-color);
  border-color: var(--ams-text-area-border-color);
  border-style: var(--ams-text-area-border-style);
  border-width: var(--ams-text-area-border-width);
  box-sizing: border-box;
  color: var(--ams-text-area-color);
  font-family: var(--ams-text-area-font-family);
  font-size: var(--ams-text-area-font-size);
  font-weight: var(--ams-text-area-font-weight);
  inline-size: 100%;
  line-height: var(--ams-text-area-line-height);
  max-inline-size: 100%; // This prevents overflow when using the `cols` prop
  min-block-size: var(--ams-text-area-min-block-size);
  outline-offset: var(--ams-text-area-outline-offset);
  padding-block: var(--ams-text-area-padding-block);
  padding-inline: var(--ams-text-area-padding-inline);
  touch-action: manipulation;

  @include text-rendering;
}

.ams-text-area::placeholder {
  @include reset-placeholder;

  color: var(--ams-text-area-placeholder-color);
}

.ams-text-area:disabled {
  color: var(--ams-text-area-disabled-color);
  cursor: var(--ams-text-area-disabled-cursor);
}

.ams-text-area:not(:disabled):invalid,
.ams-text-area:not(:disabled)[aria-invalid="true"] {
  border-color: var(--ams-text-area-invalid-border-color);
}

.ams-text-area:not(:disabled):hover {
  box-shadow: var(--ams-text-area-hover-box-shadow);
}

.ams-text-area:not(:disabled):invalid:hover,
.ams-text-area:not(:disabled)[aria-invalid="true"]:hover {
  border-color: var(--ams-text-area-invalid-hover-border-color);
  box-shadow: var(--ams-text-area-invalid-hover-box-shadow);
}

/*
 * Resizing is not fully supported in Safari on iOS.
 * This is acceptable, it is not crucial functionality.
 */
.ams-text-area--resize-none {
  /* stylelint-disable-next-line plugin/use-baseline */
  resize: none;
}

.ams-text-area--resize-horizontal {
  /* stylelint-disable-next-line plugin/use-baseline */
  resize: inline;
}

.ams-text-area--resize-vertical {
  /* stylelint-disable-next-line plugin/use-baseline */
  resize: block;
}

.ams-text-area--cols {
  inline-size: auto;
}
