/* stylelint-disable no-invalid-position-at-import-rule */
@use 'sass:map';

@use '@angular/material' as mat;

@use '@finastra/fds-theme/scheme' as scheme;
@use '@finastra/fds-theme/color/mixins' as color;
@use '@finastra/fds-theme/typography/mixins' as typography;

@use '../../avatar/avatar-theme';
@use '../../badge/badge-theme';
@use '../../button/button-theme';
@use '../../button-toggle/button-toggle-theme';
@use '../../breadcrumb/breadcrumb-theme';
@use '../../card/card-theme';
@use '../../chips/chips-theme';
@use '../../expansion/expansion-theme';
@use '../../form-field/form-field-theme';
@use '../../icon/icon-theme';
@use '../../link/link-theme';
@use '../../logo/logo-theme';
@use '../../list/list-theme';
@use '../../menu/menu-theme';
@use '../../sidenav/sidenav-theme';
@use '../../slide-toggle/slide-toggle-theme';
@use '../../table/table-theme';
@use '../../tabs/tabs-theme';
@use '../../toolbar/toolbar-theme';

@use './color-utility';

@mixin uxg-core-theme($theme) {
  $is-dark: map.get($theme, is-dark);

  @at-root {
    body {
      @include color.background(background);
    }
  }

  #{if(&, '&', ':root')} {
    @if $is-dark {
      @include color.custom-properties(scheme.dark());
    } @else {
      @include color.custom-properties(scheme.light());
      @include typography.custom-properties();
    }

    @include color.color(on-background);

    *::selection {
      @include color.background(surface-selected);
      @include color.color(on-background);
      @include color.property(-webkit-text-fill-color, on-background);
    }
  }

  @include color-utility.uxg-color-utility($theme);
}

@mixin uxg-material-theme($theme) {
  $is-dark: map.get($theme, is-dark);

  @if $is-dark {
    @include mat.all-component-colors($theme);
  } @else {
    @include mat.all-component-themes($theme);
  }

  @include uxg-core-theme($theme);
  @include avatar-theme.theme($theme);
  @include badge-theme.theme($theme);
  @include button-theme.theme($theme);
  @include button-toggle-theme.theme($theme);
  @include breadcrumb-theme.theme($theme);
  @include card-theme.theme($theme);
  @include chips-theme.theme($theme);
  @include expansion-theme.theme($theme);
  @include form-field-theme.theme($theme);
  @include icon-theme.theme($theme);
  @include link-theme.theme($theme);
  @include logo-theme.theme($theme);
  @include list-theme.theme($theme);
  @include menu-theme.theme($theme);
  @include sidenav-theme.theme($theme);
  @include slide-toggle-theme.theme($theme);
  @include table-theme.theme($theme);
  @include tabs-theme.theme($theme);
  @include toolbar-theme.theme($theme);
}
