* update layout and bootstrap package

* update templates

Co-authored-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Maurice Preuß
2022-02-16 09:57:17 +01:00
committed by GitHub
parent 3ba196fec6
commit f7db5497af
27 changed files with 55286 additions and 506 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
/*!
* Bootstrap v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@@ -1,77 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive"/>
<meta
name="GOOGLEBOT" content="nosnippet"/>
<html lang="en" {% if darkmode is defined %}class="{{ darkmode }}"{% endif %}>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive"/>
<meta name="googlebot" content="nosnippet"/>
<!-- Bootstrap CSS -->
<link
rel="stylesheet" href="{{ basehref|default("") }}vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<!-- CSS -->
<link href="{{ basehref|default("") }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
{{ theme_css|raw }}
{% block custom_css %}{% endblock %}
<!-- FontAwesome CSS -->
<link
rel="stylesheet" href="{{ basehref|default("") }}vendor/components/font-awesome/css/all.min.css">
<!-- Scripts -->
<script src="{{ basehref|default("") }}templates/Froxlor/assets/js/main.js"></script>
{{ theme_js|raw }}
{% block custom_js %}{% endblock %}
<title>Froxlor
{% if page_title %}
|
{{ page_title }}
{% endif %}
</title>
</head>
<body {% if body_class is defined %}class="{{ body_class }}"{% endif %}>
<div class="container-fluid">
{% block navigation %}{% endblock %}
<!-- our css -->
<link href="{{ basehref|default("") }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
{{ theme_css|raw }}
{% block custom_css %}{% endblock %}
{{ global_errors|raw }}
<!-- Bootstrap and necessary plugins -->
<script src="{{ basehref|default("") }}vendor/components/jquery/jquery.min.js"></script>
<script src="{{ basehref|default("") }}vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
{{ theme_js|raw }}
{% block custom_js %}{% endblock %}
<title>Froxlor
{% if page_title %}
|
{{ page_title }}
{% endif %}
</title>
</head>
{% block body %}{% endblock %}
<body>
<div class="container-fluid"> {% block navigation %}{% endblock %}
{{ global_errors|raw }}
{% block body %}{% endblock %}
<footer class="pt-5 pb-5 text-center">
<span><img src="{{ basehref|default("") }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor"/>
{% if install_mode is not defined %}
{% if (get_setting('admin.show_version_login') ==
'1' and module == 'Login') or (module != 'Login'
and get_setting('admin.show_version_footer') == '1') %}{% endif %}
<footer class="py-5 text-center">
<span>
<img src="{{ basehref|default("") }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor"/>
{% if install_mode is not defined %}
{% if (get_setting('admin.show_version_login') == '1'
and module == 'Login') or (module != 'Login'
and get_setting('admin.show_version_footer') == '1') %}
{{ call_static('\\Froxlor\\Froxlor', 'getFullVersion') }}
{% endif %}
&copy; 2009-{{ "now"|date("Y") }}
by
<a href="http://www.froxlor.org/" rel="external">the Froxlor Team</a><br/>
{% if install_mode is not defined %}
{% if (get_setting('panel.imprint_url') != '') %}
<a href="{{ get_setting('panel.imprint_url') }}" target="_blank" class="footer-link">{{ lng('imprint') }}</a>
{% endif %}
{% if (get_setting('panel.terms_url') != '') %}
<a href="{{ get_setting('panel.terms_url') }}" target="_blank" class="footer-link">{{ lng('terms') }}</a>
{% endif %}
{% if (get_setting('panel.privacy_url') != '') %}
<a href="{{ get_setting('panel.privacy_url') }}" target="_blank" class="footer-link">{{ lng('privacy') }}</a>
{% endif %}
{% endif %}
&copy; 2009-{{ "now"|date("Y") }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
{% if install_mode is not defined %}
{% if (get_setting('panel.imprint_url') != '') %}
<a href="{{ get_setting('panel.imprint_url') }}" target="_blank" class="footer-link">{{ lng('imprint') }}</a>
{% endif %}
{% if (get_setting('panel.terms_url') != '') %}
<a href="{{ get_setting('panel.terms_url') }}" target="_blank" class="footer-link">{{ lng('terms') }}</a>
{% endif %}
{% if (get_setting('panel.privacy_url') != '') %}
<a href="{{ get_setting('panel.privacy_url') }}" target="_blank" class="footer-link">{{ lng('privacy') }}</a>
{% endif %}
{% endif %}
</span>
{% if lng('translator') %}
<span class="mt-3">
{{ lng('panel.translator') }}: {{ lng('translator') }}
</span>
{% if lng('translator') %}
<br/>
<span>{{ lng('panel.translator') }}:
{{ lng('translator') }}
{% endif %}
</footer>
</div>
</body>
</body>
{% endif %}
</footer>
</div>
</body>
</html>

View File

@@ -82,7 +82,8 @@
<input type="hidden" name="check" value="1"/>
<input type="hidden" name="language" value="{{ pagecontent.form.activelang }}"/>
<input type="hidden" name="installstep" value="1"/>
<button class="btn btn-lg btn-success" type="submit" name="submitbutton">{{ lng('click_here_to_continue') }}
&raquo;</button>
<button class="btn btn-lg btn-success" type="submit" name="submitbutton">
{{ lng('click_here_to_continue') }} &raquo;
</button>
</aside>
</form>

View File

@@ -1,53 +1,61 @@
{% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %}
<div class="container p-3 bg-light border border-top-0">
<img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/>
<section class="mt-4">
<h3 class="text-center mb-3">{{ pagetitle }}</h3>
{% if pagecontent.checks is defined or pagecontent.installprocess is defined %}
<table class="table table-borderless table-sm">
{% if pagecontent.checks is defined %}
{% set checks = pagecontent.checks %}
{% else %}
{% set checks = pagecontent.installprocess %}
{% endif %}
{% for check in checks %}
<tr class="{% if check.result == 1 %}table-danger{% elseif check.result == 2 %}table-warning{% endif %}">
<td class="w-75" scope="row">{{ check.title }}</td>
<td class="col-auto text-end{% if check.result == 0 %} text-success{% endif %}">
<span class="d-none d-md-inline">{{ check.result_txt }}</span>
{% if check.result == 0 %}&nbsp;&check;{% elseif check.result == 2 %}<span class="d-md-none">&nbsp;???</span>{% elseif check.result == 1 %}<span class="d-md-none">&nbsp;!!!</span>
{% endif %}
</td>
</tr>
{% if check.result_desc is not empty %}
<tr>
<td colspan="2" class="text-end">
<small>{{ check.result_desc|raw }}</span>
<div class="container max-w-lg flex align-content-center mt-5">
<img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" class="filter-me" alt="Froxlor Server Management Panel"/>
<section class="card shadow mt-5">
<div class="card-body">
<h3 class="card-title mb-3">{{ pagetitle }}</h3>
{% if pagecontent.checks is defined or pagecontent.installprocess is defined %}
<table class="table table-borderless table-sm">
{% if pagecontent.checks is defined %}
{% set checks = pagecontent.checks %}
{% else %}
{% set checks = pagecontent.installprocess %}
{% endif %}
{% for check in checks %}
<tr class="{% if check.result == 1 %}table-danger{% elseif check.result == 2 %}table-warning{% endif %}">
<td class="w-75" scope="row">{{ check.title }}</td>
<td class="col-auto text-end{% if check.result == 0 %} text-success{% endif %}">
<span class="d-none d-md-inline">{{ check.result_txt }}</span>
{% if check.result == 0 %}&nbsp;<i class="fa fa-check-circle" {% elseif check.result == 2 %}<span class="d-md-none">&nbsp;???</span>{% elseif check.result == 1 %}<span class="d-md-none">&nbsp;!!!</span>
{% endif %}
</td>
</tr>
</small>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
{% elseif pagecontent.form is defined %}
{% include "Froxlor/install/form.html.twig" %}
{% else %}
<div class="alert alert-warning" role="alert">
{{ pagecontent }}
{% if check.result_desc is not empty %}
<tr>
<td colspan="2" class="text-end">
<span>{{ check.result_desc|raw }}</span>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
{% elseif pagecontent.form is defined %}
{% include "Froxlor/install/form.html.twig" %}
{% else %}
<div class="alert alert-warning" role="alert">
{{ pagecontent }}
</div>
{% endif %}
{% if pagenavigation is not empty %}
<div class="row pt-md-3">
<div class="col-12 col-md-8 d-flex align-items-center">
<h4 class="p-0 m-0 text-{% if pagenavigation.bad %}danger{% else %}success{% endif %}">{{ pagenavigation.message }}</h4>
</div>
<div class="col-12 col-md-4 text-end mt-4 mt-md-0">
<a class="btn btn-lg btn-block btn-{% if pagenavigation.bad %}warning{% else %}success{% endif %}" href="{{ pagenavigation.link}}">
{{ pagenavigation.linktext }} &raquo;
</a>
</div>
</div>
{% endif %}
</div>
</section>
</div>
{% endif %}
{% if pagenavigation is not empty %}
<div class="row pt-md-3">
<div class="col-12 col-md-8 d-flex align-items-center">
<h4 class="p-0 m-0 text-{% if pagenavigation.bad %}danger{% else %}success{% endif %}">{{ pagenavigation.message }}</h4>
</div>
<div class="col-12 col-md-4 text-end mt-4 mt-md-0">
<a class="btn btn-lg btn-block btn-{% if pagenavigation.bad %}warning{% else %}success{% endif %}" href="{{ pagenavigation.link}}">{{ pagenavigation.linktext }}
&raquo;</a>
</div>
</div>
{% endif %}</section></div>{% endblock %}
{% endblock %}

View File

@@ -1,47 +1,60 @@
{% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %}
<div class="container p-3 bg-light border border-top-0">
<img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/>
<section class="mt-4">
<h3 class="text-center mb-3">{{ pagetitle }}</h3>
{% if upd_in_progress %}
<div class="alert alert-warning" role="alert">
{{ lng('update.updateinprogress_onlyadmincanlogin')|raw }}
</div>
{% elseif successmsg is not empty %}
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">{{ lng('success.success') }}</h4>
<p>{{ successmsg|raw }}</p>
</div>
{% elseif message is not empty %}
<div class="alert alert-danger" role="alert">
<h4 class="alert-heading">{{ lng('error.error') }}</h4>
<p>{{ message|raw }}</p>
</div>
{% endif %}
<form action="index.php" method="post" enctype="application/x-www-form-urlencoded">
<div class="row mb-3">
<label for="loginname" class="col-sm-4 col-form-label">{{ lng('login.username') }}</label>
<div class="col-sm-8">
<input class="form-control" type="text" name="loginname" id="loginname" value="" required/>
<div class="container">
<div class="row justify-content-center">
<form class="col-4 d-flex flex-column" method="post" enctype="application/x-www-form-urlencoded">
<img class="align-self-center mb-5" src="{{ basehref }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/>
<div class="card shadow">
<div class="card-body">
<h5 class="card-title">{{ pagetitle }}</h5>
<p>Please log in to access your Account.</p>
{% if upd_in_progress %}
<div class="alert alert-warning" role="alert">
{{ lng('update.updateinprogress_onlyadmincanlogin')|raw }}
</div>
{% elseif successmsg is not empty %}
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">{{ lng('success.success') }}</h4>
<p>{{ successmsg|raw }}</p>
</div>
{% elseif message is not empty %}
<div class="alert alert-danger" role="alert">
<h4 class="alert-heading">{{ lng('error.error') }}</h4>
<p>{{ message|raw }}</p>
</div>
{% endif %}
<div class="mb-3">
<label for="loginname" class="col-form-label">{{ lng('login.username') }}</label>
<input class="form-control" type="text" name="loginname" id="loginname" value="" required/>
</div>
<div class="mb-3">
<label for="password" class="col-form-label">{{ lng('login.password') }}</label>
<input class="form-control" type="password" name="password" id="password" value="" required/>
</div>
<div>
<label for="language" class="col-form-label">{{ lng('login.language') }}</label>
<select class="form-control" name="language" id="language" required>
<option value="de">Deutsch</option>
</select>
</div>
</div>
<div class="card-body d-grid gap-2">
<input type="hidden" name="script" value="{{ lastscript }}" />
<input type="hidden" name="qrystr" value="{{ lastqrystr }}" />
<input type="hidden" name="send" value="send" />
<button class="btn btn-primary rounded-top-0" type="submit" name="dologin">{{ lng('login.login') }}</button>
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-sm-4 col-form-label">{{ lng('login.password') }}</label>
<div class="col-sm-8">
<input class="form-control" type="password" name="password" id="password" value="" required/>
</div>
</div>
<strong>language stuff noch</strong>
<aside class="text-end">
<input type="hidden" name="script" value="{{ lastscript }}" />
<input type="hidden" name="qrystr" value="{{ lastqrystr }}" />
<input type="hidden" name="send" value="send" />
<button class="btn btn-sm btn-primary" type="submit" name="dologin">{{ lng('login.login') }}</button>
</aside>
</form>
<strong>passwort vergessen stuff noch</strong>
</section>
</div>
</div>
{% endblock %}

View File

@@ -1,5 +1,7 @@
{% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %}
<div class="alert alert-{{ type }} fade show" role="alert">
<h4 class="alert-heading">

View File

@@ -1,17 +1,24 @@
{% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %}
<div class="container my-auto">
<div class="alert alert-primary fade show" role="alert">
<h4 class="alert-heading">
Welcome to froxlor
</h4>
<p>It seems that Froxlor has not been installed yet.</p>
<p>Click on the link below to start the installation.</p>
<hr>
<p class="mt-1 text-center">
<a href="./install/install.php" class="btn btn-primary" title="Click to start the install process">Start install</a>
</p>
</div>
</div>
<div class="container max-w-lg flex align-content-center mt-5">
<img src="templates/Sparkle/assets/img/logo.png" alt="Froxlor Server Management Panel" />
<div class="row gx-0 rounded shadow bg-primary text-white mt-5">
<div class="col p-5 rounded-start">
<h2 class="card-title">Welcome to Froxlor</h2>
<p class="lead mt-5">It seems that Froxlor has not been installed yet.</p>
<p class="lead">Click on the button below to start the installation.</p>
</div>
<div class="col text-white position-relative">
<img class="h-75 position-absolute bottom-0 end-0 rounded-corner-tl-bl" src="{{ basehref }}templates/Froxlor/assets/img/preview.png">
</div>
</div>
<div class="mt-5 text-end">
<a class="btn btn-lg btn-primary" href="./install/install.php" title="Click to start the install process">Start install</a>
</div>
</div>
{% endblock %}

View File

@@ -1,5 +1,7 @@
{% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %}
<div class="container my-auto">
<div class="alert alert-warning fade show" role="alert">
@@ -8,9 +10,7 @@
</h4>
<p>The configuration file <b>lib/userdata.inc.php</b> cannot be read from the webserver.</p>
<p>This mostly happens due to wrong ownership.<br />Try the following command to correct the ownership:</p>
<p class="mb-0">
<pre>chown -R {{ user }}:{{ group }} {{ installdir }}</pre>
</p>
<hr>
<p class="mt-1 text-center">
<a href="./install/install.php" class="btn btn-primary" title="Click to start the install process">Start install</a>

View File

@@ -1,49 +1,43 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="GOOGLEBOT" content="nosnippet" />
<meta name="googlebot" content="nosnippet" />
<!-- Bootstrap CSS (external) -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- CSS -->
<link href="{{ basehref }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
<!-- Scripts -->
<script src="{{ basehref }}templates/Froxlor/assets/js/main.js"></script>
<title>Froxlor - Error</title>
</head>
<body>
<body class="min-vh-100 d-flex align-items-center">
<div class="container-fluid">
<div class="container my-auto">
<div class="alert alert-danger fade show" role="alert">
<h4 class="alert-heading">
Whoops!
</h4>
<p>It seems you are using an older version of PHP</p>
<p>Froxlor requires at least PHP version <FROXLOR_PHPMIN><br />The installed version is:
<CURRENT_VERSION>
</p>
<hr>
<p class="mt-1 text-center">
<a href="index.php" class="btn btn-primary" title="Click to refresh">Refresh</a>
</p>
<div class="container max-w-lg">
<div class="card bg-danger text-white">
<div class="card-body">
<h4 class="card-title">
Whoops!
</h4>
<p>It seems you are using an older version of PHP</p>
<p>Froxlor requires at least PHP version {{ froxlor_min_version }}</p>
<p>The installed version is: {{ current_version }}</p>
</div>
<div class="card-footer text-end">
<a href="" class="btn btn-primary" title="Click to refresh">Refresh</a>
</div>
</div>
</div>
<footer class="pt-5 pb-5 text-center">
<span><img src="templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
&copy; 2009-<CURRENT_YEAR> by <a href="http://www.froxlor.org/" rel="external">the Froxlor
Team</a><br />
<footer class="pý-5 text-center">
<span>
<img src="{{ basehref }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
&copy; 2009-{{ current_year }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
</span>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -1,50 +1,43 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="GOOGLEBOT" content="nosnippet" />
<meta name="googlebot" content="nosnippet" />
<!-- Bootstrap CSS (external) -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- CSS -->
<link href="{{ basehref }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
<!-- Scripts -->
<script src="{{ basehref }}templates/Froxlor/assets/js/main.js"></script>
<title>Froxlor - Error</title>
</head>
<body>
<body class="min-vh-100 d-flex align-items-center">
<div class="container-fluid">
<div class="container my-auto">
<div class="alert alert-danger fade show" role="alert">
<h4 class="alert-heading">
Whoops!
</h4>
<p>It seems you are missing some required files.</p>
<p>Froxlor uses composer for its external requirements. Try the following command to install them:</p>
<p class="mb-0">
cd <FROXLOR_INSTALL_DIR> && composer install --no-dev</pre>
</p>
<hr>
<p class="mt-1 text-center">
<a href="index.php" class="btn btn-primary" title="Click to refresh">Refresh</a>
</p>
<div class="container max-w-lg">
<div class="card bg-danger text-white">
<div class="card-body">
<h4 class="card-title">
Whoops!
</h4>
<p>It seems you are missing some required files.</p>
<p>Froxlor uses composer for its external requirements. Try the following command to install them:</p>
<pre>cd {{ froxlor_install_dir }} && composer install --no-dev</pre>
</div>
<div class="card-footer text-end">
<a href="" class="btn btn-primary" title="Click to refresh">Refresh</a>
</div>
</div>
</div>
<footer class="pt-5 pb-5 text-center">
<span><img src="templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
&copy; 2009-<CURRENT_YEAR> by <a href="http://www.froxlor.org/" rel="external">the Froxlor
Team</a><br />
<footer class="py-5 text-center">
<span>
<img src="{{ basehref }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
&copy; 2009-{{ current_year }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
</span>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1 @@
import 'bootstrap';

View File

@@ -0,0 +1,9 @@
// Colors
$primary: #2a2a2a;
// Body
$body-bg: #f8f8f8;
$body-color: $primary;
// Borders
$border-radius: 0.5rem;

View File

@@ -0,0 +1,72 @@
@charset "UTF-8";
@import "variables";
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-free/css/all";
.max-w-lg {
max-width: 992px !important;
}
.card {
border: none;
@apply shadow;
.card-body {
padding: 1.5rem;
}
}
.rounded-corner-tl-bl {
border-radius: $border-radius 0 $border-radius 0;
}
footer {
color: #888;
font-size: 0.75rem !important;
}
footer a,
footer a:active,
footer a:visited {
color: #888;
}
.dark {
/* redefine theme colors for dark theme */
$primary: #3a3a3a;
$secondary: #111111;
$success: #3a3a3a;
$dark: #000;
$card-bg: #3a3a3a;
$theme-colors: (
"primary": $primary,
"secondary": $secondary,
"success": $success,
"danger": $danger,
"info": $indigo,
"dark": $dark,
"light": $light,
);
/* redefine theme color variables */
@each $color, $value in $theme-colors {
--#{$variable-prefix}#{$color}: #{$value};
}
/* redefine theme color rgb vars (used for bg- colors) */
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
@each $color, $value in $theme-colors-rgb {
--#{$variable-prefix}#{$color}-rgb: #{$value};
}
$body-color: #999;
$body-bg: #222;
--#{$variable-prefix}body-color: #{$body-color};
--#{$variable-prefix}body-bg: #{$body-bg};
@import "bootstrap";
}