/*
 * 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 '@angular/material' as mat;
@use 'sass:map';

@use 'libs/shared/src/assets/styles/app' as app;
@use 'libs/shared/src/assets/styles/prism-theme' as prism-theme;
@use 'libs/shared/src/assets/styles/listing-table' as listing-table;
@use 'libs/shared/src/components/resizable/resizeable-theme' as resizable;
@use 'app/app.component-theme' as app-component;
@use 'app/pages/documentation/feature/documentation.component-theme' as documentation;
@use 'app/pages/flow-designer/ui/canvas/canvas.component-theme' as canvas;
@use 'app/pages/flow-designer/ui/canvas/footer/footer.component-theme' as footer;
@use 'app/pages/flow-designer/ui/canvas/graph-controls/navigation-control/navigation-control.component-theme' as
    navigation-control;
@use 'app/pages/flow-designer/ui/canvas/graph-controls/navigation-control/birdseye/birdseye.component-theme' as
    birdseye-control;
@use 'app/pages/flow-designer/ui/canvas/graph-controls/operation-control/operation-control.component-theme' as
    operation-control;
@use 'app/pages/flow-designer/ui/canvas/items/processor/edit-processor/edit-processor.component-theme' as edit-processor;
@use 'app/pages/flow-designer/ui/canvas/header/flow-status/flow-status.component-theme' as flow-status;
@use 'app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component-theme' as new-canvas-item;
@use 'app/pages/flow-designer/ui/canvas/header/search/search.component-theme' as search;
@use 'app/pages/flow-designer/ui/canvas/header/flow-analysis-drawer/violation-details-dialog/violation-details-dialog.component-theme'
    as violation-details-dialog;
@use 'app/pages/login/feature/login.component-theme' as login;
@use 'app/pages/logout/feature/logout.component-theme' as logout;
@use 'app/pages/provenance/feature/provenance.component-theme' as provenance;
@use 'app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component-theme' as
    provenance-event-table;
@use 'app/pages/provenance/ui/provenance-event-listing/provenance-event-table/lineage/lineage.component-theme' as
    lineage;
@use 'app/ui/common/context-menu/context-menu.component-theme' as context-menu;
@use 'app/ui/common/extension-creation/extension-creation.component-theme' as extension-creation;
@use 'app/ui/common/navigation/navigation.component-theme' as navigation;
@use 'app/ui/common/property-table/editors/nf-editor/nf-editor.component-theme' as nf-editor;
@use 'app/ui/common/status-history/status-history.component-theme' as status-history;
@use 'libs/shared/src/components/tooltips/property-hint-tip/property-hint-tip.component-theme' as property-hint-tip;
@use 'app/pages/summary/ui/processor-status-listing/processor-status-table/processor-status-table.component-theme' as
    processor-status-table;
@use 'app/pages/flow-designer/ui/canvas/change-color-dialog/change-color-dialog.component-theme' as change-color-dialog;
@use 'libs/shared/src/components/map-table/editors/text-editor/text-editor.component-theme' as text-editor;

// Plus imports for other components in your app.
@use 'libs/shared/src/assets/fonts/flowfont/flowfont.css';

@use 'font-awesome';
@use 'libs/shared/src/assets/themes/material';

@tailwind base;
@tailwind components;
@tailwind utilities;

// only include these once (not needed for dark mode)
@include app.styles();
@include listing-table.styles();

html {
    @include app.generate-material-theme();
    @include prism-theme.generate-prism-theme();
    @include app-component.generate-theme();
    @include listing-table.generate-theme();
    @include documentation.generate-theme();
    @include canvas.generate-theme();
    @include footer.generate-theme();
    @include extension-creation.generate-theme();
    @include birdseye-control.generate-theme();
    @include navigation-control.generate-theme();
    @include operation-control.generate-theme();
    @include flow-status.generate-theme();
    @include edit-processor.generate-theme();
    @include violation-details-dialog.generate-theme();
    @include new-canvas-item.generate-theme();
    @include search.generate-theme();
    @include login.generate-theme();
    @include logout.generate-theme();
    @include provenance-event-table.generate-theme();
    @include provenance.generate-theme();
    @include lineage.generate-theme();
    @include context-menu.generate-theme();
    @include navigation.generate-theme();
    @include nf-editor.generate-theme();
    @include status-history.generate-theme();
    @include property-hint-tip.generate-theme();
    @include processor-status-table.generate-theme();
    @include change-color-dialog.generate-theme();
    @include text-editor.generate-theme();
    @include resizable.generate-theme();

    .darkMode {
        @include app.generate-material-theme();
        @include prism-theme.generate-prism-theme();
        @include app-component.generate-theme();
        @include listing-table.generate-theme();
        @include documentation.generate-theme();
        @include canvas.generate-theme();
        @include footer.generate-theme();
        @include extension-creation.generate-theme();
        @include birdseye-control.generate-theme();
        @include navigation-control.generate-theme();
        @include operation-control.generate-theme();
        @include flow-status.generate-theme();
        @include edit-processor.generate-theme();
        @include violation-details-dialog.generate-theme();
        @include new-canvas-item.generate-theme();
        @include search.generate-theme();
        @include login.generate-theme();
        @include logout.generate-theme();
        @include provenance-event-table.generate-theme();
        @include provenance.generate-theme();
        @include lineage.generate-theme();
        @include context-menu.generate-theme();
        @include navigation.generate-theme();
        @include nf-editor.generate-theme();
        @include status-history.generate-theme();
        @include property-hint-tip.generate-theme();
        @include processor-status-table.generate-theme();
        @include change-color-dialog.generate-theme();
        @include text-editor.generate-theme();
        @include resizable.generate-theme();
    }
}
