/*
 Copyright 2020 TATA ELXSI

 Licensed 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.

 Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
 */
/*Roboto Fonts*/
$roboto-font-path: "~roboto-fontface/fonts" !default;
@import "~roboto-fontface/css/roboto/sass/roboto-fontface-regular";
/*Custom mixin*/
@import "mixins/mixin.scss";
/*Theme setup color*/
@import "variable";
/*bootstrap styles*/
@import "~bootstrap/scss/bootstrap";
/*Custom theme styles*/
@import "app.scss";
/*Code Mirror styles*/
@import "~codemirror/lib/codemirror";
@import "~codemirror/addon/fold/foldgutter";
@import "~codemirror/theme/neat";
@import "~codemirror/theme/material";
@import "~codemirror/addon/dialog/dialog";
@import "~codemirror/addon/display/fullscreen";
/*ng-select styles*/
@import "~@ng-select/ng-select/themes/default.theme.css";
/*Angular notifier styles*/
@import "~angular-notifier/styles/core.scss";
@import "~angular-notifier/styles/themes/theme-material.scss";
@import "~angular-notifier/styles/themes/theme-material.scss";
@import "~angular-notifier/styles/types/type-success.scss";
@import "~angular-notifier/styles/types/type-error.scss";
@import "~angular-notifier/styles/types/type-warning.scss";
@import "~angular-notifier/styles/types/type-default.scss";
@import "~angular-notifier/styles/types/type-info.scss";