diff --git a/.stylelintrc.json b/.stylelintrc.json
new file mode 100644
index 0000000..6406383
--- /dev/null
+++ b/.stylelintrc.json
@@ -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
+ }
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7aadaba..32e834d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -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",
}
diff --git a/package-lock.json b/package-lock.json
index 76cfa7c..cecbb39 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,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",
@@ -32,12 +33,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",
@@ -1782,6 +1787,23 @@
"node": ">=0.1.90"
}
},
+ "node_modules/@csstools/selector-specificity": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
+ "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
+ "dev": true,
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2",
+ "postcss-selector-parser": "^6.0.10"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -2697,6 +2719,30 @@
"@vue/shared": "3.2.37"
}
},
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.0.tgz",
+ "integrity": "sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
+ "@typescript-eslint/parser": "^5.0.0",
+ "vue-eslint-parser": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@vue/reactivity": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
@@ -3229,6 +3275,15 @@
"inherits": "2.0.1"
}
},
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/autoprefixer": {
"version": "10.4.8",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
@@ -4315,6 +4370,15 @@
"postcss": "^8.0.9"
}
},
+ "node_modules/css-functions-list": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz",
+ "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ }
+ },
"node_modules/css-loader": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz",
@@ -6119,6 +6183,44 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -6153,6 +6255,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true
+ },
"node_modules/graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
@@ -6450,6 +6558,18 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
+ "node_modules/html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/htmlparser2": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
@@ -6717,6 +6837,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -6773,6 +6902,12 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
"node_modules/interpret": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
@@ -7108,6 +7243,12 @@
"node": ">= 8"
}
},
+ "node_modules/known-css-properties": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz",
+ "integrity": "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==",
+ "dev": true
+ },
"node_modules/laravel-mix": {
"version": "6.0.49",
"resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz",
@@ -7211,6 +7352,12 @@
"laravel-mix": "^6.0.0"
}
},
+ "node_modules/laravel-mix-stylelint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/laravel-mix-stylelint/-/laravel-mix-stylelint-1.0.0.tgz",
+ "integrity": "sha512-0FZD/Q0MG4tcu8w3MQrAnnRtOKVdPvGKOgYU9PsDuDIOe+PcWFGQEqjej24TgL7pMrqijfFw+J9vSDJIcA0j7A==",
+ "dev": true
+ },
"node_modules/laravel-mix/node_modules/css-loader": {
"version": "5.2.7",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz",
@@ -7344,6 +7491,12 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true
+ },
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -7416,6 +7569,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -8477,6 +8640,12 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true
+ },
"node_modules/postcss-merge-longhand": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
@@ -8815,6 +8984,44 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "dev": true
+ },
+ "node_modules/postcss-safe-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
+ "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3"
+ }
+ },
+ "node_modules/postcss-scss": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.4.tgz",
+ "integrity": "sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3"
+ }
+ },
"node_modules/postcss-selector-parser": {
"version": "6.0.10",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
@@ -8828,6 +9035,15 @@
"node": ">=4"
}
},
+ "node_modules/postcss-sorting": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz",
+ "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": "^8.3.9"
+ }
+ },
"node_modules/postcss-svgo": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
@@ -9861,6 +10077,23 @@
"node": ">=8"
}
},
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
"node_modules/sockjs": {
"version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@@ -10162,6 +10395,12 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/style-search": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+ "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
+ "dev": true
+ },
"node_modules/stylehacks": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
@@ -10178,6 +10417,499 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/stylelint": {
+ "version": "14.11.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz",
+ "integrity": "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==",
+ "dev": true,
+ "dependencies": {
+ "@csstools/selector-specificity": "^2.0.2",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^7.0.1",
+ "css-functions-list": "^3.1.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.11",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^6.0.1",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.2.0",
+ "ignore": "^5.2.0",
+ "import-lazy": "^4.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.25.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^9.0.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.16",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-safe-parser": "^6.0.0",
+ "postcss-selector-parser": "^6.0.10",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "style-search": "^0.1.0",
+ "supports-hyperlinks": "^2.2.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.0",
+ "v8-compile-cache": "^2.3.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ }
+ },
+ "node_modules/stylelint-config-sass-guidelines": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-9.0.1.tgz",
+ "integrity": "sha512-N06PsVsrgKijQ3YT5hqKA7x3NUkgELTRI1cbWMqcYiCGG6MjzvNk6Cb5YYA1PrvrksBV76BvY9P9bAswojVMqA==",
+ "dev": true,
+ "dependencies": {
+ "postcss-scss": "^4.0.2",
+ "stylelint-order": "^5.0.0",
+ "stylelint-scss": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^14.0.1"
+ }
+ },
+ "node_modules/stylelint-order": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz",
+ "integrity": "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^8.3.11",
+ "postcss-sorting": "^7.0.1"
+ },
+ "peerDependencies": {
+ "stylelint": "^14.0.0"
+ }
+ },
+ "node_modules/stylelint-scss": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz",
+ "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.21",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-selector-parser": "^6.0.6",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^14.5.1"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-3.3.0.tgz",
+ "integrity": "sha512-F53bapIZ9zI16ero8IWm6TrUE6SSibZBphJE9b5rR2FxtvmGmm1YmS+a5xjQzn63+cv71GVSCu4byX66fBLpEw==",
+ "dev": true,
+ "dependencies": {
+ "globby": "^11.1.0",
+ "jest-worker": "^28.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "stylelint": "^13.0.0 || ^14.0.0",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/jest-worker": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz",
+ "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/stylelint-webpack-plugin/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/stylelint/node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true
+ },
+ "node_modules/stylelint/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/stylelint/node_modules/camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/stylelint/node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/meow": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
+ "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize": "^1.2.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/stylelint/node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/trim-newlines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -10190,6 +10922,19 @@
"node": ">=8"
}
},
+ "node_modules/supports-hyperlinks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+ "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -10202,6 +10947,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
"node_modules/svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -10233,6 +10984,44 @@
"url": "https://sweetalert2.github.io/#donations"
}
},
+ "node_modules/table": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz",
+ "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
"node_modules/tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -11288,6 +12077,19 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
+ "node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/ws": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
@@ -12624,6 +13426,13 @@
"dev": true,
"optional": true
},
+ "@csstools/selector-specificity": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
+ "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
+ "dev": true,
+ "requires": {}
+ },
"@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -13396,6 +14205,17 @@
"@vue/shared": "3.2.37"
}
},
+ "@vue/eslint-config-typescript": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.0.tgz",
+ "integrity": "sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
+ "@typescript-eslint/parser": "^5.0.0",
+ "vue-eslint-parser": "^9.0.0"
+ }
+ },
"@vue/reactivity": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
@@ -13853,6 +14673,12 @@
}
}
},
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
"autoprefixer": {
"version": "10.4.8",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
@@ -14686,6 +15512,12 @@
"dev": true,
"requires": {}
},
+ "css-functions-list": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz",
+ "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==",
+ "dev": true
+ },
"css-loader": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz",
@@ -16012,6 +16844,37 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^3.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "dependencies": {
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
"globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -16039,6 +16902,12 @@
}
}
},
+ "globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true
+ },
"graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
@@ -16265,6 +17134,12 @@
}
}
},
+ "html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true
+ },
"htmlparser2": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
@@ -16460,6 +17335,12 @@
"resolve-from": "^4.0.0"
}
},
+ "import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true
+ },
"import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -16498,6 +17379,12 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
"interpret": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
@@ -16740,6 +17627,12 @@
"integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
"dev": true
},
+ "known-css-properties": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz",
+ "integrity": "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==",
+ "dev": true
+ },
"laravel-mix": {
"version": "6.0.49",
"resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz",
@@ -16852,6 +17745,12 @@
"regenerator-runtime": "^0.13.2"
}
},
+ "laravel-mix-stylelint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/laravel-mix-stylelint/-/laravel-mix-stylelint-1.0.0.tgz",
+ "integrity": "sha512-0FZD/Q0MG4tcu8w3MQrAnnRtOKVdPvGKOgYU9PsDuDIOe+PcWFGQEqjej24TgL7pMrqijfFw+J9vSDJIcA0j7A==",
+ "dev": true
+ },
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -16924,6 +17823,12 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true
+ },
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -16980,6 +17885,12 @@
"integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true
},
+ "mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "dev": true
+ },
"md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -17758,6 +18669,12 @@
"semver": "^7.3.5"
}
},
+ "postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true
+ },
"postcss-merge-longhand": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
@@ -17966,6 +18883,26 @@
"postcss-value-parser": "^4.2.0"
}
},
+ "postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "dev": true
+ },
+ "postcss-safe-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
+ "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "postcss-scss": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.4.tgz",
+ "integrity": "sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==",
+ "dev": true,
+ "requires": {}
+ },
"postcss-selector-parser": {
"version": "6.0.10",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
@@ -17976,6 +18913,13 @@
"util-deprecate": "^1.0.2"
}
},
+ "postcss-sorting": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz",
+ "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==",
+ "dev": true,
+ "requires": {}
+ },
"postcss-svgo": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
@@ -18745,6 +19689,17 @@
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ }
+ },
"sockjs": {
"version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@@ -18984,6 +19939,12 @@
}
}
},
+ "style-search": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+ "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
+ "dev": true
+ },
"stylehacks": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
@@ -18994,6 +19955,369 @@
"postcss-selector-parser": "^6.0.4"
}
},
+ "stylelint": {
+ "version": "14.11.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz",
+ "integrity": "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==",
+ "dev": true,
+ "requires": {
+ "@csstools/selector-specificity": "^2.0.2",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^7.0.1",
+ "css-functions-list": "^3.1.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.11",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^6.0.1",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.2.0",
+ "ignore": "^5.2.0",
+ "import-lazy": "^4.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.25.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^9.0.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.16",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-safe-parser": "^6.0.0",
+ "postcss-selector-parser": "^6.0.10",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "style-search": "^0.1.0",
+ "supports-hyperlinks": "^2.2.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.0",
+ "v8-compile-cache": "^2.3.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "dependencies": {
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true
+ },
+ "meow": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
+ "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+ "dev": true,
+ "requires": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize": "^1.2.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ }
+ },
+ "quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "dependencies": {
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
+ }
+ },
+ "redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "requires": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "requires": {
+ "min-indent": "^1.0.0"
+ }
+ },
+ "trim-newlines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "dev": true
+ }
+ }
+ },
+ "stylelint-config-sass-guidelines": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-9.0.1.tgz",
+ "integrity": "sha512-N06PsVsrgKijQ3YT5hqKA7x3NUkgELTRI1cbWMqcYiCGG6MjzvNk6Cb5YYA1PrvrksBV76BvY9P9bAswojVMqA==",
+ "dev": true,
+ "requires": {
+ "postcss-scss": "^4.0.2",
+ "stylelint-order": "^5.0.0",
+ "stylelint-scss": "^4.0.0"
+ }
+ },
+ "stylelint-order": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz",
+ "integrity": "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^8.3.11",
+ "postcss-sorting": "^7.0.1"
+ }
+ },
+ "stylelint-scss": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz",
+ "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.21",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-selector-parser": "^6.0.6",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "stylelint-webpack-plugin": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-3.3.0.tgz",
+ "integrity": "sha512-F53bapIZ9zI16ero8IWm6TrUE6SSibZBphJE9b5rR2FxtvmGmm1YmS+a5xjQzn63+cv71GVSCu4byX66fBLpEw==",
+ "dev": true,
+ "requires": {
+ "globby": "^11.1.0",
+ "jest-worker": "^28.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "jest-worker": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz",
+ "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -19003,12 +20327,28 @@
"has-flag": "^4.0.0"
}
},
+ "supports-hyperlinks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+ "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ }
+ },
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true
},
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
"svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -19030,6 +20370,39 @@
"integrity": "sha512-YqH/C6IPudeWVK9R0x3pCOqP7m90Ae50tl98SQBpAwL3+UBl1WYD2+5OaKy0ybiVTKbYe76wwJ3PV+bITLjl+A==",
"dev": true
},
+ "table": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz",
+ "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ }
+ }
+ },
"tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -19793,6 +21166,16 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
+ "write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ }
+ },
"ws": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
diff --git a/package.json b/package.json
index 485e4fe..180f7d5 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/resources/sass/_bootswatch.scss b/resources/sass/_bootswatch.scss
deleted file mode 100644
index 16c2a52..0000000
--- a/resources/sass/_bootswatch.scss
+++ /dev/null
@@ -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,");
- }
- }
-}
diff --git a/resources/sass/_complement.scss b/resources/sass/_complement.scss
deleted file mode 100644
index 79f22e0..0000000
--- a/resources/sass/_complement.scss
+++ /dev/null
@@ -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;
- }
-}
diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss
index abc38ae..24b9d55 100644
--- a/resources/sass/_variables.scss
+++ b/resources/sass/_variables.scss
@@ -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,
);
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
index 7ea48f7..3ac3244 100644
--- a/resources/sass/app.scss
+++ b/resources/sass/app.scss
@@ -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%;
}
diff --git a/resources/sass/bootstrap.scss b/resources/sass/bootstrap.scss
index 65aeefa..7310c2f 100644
--- a/resources/sass/bootstrap.scss
+++ b/resources/sass/bootstrap.scss
@@ -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;
}
diff --git a/resources/sass/vendor/_bootswatch.scss b/resources/sass/vendor/_bootswatch.scss
new file mode 100644
index 0000000..760f9a0
--- /dev/null
+++ b/resources/sass/vendor/_bootswatch.scss
@@ -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,");
+ }
+ }
+}
diff --git a/resources/sass/_ckEditorContent.scss b/resources/sass/vendor/_ckEditorContent.scss
similarity index 94%
rename from resources/sass/_ckEditorContent.scss
rename to resources/sass/vendor/_ckEditorContent.scss
index ad53fee..d9ebd78 100644
--- a/resources/sass/_ckEditorContent.scss
+++ b/resources/sass/vendor/_ckEditorContent.scss
@@ -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;
}
}
-
diff --git a/resources/sass/vendor/_complement.scss b/resources/sass/vendor/_complement.scss
new file mode 100644
index 0000000..17bc6cb
--- /dev/null
+++ b/resources/sass/vendor/_complement.scss
@@ -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;
+ }
+}
diff --git a/resources/sass/vendor/_overloadCrudPolicies.scss b/resources/sass/vendor/_overloadCrudPolicies.scss
new file mode 100644
index 0000000..593365f
--- /dev/null
+++ b/resources/sass/vendor/_overloadCrudPolicies.scss
@@ -0,0 +1,8 @@
+a.col_sort {
+ &:link,
+ :visited,
+ :hover,
+ :active {
+ text-decoration: none;
+ }
+}
diff --git a/resources/ts/components/MacroPlanningComponent.vue b/resources/ts/components/MacroPlanningComponent.vue
index 28d7a90..3595bf6 100644
--- a/resources/ts/components/MacroPlanningComponent.vue
+++ b/resources/ts/components/MacroPlanningComponent.vue
@@ -1068,7 +1068,7 @@ export default defineComponent({