@import './_base.css';
@import './_sizes.css';
@import './_variants.css';

@layer base {
  .dbv-kit-icon-button {
    min-width: var(--dbv-kit-icon-btn-size);
    width: var(--dbv-kit-icon-btn-size);
    height: var(--dbv-kit-icon-btn-size);
    font-size: calc(var(--dbv-kit-icon-btn-size) * 0.75);

    border-radius: var(--dbv-kit-icon-btn-border-radius);
    border-color: var(--dbv-kit-icon-btn-border-color);
    border-width: var(--dbv-kit-icon-btn-border-width);
    border-style: var(--dbv-kit-icon-btn-border-style);

    color: var(--dbv-kit-icon-btn-foreground);
    background-color: var(--dbv-kit-icon-btn-background);

    cursor: pointer;

    &:focus-visible,
    &[data-focus-visible] {
      outline: var(--dbv-kit-icon-btn-outline-width) solid var(--dbv-kit-icon-btn-outline-color);
      outline-offset: var(--dbv-kit-icon-btn-outline-offset);
    }

    &:hover {
      @media (hover: hover) {
        color: var(--dbv-kit-icon-btn-foreground-hover);
        background-color: var(--dbv-kit-icon-btn-background-hover);
      }
    }

    &:active,
    &[data-active] {
      color: var(--dbv-kit-icon-btn-foreground-active);
      background-color: var(--dbv-kit-icon-btn-background-active);
    }

    &:disabled {
      opacity: var(--dbv-kit-control-disabled-opacity);
    }

    &[data-loading='true'] {
      background-color: var(--dbv-kit-icon-btn-background);

      &:hover,
      &:active,
      &[data-active] {
        background-color: var(--dbv-kit-icon-btn-background-active);
      }
    }

    .dbv-kit-spinner {
      --dbv-kit-spinner-stroke-color: var(--dbv-kit-icon-btn-loader-color);
      --dbv-kit-spinner-height: calc(var(--dbv-kit-icon-btn-size) * 0.8);
      --dbv-kit-spinner-stroke-width: 3px;
    }
  }

  /* Size variants */
  .dbv-kit-icon-button--small {
    --dbv-kit-icon-btn-size: var(--dbv-kit-icon-btn-small-size);
  }

  .dbv-kit-icon-button--medium {
    --dbv-kit-icon-btn-size: var(--dbv-kit-icon-btn-medium-size);
  }

  .dbv-kit-icon-button--large {
    --dbv-kit-icon-btn-size: var(--dbv-kit-icon-btn-large-size);
  }

  .dbv-kit-icon-button--xlarge {
    --dbv-kit-icon-btn-size: var(--dbv-kit-icon-btn-xlarge-size);
  }

  /* Variant styles */
  .dbv-kit-icon-button--primary {
    --dbv-kit-icon-btn-foreground: var(--dbv-kit-icon-btn-primary-foreground);
    --dbv-kit-icon-btn-foreground-hover: var(--dbv-kit-icon-btn-primary-foreground-hover);
    --dbv-kit-icon-btn-foreground-active: var(--dbv-kit-icon-btn-primary-foreground-active);
    --dbv-kit-icon-btn-background: var(--dbv-kit-icon-btn-primary-background);
    --dbv-kit-icon-btn-background-hover: var(--dbv-kit-icon-btn-primary-background-hover);
    --dbv-kit-icon-btn-background-active: var(--dbv-kit-icon-btn-primary-background-active);
    --dbv-kit-icon-btn-loader-color: var(--dbv-kit-icon-btn-primary-foreground);
  }

  .dbv-kit-icon-button--secondary {
    --dbv-kit-icon-btn-foreground: var(--dbv-kit-icon-btn-secondary-foreground);
    --dbv-kit-icon-btn-foreground-hover: var(--dbv-kit-icon-btn-secondary-foreground-hover);
    --dbv-kit-icon-btn-foreground-active: var(--dbv-kit-icon-btn-secondary-foreground-active);
    --dbv-kit-icon-btn-background: var(--dbv-kit-icon-btn-secondary-background);
    --dbv-kit-icon-btn-background-hover: var(--dbv-kit-icon-btn-secondary-background-hover);
    --dbv-kit-icon-btn-background-active: var(--dbv-kit-icon-btn-secondary-background-active);
    --dbv-kit-icon-btn-border-color: var(--dbv-kit-icon-btn-secondary-border-color);
    --dbv-kit-icon-btn-loader-color: var(--dbv-kit-icon-btn-secondary-loader-color);
  }

  .dbv-kit-icon-button--danger {
    --dbv-kit-icon-btn-foreground: var(--dbv-kit-icon-btn-danger-foreground);
    --dbv-kit-icon-btn-foreground-hover: var(--dbv-kit-icon-btn-danger-foreground-hover);
    --dbv-kit-icon-btn-foreground-active: var(--dbv-kit-icon-btn-danger-foreground-active);
    --dbv-kit-icon-btn-background: var(--dbv-kit-icon-btn-danger-background);
    --dbv-kit-icon-btn-background-hover: var(--dbv-kit-icon-btn-danger-background-hover);
    --dbv-kit-icon-btn-background-active: var(--dbv-kit-icon-btn-danger-background-active);
    --dbv-kit-icon-btn-loader-color: var(--dbv-kit-icon-btn-danger-loader-color);
  }
}
