@use 'sass:map';

:root {
  --obl-primary: #00afaf;
  --obl-secondary: #008caf;

  --default-border-color: gray;
  --default-focus-color: gray;
  --default-border-outline-color: #080808;
  --default-disabled-color: gray;
  --default-background-color: white;
  --default-hover-color: #eeeeee;
  --obl-default-error-color: red;
  --obl-dialog-background: #d3d3d3;
  --default-radio-color: black;

  --disabled-color: gray;

  --default-hex-button-border-color: #008caf;
  --default-hex-button-hover-border-color: #00afaf;

  --select-item-background-color: #e4e4e4;
  --select-item-text-color: #5a5a5a;
  --default-text-color: black;
  --obl-default-button-text-color: black;
  --obl-default-icon-color: black;

  --equalizer-background-bar-color: #575656;
  --equalizer-value-bar-color: #e6e6e6;

  --diagram-3d-background-color: black;

  --slider-value-container-color: gray;
  --slider-value-color: #d1d1d1;
  --slider-hover-value-color: white;

  --digit-fill-color: #cccccc;
  --digit-lighted-color: black;

  --horizontal-progress-bar-value-color: #504f4f;
  --horizontal-progress-bar-background-pattern-color: #dddddd;
  --horizontal-progress-bar-value-pattern-color: #b3b3b3;
  --horizontal-progress-bar-border-rect-color: #cccccc;

  --temperature-text-color: black;
  --temperature-path-stroke-color: black;

  --post-diagram-scale-line-color: #c8c8c8;

  --volume-channel-secondary-color: gray;
  --volume-channel-primary-color: #f2f2f2;

  --arch-progress-secondary-color: #eeeeee;

  --obl-linear-diagram-greed-color: gray;

  --obl-rating-selected-color: gold;
  --obl-rating-color: #cccccc;
}

$default-colors: (
  border-outline-color: var(--default-border-outline-color),
  border-focus-color: var(--default-focus-color),
  border-color: var(--default-border-color),
  disabled-color: var(--disabled-color),
  disabled-text-color: var(--disabled-color),
  text-color: var(--default-text-color),
  background-color: var(--default-background-color),
  button-text-color: var(--obl-button-text-color),
  hover-color: var(--default-hover-color),
  checkbox-color: var(--default-checkbox-color),
  radio-color: var(--default-radio-color),
  sup-color: #adadad,
  error-color: var(--obl-default-error-color),
  dialog-background-color: var(--obl-dialog-background),
);

$select-colors: (
  item-background-color: var(--select-item-background-color),
  item-text-color: var(--select-item-text-color),
);

@function get-color($set, $name) {
  @if not map.has-key($set, $name) {
    @error "Color \"#{$name}\" not exist on map";
  }
  @return map.get($set, $name);
}

@function get-default-color($name) {
  @return get-color($default-colors, $name);
}

@function get-select-color($name) {
  @return get-color($select-colors, $name);
}

$equalizer-colors: (
  background-bar-color: var(--equalizer-background-bar-color),
  bar-value-color: var(--equalizer-value-bar-color),
);

@function get-equalizer-color($name) {
  @return get-color($equalizer-colors, $name);
}

$digital-colors: (
  fill-color: var(--digit-fill-color),
  lighted-color: var(--digit-lighted-color),
);

@function get-digital-color($name) {
  @return get-color($digital-colors, $name);
}

$diagram-3d-colors: (
  background-3d-color: var(--diagram-3d-background-color),
);

@function get-diagram-3d-color($name) {
  @return get-color($diagram-3d-colors, $name);
}

$slider-colors: (
  value-container-color: var(--slider-value-container-color),
  value-color: var(--slider-value-color),
  hover-value-color: var(--slider-hover-value-color),
);

@function get-slider-color($name) {
  @return get-color($slider-colors, $name);
}

$horizontal-pb-colors: (
  value-color: var(--horizontal-progress-bar-value-color),
  background-pattern-color:
    var(--horizontal-progress-bar-background-pattern-color),
  value-pattern-color: var(--horizontal-progress-bar-value-pattern-color),
  border-rect-color: var(--horizontal-progress-bar-border-rect-color),
);

@function get-horizontal-pb-color($name) {
  @return get-color($horizontal-pb-colors, $name);
}

$temperature-colors: (
  text-color: var(--temperature-text-color),
  path-stroke-color: var(--temperature-path-stroke-color),
);

@function get-temperature-color($name) {
  @return get-color($temperature-colors, $name);
}

$post-diagram-colors: (
  scale-line-color: var(--post-diagram-scale-line-color),
);

$volume-channel-colors: (
  primary-color: var(--volume-channel-primary-color),
  secondary-color: var(--volume-channel-secondary-color),
);

@function get-volume-channel-color($name) {
  @return get-color($volume-channel-colors, $name);
}

$rating-colors: (
  selected-color: var(--obl-rating-selected-color),
  unselected-color: var(--obl-rating-color),
);

@function get-rating-color($name) {
  @return get-color($rating-colors, $name);
}
