/*!
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

@use 'sass:map';
@use '@angular/material' as mat;

@mixin generate-theme($supplemental-theme) {
    // Get the color config from the theme.
    $supplemental-theme-color-config: mat.get-color-config($supplemental-theme);

    $supplemental-theme-surface-palette: map.get($supplemental-theme-color-config, 'primary');

    $is-dark: map-get($supplemental-theme-color-config, is-dark);
    $supplemental-theme-surface-palette-lighter: mat.get-color-from-palette(
        $supplemental-theme-surface-palette,
        lighter
    );
    $supplemental-theme-surface-palette-darker: mat.get-color-from-palette($supplemental-theme-surface-palette, darker);

    $supplemental-theme-surface-palette-darker-contrast: mat.get-color-from-palette(
        $supplemental-theme-surface-palette,
        darker-contrast
    );
    $supplemental-theme-surface-palette-lighter-contrast: mat.get-color-from-palette(
        $supplemental-theme-surface-palette,
        lighter-contrast
    );

    $alternate-surface: if(
        $is-dark,
        rgba($supplemental-theme-surface-palette-darker-contrast, 0.28),
        rgba($supplemental-theme-surface-palette-lighter-contrast, 0.2)
    );

    .preview {
        .processor {
            background-color: if(
                $is-dark,
                $supplemental-theme-surface-palette-darker,
                $supplemental-theme-surface-palette-lighter
            );
        }

        .odd {
            background-color: rgba(
                if($is-dark, $supplemental-theme-surface-palette-lighter, $supplemental-theme-surface-palette-darker),
                0.025
            );
        }

        .even {
            background-color: if(
                $is-dark,
                $supplemental-theme-surface-palette-darker,
                $supplemental-theme-surface-palette-lighter
            );
        }

        .row-border {
            border-top: 1px solid $alternate-surface;
        }
    }
}
