Support multiple Bootswatch themes for the app (#1205).

This commit is contained in:
Alex Tselegidis 2022-05-22 14:39:19 +02:00
parent 48122c4cd3
commit 6666e5862c
131 changed files with 9501 additions and 7 deletions

View file

@ -70,6 +70,7 @@ class About extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'privileges' => $this->roles_model->get_permissions_by_slug($role_slug),

View file

@ -69,6 +69,7 @@ class Account extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'grouped_timezones' => $this->timezones->to_grouped_array(),

View file

@ -68,6 +68,7 @@ class Admins extends EA_Controller {
html_vars([
'page_title' => lang('admins'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_USERS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'grouped_timezones' => $this->timezones->to_grouped_array(),

View file

@ -61,6 +61,7 @@ class Booking extends EA_Controller {
return;
}
$theme = setting('theme', 'default');
$company_name = setting('company_name');
$company_logo = setting('company_logo');
$company_color = setting('company_color');
@ -75,6 +76,7 @@ class Booking extends EA_Controller {
html_vars([
'show_message' => TRUE,
'page_title' => lang('page_title') . ' ' . $company_name,
'theme' => $theme,
'message_title' => lang('booking_is_disabled'),
'message_text' => $disable_booking_message,
'message_icon' => base_url('assets/img/error.png'),
@ -151,6 +153,7 @@ class Booking extends EA_Controller {
html_vars([
'show_message' => TRUE,
'page_title' => lang('page_title') . ' ' . $company_name,
'theme' => $theme,
'message_title' => lang('appointment_not_found'),
'message_text' => lang('appointment_does_not_exist_in_db'),
'message_icon' => base_url('assets/img/error.png'),
@ -178,6 +181,7 @@ class Booking extends EA_Controller {
html_vars([
'show_message' => TRUE,
'page_title' => lang('page_title') . ' ' . $company_name,
'theme' => $theme,
'message_title' => lang('appointment_locked'),
'message_text' => strtr(lang('appointment_locked_message'), [
'{$limit}' => sprintf('%02d:%02d', $hours, $minutes)
@ -221,6 +225,7 @@ class Booking extends EA_Controller {
]);
html_vars([
'theme' => $theme,
'available_services' => $available_services,
'available_providers' => $available_providers,
'company_name' => $company_name,

View file

@ -56,6 +56,7 @@ class Booking_confirmation extends EA_Controller {
html_vars([
'page_title' => lang('success'),
'theme' => setting('theme', 'default'),
'google_analytics_code' => setting('google_analytics_code'),
'matomo_analytics_url' => setting('matomo_analytics_url'),
'add_to_google_url' => $add_to_google_url,

View file

@ -71,6 +71,7 @@ class Booking_settings extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
]);

View file

@ -73,6 +73,7 @@ class Business_settings extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
]);

View file

@ -134,6 +134,7 @@ class Calendar extends EA_Controller {
html_vars([
'page_title' => lang('calendar'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_APPOINTMENTS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'timezone' => session('timezone'),

View file

@ -66,6 +66,7 @@ class Categories extends EA_Controller {
html_vars([
'page_title' => lang('categories'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SERVICES,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'timezones' => $this->timezones->to_array(),

View file

@ -91,6 +91,7 @@ class Customers extends EA_Controller {
html_vars([
'page_title' => lang('customers'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_CUSTOMERS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'timezones' => $this->timezones->to_array(),

View file

@ -62,6 +62,7 @@ class General_settings extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
]);

View file

@ -62,6 +62,7 @@ class Legal_settings extends EA_Controller {
html_vars([
'page_title' => lang('settings'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SYSTEM_SETTINGS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
]);

View file

@ -81,6 +81,7 @@ class Providers extends EA_Controller {
html_vars([
'page_title' => lang('providers'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_USERS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'grouped_timezones' => $this->timezones->to_grouped_array(),

View file

@ -81,6 +81,7 @@ class Secretaries extends EA_Controller {
html_vars([
'page_title' => lang('secretaries'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_USERS,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'grouped_timezones' => $this->timezones->to_grouped_array(),

View file

@ -67,6 +67,7 @@ class Services extends EA_Controller {
html_vars([
'page_title' => lang('services'),
'theme' => setting('theme', 'default'),
'active_menu' => PRIV_SERVICES,
'user_display_name' => $this->accounts->get_user_display_name($user_id),
'timezones' => $this->timezones->to_array(),

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'Tot';
$lang['booking_link'] = 'Enllaç de reserva';
$lang['add_new_event'] = 'Afegeix un nou esdeveniment';
$lang['what_kind_of_event'] = 'Quin tipus d\'esdeveniment voleu afegir?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'Kõik';
$lang['booking_link'] = 'Broneeringu link';
$lang['add_new_event'] = 'Lisa uus sündmus';
$lang['what_kind_of_event'] = 'Mis laadi sündmust soovid lisada?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -363,4 +363,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -364,4 +364,5 @@ $lang['all'] = 'All';
$lang['booking_link'] = 'Booking Link';
$lang['add_new_event'] = 'Add New Event';
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
$lang['theme'] = 'Theme';
// End

View file

@ -0,0 +1,39 @@
<?php defined('BASEPATH') or exit('No direct script access allowed');
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
class Migration_Add_theme_setting extends EA_Migration {
/**
* Upgrade method.
*/
public function up()
{
if ( ! $this->db->get_where('settings', ['name' => 'theme'])->num_rows())
{
$this->db->insert('settings', [
'name' => 'theme',
'value' => 'default'
]);
}
}
/**
* Downgrade method.
*/
public function down()
{
if ($this->db->get_where('settings', ['name' => 'theme'])->num_rows())
{
$this->db->delete('settings', ['name' => 'theme']);
}
}
}

View file

@ -14,7 +14,7 @@
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/jquery-ui-dist/jquery-ui.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/bootstrap.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/' . vars('theme') . '/' . vars('theme') . '.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/general.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/layouts/account_layout.css') ?>">

View file

@ -16,7 +16,7 @@
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/jquery-ui-dist/jquery-ui.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/trumbowyg/trumbowyg.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/select2/select2.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/bootstrap.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/' . vars('theme') . '/' . vars('theme') . '.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/general.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/layouts/backend_layout.css') ?>">

View file

@ -15,7 +15,7 @@
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/jquery-ui-dist/jquery-ui.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/cookieconsent/cookieconsent.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/bootstrap.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/' . vars('theme') . '/' . vars('theme') . '.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/general.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/layouts/booking_layout.css') ?>">

View file

@ -14,7 +14,7 @@
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/vendor/jquery-ui-dist/jquery-ui.min.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/bootstrap.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/' . vars('theme') . '/' . vars('theme') . '.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/general.css') ?>">
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/layouts/booking_layout.css') ?>">

View file

@ -110,6 +110,106 @@
</button>
</div>
</div>
<div class="mb-3">
<label class="form-label" for="theme">
<?= lang('theme') ?>
</label>
<select id="theme" data-field="theme" class="form-control">
<option value="default">
<?= lang('default') ?>
</option>
<option value="cerulean">
cerulean
</option>
<option value="cosmo">
cosmo
</option>
<option value="cyborg">
cyborg
</option>
<option value="darkly">
darkly
</option>
<option value="default">
default
</option>
<option value="flatly">
flatly
</option>
<option value="journal">
journal
</option>
<option value="litera">
litera
</option>
<option value="lumen">
lumen
</option>
<option value="lux">
lux
</option>
<option value="materia">
materia
</option>
<option value="minty">
minty
</option>
<option value="morph">
morph
</option>
<option value="pulse">
pulse
</option>
<option value="quartz">
quartz
</option>
<option value="regent">
regent
</option>
<option value="sandstone">
sandstone
</option>
<option value="simplex">
simplex
</option>
<option value="sketchy">
sketchy
</option>
<option value="slate">
slate
</option>
<option value="solar">
solar
</option>
<option value="spacelab">
spacelab
</option>
<option value="superhero">
superhero
</option>
<option value="united">
united
</option>
<option value="vapor">
vapor
</option>
<option value="yeti">
yeti
</option>
<option value="zephyr">
zephyr
</option>
</select>
<div class="form-text text-muted">
<small>
<?= lang('company_color_hint') ?>
</small>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,83 @@
// Cerulean 5.1.3
// Bootswatch
// Variables
$text-shadow: 0 1px 0 rgba(0, 0, 0, .05) !default;
// Mixins
@mixin btn-shadow($color){
@include gradient-y-three-colors(tint-color($color, 16%), $color, 60%, shade-color($color, 6%));
}
// Navbar
.navbar {
@each $color, $value in $theme-colors {
&.bg-#{$color} {
@include btn-shadow($value);
}
}
}
.navbar-brand,
.nav-link {
text-shadow: $text-shadow;
}
// Buttons
.btn {
text-shadow: $text-shadow;
}
.btn-secondary {
color: $gray-700;
}
@each $color, $value in $theme-colors {
.btn-#{$color} {
@include btn-shadow($value);
}
}
// Typography
.text-secondary {
color: $gray-500 !important;
}
.bg-primary,
.bg-success,
.bg-info,
.bg-warning,
.bg-danger,
.bg-dark {
h1,
h2,
h3,
h4,
h5,
h6 {
color: $white;
}
}
// Navs
.dropdown-menu {
.dropdown-header {
color: $gray-600;
}
}
// Indicators
.badge {
&.bg-secondary,
&.bg-light {
color: $dark;
}
}

View file

@ -0,0 +1,61 @@
// Cerulean 5.1.3
// Bootswatch
$theme: "cerulean" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #868e96 !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #033c73 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #c71c22 !default;
$orange: #fd7e14 !default;
$yellow: #dd5600 !default;
$green: #73a839 !default;
$teal: #20c997 !default;
$cyan: #2fa4e7 !default;
$primary: $cyan !default;
$secondary: $gray-200 !default;
$success: $green !default;
$info: $blue !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2.75 !default;
// Body
$body-color: $gray-700 !default;
// Fonts
$headings-color: $cyan !default;
// Dropdowns
$dropdown-link-color: $body-color !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navbar
$navbar-dark-color: rgba($white, .8) !default;
$navbar-dark-hover-color: $white !default;

View file

@ -9,8 +9,8 @@
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import "variables";
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import "bootswatch";
@import 'bootswatch';

View file

@ -0,0 +1,35 @@
// Cosmo 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Typography
body {
-webkit-font-smoothing: antialiased;
}
// Indicators
.badge {
&.bg-light {
color: $dark;
}
}
// Progress bars
.progress {
@include box-shadow(none);
.progress-bar {
font-size: 8px;
line-height: 8px;
}
}

View file

@ -0,0 +1,69 @@
// Cosmo 5.1.3
// Bootswatch
$theme: "cosmo" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #868e96 !default;
$gray-700: #495057 !default;
$gray-800: #373a3c !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #2780e3 !default;
$indigo: #6610f2 !default;
$purple: #613d7c !default;
$pink: #e83e8c !default;
$red: #ff0039 !default;
$orange: #f0ad4e !default;
$yellow: #ff7518 !default;
$green: #3fb618 !default;
$teal: #20c997 !default;
$cyan: #9954bb !default;
$primary: $blue !default;
$secondary: $gray-800 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2.6 !default;
// Options
$enable-rounded: false !default;
// Body
$body-color: $gray-800 !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-font-weight: 400 !default;
// Navbar
$navbar-dark-hover-color: rgba($white, 1) !default;
$navbar-light-hover-color: rgba($black, .9) !default;
// Alerts
$alert-border-width: 0 !default;
// Progress bars
$progress-height: .5rem !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,143 @@
// Cyborg 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.navbar {
&.bg-primary {
border: 1px solid $gray-700;
}
&.bg-dark {
background-color: $body-bg !important;
border: 1px solid $gray-700;
}
&.bg-light {
background-color: $gray-500 !important;
}
&.fixed-top {
border-width: 0 0 1px;
}
&.fixed-bottom {
border-width: 1px 0 0;
}
}
// Buttons
.btn {
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
} @else {
background-color: $value;
}
}
}
}
// Forms
legend {
color: $white;
}
.form-control {
background-clip: border-box;
&:disabled,
&[readonly] {
border-color: transparent;
}
}
// Navs
.nav-tabs,
.nav-pills {
.nav-link {
color: $white;
&:hover {
background-color: $gray-700;
}
&.disabled,
&.disabled:hover {
color: $nav-link-disabled-color;
background-color: transparent;
}
&.active {
background-color: $primary;
}
}
}
.breadcrumb {
a {
color: $white;
}
}
.pagination {
a:hover {
text-decoration: none;
}
}
// Indicators
.alert {
color: $white;
border: none;
a,
.alert-link {
color: $white;
text-decoration: underline;
}
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
} @else {
background-color: $value;
}
}
}
}
.badge {
&.bg-dark {
color: $gray-900;
}
}
// Containers
.list-group-item-action {
&:hover {
border-color: $primary;
}
}
.popover {
&-title {
border-bottom: none;
}
}

View file

@ -0,0 +1,181 @@
// Cyborg 5.1.3
// Bootswatch
$theme: "cyborg" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #adafae !default;
$gray-500: #888 !default;
$gray-600: #555 !default;
$gray-700: #282828 !default;
$gray-800: #222 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #2a9fd6 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #c00 !default;
$orange: #fd7e14 !default;
$yellow: #f80 !default;
$green: #77b300 !default;
$teal: #20c997 !default;
$cyan: #93c !default;
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-800 !default;
$dark: $gray-400 !default;
$min-contrast-ratio: 2.25 !default;
// Body
$body-bg: #060606 !default;
$body-color: $gray-400 !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
$h1-font-size: 4rem !default;
$h2-font-size: 3rem !default;
$h3-font-size: 2.5rem !default;
$h4-font-size: 2rem !default;
$h5-font-size: 1.5rem !default;
$headings-color: $white !default;
// Tables
$table-color: $white !default;
$table-accent-bg: rgba($white, .05) !default;
$table-hover-bg: rgba($white, .075) !default;
$table-border-color: $gray-700 !default;
$table-dark-bg: $gray-500 !default;
$table-dark-border-color: darken($gray-500, 7.5%) !default;
$table-bg-scale: 0 !default;
// Buttons
$input-btn-padding-x: 1rem !default;
// Forms
$input-bg: $white !default;
$input-disabled-bg: $gray-400 !default;
$input-color: $gray-900 !default;
$input-border-color: $white !default;
$input-border-width: 0 !default;
$input-group-addon-color: $white !default;
$input-group-addon-bg: $gray-700 !default;
$input-group-addon-border-color: transparent !default;
$form-check-input-bg: $white !default;
$form-check-input-border: none !default;
$form-file-button-color: $white !default;
// Dropdowns
$dropdown-bg: $gray-700 !default;
$dropdown-divider-bg: $gray-800 !default;
$dropdown-link-color: $white !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navs
$nav-tabs-border-color: $table-border-color !default;
$nav-tabs-link-hover-border-color: $nav-tabs-border-color !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-bg: $nav-tabs-border-color !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
// Navbar
$navbar-dark-hover-color: $white !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $gray-700 !default;
$pagination-border-color: transparent !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: $primary !default;
$pagination-hover-border-color: $pagination-border-color !default;
$pagination-disabled-bg: $pagination-bg !default;
$pagination-disabled-border-color: $pagination-border-color !default;
// Cards
$card-bg: $gray-700 !default;
// Tooltips
$tooltip-bg: $gray-700 !default;
$tooltip-opacity: 1 !default;
// Popovers
$popover-bg: $gray-700 !default;
// Toasts
$toast-color: $white !default;
$toast-background-color: $gray-800 !default;
$toast-border-color: $gray-700 !default;
$toast-header-color: $body-color !default;
$toast-header-background-color: $toast-background-color !default;
$toast-header-border-color: $toast-border-color !default;
// Modals
$modal-content-bg: $gray-800 !default;
$modal-header-border-color: $gray-700 !default;
// Progress bars
$progress-bg: $gray-700 !default;
// List group
$list-group-color: $white !default;
$list-group-bg: $gray-800 !default;
$list-group-border-color: $gray-700 !default;
$list-group-hover-bg: $primary !default;
$list-group-disabled-bg: $gray-700 !default;
$list-group-action-color: $white !default;
$list-group-action-active-bg: $primary !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $gray-700 !default;
$breadcrumb-border-radius: .25rem !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .6 !default;
$btn-close-hover-opacity: 1 !default;
// Code
$pre-color: inherit !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,76 @@
// Darkly 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Typography
.blockquote {
&-footer {
color: $gray-600;
}
}
// Forms
.input-group-addon {
color: $white;
}
.form-floating > label {
color: $gray-700;
}
// Navs
.nav-tabs,
.nav-pills {
.nav-link,
.nav-link.active,
.nav-link.active:focus,
.nav-link.active:hover,
.nav-item.open .nav-link,
.nav-item.open .nav-link:focus,
.nav-item.open .nav-link:hover {
color: $white;
}
}
.breadcrumb a {
color: $white;
}
.pagination {
a:hover {
text-decoration: none;
}
}
// Indicators
.alert {
color: $white;
border: none;
a,
.alert-link {
color: $white;
text-decoration: underline;
}
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
} @else {
background-color: $value;
}
}
}
}

View file

@ -0,0 +1,173 @@
// Darkly 5.1.3
// Bootswatch
$theme: "darkly" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #ebebeb !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #888 !default;
$gray-700: #444 !default;
$gray-800: #303030 !default;
$gray-900: #222 !default;
$black: #000 !default;
$blue: #375a7f !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #e74c3c !default;
$orange: #fd7e14 !default;
$yellow: #f39c12 !default;
$green: #00bc8c !default;
$teal: #20c997 !default;
$cyan: #3498db !default;
$primary: $blue !default;
$secondary: $gray-700 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-500 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 1.9 !default;
// Body
$body-bg: $gray-900 !default;
$body-color: $white !default;
// Links
$link-color: $success !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$h1-font-size: 3rem !default;
$h2-font-size: 2.5rem !default;
$h3-font-size: 2rem !default;
$text-muted: $gray-600 !default;
// Tables
$table-border-color: $gray-700 !default;
$table-bg-scale: 0 !default;
// Forms
$input-bg: $white !default;
$input-color: $gray-800 !default;
$input-border-color: $body-bg !default;
$input-group-addon-color: $gray-500 !default;
$input-group-addon-bg: $gray-700 !default;
$form-check-input-bg: $white !default;
$form-check-input-border: none !default;
$form-file-button-color: $white !default;
// Dropdowns
$dropdown-bg: $gray-900 !default;
$dropdown-border-color: $gray-700 !default;
$dropdown-divider-bg: $gray-700 !default;
$dropdown-link-color: $white !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navs
$nav-link-padding-x: 2rem !default;
$nav-link-disabled-color: $gray-500 !default;
$nav-tabs-border-color: $gray-700 !default;
$nav-tabs-link-hover-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
// Navbar
$navbar-padding-y: 1rem !default;
$navbar-dark-color: rgba($white, .6) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($gray-900, .7) !default;
$navbar-light-hover-color: $gray-900 !default;
$navbar-light-active-color: $gray-900 !default;
$navbar-light-toggler-border-color: rgba($gray-900, .1) !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $success !default;
$pagination-border-width: 0 !default;
$pagination-border-color: transparent !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: lighten($success, 10%) !default;
$pagination-hover-border-color: transparent !default;
$pagination-active-bg: $pagination-hover-bg !default;
$pagination-active-border-color: transparent !default;
$pagination-disabled-color: $white !default;
$pagination-disabled-bg: darken($success, 15%) !default;
$pagination-disabled-border-color: transparent !default;
// Cards
$card-cap-bg: $gray-700 !default;
$card-bg: $gray-800 !default;
// Popovers
$popover-bg: $gray-800 !default;
$popover-header-bg: $gray-700 !default;
// Toasts
$toast-background-color: $gray-700 !default;
$toast-header-background-color: $gray-800 !default;
// Modals
$modal-content-bg: $gray-800 !default;
$modal-content-border-color: $gray-700 !default;
$modal-header-border-color: $gray-700 !default;
// Progress bars
$progress-bg: $gray-700 !default;
// List group
$list-group-color: $body-color !default;
$list-group-bg: $gray-800 !default;
$list-group-border-color: $gray-700 !default;
$list-group-hover-bg: $gray-700 !default;
$list-group-action-hover-color: $list-group-color !default;
$list-group-action-active-bg: $gray-900 !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $gray-700 !default;
$breadcrumb-border-radius: .25rem !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .4 !default;
$btn-close-hover-opacity: 1 !default;
// Code
$pre-color: inherit !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,87 @@
// Flatly 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.bg-primary {
.navbar-nav .show > .nav-link,
.navbar-nav .nav-link.active,
.navbar-nav .nav-link:hover,
.navbar-nav .nav-link:focus {
color: $success !important;
}
}
// Navs
.nav-tabs {
.nav-link.active,
.nav-link.active:focus,
.nav-link.active:hover,
.nav-item.open .nav-link,
.nav-item.open .nav-link:focus,
.nav-item.open .nav-link:hover {
color: $primary;
}
}
.pagination {
a:hover {
text-decoration: none;
}
}
// Indicators
.badge {
&.bg-light {
color: $dark;
}
}
.alert {
color: $white;
border: none;
a,
.alert-link {
color: $white;
text-decoration: underline;
}
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
} @else {
background-color: $value;
}
}
}
&-light {
&,
a,
.alert-link {
color: $body-color;
}
}
}
// Containers
.modal,
.toast,
.offcanvas {
.btn-close {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
}
}

View file

@ -0,0 +1,113 @@
// Flatly 5.1.3
// Bootswatch
$theme: "flatly" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #ecf0f1 !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #b4bcc2 !default;
$gray-600: #95a5a6 !default;
$gray-700: #7b8a8b !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #2c3e50 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #e74c3c !default;
$orange: #fd7e14 !default;
$yellow: #f39c12 !default;
$green: #18bc9c !default;
$teal: #20c997 !default;
$cyan: #3498db !default;
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-200 !default;
$dark: $gray-700 !default;
$min-contrast-ratio: 2.05 !default;
// Links
$link-color: $success !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$h1-font-size: 3rem !default;
$h2-font-size: 2.5rem !default;
$h3-font-size: 2rem !default;
// Tables
$table-bg-scale: 0 !default;
// Dropdowns
$dropdown-link-color: $gray-700 !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navs
$nav-link-padding-y: .5rem !default !default;
$nav-link-padding-x: 2rem !default;
$nav-link-disabled-color: $gray-600 !default !default;
$nav-tabs-border-color: $gray-200 !default;
// Navbar
$navbar-padding-y: 1rem !default;
$navbar-dark-color: $white !default;
$navbar-dark-hover-color: $primary !default;
$navbar-dark-active-color: $primary !default;
$navbar-dark-brand-color: $white !default;
$navbar-dark-brand-hover-color: $navbar-dark-brand-color !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $success !default;
$pagination-border-width: 0 !default;
$pagination-border-color: transparent !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: darken($success, 15%) !default;
$pagination-hover-border-color: transparent !default;
$pagination-active-bg: $pagination-hover-bg !default;
$pagination-active-border-color: transparent !default;
$pagination-disabled-color: $gray-200 !default;
$pagination-disabled-bg: lighten($success, 15%) !default;
$pagination-disabled-border-color: transparent !default;
// List group
$list-group-hover-bg: $gray-200 !default;
$list-group-disabled-bg: $gray-200 !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-border-radius: .25rem !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .4 !default;
$btn-close-hover-opacity: 1 !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,63 @@
// Journal 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=News+Cycle:wght@400;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.bg-dark {
background-color: $black !important;
}
.bg-light {
color: $black;
background-color: $white !important;
border: 1px solid $gray-200;
&.navbar-fixed-top {
border-width: 0 0 1px;
}
&.navbar-fixed-bottom {
border-width: 1px 0 0;
}
}
.navbar {
font-family: $headings-font-family;
font-size: 18px;
font-weight: $headings-font-weight;
}
.navbar-brand {
padding-top: .5rem;
font-size: inherit;
font-weight: $headings-font-weight;
text-transform: uppercase;
}
// Buttons
.btn {
font-family: $headings-font-family;
font-weight: $headings-font-weight;
&-secondary,
&-warning {
color: $white;
}
}
// Navs
.pagination {
a:hover {
text-decoration: none;
}
}

View file

@ -0,0 +1,64 @@
// Journal 5.1.3
// Bootswatch
$theme: "journal" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #eee !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #aaa !default;
$gray-600: #777 !default;
$gray-700: #495057 !default;
$gray-800: #333 !default;
$gray-900: #222 !default;
$black: #000 !default;
$blue: #eb6864 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #f57a00 !default;
$orange: #fd7e14 !default;
$yellow: #f5e625 !default;
$green: #22b24c !default;
$teal: #20c997 !default;
$cyan: #369 !default;
$primary: $blue !default;
$secondary: $gray-500 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-900 !default;
$min-contrast-ratio: 1.28 !default;
// Fonts
$headings-font-family: "News Cycle", "Arial Narrow Bold", sans-serif !default;
$headings-font-weight: 700 !default;
$headings-line-height: 1.1 !default;
// Buttons
$input-btn-padding-x: 1rem !default;
// Navbar
$navbar-light-color: rgba($black, .7) !default;
$navbar-light-hover-color: $black !default;
$navbar-light-active-color: $black !default;
// Pagination
$pagination-hover-color: $white !default;
$pagination-hover-bg: $primary !default;
$pagination-hover-border-color: $primary !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,112 @@
// Litera 5.1.3
// Bootswatch
// Navbar
.navbar {
font-size: $font-size-sm;
&.bg-dark {
background-color: $success !important;
}
&.bg-light {
background-color: $white !important;
border: 1px solid rgba(0, 0, 0, .1);
&.navbar-fixed-top {
border-width: 0 0 1px;
}
&.navbar-fixed-bottom {
border-width: 1px 0 0;
}
}
}
// Typography
p {
font-family: $font-family-serif;
}
blockquote {
font-style: italic;
}
footer {
font-size: $font-size-sm;
}
.lead {
font-family: $font-family-sans-serif;
color: $gray-600;
}
// Tables
table,
.table {
font-size: $font-size-sm;
}
// Navs
.nav,
.breadcrumb,
.pagination {
font-size: $font-size-sm;
}
.dropdown-menu {
font-size: $font-size-sm;
}
// Indicators
.alert {
font-size: $font-size-sm;
color: $white;
&,
p {
font-family: $font-family-sans-serif;
}
a,
.alert-link {
font-weight: 400;
color: $white;
text-decoration: underline;
}
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient($value, mix($body-bg, $value, 15%)) repeat-x;
} @else {
background-color: $value;
}
}
}
&-light {
&,
a,
.alert-link {
color: $body-color;
}
}
}
.badge {
&.bg-light {
color: $dark;
}
}
// Containers
.list-group {
font-size: $font-size-sm;
}

View file

@ -0,0 +1,100 @@
// Litera 5.1.3
// Bootswatch
$theme: "litera" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #ddd !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #868e96 !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #4582ec !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #d9534f !default;
$orange: #fd7e14 !default;
$yellow: #f0ad4e !default;
$green: #02b875 !default;
$teal: #20c997 !default;
$cyan: #17a2b8 !default;
$primary: $blue !default;
$secondary: $gray-500 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 1.85 !default;
// Body
$body-color: $gray-800 !default;
// Fonts
// stylelint-disable value-keyword-case
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif !default;
// stylelint-enable
$font-size-base: 1.1rem !default;
$headings-font-weight: 700 !default;
// Tables
$table-border-color: rgba(0, 0, 0, .1) !default;
$table-bg-scale: 0 !default;
// Buttons
$input-btn-padding-y: .5rem !default;
$input-btn-padding-x: 1.1rem !default;
$btn-font-family: $font-family-sans-serif !default;
$btn-font-size: .875rem !default;
$btn-font-size-sm: .688rem !default;
$btn-border-radius: 1.078em !default;
$btn-border-radius-lg: 2.688em !default;
$btn-border-radius-sm: .844em !default;
// Forms
$input-border-color: rgba(0, 0, 0, .1) !default;
$input-group-addon-bg: $gray-200 !default !default;
// Navbar
$navbar-dark-color: rgba($white, .6) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-hover-color: $body-color !default;
$navbar-light-active-color: $body-color !default;
// Tooltips
$tooltip-font-size: 11px !default;
// Badges
$badge-font-weight: 400 !default;
$badge-padding-y: .6em !default;
$badge-padding-x: 1.2em !default;
// Alerts
$alert-border-width: 0 !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,322 @@
// Lumen 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Mixins
@mixin shadow($width: 4px){
border-style: solid;
border-width: 0 1px $width 1px;
}
// Navbar
.navbar {
@include shadow();
@each $color, $value in $theme-colors {
&.bg-#{$color} {
border-color: shade-color($value, 10%);
}
}
}
// Buttons
.btn {
@include shadow();
text-transform: uppercase;
&:not(.disabled):hover {
margin-top: 1px;
border-bottom-width: 3px;
}
&:not(.disabled):active {
margin-top: 2px;
border-bottom-width: 2px;
@include box-shadow(none);
}
@each $color, $value in $theme-colors {
&-#{$color} {
&:hover,
&:active,
&:focus {
background-color: $value;
}
&,
&:not(.disabled):hover,
&:not(.disabled):active,
&:focus {
border-color: shade-color($value, 10%);
}
}
}
}
[class*="btn-outline"] {
border-top-width: 1px;
}
.btn-group-vertical {
.btn + .btn {
&:hover {
margin-top: -1px;
border-top-width: 1px;
}
&:active {
margin-top: -1px;
border-top-width: 2px;
}
}
}
// Typography
.text-secondary {
color: $gray-700 !important;
}
.blockquote-footer {
color: $gray-600;
}
// Forms
.form-control {
box-shadow: inset 0 2px 0 rgba(0, 0, 0, .075);
}
// Navs
.nav {
.open > a,
.open > a:hover,
.open > a:focus {
border-color: transparent;
}
}
.nav-tabs {
.nav-link {
color: $body-color;
&,
&.disabled,
&.disabled:hover,
&.disabled:focus {
margin-top: 6px;
border-color: $nav-tabs-border-color;
transition: padding-bottom .2s ease-in-out, margin-top .2s ease-in-out, border-bottom .2s ease-in-out;
}
&:not(.disabled):hover,
&:not(.disabled):focus,
&.active {
padding-bottom: add(.5rem, 6px);
margin-top: 0;
border-bottom-color: transparent;
}
}
&.nav-justified > li {
vertical-align: bottom;
}
}
.dropdown-menu {
margin-top: 0;
@include shadow();
border-top-width: 1px;
@include box-shadow(none);
}
.breadcrumb {
border-color: shade-color($breadcrumb-bg, 10%);
@include shadow();
}
.pagination {
> li > a,
> li > span {
position: relative;
top: 0;
font-weight: 700;
color: $pagination-color;
text-transform: uppercase;
@include shadow();
&:hover,
&:focus {
top: 1px;
text-decoration: none;
border-bottom-width: 3px;
}
&:active {
top: 2px;
border-bottom-width: 2px;
}
}
> .disabled > a,
> .disabled > span {
&:hover {
top: 0;
@include shadow();
}
&:active {
top: 0;
@include shadow();
}
}
}
.pager {
> li > a,
> li > span,
> .disabled > a,
> .disabled > span {
&,
&:hover,
&:active {
border-right-width: 2px;
border-left-width: 2px;
}
}
}
// Indicators
.btn-close {
text-decoration: none;
opacity: .4;
&:hover,
&:focus {
opacity: 1;
}
}
.alert {
color: $white;
@include shadow();
&-primary {
background-color: $primary;
border-color: shade-color($primary, 10%);
}
&-secondary {
background-color: $secondary;
border-color: shade-color($secondary, 10%);
}
&-success {
background-color: $success;
border-color: shade-color($success, 10%);
}
&-info {
background-color: $info;
border-color: shade-color($info, 10%);
}
&-danger {
background-color: $danger;
border-color: shade-color($danger, 10%);
}
&-warning {
background-color: $warning;
border-color: shade-color($warning, 10%);
}
&-dark {
background-color: $dark;
border-color: shade-color($dark, 10%);
}
&-light {
background-color: $light;
border-color: shade-color($light, 10%);
}
.alert-link {
font-weight: 400;
color: $white;
text-decoration: underline;
}
&-secondary,
&-light {
&,
a,
.alert-link {
color: $body-color;
}
}
}
.badge {
&.bg-secondary,
&.bg-light {
color: $dark;
}
}
// Containers
a.list-group-item {
&-success {
&.active {
background-color: $success;
}
&.active:hover,
&.active:focus {
background-color: shade-color($success, 10%);
}
}
&-warning {
&.active {
background-color: $warning;
}
&.active:hover,
&.active:focus {
background-color: shade-color($warning, 10%);
}
}
&-danger {
&.active {
background-color: $danger;
}
&.active:hover,
&.active:focus {
background-color: shade-color($danger, 10%);
}
}
}
.modal,
.toast,
.offcanvas {
.btn-close {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
}
}

View file

@ -0,0 +1,93 @@
// Lumen 5.1.3
// Bootswatch
$theme: "lumen" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f6f6f6 !default;
$gray-200: #f0f0f0 !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #999 !default;
$gray-700: #555 !default;
$gray-800: #333 !default;
$gray-900: #222 !default;
$black: #000 !default;
$blue: #158cba !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #ff4136 !default;
$orange: #fd7e14 !default;
$yellow: #ff851b !default;
$green: #28b62c !default;
$teal: #20c997 !default;
$cyan: #75caeb !default;
$primary: $blue !default;
$secondary: $gray-200 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-700 !default;
$min-contrast-ratio: 1.75 !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
// Tables
$table-bg-scale: 0 !default;
// Buttons
$btn-font-weight: 700 !default;
// Dropdowns
$dropdown-link-color: rgba(0, 0, 0, .5) !default;
// Navs
$nav-tabs-border-color: $gray-200 !default;
$nav-tabs-link-hover-border-color: $nav-tabs-border-color !default;
$nav-tabs-link-active-color: $gray-900 !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
// Pagination
$pagination-color: $gray-700 !default;
$pagination-bg: $gray-200 !default;
$pagination-hover-color: $pagination-color !default;
$pagination-hover-bg: $pagination-bg !default;
$pagination-active-border-color: darken($primary, 5%) !default;
$pagination-disabled-color: $gray-600 !default;
$pagination-disabled-bg: $pagination-bg !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $pagination-bg !default;
$breadcrumb-border-radius: .25rem !default;
// Modals
$modal-content-border-color: rgba($black, .1) !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .4 !default;
$btn-close-hover-opacity: 1 !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,174 @@
// Lux 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.navbar {
font-size: $font-size-sm;
font-weight: 600;
text-transform: uppercase;
&-nav {
.nav-link {
padding-top: .715rem;
padding-bottom: .715rem;
}
}
&-brand {
margin-right: 2rem;
}
}
.bg-light {
border: 1px solid rgba(0, 0, 0, .1);
&.navbar-fixed-top {
border-width: 0 0 1px;
}
&.navbar-bottom-top {
border-width: 1px 0 0;
}
}
.nav-item {
margin-right: 2rem;
}
// Buttons
.btn {
font-size: $font-size-sm;
text-transform: uppercase;
&-sm {
font-size: 10px;
}
&-warning {
&,
&:hover,
&:not([disabled]):not(.disabled):active,
&:focus {
color: $white;
}
}
}
.btn-outline-secondary {
color: $gray-600;
border-color: $gray-600;
&:not([disabled]):not(.disabled):hover,
&:not([disabled]):not(.disabled):focus,
&:not([disabled]):not(.disabled):active {
color: $white;
background-color: $gray-400;
border-color: $gray-400;
}
&:not([disabled]):not(.disabled):focus {
box-shadow: 0 0 0 .2rem rgba($gray-400, .5);
}
}
[class*="btn-outline-"] {
border-width: 2px;
}
.border-secondary {
border: 1px solid $gray-400 !important;
}
// Typography
body {
font-weight: 200;
letter-spacing: 1px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-transform: uppercase;
letter-spacing: 3px;
}
.text-secondary {
color: $body-color !important;
}
// Tables
th {
font-size: $font-size-sm;
text-transform: uppercase;
}
.table {
th,
td {
padding: 1.5rem;
}
&-sm {
th,
td {
padding: .75rem;
}
}
}
// Navs
.dropdown-menu {
font-size: $font-size-sm;
text-transform: none;
}
// Indicators
.badge {
padding-top: .28rem;
&-pill {
border-radius: 10rem;
}
&.bg-secondary,
&.bg-light {
color: $dark;
}
}
// Containers
.list-group-item,
.card {
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
color: inherit;
}
}

View file

@ -0,0 +1,103 @@
// Lux 5.1.3
// Bootswatch
$theme: "lux" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #f7f7f9 !default;
$gray-300: #eceeef !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #919aa1 !default;
$gray-700: #55595c !default;
$gray-800: #343a40 !default;
$gray-900: #1a1a1a !default;
$black: #000 !default;
$blue: #007bff !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #d9534f !default;
$orange: #fd7e14 !default;
$yellow: #f0ad4e !default;
$green: #4bbf73 !default;
$teal: #20c997 !default;
$cyan: #1f9bcf !default;
$primary: $gray-900 !default;
$secondary: $white !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $white !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2.3 !default;
// Options
$enable-rounded: false !default;
// Body
$body-color: $gray-700 !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: "Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$h1-font-size: 2rem !default;
$h2-font-size: 1.75rem !default;
$h3-font-size: 1.5rem !default;
$h4-font-size: 1.25rem !default;
$h5-font-size: 1rem !default;
$h6-font-size: .75rem !default;
$headings-font-weight: 600 !default;
$headings-color: $gray-900 !default;
// Tables
$table-border-color: rgba(0, 0, 0, .05) !default;
// Buttons + Forms
$input-btn-border-width: 0 !default;
// Buttons
$btn-line-height: 1.5rem !default;
$input-btn-padding-y: .75rem !default;
$input-btn-padding-x: 1.5rem !default;
$input-btn-padding-y-sm: .5rem !default;
$input-btn-padding-x-sm: 1rem !default;
$input-btn-padding-y-lg: 2rem !default;
$input-btn-padding-x-lg: 2rem !default;
$btn-font-weight: 600 !default;
// Forms
$input-line-height: 1.5 !default;
$input-bg: $gray-200 !default;
$input-disabled-bg: $gray-300 !default;
$input-group-addon-bg: $gray-300 !default;
// Navbar
$navbar-padding-y: 1.5rem !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($black, .3) !default;
$navbar-light-hover-color: $gray-900 !default;
$navbar-light-active-color: $gray-900 !default;
// Pagination
$pagination-border-color: transparent !default;
$pagination-hover-border-color: $pagination-border-color !default;
$pagination-disabled-border-color: $pagination-border-color !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,648 @@
// Materia 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Mixins
@mixin ripple($color) {
position: relative;
&::before {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
margin-left: 0;
pointer-events: none;
content: "";
background-position: 50%;
background-size: 1000% 1000%;
border: none;
opacity: 0;
transition: background .5s, opacity 1s;
@include gradient-radial($color 10%, transparent 10.01%);
}
&:active::before {
background-size: 0 0;
opacity: .2;
transition: none;
}
&.disabled,
&[disabled] {
&::before {
display: none;
}
}
}
@mixin btn($class,$bg,$color) {
.btn-#{$class} {
&:focus {
background-color: $bg;
box-shadow: 0 0 0 2px rgba(204, 204, 204, .5);
}
&:hover,
&:active:hover {
background-color: shade-color($bg, 12%);
}
&:active {
box-shadow: 2px 2px 4px rgba(0, 0, 0, .4);
}
@include ripple($color);
}
.btn-outline-#{$class} {
@include ripple($color);
}
}
.dropdown-toggle::after,
.dropup .dropdown-toggle::after,
.dropstart .dropdown-toggle::after,
.dropend .dropdown-toggle::after {
border-width: 4px;
}
// Navbar
.navbar {
border: none;
box-shadow: 0 1px 2px rgba(0, 0, 0, .3);
&-brand {
font-size: 24px;
}
&-nav .nav-link {
padding-top: .9rem;
padding-bottom: .9rem;
}
&.bg-dark,
&.bg-primary {
input[type="search"],
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
input[type="tel"] {
color: $white;
box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .5);
&:focus {
box-shadow: inset 0 -2px 0 $white;
}
&::placeholder {
color: rgba(255, 255, 255, .5);
}
}
}
}
// Buttons
@include btn(primary, $primary, $white);
@include btn(secondary, $secondary, $gray-500);
@include btn(success, $success, $white);
@include btn(info, $info, $white);
@include btn(warning, $warning, $white);
@include btn(danger, $danger, $white);
@include btn(dark, $dark, $white);
@include btn(light, $light, $white);
.btn {
text-transform: uppercase;
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, .4);
transition: color .4s, background-color .4s, border-color .4s, box-shadow .4s;
&-link {
color: $link-color;
box-shadow: none;
&:hover,
&:focus {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
box-shadow: none;
}
&.disabled, // Although btn-link is intended for buttons, which want to look like link, I include here a.disable for the sake of consistency
&[disabled],
fieldset[disabled] & {
&:hover,
&:active:hover {
color: $btn-link-disabled-color;
text-decoration: none;
}
}
}
&-secondary {
&.disabled,
&[disabled],
fieldset[disabled] & {
color: rgba(0, 0, 0, .4);
background-color: rgba(0, 0, 0, .1);
opacity: 1;
&:hover,
&:focus {
background-color: rgba(0, 0, 0, .1);
}
}
}
&-outline-secondary {
color: $gray-300;
border-color: $gray-200;
}
&-warning {
color: $white;
}
}
.btn-group {
.btn + .btn,
.btn + .btn-group,
.btn-group + .btn,
.btn-group + .btn-group {
margin-left: 0;
}
&-vertical {
> .btn + .btn,
> .btn + .btn-group,
> .btn-group + .btn,
> .btn-group + .btn-group {
margin-top: 0;
}
}
.btn + .btn,
.btn + .btn-group > .dropdown-toggle {
box-shadow: 1px 1px 4px rgba(0, 0, 0, .4);
}
}
.border-secondary {
border: 1px solid #dfdfdf !important;
}
// Typography
body,
input,
button {
letter-spacing: .1px;
}
p {
margin: 0 0 1em;
}
.text-secondary {
color: $gray-500 !important;
}
// Tables
.table-hover {
> tbody > tr,
> tbody > tr > th,
> tbody > tr > td {
transition: background-color .2s, color .2s;
}
}
.thead-inverse th {
color: $white;
background-color: $primary;
}
// Forms
.col-form-label {
font-size: 16px;
&-sm {
font-size: $font-size-sm;
}
&-lg {
font-size: $font-size-lg;
}
}
textarea,
textarea.form-control,
input.form-control,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
[type="text"].form-control,
[type="password"].form-control,
[type="email"].form-control,
[type="tel"].form-control,
[contenteditable].form-control {
box-shadow: inset 0 -1px 0 #ddd;
transition: box-shadow .2s;
&:focus {
box-shadow: inset 0 -2px 0 $primary;
}
&[disabled],
&[readonly] {
border-bottom: 1px dotted #ddd;
box-shadow: none;
}
&[disabled],
&[disabled]::placeholder {
color: #ddd;
}
}
select,
select.form-control {
padding: .5rem 0;
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-600}' d='M8 0 4 4 0 0z'/></svg>"));
background-repeat: no-repeat;
background-position: right center;
background-size: 8px 4px;
box-shadow: inset 0 -1px 0 #ddd;
appearance: none;
&.input {
&-sm {
font-size: $font-size-sm;
}
&-lg {
font-size: $font-size-lg;
}
}
&:focus {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-900}' d='M8 0 4 4 0 0z'/></svg>"));
box-shadow: inset 0 -2px 0 $primary;
}
&[multiple] {
background: none;
}
}
.form-check-input {
width: 1.25em;
height: 1.25em;
margin-top: 1px;
border: 2px solid $gray-400;
&:checked[type="radio"] {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$blue}' stroke='#{$white}'/></svg>")), var(--bs-gradient);
background-size: 1.8em;
}
}
.form-switch {
.form-check-input {
position: relative;
height: .8em;
margin-top: .29em;
background-color: $gray-400;
background-image: none;
border: none;
&:focus {
box-shadow: none;
}
&::before {
position: absolute;
top: -.2em;
left: -.2em;
width: 1.2em;
height: 1.2em;
content: "";
background-color: $white;
border-radius: 50%;
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
transition: left .15s ease-in-out;
}
&::after {
position: absolute;
top: -.2em;
left: -.2em;
z-index: -1;
width: 1.2em;
height: 1.2em;
content: "";
border-radius: 50%;
box-shadow: 0 0 0 9px rgba(0, 0, 0, .05);
transition: left .15s ease-in-out, transform .15s ease-in-out, box-shadow .15s ease-in-out;
transform: scale(0);
}
&:hover:not(.disabled),
&:focus:not(.disabled) {
&::after {
transform: scale(.9);
}
}
&:focus:not(.disabled) {
&::after {
box-shadow: 0 0 0 9px rgba(0, 0, 0, .1);
}
}
&:checked {
background-color: rgba(33, 150, 243, .3);
&::before {
left: calc(100% - .8em);
background-color: rgba(33, 150, 243, 1);
}
&::after {
left: calc(100% - .8em);
box-shadow: 0 0 0 9px rgba(33, 150, 243, .1);
}
&:hover:not(.disabled),
&:focus:not(.disabled) {
&::after {
transform: scale(.9);
}
}
&:focus:not(.disabled) {
&::after {
box-shadow: 0 0 0 9px rgba(33, 150, 243, .2);
}
}
}
}
}
.form-check:not(.form-switch) {
.form-check-input {
&:checked[type="checkbox"] {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$white}' stroke-width='2' d='m6 10 3 3 6-6'/></svg>")), var(--bs-gradient);
background-size: 1.6em;
}
}
}
.has-warning {
input:not([type="checkbox"]),
.form-control,
input.form-control[readonly],
input[type="text"][readonly],
[type="text"].form-control[readonly],
input:not([type="checkbox"]):focus,
.form-control:focus {
border-bottom: none;
box-shadow: inset 0 -2px 0 $warning;
}
}
.has-danger {
input:not([type="checkbox"]),
.form-control,
input.form-control[readonly],
input[type="text"][readonly],
[type="text"].form-control[readonly],
input:not([type="checkbox"]):focus,
.form-control:focus {
border-bottom: none;
box-shadow: inset 0 -2px 0 $danger;
}
}
.has-success {
input:not([type="checkbox"]),
.form-control,
input.form-control[readonly],
input[type="text"][readonly],
[type="text"].form-control[readonly],
input:not([type="checkbox"]):focus,
.form-control:focus {
border-bottom: none;
box-shadow: inset 0 -2px 0 $success;
}
}
// Remove the Bootstrap feedback styles for input addons
.input-group-addon {
.has-warning &,
.has-danger &,
.has-success & {
color: $input-color;
background-color: $input-group-addon-bg;
border-color: $input-group-addon-border-color;
}
}
.form-group-lg {
select,
select.form-control {
line-height: 1.5;
}
}
// Navs
.nav-tabs {
.nav-item + .nav-item {
margin-left: 0;
}
.nav-link,
.nav-link:focus {
margin-right: 0;
color: $body-color;
background-color: transparent;
border: none;
box-shadow: inset 0 -1px 0 #ddd;
transition: color .2s, box-shadow .2s;
&:hover {
color: $primary;
background-color: transparent;
box-shadow: inset 0 -2px 0 $primary;
}
}
.nav-link.active,
.nav-link.active:focus {
color: $primary;
border: none;
box-shadow: inset 0 -2px 0 $primary;
&:hover {
color: $primary;
border: none;
}
}
.nav-link.disabled {
box-shadow: inset 0 -1px 0 #ddd;
}
&.nav-justified {
.nav-link,
.nav-link:hover,
.nav-link:focus,
.nav-link.active,
.nav-link.active:hover,
.nav-link.active:focus {
border: none;
}
}
.dropdown-menu {
margin-top: 0;
}
}
.dropdown-menu {
margin-top: 0;
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
}
// Indicators
.alert {
padding-right: 2.5rem;
border: none;
&,
h1,
h2,
h3,
h4,
h5,
h6 {
color: $white;
}
@each $color, $value in $theme-colors {
&-#{$color} {
@if $enable-gradients {
background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
} @else {
background-color: $value;
}
}
}
a:not(.btn),
.alert-link {
font-weight: 700;
color: $white;
}
&-secondary,
&-light {
&,
a:not(.btn),
.alert-link {
color: $body-color;
}
}
}
.badge {
&.bg-secondary,
&.bg-light {
color: $dark;
}
}
.tag {
padding: 4px 6px;
}
// Containers
.card {
box-shadow: 0 1px 4px rgba(0, 0, 0, .4);
&.border-primary,
&.border-secondary,
&.border-success,
&.border-info,
&.border-warning,
&.border-danger,
&.border-light,
&.border-dark {
border-width: 1px;
}
}
.list-group {
&-item-action.active {
h1,
h2,
h3,
h4,
h5,
h6 {
color: $white;
}
}
}
.modal-content {
border-radius: .2rem;
box-shadow: 0 6px 36px rgba(0, 0, 0, .3);
}
.modal,
.toast,
.offcanvas {
.btn-close {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
}
}
.popover {
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
}
.carousel {
&-caption {
h1,
h2,
h3,
h4,
h5,
h6 {
color: inherit;
}
}
}

View file

@ -0,0 +1,114 @@
// Materia 5.1.3
// Bootswatch
$theme: "materia" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #eee !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #bbb !default;
$gray-600: #666 !default;
$gray-700: #444 !default;
$gray-800: #222 !default;
$gray-900: #212121 !default;
$black: #000 !default;
$blue: #2196f3 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #e51c23 !default;
$orange: #fd7e14 !default;
$yellow: #ff9800 !default;
$green: #4caf50 !default;
$teal: #20c997 !default;
$cyan: #9c27b0 !default;
$primary: $blue !default;
$secondary: $white !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2.15 !default;
$enable-gradients: true !default;
// Body
$body-color: $gray-700 !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
$font-size-base: 1rem !default;
$font-weight-base: 400 !default;
// Buttons
$input-btn-padding-y: .8rem !default;
$input-btn-padding-x: 1rem !default;
// Forms
$input-padding-y: 1rem !default;
$input-padding-x: 0 !default;
$input-padding-y-sm: 0 !default;
$input-padding-x-sm: 0 !default;
$input-padding-y-lg: ($font-size-base * 1.25) !default;
$input-padding-x-lg: 0 !default;
$input-bg: transparent !default;
$input-disabled-bg: transparent !default;
$input-color: $gray-600 !default;
$input-border-color: transparent !default;
$input-border-width: 0 !default;
$input-border-radius: 0 !default;
$input-border-radius-lg: 0 !default;
$input-border-radius-sm: 0 !default;
$input-placeholder-color: rgba(0, 0, 0, .4) !default;
$input-group-addon-bg: transparent !default;
// Navs
$nav-link-disabled-color: $gray-500 !default;
$nav-tabs-border-color: transparent !default;
// Navbar
$navbar-padding-y: 1rem !default;
$navbar-dark-color: rgba($white, .75) !default;
$navbar-dark-hover-color: $white !default;
// Cards
$card-border-width: 0 !default;
$card-border-color: transparent !default;
// Tooltips
$tooltip-bg: $gray-700 !default;
// Modals
$modal-content-border-color: transparent !default;
// Progress bars
$progress-height: .375rem !default;
$progress-border-radius: 0 !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .6 !default;
$btn-close-hover-opacity: 1 !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,144 @@
// Minty 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.navbar {
font-family: $headings-font-family;
}
.bg-dark {
background-color: $secondary !important;
}
.border-dark {
border-color: $secondary !important;
}
// Buttons
.btn {
font-family: $headings-font-family;
&,
&:hover {
color: $white;
}
&-light,
&-light:hover {
color: $gray-700;
}
&-link,
&-link:hover {
color: $primary;
}
&-link.disabled:hover {
color: $gray-600;
}
&-outline-primary {
color: $primary;
}
&-outline-secondary {
color: $secondary;
}
&-outline-success {
color: $success;
}
&-outline-info {
color: $info;
}
&-outline-warning {
color: $warning;
}
&-outline-danger {
color: $danger;
}
&-outline-dark {
color: $dark;
}
&-outline-light {
color: $light;
}
}
// Forms
legend {
font-family: $headings-font-family;
}
// Navs
.dropdown-menu {
font-family: $font-family-sans-serif;
}
.breadcrumb {
a {
color: $navbar-dark-color;
}
a:hover {
color: $white;
text-decoration: none;
}
}
// Indicators
.alert {
a,
.alert-link {
color: $white;
}
&-light {
&,
a:not(.btn),
.alert-link {
color: $body-color;
}
}
}
.badge {
color: $white;
&.bg-light {
color: $gray-700;
}
}
// Containers
.card,
.list-group-item {
h1,
h2,
h3,
h4,
h5,
h6 {
color: inherit;
}
}

View file

@ -0,0 +1,106 @@
// Minty 5.1.3
// Bootswatch
$theme: "minty" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #f7f7f9 !default;
$gray-300: #eceeef !default;
$gray-400: #ced4da !default;
$gray-500: #aaa !default;
$gray-600: #888 !default;
$gray-700: #5a5a5a !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #007bff !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #ff7851 !default;
$orange: #fd7e14 !default;
$yellow: #ffce67 !default;
$green: #56cc9d !default;
$teal: #20c997 !default;
$cyan: #6cc3d5 !default;
$primary: #78c2ad !default;
$secondary: #f3969a !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 1.45 !default;
// Body
$body-color: $gray-600 !default;
// Components
$border-radius: .4rem !default;
$border-radius-lg: .6rem !default;
$border-radius-sm: .3rem !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$headings-font-family: Montserrat, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
$headings-color: $gray-700 !default;
// Tables
$table-border-color: rgba(0, 0, 0, .05) !default;
$table-bg-scale: 0 !default;
// Dropdowns
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $secondary !default;
// Navbar
$navbar-dark-color: rgba($white, .6) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($black, .3) !default;
$navbar-light-hover-color: $gray-700 !default;
$navbar-light-active-color: $gray-700 !default;
$navbar-light-disabled-color: rgba($black, .1) !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $primary !default;
$pagination-border-color: $primary !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: $secondary !default;
$pagination-hover-border-color: $pagination-hover-bg !default;
$pagination-active-bg: $secondary !default;
$pagination-active-border-color: $pagination-active-bg !default;
$pagination-disabled-color: $white !default;
$pagination-disabled-bg: #cce8e0 !default;
$pagination-disabled-border-color: $pagination-disabled-bg !default;
// Alerts
$alert-color-scale: 0% !default;
$alert-bg-scale: 0 !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $primary !default;
$breadcrumb-divider-color: $white !default;
$breadcrumb-active-color: $breadcrumb-divider-color !default;
$breadcrumb-border-radius: .25rem !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,458 @@
// Morph 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
$btn-box-shadow-inset: inset 2px 3px 6px rgba($black, .2), inset -3px -2px 6px rgba($white, .2) !default;
@mixin shadow($shadow: $box-shadow) {
background-color: $gray-200;
border: none;
box-shadow: $shadow;
transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
}
@mixin shadow-outline($shadow: $box-shadow) {
position: absolute;
top: -.5rem;
right: -.5rem;
bottom: -.5rem;
left: -.5rem;
z-index: -1;
content: "";
background-color: $body-bg;
border: 1px solid rgba($white, .1);
box-shadow: $shadow;
transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
}
// Buttons
.btn {
position: relative;
color: $gray-700;
border-radius: $btn-border-radius;
@include shadow();
&:focus {
color: $gray-700;
}
&:hover,
&:focus,
&:active,
&:active:focus {
@include shadow();
color: $gray-700;
}
&:active,
&:active:focus {
border-color: transparent;
box-shadow: $btn-box-shadow-inset;
}
@each $color, $value in $theme-colors {
&-#{$color} {
&:active,
&:active:focus {
@if ($color == secondary or $color == light) {
color: $gray-700;
background-color: $gray-200;
} @else {
color: $white;
background-color: $value;
}
}
}
}
&-link {
font-weight: $btn-font-weight;
&:hover,
&:active,
&:active:focus {
color: $dark;
}
}
&.disabled {
color: $gray-700;
background-color: $gray-200;
box-shadow: 2px 2px 5px rgba($black, .1), -2px -2px 5px rgba($white, .5);
}
}
.btn-outline {
@each $color, $value in $theme-colors {
&-#{$color} {
background-color: $value;
border: none;
box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
@if ($color == secondary or $color == light) {
color: $gray-700;
} @else {
color: $white;
}
&:hover,
&:focus {
background-color: $value;
border: none;
box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
@if ($color == secondary or $color == light) {
color: $gray-700;
} @else {
color: $white;
}
}
&:active,
&:active:focus {
background-color: $value;
border: none;
box-shadow: inset 2px 3px 6px rgba($black, .1), inset -3px -2px 6px rgba($white, .1);
@if ($color == secondary or $color == light) {
color: $gray-700;
} @else {
color: $white;
}
}
}
}
}
.btn-group,
.btn-group-vertical {
@include shadow();
border: none;
border-radius: $btn-border-radius;
.btn,
.btn-group {
margin: 0;
border: none;
box-shadow: none;
&:hover,
&:active,
&:focus,
&:active:focus {
border: none;
}
}
}
.btn-group {
> .btn:nth-child(n + 3),
> :not(.btn-check) + .btn,
> .btn-group:not(:first-child) > .btn {
border-left: 1px solid $border-color;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&:hover,
&:active,
&:active:focus {
border-left: 1px solid $border-color;
}
}
> .btn:not(:last-child):not(.dropdown-toggle),
> .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
}
.btn-group-vertical {
border-radius: 1rem;
.btn {
border-radius: 1rem;
&:hover,
&:active,
&:focus,
&:active:focus {
border-radius: 1rem;
}
}
> .btn:nth-child(n + 3),
> :not(.btn-check) + .btn,
> .btn-group:not(:first-child) > .btn {
border-top: 1px solid rgba($black, .05);
border-top-left-radius: 0;
border-top-right-radius: 0;
&:hover,
&:active,
&:active:focus {
border-top: 1px solid rgba($black, .05);
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
> .btn:not(:last-child):not(.dropdown-toggle),
> .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
&:hover,
&:active,
&:active:focus {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
}
}
.btn-check:checked + .btn,
.btn-check:active + .btn {
box-shadow: inset 2px 3px 6px rgba($black, .2);
@each $color, $value in $theme-colors {
&-#{$color} {
background-color: $value;
.btn-check:checked + &,
.btn-check:active + & {
@if $color == secondary {
color: $gray-700;
} @else {
color: $value;
}
}
}
}
}
.btn-check:not(:checked) + .btn,
.btn-check:not(:checked) + .btn:active {
color: $gray-700;
background-color: $gray-200;
}
.btn-check:checked ~ .btn-check:active + .btn,
.btn-check:checked ~ .btn-check:checked + .btn {
box-shadow: inset 0 3px 6px rgba($black, .2);
}
// Navs
.dropdown-menu {
backdrop-filter: blur(3px);
}
.nav-tabs {
@include shadow();
border-radius: $border-radius;
.nav-item {
box-shadow: 1px 0 $border-color;
&:first-child .nav-link {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
&:last-child .nav-link {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
}
.nav-link.active,
.nav-item.show .nav-link {
box-shadow: inset 0 3px 6px rgba($black, .2);
}
}
.nav-pills {
@include shadow();
padding: 1rem;
border-radius: $border-radius;
.nav-link.active {
box-shadow: inset 0 3px 6px rgba($black, .2);
}
}
.breadcrumb {
@include shadow();
border-radius: $border-radius;
}
.pagination {
@include shadow();
justify-content: center;
border-radius: $border-radius;
}
// Forms
.input-group {
background-color: $gray-100;
border-radius: $border-radius;
box-shadow: $box-shadow-inset;
> .form-control {
padding-right: 0;
padding-left: 0;
background: none;
box-shadow: none;
}
.input-group-text {
background: none;
}
}
.form-range {
&::-webkit-slider-runnable-track {
box-shadow: inset 1px 1px 4px rgba($black, .15);
}
&::-webkit-slider-thumb,
&:focus::-webkit-slider-thumb {
box-shadow: 1px 1px 3px rgba($black, .2), inset 2px 2px 8px rgba(shade-color($form-range-thumb-bg, 50%), .1);
}
}
.form-check-input {
background-color: $gray-400;
border: none;
box-shadow: inset 1px 1px 7px rgba($black, .2);
&:focus {
border: none;
box-shadow: none;
}
&:active {
filter: none;
}
&:checked {
background-color: $primary;
box-shadow: inset 1px 1px 7px rgba($black, .2);
}
}
.form-control {
&::file-selector-button {
box-shadow: 2px 2px 5px rgba($black, .2), inset 3px 3px 10px rgba(shade-color($form-range-thumb-bg, 50%), .1);
}
}
.form-select:not([multiple]) {
position: relative;
box-shadow: $box-shadow;
}
// Indicators
.alert {
box-shadow: $dropdown-box-shadow;
backdrop-filter: blur(3px);
@each $color, $value in $theme-colors {
&-#{$color} {
background-color: rgba($value, .75);
box-shadow: $box-shadow-lg, inset 1px 1px 3px rgba(tint-color($value, 80%), .4), inset -5px -5px 20px rgba(shade-color($value, 80%), .05);
}
}
}
.badge {
&.bg-secondary,
&.bg-light {
color: $gray-700;
}
}
.tooltip {
&.show {
opacity: 1;
}
&-inner,
.arrow {
box-shadow: $dropdown-box-shadow;
backdrop-filter: blur(3px);
}
}
.popover,
.toast,
.modal-content {
box-shadow: $dropdown-box-shadow;
backdrop-filter: blur(3px);
}
.progress {
box-shadow: inset 2px 4px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 5px rgba($white, .8);
}
.progress-bar {
box-shadow: 2px 2px 5px rgba($black, .2);
&:first-child {
border-top-left-radius: $border-radius-pill;
border-bottom-left-radius: $border-radius-pill;
}
&:last-child {
border-top-right-radius: $border-radius-pill;
border-bottom-right-radius: $border-radius-pill;
}
}
// Containers
.card {
box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
@each $color, $value in $theme-colors {
&-#{$color} {
box-shadow: inset 2px 2px 6px rgba(shade-color($value, 80%), .05), inset -3px -2px 4px rgba(tint-color($value, 80%), .2);
}
}
&-header {
border-bottom: 1px solid $border-color;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: inherit;
}
}
.list-group {
background-color: $card-bg;
box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
}
.list-group-item {
background-color: transparent;
}

View file

@ -0,0 +1,228 @@
// Morph 5.1.3
// Bootswatch
$theme: "morph" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f0f5fa !default;
$gray-200: #d9e3f1 !default;
$gray-300: #dee2e6 !default;
$gray-400: #bed1e6 !default;
$gray-500: #adb5bd !default;
$gray-600: #7f8a99 !default;
$gray-700: #7b8ab8 !default;
$gray-800: #444b40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #378dfc !default;
$indigo: #6610f2 !default;
$purple: #5b62f4 !default;
$pink: #d63384 !default;
$red: #e52527 !default;
$orange: #fd7e14 !default;
$yellow: #ffc107 !default;
$green: #43cc29 !default;
$teal: #20c997 !default;
$cyan: #0dcaf0 !default;
$primary: $blue !default;
$secondary: $gray-200 !default;
$success: $green !default;
$info: $purple !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-900 !default;
$min-contrast-ratio: 1.5 !default;
$enable-shadows: true !default;
// Body
$body-bg: $gray-200 !default;
$body-color: $gray-700 !default;
// Links
$link-color: darken($body-color, 20%) !default;
// Components
$border-width: 0 !default;
$border-color: rgba(darken($body-bg, 50%), .1) !default;
$border-radius-pill: 50rem !default;
$box-shadow: 5px 5px 10px rgba(darken($body-bg, 50%), .2), -5px -5px 10px rgba($white, .4) !default;
$box-shadow-sm: 0 .125rem .25rem rgba(darken($body-bg, 50%), .2) !default;
$box-shadow-lg: 8px 8px 40px rgba(darken($body-bg, 90%), .15) !default;
$box-shadow-inset: inset 2px 2px 8px rgba(darken($body-bg, 50%), .3), inset -3px -2px 5px rgba($white, .8) !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-color: $link-color !default;
$text-muted: lighten($body-color, 15%) !default;
// Buttons + Forms
$input-btn-padding-y: 1rem !default;
$input-btn-padding-x: 1.5rem !default;
// Buttons
$btn-font-weight: 600 !default;
$btn-padding-y-lg: 1.5rem !default;
$btn-padding-x-lg: 2.25rem !default;
$btn-box-shadow: $box-shadow !default;
$btn-border-radius: $border-radius-pill !default;
$btn-border-radius-sm: $border-radius-pill !default;
$btn-border-radius-lg: $border-radius-pill !default;
// Forms
$form-label-font-weight: $btn-font-weight !default;
$input-bg: $gray-100 !default;
$input-placeholder-color: $text-muted !default;
$form-switch-color: $white !default;
$form-switch-focus-color: $form-switch-color !default;
$form-select-indicator-color: $body-color !default;
$form-select-box-shadow: $box-shadow-inset !default;
$form-range-track-bg: rgba(darken($body-bg, 50%), .15) !default;
$form-range-thumb-bg: $gray-100 !default;
$form-range-thumb-active-bg: $form-range-thumb-bg !default;
$form-range-thumb-disabled-bg: $gray-200 !default;
$form-file-button-bg: $gray-100 !default;
// Navs
$nav-link-color: $body-color !default;
$nav-link-hover-color: $nav-link-color !default;
$nav-link-disabled-color: $text-muted !default;
$nav-tabs-border-radius: 0 !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-bg: $primary !default;
// Navbar
$navbar-dark-color: rgba($white, .75) !default;
$navbar-dark-hover-color: $white !default;
$navbar-dark-active-color: $navbar-dark-hover-color !default;
$navbar-dark-disabled-color: rgba($white, .25) !default;
$navbar-light-color: $body-color !default;
$navbar-light-hover-color: $link-color !default;
$navbar-light-active-color: $navbar-light-hover-color !default;
$navbar-light-disabled-color: $text-muted !default;
// Dropdowns
$dropdown-bg: rgba($gray-100, .8) !default;
$dropdown-border-color: transparent !default;
$dropdown-box-shadow: $box-shadow-lg, inset 1px 1px 3px rgba($white, .5), inset -5px -5px 20px rgba($black, .05) !default;
$dropdown-link-color: $gray-700 !default;
$dropdown-link-hover-color: $gray-800 !default;
$dropdown-link-hover-bg: transparent !default;
// Pagination
$pagination-padding-y: 1rem !default;
$pagination-padding-x: .75rem !default;
$pagination-padding-y-sm: .5rem !default;
$pagination-padding-y-lg: 1.5rem !default;
$pagination-color: $gray-700 !default;
$pagination-bg: $body-bg !default;
$pagination-active-color: darken($pagination-color, 20%) !default;
$pagination-active-bg: transparent !default;
$pagination-disabled-color: $text-muted !default;
$pagination-disabled-bg: $pagination-bg !default;
// Cards
$card-spacer-y: 1.5rem !default;
$card-spacer-x: 1.5rem !default;
$card-cap-bg: transparent !default;
$card-bg: lighten($body-bg, 3%) !default;
// Tooltips
$tooltip-color: $body-color !default;
$tooltip-bg: $dropdown-bg !default;
// Popovers
$popover-bg: $dropdown-bg !default;
$popover-header-bg: transparent !default;
// Toasts
$toast-background-color: $dropdown-bg !default;
$toast-border-width: 0 !default;
$toast-header-color: $body-color !default;
$toast-header-background-color: transparent !default;
// Badges
$badge-padding-y: .75em !default;
$badge-padding-x: 1.25em !default;
// Modals
$modal-content-bg: $dropdown-bg !default;
// Progress bars
$progress-height: 1.5rem !default;
$progress-border-radius: $border-radius-pill !default;
// List groups
$list-group-bg: $card-bg !default;
$list-group-hover-bg: transparent !default;
$list-group-active-color: $link-color !default;
$list-group-active-bg: transparent !default;
$list-group-disabled-color: $text-muted !default;
$list-group-disabled-bg: transparent !default;
$list-group-action-active-color: $link-color !default;
$list-group-action-active-bg: transparent !default;
// Breadcrumbs
$breadcrumb-padding-y: $pagination-padding-y !default;
$breadcrumb-padding-x: $pagination-padding-x !default;
$breadcrumb-divider-color: $text-muted !default;
$breadcrumb-active-color: $link-color !default;
// Close
$btn-close-color: $headings-color !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,142 @@
// Pulse 5.1.3
// Bootswatch
// Buttons
.btn {
&:focus,
&:active,
&:active:focus,
&.active:focus {
outline: none;
}
&-secondary {
color: $gray-900;
background-color: $white;
border-color: #ccc;
&:hover {
color: $gray-900;
background-color: $gray-300;
border-color: $gray-500;
}
&.disabled {
color: tint-color($gray-900, 5%);
background-color: $white;
border-color: tint-color(#ccc, 5%);
}
}
&-warning {
color: $white;
}
&-primary:focus {
box-shadow: 0 0 5px tint-color($primary, 10%);
}
&-secondary:focus {
box-shadow: 0 0 5px $gray-400;
}
&-success:focus {
box-shadow: 0 0 5px tint-color($success, 10%);
}
&-info:focus {
box-shadow: 0 0 5px tint-color($info, 10%);
}
&-warning:focus {
box-shadow: 0 0 5px tint-color($warning, 10%);
}
&-danger:focus {
box-shadow: 0 0 5px tint-color($danger, 10%);
}
&.disabled:focus {
box-shadow: none;
}
}
// Tables
.table .thead-dark th {
background-color: $secondary;
border-color: $table-border-color;
}
// Forms
.form-control:focus {
box-shadow: 0 0 5px rgba(100, 65, 164, .4);
}
// Navs
.nav-tabs {
.nav-link,
.nav-link.active, {
border-width: 0 0 1px;
}
.nav-link:hover,
.nav-link.active,
.nav-link.active:hover,
.nav-link.active:focus {
border-bottom: 1px solid $primary;
}
.nav-item + .nav-item {
margin-left: 0;
}
}
.breadcrumb {
&-item.active {
color: $gray-700;
}
}
// Indicators
.badge {
&.bg-light {
color: $dark;
}
}
// Progress bars
.progress {
height: 8px;
}
// Containers
.list-group {
&-item {
color: rgba(255, 255, 255, .8);
&.active,
&:hover,
&:focus {
color: $white;
}
&.active {
font-weight: 700;
&:hover {
background-color: $list-group-hover-bg;
}
}
&.disabled:hover {
color: $list-group-disabled-color;
}
}
}

View file

@ -0,0 +1,96 @@
// Pulse 5.1.3
// Bootswatch
$theme: "pulse" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #fafafa !default;
$gray-200: #f9f8fc !default;
$gray-300: #ededed !default;
$gray-400: #cbc8d0 !default;
$gray-500: #adb5bd !default;
$gray-600: #868e96 !default;
$gray-700: #444 !default;
$gray-800: #343a40 !default;
$gray-900: #17141f !default;
$black: #000 !default;
$blue: #007bff !default;
$indigo: #6610f2 !default;
$purple: #593196 !default;
$pink: #e83e8c !default;
$red: #fc3939 !default;
$orange: #fd7e14 !default;
$yellow: #efa31d !default;
$green: #13b955 !default;
$teal: #20c997 !default;
$cyan: #009cdc !default;
$primary: $purple !default;
$secondary: #a991d4 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-200 !default;
$dark: $gray-900 !default;
$min-contrast-ratio: 2.1 !default;
// Options
$enable-rounded: false !default;
// Body
$body-color: $gray-700 !default;
// Links
$link-hover-color: $primary !default;
// Tables
$table-border-color: rgba(0, 0, 0, .05) !default;
// Forms
$input-focus-border-color: $primary !default;
// Dropdowns
$dropdown-link-color: $gray-700 !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navs
$nav-tabs-border-color: $gray-300 !default;
$nav-tabs-link-hover-border-color: $primary !default;
// Navbar
$navbar-padding-y: 1.2rem !default;
$navbar-dark-hover-color: rgba($white, .9) !default;
$navbar-dark-active-color: rgba($white, .9) !default;
$navbar-light-color: rgba($black, .4) !default;
$navbar-light-active-color: rgba($black, .7) !default;
$navbar-light-disabled-color: rgba($black, .2) !default;
// Progress bars
$progress-bg: $gray-300 !default;
$progress-bar-bg: $primary !default;
// List group
$list-group-bg: $gray-900 !default;
$list-group-border-color: transparent !default;
$list-group-hover-bg: lighten($list-group-bg, 10%) !default;
$list-group-active-color: $white !default;
$list-group-active-bg: $list-group-bg !default;
$list-group-disabled-color: lighten($list-group-bg, 30%) !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,285 @@
// Quartz 5.1.3
// Bootswatch
// Variables
$body-bg-image: linear-gradient(90deg, shade-color($cyan, 10%), shade-color($purple, 10%), shade-color($pink, 5%)) !default;
$frosted-opacity: .3 !default;
@mixin glass($opacity: $frosted-opacity, $bg: $white) {
border: none;
box-shadow: inset 1px 1px $border-color, inset -1px -1px rgba($white, .1), $box-shadow;
@include frost($opacity, $bg);
a {
color: $card-color;
}
.text-muted {
color: rgba($card-color, .7) !important;
}
}
@mixin frost($opacity: $frosted-opacity, $bg: $white) {
background-color: transparent;
background-image: linear-gradient(125deg, rgba($bg, ($opacity)), rgba($bg, ($opacity - .1)) 70%);
backdrop-filter: blur(5px);
}
// Body
body {
background-image: $body-bg-image;
}
// Tables
.table-secondary {
--bs-table-hover-color: $white;
}
// Buttons
.btn {
&-secondary {
color: $white;
border: none;
&:hover,
&:focus {
color: $white;
}
&.disabled {
color: $white;
}
}
}
.btn-group > .btn:not(:first-child),
.btn-group > .btn-group:not(:first-child) {
margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) {
margin-top: 0;
}
.bg-light .btn {
background-color: rgba($black, .2);
}
// Forms
.input-group-text,
.form-control::file-selector-button {
background-color: transparent;
background-image: linear-gradient(125deg, rgba($white, .3), rgba($white, .2) 70%);
border: none;
backdrop-filter: blur(5px);
}
.input-group-text {
box-shadow: inset 1px 1px $border-color, inset -1px -1px rgba($white, .1);
}
.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
margin-left: 0;
border-left: none;
}
.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3) {
border-right: none;
}
.form-select:not([multiple]) {
transition: border-color .15s ease-in-out;
option {
color: $black;
}
}
.bg-light .form-control {
color: $gray-800;
border-color: rgba($black, .2);
&::placeholder {
color: rgba($black, .2);
}
}
// Navs
.dropdown-menu {
@include glass(.3);
}
.nav-tabs {
.nav-link {
transition: none;
&:hover,
&:focus {
color: $white;
isolation: auto;
}
&,
&.disabled {
background-color: $progress-bg;
}
}
.nav-item:first-child > .nav-link {
border-radius: $border-radius 0 0 $border-radius;
}
.nav-item:last-child > .nav-link {
border-radius: 0 $border-radius $border-radius 0;
}
.nav-item .nav-link.active,
.nav-item.show .nav-link {
@include glass(1, $white);
border-radius: $border-radius;
transform: scale(1.1);
&:hover,
&:focus {
color: $gray-800;
}
}
.dropdown-menu {
border-radius: $border-radius;
}
}
.nav-pills {
.nav-link {
transition: none;
&:hover,
&:focus {
color: $white;
isolation: auto;
}
}
}
// Indicators
.alert {
@include glass();
position: relative;
overflow: hidden;
color: $white;
@each $color, $value in $theme-colors {
$opacity: .7;
&-#{$color}::after {
position: absolute;
top: 0;
left: 0;
width: .5rem;
height: 100%;
content: "";
background-color: $value;
}
}
.alert-link {
color: $card-color;
}
}
.badge {
&.bg-secondary {
--bs-bg-opacity: .4;
}
&.bg-light {
color: $gray-800;
}
}
// Containers
.list-group {
@include glass();
}
.card {
@include glass();
@each $color, $value in $theme-colors {
@if ($color == secondary) {
--bs-secondary-rgb: transparent;
} @else {
&.bg-#{$color} {
background-image: none;
}
}
}
&.bg-light {
.card-header,
.card-body {
color: $gray-800;
}
}
&.border {
@each $color, $value in $theme-colors {
&-#{$color} {
@include glass();
.card-header {
background-color: $value !important;
border-bottom: none;
@if ($color == light) {
color: $gray-800;
}
}
}
}
}
&-header {
font-weight: $headings-font-weight;
}
}
.accordion-item {
@include glass();
box-shadow: none;
}
.toast {
@include glass();
}
.popover {
@include glass();
&-header {
border-bottom-color: $border-color;
}
}
.tooltip {
backdrop-filter: blur(5px);
}
.modal-content {
@include glass();
}
.offcanvas {
@include glass();
}

View file

@ -0,0 +1,229 @@
// Quartz 5.1.3
// Bootswatch
$theme: "quartz" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9e9e8 !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #6c757d !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #3a8fd9 !default;
$indigo: #6610f2 !default;
$purple: #686dc3 !default;
$pink: #e83283 !default;
$red: #fc346f !default;
$orange: #fd7e14 !default;
$yellow: #ffc107 !default;
$green: #41d7a7 !default;
$teal: #528fb3 !default;
$cyan: #39cbfb !default;
$primary: $pink !default;
$secondary: rgba($white, .4) !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $orange !default;
$light: $gray-200 !default;
$dark: $gray-900 !default;
$min-contrast-ratio: 1.5 !default;
// Spacing
$spacer: 2rem !default;
// Body
$body-bg: $purple !default;
$body-color: $white !default;
// Links
$link-color: $white !default;
// Components
$border-color: rgba($white, .2) !default;
$border-radius: .5rem !default;
$border-radius-sm: .6rem !default;
$border-radius-lg: .7rem !default;
$border-radius-pill: 50rem !default;
$box-shadow: 1px 3px 24px -1px rgba($black, .15) !default;
$box-shadow-sm: 0 1px 1px rgba($black, .1) !default;
// Fonts
$headings-font-weight: 700 !default;
$text-muted: rgba($white, .7) !default;
$blockquote-footer-color: $text-muted !default;
// Tables
$table-dark-bg: $dark !default;
$table-dark-border-color: darken($dark, 5%) !default;
$table-bg-scale: 0 !default;
// Buttons + Forms
$input-btn-padding-y: .75rem !default;
$input-btn-padding-x: 1.5rem !default;
// Buttons
$btn-box-shadow: $box-shadow !default;
// Forms
$input-bg: transparent !default;
$input-disabled-bg: rgba($white, .1) !default;
$input-border-color: rgba($white, .4) !default;
$input-border-width: 1px !default;
$input-focus-border-color: $input-border-color !default;
$input-focus-box-shadow: none !default;
$input-placeholder-color: $text-muted !default;
$form-switch-color: $white !default;
$form-switch-focus-color: $form-switch-color !default;
$input-group-addon-bg: transparent !default;
$form-check-input-bg: rgba($white, .3) !default;
$form-check-input-border: 1px solid $border-color !default;
$form-select-indicator-color: $white !default;
$form-select-focus-box-shadow: none !default;
$form-range-track-bg: rgba($black, .2) !default;
$form-range-thumb-disabled-bg: $gray-500 !default;
// Navs
$nav-link-disabled-color: $text-muted !default;
$nav-tabs-border-width: 0 !default;
$nav-tabs-border-radius: 0 !default;
$nav-tabs-link-active-color: $gray-800 !default;
$nav-tabs-link-active-bg: $white !default;
$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
$nav-pills-border-radius: $border-radius-pill !default;
$nav-pills-link-active-color: $white !default;
$nav-pills-link-active-bg: $primary !default;
// Navbars
$navbar-dark-color: rgba($white, .8) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($gray-800, .8) !default;
$navbar-light-hover-color: $gray-800 !default;
$navbar-light-active-color: $gray-800 !default;
$navbar-light-disabled-color: rgba($gray-800, .3) !default;
// Dropdowns
$dropdown-border-color: $border-color !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: rgba($white, .4) !default;
// Pagination
$pagination-bg: rgba($white, .3) !default;
$pagination-border-width: 0 !default;
$pagination-focus-color: $white !default;
$pagination-focus-bg: $dropdown-link-hover-bg !default;
$pagination-focus-box-shadow: none !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: $dropdown-link-hover-bg !default;
$pagination-disabled-color: $text-muted !default;
$pagination-disabled-bg: $pagination-bg !default;
// Cards
$card-spacer-y: 1.75rem !default;
$card-spacer-x: 2rem !default;
$card-border-color: $border-color !default;
$card-cap-bg: transparent !default;
$card-cap-color: $white !default;
$card-color: $white !default;
$card-bg: transparent !default;
// Accordion
$accordion-button-bg: $secondary !default;
$accordion-button-active-bg: $primary !default;
$accordion-button-active-color: $white !default;
// Tooltips
$tooltip-opacity: .7 !default;
// Popovers
$popover-header-bg: $card-cap-bg !default;
$popover-body-color: $card-color !default;
$popover-body-padding-y: $spacer * .5 !default;
$popover-arrow-color: $border-color !default;
$popover-arrow-outer-color: transparent !default;
// Toasts
$toast-header-color: $card-color !default;
$toast-header-background-color: $card-cap-bg !default;
$toast-header-border-color: $border-color !default;
// Progress bars
$progress-bg: rgba($black, .2) !default;
// List group
$list-group-color: $white !default;
$list-group-bg: transparent !default;
$list-group-border-color: $border-color !default;
$list-group-border-width: 0 !default;
$list-group-hover-bg: $dropdown-link-hover-bg !default;
$list-group-disabled-color: $text-muted !default;
$list-group-action-color: $white !default;
$list-group-action-hover-color: $white !default;
// Breadcrumbs
$breadcrumb-divider-color: $white !default;
$breadcrumb-active-color: $white !default;
// Close
$btn-close-color: $white !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,348 @@
// Regent 5.1.3
// Bootswatch
// Variables
// Mixins
// Navbar
.navbar {
font-size: $font-size-sm;
font-weight: 500;
.navbar-brand,
.nav-link {
&:hover {
text-decoration: underline;
text-decoration-thickness: max(3px, .1875rem, .12em);
}
&:focus {
text-decoration: none;
background-color: $yellow;
}
}
&.bg-primary {
.navbar-brand,
.nav-link {
&:focus {
color: $primary;
}
}
}
&.bg-dark {
.navbar-brand,
.nav-link {
&:focus {
color: $black;
}
}
}
.btn {
box-shadow: none;
&:active {
top: 0;
}
&:focus:not(:active):not(:hover) {
box-shadow: none;
}
}
}
// Buttons
.btn {
position: relative;
border: 3px solid transparent;
box-shadow: 0 2px 0 $black;
&:active {
top: 2px;
}
&:focus {
border-color: $yellow;
outline: 3px solid transparent;
box-shadow: inset 0 0 0 1px $yellow;
}
&:focus,
&:active:focus {
box-shadow: none;
}
&:focus:not(:active):not(:hover) {
color: $black;
background-color: $yellow;
border-color: $yellow;
box-shadow: 0 2px 0 $black;
}
&-secondary {
box-shadow: 0 2px 0 #929191;
}
&-link {
text-decoration: none;
}
&-outline-secondary {
color: $black;
}
}
// Typography
a {
&:hover {
text-decoration-thickness: max(3px, .1875rem, .12em);
}
&:active {
color: $black;
}
&:visited {
color: $purple;
}
}
.blockquote {
padding: 15px;
border-left: 10px solid $gray-400;
.text-end > & {
border-right: 10px solid $gray-400;
border-left: none;
}
.text-center > & {
border: none;
}
&-footer {
padding: 0 15px 15px;
border-left: 10px solid $gray-400;
.text-end > & {
border-right: 10px solid $gray-400;
border-left: none;
}
.text-center > & {
border: none;
}
}
}
// Tables
.table {
> :not(caption) > * > th,
> :not(caption) > * > td {
padding-left: 0;
}
caption {
font-size: $h2-font-size;
}
}
// Forms
label {
margin-bottom: 5px;
}
input[type="file"] {
padding: 9px 13px;
margin-left: -3px;
overflow: auto;
border: none;
&::file-selector-button {
appearance: auto;
padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;
border: 1px solid #767676;
border-radius: 5px;
}
}
.form-check:not(.form-switch) {
margin-bottom: 10px;
margin-left: 15px;
.form-check-input {
width: 44px;
height: 44px;
margin-left: -44px;
background-size: 44px;
border: 2px solid $black;
&:focus {
border: 3px solid $black;
outline: 3px solid $yellow;
}
}
.form-check-label {
padding: 10px 15px 9px;
margin-bottom: 0;
}
}
.form-switch {
.form-check-input {
width: 44px;
border: 2px solid $black;
&:focus {
border: 3px solid $black;
outline: 3px solid $yellow;
}
}
}
.input-group {
.btn {
box-shadow: none;
&:active {
top: 0;
}
&:focus:not(:active):not(:hover) {
box-shadow: none;
}
}
}
.form-control,
.form-select {
&:focus {
border-color: $black;
outline: 3px solid $yellow;
box-shadow: inset 0 0 0 2px;
}
}
.form-control {
&.is-valid,
&.is-invalid {
&:focus {
border-color: $black;
box-shadow: inset 0 0 0 2px;
}
}
}
.form-group {
margin-bottom: 30px;
}
// Navs
.nav-tabs {
margin-bottom: 0;
.nav-item {
padding: .5rem .25rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
}
.nav-link {
position: relative;
bottom: -1rem;
text-decoration: underline;
background-color: $gray-100;
border-bottom: 1px solid transparent;
&:hover {
text-decoration-thickness: max(3px, .1875rem, .12em);
border-bottom-color: transparent;
}
&:focus {
background-color: $yellow;
}
&.active {
bottom: -.5rem;
padding-top: 1rem;
padding-bottom: 1rem;
text-decoration: none;
border-bottom-color: $white;
&:focus {
text-decoration: underline;
text-decoration-thickness: max(3px, .1875rem, .12em);
border-bottom-color: $yellow;
}
}
&.disabled {
background-color: $gray-100;
}
}
}
.tab-content {
padding: 30px 20px;
border: 1px solid $border-color;
border-top: none;
}
// Indicators
.breadcrumb {
&-item {
+ .breadcrumb-item {
position: relative;
margin-left: 20px;
&::before {
position: absolute;
top: 6px;
bottom: 0;
left: -12.3px;
width: 9px;
height: 9px;
border: 1px solid $gray-700;
border-width: 1px 1px 0 0;
transform: rotate(45deg);
}
}
}
a {
color: $black;
}
}
.badge {
&.bg-secondary,
&.bg-light {
color: $gray-800;
}
}
// Containers

View file

@ -0,0 +1,145 @@
// Regent 5.1.3
// Bootswatch
$theme: "regent" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f3f2f1 !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #b1b4b6 !default;
$gray-500: #adb5bd !default;
$gray-600: #6c757d !default;
$gray-700: #505a5f !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #0b0c0c !default;
$blue: #1d70b8 !default;
$indigo: #6610f2 !default;
$purple: #4c2c92 !default;
$pink: #d53880 !default;
$red: #d4351c !default;
$orange: #f47738 !default;
$yellow: #fd0 !default;
$green: #00703c !default;
$teal: #28a197 !default;
$cyan: #5694ca !default;
$primary: $blue !default;
$secondary: $gray-100 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $black !default;
// Options
$enable-rounded: false !default;
$enable-transitions: false !default;
// Body
$body-color: $black !default;
// Links
$link-hover-color: #003078 !default;
// Components
$border-color: $gray-400 !default;
// Typography
$font-size-base: 1.1875rem !default;
$font-size-sm: 1rem !default;
$line-height-base: 1.31579 !default;
$h1-font-size: 3rem !default;
$h2-font-size: 2.25rem !default;
$h3-font-size: 1.5rem !default;
$h4-font-size: 1.25rem !default;
$h5-font-size: $font-size-base !default;
$h6-font-size: $font-size-sm !default;
$headings-font-weight: 600 !default;
$blockquote-font-size: $font-size-base !default;
$legend-font-size: $h2-font-size !default;
$legend-font-weight: $headings-font-weight !default;
// Tables
$table-cell-padding-y: 10px !default;
$table-cell-padding-x: 20px !default;
// Buttons + Forms
$input-btn-padding-y: 8px !default;
$input-btn-padding-x: 10px !default;
$input-btn-focus-color: $yellow !default;
$input-btn-focus-box-shadow: none !default;
$form-check-input-checked-color: $black !default;
$form-check-input-checked-bg-color: $white !default;
$form-switch-color: $gray-400 !default;
$form-switch-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>") !default;
$form-switch-focus-color: $form-switch-color !default;
$form-switch-focus-bg-image: $form-switch-bg-image !default;
$form-switch-checked-color: $black !default;
// Buttons
$btn-focus-box-shadow: 0 0 0 0 $yellow !default;
// Forms
$input-border-color: $black !default;
$input-border-width: 2px !default;
$input-group-addon-bg: $gray-100 !default;
// Navs
$nav-link-color: $black !default;
$nav-link-hover-color: $nav-link-color !default;
$nav-tabs-link-active-color: $nav-link-color !default;
$nav-tabs-border-color: $border-color !default;
$nav-tabs-link-hover-border-color: transparent !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
// Navbar
$navbar-dark-color: $white !default;
$navbar-dark-hover-color: $white !default;
$navbar-dark-active-color: $white !default;
$navbar-light-color: $black !default;
$navbar-light-hover-color: $black !default;
$navbar-light-active-color: $black !default;
// Dropdowns
$dropdown-border-color: $border-color !default;
// Breadcrumbs
$breadcrumb-font-size: $font-size-sm !default;
$breadcrumb-divider: quote("") !default;
$breadcrumb-divider-color: $black !default;
$breadcrumb-active-color: $black !default;

View file

@ -0,0 +1,16 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) Alex Tselegidis
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.5.0
* ---------------------------------------------------------------------------- */
@import 'variables';
@import '../../../../node_modules/bootstrap/scss/bootstrap';
@import 'bootswatch';

View file

@ -0,0 +1,232 @@
// Sandstone 5.1.3
// Bootswatch
// Variables
$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" !default;
@if $web-font-path {
@import url($web-font-path);
}
// Navbar
.sandstone {
font-size: 13px;
font-weight: 500;
line-height: 22px;
text-transform: uppercase;
}
.navbar {
.nav-link {
@extend .sandstone;
}
&-form input,
&-form .form-control {
border: none;
}
}
// Buttons
.btn {
@extend .sandstone;
&:hover {
border-color: transparent;
}
&-success,
&-warning {
color: $white;
}
}
// Tables
.table {
.thead-dark th {
background-color: $dark;
}
}
// Forms
input,
.form-control {
@include box-shadow(none);
&:focus {
@include box-shadow(none);
}
}
// Navs
.nav-tabs {
.nav-link {
@extend .sandstone;
background-color: $gray-200;
border-color: $gray-300;
}
.nav-link,
.nav-link:hover,
.nav-link:focus {
color: $gray-600;
}
.nav-link.disabled,
.nav-link.disabled:hover,
.nav-link.disabled:focus {
color: $nav-link-disabled-color;
background-color: $gray-200;
border-color: $gray-300;
}
}
.nav-pills {
.nav-link {
@extend .sandstone;
color: $gray-600;
border: 1px solid transparent;
}
.nav-link.active,
.nav-link:hover,
.nav-link:focus {
background-color: $gray-200;
border-color: $gray-300;
}
.nav-link.disabled,
.nav-link.disabled:hover {
color: $gray-300;
background-color: transparent;
border-color: transparent;
}
}
.breadcrumb {
@extend .sandstone;
border: 1px solid $gray-300;
}
.pagination {
@extend .sandstone;
a:hover {
text-decoration: none;
}
}
.dropdown-menu {
.dropdown-item {
@extend .sandstone;
}
}
// Indicators
.alert {
color: $white;
a,
.alert-link {
color: $white;
text-decoration: underline;
}
&-primary {
&,
> th,
> td {
background-color: $primary;
}
}
&-secondary {
&,
> th,
> td {
background-color: $secondary;
}
}
&-success {
&,
> th,
> td {
background-color: $success;
}
}
&-info {
&,
> th,
> td {
background-color: $info;
}
}
&-danger {
&,
> th,
> td {
background-color: $danger;
}
}
&-warning {
&,
> th,
> td {
background-color: $warning;
}
}
&-dark {
&,
> th,
> td {
background-color: $dark;
}
}
&-light {
&,
> th,
> td {
background-color: $light;
}
&,
a:not(.btn),
.alert-link {
color: $body-color;
}
}
}
.badge {
&.bg-light {
color: $dark;
}
}
.tooltip {
@extend .sandstone;
}
// Containers
.modal,
.toast,
.offcanvas {
.btn-close {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$gray-300}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
}
}

View file

@ -0,0 +1,139 @@
// Sandstone 5.1.3
// Bootswatch
$theme: "sandstone" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #f8f5f0 !default;
$gray-300: #dfd7ca !default;
$gray-400: #ced4da !default;
$gray-500: #98978b !default;
$gray-600: #8e8c84 !default;
$gray-700: #495057 !default;
$gray-800: #3e3f3a !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #325d88 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #d9534f !default;
$orange: #f47c3c !default;
$yellow: #ffc107 !default;
$green: #93c54b !default;
$teal: #20c997 !default;
$cyan: #29abe0 !default;
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $orange !default;
$danger: $red !default;
$light: $gray-200 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2 !default;
// Body
$body-color: $gray-800 !default;
// Links
$link-color: $success !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-font-weight: 400 !default;
// Dropdowns
$dropdown-link-color: $gray-600 !default;
$dropdown-link-hover-color: $dropdown-link-color !default;
$dropdown-link-hover-bg: $gray-200 !default;
$dropdown-link-active-color: $dropdown-link-color !default;
$dropdown-link-active-bg: $dropdown-link-hover-bg !default;
// Navs
$nav-link-padding-x: .9rem !default;
$nav-link-disabled-color: $gray-300 !default;
$nav-tabs-border-color: $gray-300 !default;
$nav-tabs-link-hover-border-color: $gray-300 !default;
$nav-tabs-link-active-bg: $white !default;
$nav-pills-link-active-color: $gray-600 !default;
$nav-pills-link-active-bg: $gray-200 !default;
// Navbar
$navbar-dark-hover-color: $white !default;
$navbar-light-hover-color: $black !default;
$navbar-light-active-color: $black !default;
// Pagination
$pagination-color: $gray-600 !default;
$pagination-bg: $gray-200 !default;
$pagination-border-color: $gray-300 !default;
$pagination-hover-color: $pagination-color !default;
$pagination-active-color: $pagination-color !default;
$pagination-active-bg: $gray-300 !default;
$pagination-active-border-color: $gray-300 !default;
$pagination-disabled-color: $gray-300 !default;
$pagination-disabled-bg: $gray-200 !default;
$pagination-disabled-border-color: $pagination-border-color !default;
// Cards
$card-border-color: rgba($gray-300, .75) !default;
$card-cap-bg: rgba($gray-200, .25) !default;
// Popovers
$popover-header-bg: $gray-200 !default;
// Modals
$modal-content-border-color: $gray-300 !default;
$modal-header-border-color: $modal-content-border-color !default;
// Progress bars
$progress-bg: $gray-300 !default;
$progress-border-radius: 10px !default;
$progress-bar-color: $primary !default;
// List group
$list-group-border-color: $gray-300 !default;
$list-group-hover-bg: $gray-200 !default;
$list-group-active-color: $body-color !default;
$list-group-active-bg: $gray-200 !default;
$list-group-active-border-color: $gray-300 !default;
$list-group-disabled-color: $gray-500 !default;
$list-group-disabled-bg: $white !default;
$list-group-action-color: $list-group-active-color !default;
$list-group-action-active-color: $list-group-active-color !default;
$list-group-action-active-bg: $gray-300 !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $pagination-bg !default;
$breadcrumb-border-radius: .25rem !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .8 !default;
$btn-close-hover-opacity: 1 !default;

Some files were not shown because too many files have changed in this diff Show more