Stylelint

This commit is contained in:
Jérémy Munsch 2022-08-26 12:48:22 +02:00
parent b5663d19ce
commit 86aa480c04
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
15 changed files with 2165 additions and 752 deletions

20
.stylelintrc.json Normal file
View file

@ -0,0 +1,20 @@
{
"extends": "stylelint-config-sass-guidelines",
"ignoreFiles": [
"**/vendor/*.css",
"**/vendor/**/*.css",
"**/vendor/*.scss",
"**/vendor/**/*.scss",
"**/vendor/*.sass",
"**/vendor/**/*.sass",
"**/vendor/*.less",
"**/vendor/**/*.less"
],
"customSyntax": "postcss-scss",
"rules": {
"indentation": 4,
"string-quotes": "double",
"selector-max-id": null,
"color-no-invalid-hex": true
}
}

View file

@ -1,12 +1,13 @@
{
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#3371a9",
"activityBar.activeBorder": "#621e41",
"activityBar.activeBackground": "#3371a9",
"activityBar.background": "#3371a9",
"activityBar.foreground": "#e7e7e7",
"activityBar.inactiveForeground": "#e7e7e799",
"activityBarBadge.background": "#621e41",
"activityBarBadge.foreground": "#e7e7e7",
"commandCenter.border": "#e7e7e799",
"sash.hoverBorder": "#3371a9",
"statusBar.background": "#275782",
"statusBar.foreground": "#e7e7e7",
@ -16,8 +17,7 @@
"titleBar.activeBackground": "#275782",
"titleBar.activeForeground": "#e7e7e7",
"titleBar.inactiveBackground": "#27578299",
"titleBar.inactiveForeground": "#e7e7e799",
"commandCenter.border": "#e7e7e799"
"titleBar.inactiveForeground": "#e7e7e799"
},
"peacock.remoteColor": "#275782",
}

1383
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,9 @@
"production": "npm run clear-manifest && mix --production",
"prod": "npm run production",
"eslint": "node ./node_modules/.bin/eslint -c .eslintrc.json ./resources",
"eslint-ci": "node ./node_modules/.bin/eslint -c .eslintrc.json ./resources -f junit"
"eslint-ci": "node ./node_modules/.bin/eslint -c .eslintrc.json ./resources -f junit",
"stylelint": "npx stylelint '**/*.scss'",
"stylelint-ci": "npx stylelint '**/*.scss' -f json"
},
"devDependencies": {
"@fortawesome/fontawesome-svg-core": "^6.1.2",
@ -25,6 +27,7 @@
"@types/webpack-env": "^1.17.0",
"@typescript-eslint/eslint-plugin": "^5.35.1",
"@typescript-eslint/parser": "^5.35.1",
"@vue/eslint-config-typescript": "^11.0.0",
"axios": "^0.21.1",
"bootstrap": "^5.1.3",
"clean-webpack-plugin": "^4.0.0",
@ -39,12 +42,16 @@
"laravel-mix-clean": "^0.1.0",
"laravel-mix-eslint": "^0.2.0",
"laravel-mix-polyfill": "^3.0.1",
"laravel-mix-stylelint": "^1.0.0",
"lodash": "^4.17.19",
"moment": "^2.29.3",
"prettier": "^2.7.1",
"resolve-url-loader": "^5.0.0",
"sass": "^1.52.1",
"sass-loader": "^12.6.0",
"stylelint": "^14.11.0",
"stylelint-config-sass-guidelines": "^9.0.1",
"stylelint-webpack-plugin": "^3.3.0",
"sweetalert2": "^11.4.16",
"toastify-js": "^1.11.2",
"ts-loader": "^9.3.0",

View file

@ -1,324 +0,0 @@
// Lumen 5.1.3
// Bootswatch
// Variables
@import "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, 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 0.2s ease-in-out,
margin-top 0.2s ease-in-out, border-bottom 0.2s ease-in-out;
}
&:not(.disabled):hover,
&:not(.disabled):focus,
&.active {
padding-bottom: add(0.5rem, 6px);
border-bottom-color: transparent;
margin-top: 0;
}
}
&.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;
@include shadow();
color: $pagination-color;
font-weight: 700;
text-transform: uppercase;
&:hover,
&:focus {
top: 1px;
border-bottom-width: 3px;
text-decoration: none;
}
&: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-left-width: 2px;
border-right-width: 2px;
}
}
}
// Indicators
.btn-close {
text-decoration: none;
opacity: 0.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{
color: #1e2125;
& .toast {
.btn-close {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>");
}
}
}

View file

@ -1,244 +0,0 @@
// @function strip-unit($value)
// @param {number with unit} $value
@function strip-unit($value) {
@return ($value / ($value * 0 + 1));
}
// @function pow($base, $exponents)
// Helper: Raise a number the power of another number
// Adapted from: https://gist.github.com/hail2u/1964056
//
// @param {number} $base — The base number
// @param {number} $exponents — The exponent to which to raise $base
@function pow($base, $exponents) {
$raised: 1;
@for $i from 1 through $exponents {
$raised: $raised * $base;
}
@return $raised;
}
// @function luminance($color)
// Helper: Calculate Luminance of a single color
// Adapted from: https://medium.com/dev-channel/using-sass-to-automatically-pick-text-colors-4ba7645d2796
// White luminance is 1, Black luminance is 0
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { luminance: luminance(#c00); }
// Output:
// .sample { luminance: 0.1283736922; }
//
@function luminance($color) {
// Thanks voxpelli for a very concise implementation of luminance measure in sass
// Adapted from: https://gist.github.com/voxpelli/6304812
$rgba: red($color), green($color), blue($color);
$rgba2: ();
@for $i from 1 through 3 {
$rgb: nth($rgba, $i);
$rgb: calc($rgb / 255);
$rgb: if($rgb < .03928, calc($rgb / 12.92), pow(calc(($rgb + .055) / 1.055), 2));
$rgba2: append($rgba2, $rgb);
}
@return (.2126 * nth($rgba2, 1) + .7152 * nth($rgba2, 2) + 0.0722 * nth($rgba2, 3))*100;
}
// @function contrast-ratio($fg, $bg)
// Helper: Calculate "readability" as defined by WCAG 2.1
// Adapted from: https://github.com/LeaVerou/contrast-ratio/blob/gh-pages/color.js
// Formula: http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { color-contrast: contrast-ratio(#c00, #fff); }
// Output:
// .sample { color-contrast: 5.89; }
//
@function contrast-ratio($fg, $bg) {
$luminance1: luminance($fg) + 0.05;
$luminance2: luminance($bg) + 0.05;
$ratio: calc($luminance1 / $luminance2);
@if $luminance2 > $luminance1 {
$ratio: calc(1 / $ratio);
}
// Round to a hundreth because 6.96 should not pass a ratio of 7.0
$ratio: calc(round($ratio * 100) / 100);
@return $ratio;
}
// @function validate-font-size($size)
// Helper: Depending on the unit recalculate a font size value into pixels if possible
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { validate-font-size: validate-font-size(1em); }
// Output:
// .sample { validate-font-size: 16; }
//
@function validate-font-size($size) {
@if unit($size) == 'em' or unit($size) == 'rem' or unit($size) == 'px' or unit($size) == '' {
// Check if a flexible unit
@if unit($size) == 'em' or unit($size) == 'rem' {
// Need to convert to a pixel value. Let's not overcomplicate it with possible EM inheritence scale factors
@return strip-unit($size * 16)
}
@if unit($size) == 'px' {
// We expect PX, so strip the value and return it
@return strip-unit($size);
}
@if unit($size) == '' {
@return $size;
}
} @else {
@error 'validate-font-size(): An unexpected font size unit was supplied.';
}
}
// @function get-ratio($level: 'AA', $size: 16, $bold: false)
// Helper: Determine the correct ratio value to use based on font-size and WCAG Level
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { get-ratio: get-ratio('AAA', 19, true); }
// Output:
// .sample { get-ratio: 4.5; }
//
@function get-ratio($level: 'AA', $size: 16, $bold: false) {
// Default ratio
$ratio: 4.5;
@if $level == 'AAA' {
$ratio: 7;
}
// Make sure the size is valid. If the value is not EM, REM, or PX (preferred), we can't help
$size: validate-font-size($size);
// Check font size
@if $size < 24 {
// Small text, use defaults
// But:
@if $size >= 19 and $bold == true {
// Special case: Small text but also bold
@if $level == 'AAA' {
$ratio: 4.5;
} @else {
$ratio: 3;
}
}
} @else {
// Larger than 24
$ratio: 3;
@if $level == 'AAA' {
$ratio: 4.5;
}
}
@return $ratio;
}
// @function light-or-dark($color)
// Helper: Use contrast against white or black to determine if a color is "light" or "dark"
// Adapted from: https://medium.com/dev-channel/using-sass-to-automatically-pick-text-colors-4ba7645d2796
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { light-or-dark: light-or-dark(#c00); }
// Output:
// .sample { light-or-dark: "light"; }
//
@function light-or-dark($color) {
$light-contrast: contrast-ratio($color, $white);
$dark-contrast: contrast-ratio($color, $black);
@if $light-contrast > $dark-contrast {
// Contrast against white is higher than against black, so, this is a dark color
@return "dark";
} @else {
@return "light";
}
}
// @function color-contrast($color)
// Helper: Returns black or white compared to a color, whichever produces the highest contrast
// Usage:
// .sample {
// background-color: #c00;
// color: color-contrast(#c00);
// }
// Output:
// .sample {
// background-color: #c00;
// color: #fff;
// }
//
// Named for the forthcoming CSS Module 5 spec function color-contrast();
// See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-contrast()
//
@function color-contrast($color) {
$color-lod: light-or-dark($color);
@if ($color-lod == "dark") {
@return $white;
} @else {
@return $black;
}
}
// @function a11y-color($fg, $bg, $level: 'AA', $size: 16, $bold: false)
// Goal: Return a color that passes for the chosen WCAG level without changing the Hue of the color
// Usage:
// .sample {
// background-color: #000;
// color: a11y-color(#c0c, #000);
// }
// Output:
// .sample {
// background-color: #000;
// color: #d200d2;
// }
//
@function a11y-color($fg, $bg, $level: 'AA', $size: 16, $bold: false) {
// Helper: make sure the font size value is acceptable
$font-size: validate-font-size($size);
// Helper: With the level, font size, and bold boolean, return the proper target ratio. 3.0, 4.5, or 7.0 expected
$ratio: get-ratio($level, $font-size, $bold);
// Calculate the first contrast ratio of the given pair
$original-contrast: contrast-ratio($fg, $bg);
@if $original-contrast >= $ratio {
// If we pass the ratio already, return the original color
@return $fg;
} @else {
// Doesn't pass. Time to get to work
// Should the color be lightened or darkened?
$fg-lod: light-or-dark($fg);
$bg-lod: light-or-dark($bg);
// Set a "step" value to lighten or darken a color
// Note: Higher percentage steps means faster compile time, but we might overstep the required threshold too far with something higher than 4%
$step: 1%;
// Run through some cases where we want to darken, or use a negative step value
@if $fg-lod == 'light' and $bg-lod == 'light' {
// Both are light colors, darken the fg
$step: - $step;
} @else if $fg-lod == 'dark' and $bg-lod == 'light' {
// bg is light, fg is dark but does not pass, darken more
$step: - $step;
}
// Keeping the rest of the logic here, but our default values do not change, so this logic is not needed
//@else if $fg-lod == 'light' and $bg-lod == 'dark' {
// // bg is dark, fg is light but does not pass, lighten further
// $step: $step;
//} @else if $fg-lod == 'dark' and $bg-lod == 'dark' {
// // Both are dark, so lighten the fg
// $step: $step;
//}
// The magic happens here
// Loop through with a @while statement until the color combination passes our required ratio. Scale the color by our step value until the expression is false
// This might loop 100 times or more depending on the colors
@while contrast-ratio($fg, $bg) < $ratio {
$sat-step: 0%;
@if saturation($fg) > 10 {
$sat-step: $step;
}
$fg: scale-color($fg, $lightness: $step, $saturation:$sat-step);
}
@return $fg;
}
}

View file

@ -11,117 +11,116 @@ $theme: "lumen" !default;
$lightness: -20%;
$saturation: -5%;
@function lowerColor($color) {
@function lower-color($color) {
@return color.scale($color, $lightness: $lightness, $saturation: $saturation);
}
@function lowerBrightness($color) {
@function lower-brightness($color) {
@return color.scale($color, $lightness: $lightness + 10%);
}
$white: #fffcf5 !default;
$gray-100: lower-brightness(#f8f9fa) !default;
$gray-200: lower-brightness(#e9ecef) !default;
$gray-300: lower-brightness(#dee2e6) !default;
$gray-400: lower-brightness(#ced4da) !default;
$gray-500: lower-brightness(#adb5bd) !default;
$gray-600: lower-brightness(#6c757d) !default;
$gray-700: lower-brightness(#495057) !default;
$gray-800: lower-brightness(#343a40) !default;
$gray-900: lower-brightness(#212529) !default;
$black: #000 !default;
$white: #fffcf5 !default;
$gray-100: lowerBrightness(#f8f9fa) !default;
$gray-200: lowerBrightness(#e9ecef) !default;
$gray-300: lowerBrightness(#dee2e6) !default;
$gray-400: lowerBrightness(#ced4da) !default;
$gray-500: lowerBrightness(#adb5bd) !default;
$gray-600: lowerBrightness(#6c757d) !default;
$gray-700: lowerBrightness(#495057) !default;
$gray-800: lowerBrightness(#343a40) !default;
$gray-900: lowerBrightness(#212529) !default;
$black: #000 !default;
$blue: lower-color(#337ab7) !default;
$indigo: lower-color(#6610f2) !default;
$purple: lower-color(#6f42c1) !default;
$pink: lower-color(#b7337a) !default;
$red: lower-color(#d9534f) !default;
$orange: lower-color(#fd7e14) !default;
$yellow: lower-color(#f0ad4e) !default;
$green: lower-color(#5cb85c) !default;
$teal: lower-color(#20c997) !default;
$cyan: lower-color(#5bc0de) !default;
$blue: lowerColor(#337ab7) !default;
$indigo: lowerColor(#6610f2) !default;
$purple: lowerColor(#6f42c1) !default;
$pink: lowerColor(#B7337A) !default;
$red: lowerColor(#d9534f) !default;
$orange: lowerColor(#fd7e14) !default;
$yellow: lowerColor(#f0ad4e) !default;
$green: lowerColor(#5cb85c) !default;
$teal: lowerColor(#20c997) !default;
$cyan: lowerColor(#5bc0de) !default;
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $teal !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-900 !default;
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $teal !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-900 !default;
$body-bg: $white;
$min-contrast-ratio: 1.95 !default;
$min-contrast-ratio: 1.95 !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;
$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;
$table-bg-scale: 0 !default;
// Buttons
$btn-font-weight: 700 !default;
$btn-font-weight: 700 !default;
// Dropdowns
$dropdown-link-color: rgba(0, 0, 0, .5) !default;
$dropdown-link-color: rgba(0, 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-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: $white !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;
$pagination-color: $gray-700 !default;
$pagination-bg: $white !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;
$breadcrumb-padding-y: 0.375rem !default;
$breadcrumb-padding-x: 0.75rem !default;
$breadcrumb-bg: $pagination-bg !default;
$breadcrumb-border-radius: 0.25rem !default;
// Modals
$modal-content-border-color: rgba($black, .1) !default;
$modal-content-border-color: rgba($black, 0.1) !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .4 !default;
$btn-close-hover-opacity: 1 !default;
$btn-close-color: $white !default;
$btn-close-opacity: 0.4 !default;
$btn-close-hover-opacity: 1 !default;
// Variables
$enum-activities: (
"0": #fff2cc,
"1": #be8e00,
"2": #a9d08e,
"3": #ff0000,
"3": #f00,
"4": #9bc2e6,
);
$enum-project-status: (
"0": #950952,
"1": #5E0035,
"2": #30011C,
"1": #5e0035,
"2": #30011c,
"3": #020202,
"4": #023618,
"5": #014941,
"6": #005C69,
"6": #005c69,
);

View file

@ -3,20 +3,12 @@
// Variables
@import "variables";
@import "complement";
@import "ckEditorContent";
@import "vendor/complement";
@import "vendor/ckEditorContent";
@import "vendor/overloadCrudPolicies";
@import "bootstrap";
a.col_sort {
&:link,
:visited,
:hover,
:active {
text-decoration: none;
}
}
.container-xxl {
max-width: 1340px !important;
}
@ -26,23 +18,23 @@ body {
background-color: $body-bg;
}
#planning {
.sticky-top {
z-index: 1 !important;
}
#planning .sticky-top {
z-index: 1 !important;
}
// FOOTER
body {
position: relative;
min-height: calc(100vh);
position: relative;
}
#app {
padding-bottom: 8.5rem;
}
#footer {
position: absolute;
bottom: 0;
height: 4.5rem;
position: absolute;
width: 100%;
}

View file

@ -1,23 +1,23 @@
@import 'variables';
@import '~bootstrap/scss/bootstrap';
@import '~sweetalert2/dist/sweetalert2.css';
@import '~@fortawesome/fontawesome-svg-core/styles.css';
@import '~glightbox/dist/css/glightbox.css';
@import 'bootswatch';
@import "variables";
@import "~bootstrap/scss/bootstrap";
@import "~sweetalert2/dist/sweetalert2.css";
@import "~@fortawesome/fontawesome-svg-core/styles.css";
@import "~glightbox/dist/css/glightbox.css";
@import "vendor/bootswatch";
// OVERLOAD BOOTSTRAP
.btn-xs, .btn-group-xs > .btn {
padding: 0.1rem 0.4rem;
font-size: 0.8rem;
.btn-xs,
.btn-group-xs > .btn {
border-radius: 0.3rem;
font-size: 0.8rem;
padding: 0.1rem 0.4rem;
}
// Tickets Labels
.ticketIndexLabels {
display: -webkit-box;
max-width: 15rem;
-webkit-line-clamp: 2;
.ticket-index-labels {
-webkit-box-orient: vertical;
display: box;
-webkit-line-clamp: 2;
max-width: 15rem;
overflow: hidden;
}

324
resources/sass/vendor/_bootswatch.scss vendored Normal file
View file

@ -0,0 +1,324 @@
// Lumen 5.1.3
// Bootswatch
// Variables
@import '../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 {
border-bottom-width: 3px;
margin-top: 1px;
}
&:not(.disabled):active {
@include box-shadow(none);
border-bottom-width: 2px;
margin-top: 2px;
}
@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 {
border-top-width: 1px;
margin-top: -1px;
}
&:active {
border-top-width: 2px;
margin-top: -1px;
}
}
}
// 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, 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 {
border-color: $nav-tabs-border-color;
margin-top: 6px;
transition: padding-bottom 0.2s ease-in-out, margin-top 0.2s ease-in-out, border-bottom 0.2s ease-in-out;
}
&:not(.disabled):hover,
&:not(.disabled):focus,
&.active {
border-bottom-color: transparent;
margin-top: 0;
padding-bottom: add(0.5rem, 6px);
}
}
&.nav-justified > li {
vertical-align: bottom;
}
}
.dropdown-menu {
@include shadow();
@include box-shadow(none);
border-top-width: 1px;
margin-top: 0;
}
.breadcrumb {
@include shadow();
border-color: shade-color($breadcrumb-bg, 10%);
}
.pagination {
> li > a,
> li > span {
@include shadow();
color: $pagination-color;
font-weight: 700;
position: relative;
text-transform: uppercase;
top: 0;
&:hover,
&:focus {
border-bottom-width: 3px;
text-decoration: none;
top: 1px;
}
&:active {
border-bottom-width: 2px;
top: 2px;
}
}
> .disabled > a,
> .disabled > span {
&:hover {
@include shadow();
top: 0;
}
&:active {
@include shadow();
top: 0;
}
}
}
.pager {
> li > a,
> li > span,
> .disabled > a,
> .disabled > span {
&,
&:hover,
&:active {
border-left-width: 2px;
border-right-width: 2px;
}
}
}
// Indicators
.btn-close {
opacity: 0.4;
text-decoration: none;
&:hover,
&:focus {
opacity: 1;
}
}
.alert {
@include shadow();
color: $white;
&-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 {
color: $white;
font-weight: 400;
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 {
color: #1e2125;
& .toast {
.btn-close {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>");
}
}
}

View file

@ -30,13 +30,13 @@
/* ckeditor5-block-quote/theme/blockquote.css */
.ck-content blockquote {
overflow: hidden;
padding-right: 1.5em;
padding-left: 1.5em;
border-left: solid 5px hsl(0, 0%, 80%);
font-style: italic;
margin-left: 0;
margin-right: 0;
font-style: italic;
border-left: solid 5px hsl(0, 0%, 80%);
overflow: hidden;
padding-left: 1.5em;
padding-right: 1.5em;
}
/* ckeditor5-block-quote/theme/blockquote.css */
.ck-content[dir="rtl"] blockquote {
@ -61,21 +61,21 @@
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .pen-red {
color: var(--ck-highlight-pen-red);
background-color: transparent;
color: var(--ck-highlight-pen-red);
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .pen-green {
color: var(--ck-highlight-pen-green);
background-color: transparent;
color: var(--ck-highlight-pen-green);
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-tiny {
font-size: .7em;
font-size: 0.7em;
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-small {
font-size: .85em;
font-size: 0.85em;
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-big {
@ -88,16 +88,16 @@
/* ckeditor5-basic-styles/theme/code.css */
.ck-content code {
background-color: hsla(0, 0%, 78%, 0.3);
padding: .15em;
border-radius: 2px;
padding: 0.15em;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image {
display: table;
clear: both;
text-align: center;
display: table;
margin: 0.9em auto;
min-width: 50px;
text-align: center;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image img {
@ -108,6 +108,7 @@
}
/* ckeditor5-image/theme/image.css */
.ck-content .image-inline {
align-items: flex-start;
/*
* Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).;
* Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.
@ -115,7 +116,6 @@
*/
display: inline-flex;
max-width: 100%;
align-items: flex-start;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image-inline picture {
@ -130,9 +130,9 @@
}
/* ckeditor5-image/theme/imageresize.css */
.ck-content .image.image_resized {
max-width: 100%;
display: block;
box-sizing: border-box;
display: block;
max-width: 100%;
}
/* ckeditor5-image/theme/imageresize.css */
.ck-content .image.image_resized img {
@ -175,8 +175,8 @@
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-block-align-right {
margin-right: 0;
margin-left: auto;
margin-right: 0;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-block-align-left {
@ -192,8 +192,8 @@
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-inline.image-style-align-left,
.ck-content .image-inline.image-style-align-right {
margin-top: var(--ck-inline-image-style-spacing);
margin-bottom: var(--ck-inline-image-style-spacing);
margin-top: var(--ck-inline-image-style-spacing);
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-inline.image-style-align-left {
@ -205,14 +205,14 @@
}
/* ckeditor5-image/theme/imagecaption.css */
.ck-content .image > figcaption {
display: table-caption;
caption-side: bottom;
word-break: break-word;
color: var(--ck-color-image-caption-text);
background-color: var(--ck-color-image-caption-background);
padding: .6em;
font-size: .75em;
caption-side: bottom;
color: var(--ck-color-image-caption-text);
display: table-caption;
font-size: 0.75em;
outline-offset: -1px;
padding: 0.6em;
word-break: break-word;
}
/* ckeditor5-language/theme/language.css */
.ck-content span[lang] {
@ -232,45 +232,45 @@
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input {
-webkit-appearance: none;
display: inline-block;
position: relative;
width: var(--ck-todo-list-checkmark-size);
height: var(--ck-todo-list-checkmark-size);
vertical-align: middle;
appearance: none;
border: 0;
display: inline-block;
height: var(--ck-todo-list-checkmark-size);
left: -25px;
margin-right: -15px;
right: 0;
margin-left: 0;
margin-right: -15px;
position: relative;
right: 0;
vertical-align: middle;
width: var(--ck-todo-list-checkmark-size);
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input::before {
display: block;
position: absolute;
box-sizing: border-box;
content: '';
width: 100%;
height: 100%;
border: 1px solid hsl(0, 0%, 20%);
border-radius: 2px;
box-sizing: border-box;
content: "";
display: block;
height: 100%;
position: absolute;
transition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border;
width: 100%;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input::after {
display: block;
position: absolute;
box-sizing: content-box;
pointer-events: none;
content: '';
left: calc( var(--ck-todo-list-checkmark-size) / 3 );
top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
border-style: solid;
border-color: transparent;
border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;
border-style: solid;
border-width: 0 calc(var(--ck-todo-list-checkmark-size) / 8) calc(var(--ck-todo-list-checkmark-size) / 8) 0;
box-sizing: content-box;
content: "";
display: block;
height: calc(var(--ck-todo-list-checkmark-size) / 2.6);
left: calc(var(--ck-todo-list-checkmark-size) / 3);
pointer-events: none;
position: absolute;
top: calc(var(--ck-todo-list-checkmark-size) / 5.3);
transform: rotate(45deg);
width: calc(var(--ck-todo-list-checkmark-size) / 5.3);
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input[checked]::before {
@ -287,83 +287,83 @@
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break {
position: relative;
clear: both;
padding: 5px 0;
display: flex;
align-items: center;
clear: both;
display: flex;
justify-content: center;
padding: 5px 0;
position: relative;
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break::after {
content: '';
position: absolute;
border-bottom: 2px dashed hsl(0, 0%, 77%);
content: "";
position: absolute;
width: 100%;
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break__label {
position: relative;
z-index: 1;
padding: .3em .6em;
display: block;
text-transform: uppercase;
background: hsl(0, 0%, 100%);
border: 1px solid hsl(0, 0%, 77%);
border-radius: 2px;
box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
color: hsl(0, 0%, 20%);
display: block;
font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;
font-size: 0.75em;
font-weight: bold;
color: hsl(0, 0%, 20%);
background: hsl(0, 0%, 100%);
box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
padding: 0.3em 0.6em;
position: relative;
text-transform: uppercase;
user-select: none;
user-select: none;
user-select: none;
user-select: none;
z-index: 1;
}
/* ckeditor5-table/theme/tablecaption.css */
.ck-content .table > figcaption {
display: table-caption;
caption-side: top;
word-break: break-word;
text-align: center;
color: var(--ck-color-table-caption-text);
background-color: var(--ck-color-table-caption-background);
padding: .6em;
font-size: .75em;
caption-side: top;
color: var(--ck-color-table-caption-text);
display: table-caption;
font-size: 0.75em;
outline-offset: -1px;
padding: 0.6em;
text-align: center;
word-break: break-word;
}
/* ckeditor5-media-embed/theme/mediaembed.css */
.ck-content .media {
clear: both;
margin: 0.9em 0;
display: block;
margin: 0.9em 0;
min-width: 15em;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table {
margin: 0.9em auto;
display: table;
margin: 0.9em auto;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table {
border: 1px double hsl(0, 0%, 70%);
border-collapse: collapse;
border-spacing: 0;
width: 100%;
height: 100%;
border: 1px double hsl(0, 0%, 70%);
width: 100%;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table td,
.ck-content .table table th {
min-width: 2em;
padding: .4em;
border: 1px solid hsl(0, 0%, 75%);
min-width: 2em;
padding: 0.4em;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table th {
font-weight: bold;
background: hsla(0, 0%, 0%, 5%);
font-weight: bold;
}
/* ckeditor5-table/theme/table.css */
.ck-content[dir="rtl"] .table th {
@ -375,30 +375,30 @@
}
/* ckeditor5-horizontal-line/theme/horizontalline.css */
.ck-content hr {
margin: 15px 0;
height: 4px;
background: hsl(0, 0%, 87%);
border: 0;
height: 4px;
margin: 15px 0;
}
/* ckeditor5-code-block/theme/codeblock.css */
.ck-content pre {
padding: 1em;
color: hsl(0, 0%, 20.8%);
background: hsla(0, 0%, 78%, 0.3);
border: 1px solid hsl(0, 0%, 77%);
border-radius: 2px;
text-align: left;
color: hsl(0, 0%, 20.8%);
direction: ltr;
tab-size: 4;
white-space: pre-wrap;
font-style: normal;
min-width: 200px;
padding: 1em;
tab-size: 4;
text-align: left;
white-space: pre-wrap;
}
/* ckeditor5-code-block/theme/codeblock.css */
.ck-content pre code {
background: unset;
padding: 0;
border-radius: 0;
padding: 0;
}
/* ckeditor5-mention/theme/mention.css */
.ck-content .mention {
@ -415,4 +415,3 @@
display: none;
}
}

244
resources/sass/vendor/_complement.scss vendored Normal file
View file

@ -0,0 +1,244 @@
// @function strip-unit($value)
// @param {number with unit} $value
@function strip-unit($value) {
@return ($value / ($value * 0 + 1));
}
// @function pow($base, $exponents)
// Helper: Raise a number the power of another number
// Adapted from: https://gist.github.com/hail2u/1964056
//
// @param {number} $base — The base number
// @param {number} $exponents — The exponent to which to raise $base
@function pow($base, $exponents) {
$raised: 1;
@for $i from 1 through $exponents {
$raised: $raised * $base;
}
@return $raised;
}
// @function luminance($color)
// Helper: Calculate Luminance of a single color
// Adapted from: https://medium.com/dev-channel/using-sass-to-automatically-pick-text-colors-4ba7645d2796
// White luminance is 1, Black luminance is 0
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { luminance: luminance(#c00); }
// Output:
// .sample { luminance: 0.1283736922; }
//
@function luminance($color) {
// Thanks voxpelli for a very concise implementation of luminance measure in sass
// Adapted from: https://gist.github.com/voxpelli/6304812
$rgba: red($color), green($color), blue($color);
$rgba2: ();
@for $i from 1 through 3 {
$rgb: nth($rgba, $i);
$rgb: calc($rgb / 255);
$rgb: if($rgb < 0.03928, calc($rgb / 12.92), pow(calc(($rgb + 0.055) / 1.055), 2));
$rgba2: append($rgba2, $rgb);
}
@return (0.2126 * nth($rgba2, 1) + 0.7152 * nth($rgba2, 2) + 0.0722 * nth($rgba2, 3)) * 100;
}
// @function contrast-ratio($fg, $bg)
// Helper: Calculate "readability" as defined by WCAG 2.1
// Adapted from: https://github.com/LeaVerou/contrast-ratio/blob/gh-pages/color.js
// Formula: http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { color-contrast: contrast-ratio(#c00, #fff); }
// Output:
// .sample { color-contrast: 5.89; }
//
@function contrast-ratio($fg, $bg) {
$luminance1: luminance($fg) + 0.05;
$luminance2: luminance($bg) + 0.05;
$ratio: calc($luminance1 / $luminance2);
@if $luminance2 > $luminance1 {
$ratio: calc(1 / $ratio);
}
// Round to a hundreth because 6.96 should not pass a ratio of 7.0
$ratio: calc(round($ratio * 100) / 100);
@return $ratio;
}
// @function validate-font-size($size)
// Helper: Depending on the unit recalculate a font size value into pixels if possible
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { validate-font-size: validate-font-size(1em); }
// Output:
// .sample { validate-font-size: 16; }
//
@function validate-font-size($size) {
@if unit($size) == "em" or unit($size) == "rem" or unit($size) == "px" or unit($size) == "" {
// Check if a flexible unit
@if unit($size) == "em" or unit($size) == "rem" {
// Need to convert to a pixel value. Let's not overcomplicate it with possible EM inheritence scale factors
@return strip-unit($size * 16);
}
@if unit($size) == "px" {
// We expect PX, so strip the value and return it
@return strip-unit($size);
}
@if unit($size) == "" {
@return $size;
}
} @else {
@error "validate-font-size(): An unexpected font size unit was supplied.";
}
}
// @function get-ratio($level: 'AA', $size: 16, $bold: false)
// Helper: Determine the correct ratio value to use based on font-size and WCAG Level
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { get-ratio: get-ratio('AAA', 19, true); }
// Output:
// .sample { get-ratio: 4.5; }
//
@function get-ratio($level: "AA", $size: 16, $bold: false) {
// Default ratio
$ratio: 4.5;
@if $level == "AAA" {
$ratio: 7;
}
// Make sure the size is valid. If the value is not EM, REM, or PX (preferred), we can't help
$size: validate-font-size($size);
// Check font size
@if $size < 24 {
// Small text, use defaults
// But:
@if $size >= 19 and $bold == true {
// Special case: Small text but also bold
@if $level == "AAA" {
$ratio: 4.5;
} @else {
$ratio: 3;
}
}
} @else {
// Larger than 24
$ratio: 3;
@if $level == "AAA" {
$ratio: 4.5;
}
}
@return $ratio;
}
// @function light-or-dark($color)
// Helper: Use contrast against white or black to determine if a color is "light" or "dark"
// Adapted from: https://medium.com/dev-channel/using-sass-to-automatically-pick-text-colors-4ba7645d2796
// To be used in other functions or mixins — creates non-standard CSS output:
// Usage:
// .sample { light-or-dark: light-or-dark(#c00); }
// Output:
// .sample { light-or-dark: "light"; }
//
@function light-or-dark($color) {
$light-contrast: contrast-ratio($color, $white);
$dark-contrast: contrast-ratio($color, $black);
@if $light-contrast > $dark-contrast {
// Contrast against white is higher than against black, so, this is a dark color
@return "dark";
} @else {
@return "light";
}
}
// @function color-contrast($color)
// Helper: Returns black or white compared to a color, whichever produces the highest contrast
// Usage:
// .sample {
// background-color: #c00;
// color: color-contrast(#c00);
// }
// Output:
// .sample {
// background-color: #c00;
// color: #fff;
// }
//
// Named for the forthcoming CSS Module 5 spec function color-contrast();
// See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-contrast()
//
@function color-contrast($color) {
$color-lod: light-or-dark($color);
@if ($color-lod == "dark") {
@return $white;
} @else {
@return $black;
}
}
// @function a11y-color($fg, $bg, $level: 'AA', $size: 16, $bold: false)
// Goal: Return a color that passes for the chosen WCAG level without changing the Hue of the color
// Usage:
// .sample {
// background-color: #000;
// color: a11y-color(#c0c, #000);
// }
// Output:
// .sample {
// background-color: #000;
// color: #d200d2;
// }
//
@function a11y-color($fg, $bg, $level: "AA", $size: 16, $bold: false) {
// Helper: make sure the font size value is acceptable
$font-size: validate-font-size($size);
// Helper: With the level, font size, and bold boolean, return the proper target ratio. 3.0, 4.5, or 7.0 expected
$ratio: get-ratio($level, $font-size, $bold);
// Calculate the first contrast ratio of the given pair
$original-contrast: contrast-ratio($fg, $bg);
@if $original-contrast >= $ratio {
// If we pass the ratio already, return the original color
@return $fg;
} @else {
// Doesn't pass. Time to get to work
// Should the color be lightened or darkened?
$fg-lod: light-or-dark($fg);
$bg-lod: light-or-dark($bg);
// Set a "step" value to lighten or darken a color
// Note: Higher percentage steps means faster compile time, but we might overstep the required threshold too far with something higher than 4%
$step: 1%;
// Run through some cases where we want to darken, or use a negative step value
@if $fg-lod == "light" and $bg-lod == "light" {
// Both are light colors, darken the fg
$step: -$step;
} @else if $fg-lod == "dark" and $bg-lod == "light" {
// bg is light, fg is dark but does not pass, darken more
$step: -$step;
}
// Keeping the rest of the logic here, but our default values do not change, so this logic is not needed
//@else if $fg-lod == 'light' and $bg-lod == 'dark' {
// // bg is dark, fg is light but does not pass, lighten further
// $step: $step;
//} @else if $fg-lod == 'dark' and $bg-lod == 'dark' {
// // Both are dark, so lighten the fg
// $step: $step;
//}
// The magic happens here
// Loop through with a @while statement until the color combination passes our required ratio. Scale the color by our step value until the expression is false
// This might loop 100 times or more depending on the colors
@while contrast-ratio($fg, $bg) < $ratio {
$sat-step: 0%;
@if saturation($fg) > 10 {
$sat-step: $step;
}
$fg: scale-color($fg, $lightness: $step, $saturation: $sat-step);
}
@return $fg;
}
}

View file

@ -0,0 +1,8 @@
a.col_sort {
&:link,
:visited,
:hover,
:active {
text-decoration: none;
}
}

View file

@ -1068,7 +1068,7 @@ export default defineComponent({
<style lang="scss">
@import "./../../sass/variables";
@import "./../../sass/complement";
@import "./../../sass/vendor/complement";
@import "toastify-js/src/toastify.css";
.macroschedule {

5
webpack.mix.js vendored
View file

@ -4,6 +4,7 @@ const mix = require("laravel-mix");
require("laravel-mix-polyfill");
require("laravel-mix-clean");
require("laravel-mix-eslint");
require("laravel-mix-stylelint");
const assetDir = "assets";
const polyfill = {
@ -76,6 +77,10 @@ mix.ts("resources/ts/app.ts", "public/js/app.js", { transpileOnly: true })
extensions: ["js", "ts"],
})
.sass("resources/sass/app.scss", "public/css")
.stylelint({
configFile: ".stylelintrc.json",
files: ["**/*.scss"],
})
.polyfill(polyfill)
.version()
.sourceMaps(true, "inline-source-map");