{{ t('main.preference.key.map.projection') }}
|
diff --git a/resources/js/components/preferences/Color.vue b/resources/js/components/preferences/Color.vue
new file mode 100644
index 000000000..32fc21eac
--- /dev/null
+++ b/resources/js/components/preferences/Color.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+ {{ t(`main.preference.key.color.style.${option.id}`) }}
+
+
+
+ {{ t(`main.preference.key.color.style.${value.id}`) }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/i18n/de.json b/resources/js/i18n/de.json
index 68c05d013..7476eaaa5 100644
--- a/resources/js/i18n/de.json
+++ b/resources/js/i18n/de.json
@@ -537,6 +537,13 @@
"key": {
"language": "Sprache",
"password_reset_link": "Passwort per Link zurücksetzen",
+ "color": {
+ "title": "Design",
+ "style": {
+ "default": "Standard",
+ "dark_unrounded": "Dunkel (Harte Kanten)"
+ }
+ },
"columns": {
"title": "Spalten Hauptansicht",
"left": "Linke Spalte",
diff --git a/resources/js/i18n/en.json b/resources/js/i18n/en.json
index 5cca9b2d0..1bf7b9510 100644
--- a/resources/js/i18n/en.json
+++ b/resources/js/i18n/en.json
@@ -248,6 +248,9 @@
"reply_to_user": "Reply to {name}",
"reply_to_chat": "Reply to comment section"
}
+ },
+ "markdown_editor": {
+ "title": "Markdown Editor"
}
},
"main": {
@@ -534,6 +537,13 @@
"key": {
"language": "Language",
"password_reset_link": "Enable Reset Password Link",
+ "color": {
+ "title": "Theme",
+ "style": {
+ "default": "Default",
+ "dark_unrounded": "Dark (Unrounded corners)"
+ }
+ },
"columns": {
"title": "Columns in Main View",
"left": "Left Column",
diff --git a/resources/sass/_app-base.scss b/resources/sass/_app-base.scss
new file mode 100644
index 000000000..6e9939e98
--- /dev/null
+++ b/resources/sass/_app-base.scss
@@ -0,0 +1,51 @@
+// Bootstrap
+@import "~bootstrap/scss/bootstrap";
+@import "bootstrap";
+
+// tree-component
+@import "~tree-component/dist/tree.min.css";
+@import "tree";
+
+// vue-upload-component
+@import "upload";
+
+// multiselect
+@import "~@vueform/multiselect/themes/default";
+@import "multiselect";
+
+// code highlighting
+@import "highlight.js/styles/atom-one-dark.css";
+
+// map
+@import "map";
+
+// v-modal
+@import "modal";
+
+// dat.gui
+@import "datgui";
+
+// color gradient
+@import "gradient";
+
+// Search components
+@import "search";
+
+// Datepicker
+@import "~vue-datepicker-next/scss/index";
+@import "datepicker";
+
+// Popover
+@import "popover";
+
+// Markdown Editor (based on Milkdown)
+@import "markdown";
+
+// Spacialist utility classes
+@import "utilities";
+
+// Spacialist specific
+@import "style";
+
+// Spacialist specific
+@import "animations";
\ No newline at end of file
diff --git a/resources/sass/_bootstrap.scss b/resources/sass/_bootstrap.scss
index 748573812..42abf4181 100644
--- a/resources/sass/_bootstrap.scss
+++ b/resources/sass/_bootstrap.scss
@@ -1,6 +1,8 @@
.breadcrumb {
background-color: $gray-200;
- border-radius: $border-radius;
+ @if $enable-rounded {
+ border-radius: $border-radius;
+ }
}
.dropdown-menu {
diff --git a/resources/sass/_datepicker.scss b/resources/sass/_datepicker.scss
index 76dbdf113..41c05d93c 100644
--- a/resources/sass/_datepicker.scss
+++ b/resources/sass/_datepicker.scss
@@ -5,8 +5,10 @@
color: $text-color;
background-color: $body-bg;
border: 1px solid;
- border-color: $input-border-color !important;
- border-radius: $input-border-radius !important;
+ @if $enable-rounded {
+ border-color: $input-border-color !important;
+ border-radius: $input-border-radius !important;
+ }
}
.#{$namespace}-datepicker-col-5 {
diff --git a/resources/sass/_markdown.scss b/resources/sass/_markdown.scss
index c063fc7c8..649b25f97 100644
--- a/resources/sass/_markdown.scss
+++ b/resources/sass/_markdown.scss
@@ -11,7 +11,9 @@ p.paragraph {
.milkdown {
flex-grow: 1;
background: #EBF2FD;
- border-radius: $border-radius-lg;
+ @if $enable-rounded {
+ border-radius: $border-radius-lg;
+ }
padding: map-get($spacers, 3);
margin-top: map-get($spacers, 1);
overflow-y: auto;
diff --git a/resources/sass/_multiselect.scss b/resources/sass/_multiselect.scss
index ccec62f30..b24dd5405 100644
--- a/resources/sass/_multiselect.scss
+++ b/resources/sass/_multiselect.scss
@@ -12,4 +12,8 @@
.multiselect-wide > .multiselect-dropdown {
width: 20vw;
+}
+
+.multiselect-option {
+ --ms-option-bg-selected: #{$green};
}
\ No newline at end of file
diff --git a/resources/sass/_style.scss b/resources/sass/_style.scss
index 99fc5b5bc..2f40d7592 100644
--- a/resources/sass/_style.scss
+++ b/resources/sass/_style.scss
@@ -41,7 +41,9 @@ code.normal {
height: 100%;
width: 100%;
border: 2px dashed lightgray;
- border-radius: 3px;
+ @if $enable-rounded {
+ border-radius: 3px;
+ }
display: flex;
flex-direction: column;
justify-content: center;
@@ -123,7 +125,9 @@ code.normal {
}
.card-hover-overlay {
- border-radius: $card-border-radius !important;
+ @if $enable-rounded {
+ border-radius: $card-border-radius !important;
+ }
display: flex;
justify-content: center;
align-items: center;
@@ -170,7 +174,9 @@ code.normal {
.hover-item:hover {
background-color: $gray-200 !important;
- border-radius: $input-border-radius !important;
+ @if $enable-rounded {
+ border-radius: $input-border-radius !important;
+ }
}
.rendered-markdown li > p {
diff --git a/resources/sass/_tree.scss b/resources/sass/_tree.scss
index ab997d9a5..b4e0c1d7b 100644
--- a/resources/sass/_tree.scss
+++ b/resources/sass/_tree.scss
@@ -15,8 +15,9 @@
font-weight: $font-weight-normal;
// color: $white !important;
background-color: rgba(red($yellow), green($yellow), blue($yellow), 0.5) !important;
-
- border-radius: $border-radius;
+ @if $enable-rounded {
+ border-radius: $border-radius;
+ }
}
diff --git a/resources/sass/_variables-override-dark_unrounded.scss b/resources/sass/_variables-override-dark_unrounded.scss
new file mode 100644
index 000000000..589632593
--- /dev/null
+++ b/resources/sass/_variables-override-dark_unrounded.scss
@@ -0,0 +1,83 @@
+// Colors
+$white: #000 !default;
+$gray-100: #212529 !default;
+$gray-200: #343a40 !default;
+$gray-300: #495057 !default;
+$gray-400: #6c757d !default;
+$gray-500: #adb5bd !default;
+$gray-600: #ced4da !default;
+$gray-700: #dee2e6 !default;
+$gray-800: #e9ecef !default;
+$gray-900: #f8f9fa !default;
+$black: #fff !default;
+
+$body-bg: $gray-100;
+$text-color: $gray-600;
+$navbar-default-bg: $white;
+$panel-default-heading-bg: $white;
+
+$blue: #dc3545 !default;
+$red: #ab296a !default;
+$orange: #fd7e14 !default;
+$green: #479f76 !default;
+$cyan: #4dd4ac !default;
+
+$indigo: #6610f2 !default;
+$purple: #6f42c1 !default;
+$pink: #d63384 !default;
+$yellow: #ffc107 !default;
+$teal: #20c997 !default;
+
+$brand-primary: $blue;
+$brand-info: $cyan;
+$brand-success: $green;
+$brand-warning: $orange;
+$brand-danger: $red;
+
+// Corners
+$enable-rounded: false;
+
+
+// Addons
+
+// Modal
+.sp-modal-content {
+ --bs-modal-bg: #{$gray-100};
+}
+
+// Multiselect
+.multiselect {
+ --ms-bg: $gray-100;
+ color: $gray-600;
+ @if not $enable-rounded {
+ --ms-radius: 0px;
+ }
+}
+
+.multiselect-search {
+ --ms-placeholder-color: $gray-600;
+}
+
+.multiselect-tag {
+ --ms-tag-bg: #{$green};
+ --ms-tag-color: #{$gray-600};
+ --ms-tag-bg-disabled: #{$gray-400};
+ --ms-tag-color-disabled: #{$gray-600};
+ @if not $enable-rounded {
+ --ms-tag-radius: 0px;
+ }
+}
+
+.multiselect-dropdown {
+ --ms-dropdown-border-color: #{$gray-300};
+ --ms-dropdown-bg: #{$gray-100};
+ @if not $enable-rounded {
+ --ms-dropdown-radius: 0px;
+ }
+}
+
+.multiselect-option {
+ --ms-option-bg-pointed: #{$gray-200};
+ --ms-option-color-pointed: $text-color;
+ --ms-option-bg-selected: $green;
+}
\ No newline at end of file
diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss
index 4dad737ce..71c6ba73b 100644
--- a/resources/sass/_variables.scss
+++ b/resources/sass/_variables.scss
@@ -1,6 +1,24 @@
-
+// Defaults
// Body
-$body-bg: #f5f8fa;
+$body-bg: #f8f9fa !default;
+
+// Brands
+$brand-primary: #0d6efd !default;
+$brand-info: #0dcaf0 !default;
+$brand-success: #198754 !default;
+$brand-warning: #ffc107 !default;
+$brand-danger: #dc3545 !default;
+
+// Typography
+$text-color: #6c757d !default;
+
+// Navbar
+$navbar-default-bg: #fff !default;
+
+// Panels
+$panel-default-heading-bg: #fff !default;
+
+$enable-rounded: true !default;
// Borders
$laravel-border-color: darken($body-bg, 10%);
@@ -9,25 +27,14 @@ $navbar-default-border: $laravel-border-color;
$panel-default-border: $laravel-border-color;
$panel-inner-border: $laravel-border-color;
-// Brands
-$brand-primary: #0d6efd;
-$brand-info: #0dcaf0;
-$brand-success: #198754;
-$brand-warning: #ffc107;
-$brand-danger: #dc3545;
-
// Typography
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
$font-family-sans-serif: "Raleway", sans-serif;
$font-family-monospace: "Source Code Pro", monospace;
$font-size-base: .9rem !default;
$line-height-base: 1.6;
-$text-color: #636b6f;
$font-weight-medium: 600 !default;
-// Navbar
-$navbar-default-bg: #fff;
-
$logo-size: 24px;
// Buttons
@@ -38,9 +45,6 @@ $input-border: lighten($text-color, 40%);
$input-border-focus: lighten($brand-primary, 25%);
$input-color-placeholder: lighten($text-color, 30%);
-// Panels
-$panel-default-heading-bg: #fff;
-
// Breadcrumbs
$breadcrumb-item-padding: .25rem;
$breadcrumb-divider: quote(">");
diff --git a/resources/sass/app-dark_unrounded.scss b/resources/sass/app-dark_unrounded.scss
new file mode 100644
index 000000000..3be68ff65
--- /dev/null
+++ b/resources/sass/app-dark_unrounded.scss
@@ -0,0 +1,5 @@
+// Variables
+@import "variables-override-dark_unrounded";
+@import "variables";
+
+@import "app-base";
\ No newline at end of file
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
index af97fc3ee..a8c32f18d 100644
--- a/resources/sass/app.scss
+++ b/resources/sass/app.scss
@@ -1,54 +1,4 @@
// Variables
@import "variables";
-// Bootstrap
-@import "~bootstrap/scss/bootstrap";
-@import "bootstrap";
-
-// tree-component
-@import "~tree-component/dist/tree.min.css";
-@import "tree";
-
-// vue-upload-component
-@import "upload";
-
-// multiselect
-@import "~@vueform/multiselect/themes/default";
-@import "multiselect";
-
-// code highlighting
-@import "highlight.js/styles/atom-one-dark.css";
-
-// map
-@import "map";
-
-// v-modal
-@import "modal";
-
-// dat.gui
-@import "datgui";
-
-// color gradient
-@import "gradient";
-
-// Search components
-@import "search";
-
-// Datepicker
-@import "~vue-datepicker-next/scss/index";
-@import "datepicker";
-
-// Popover
-@import "popover";
-
-// Markdown Editor (based on Milkdown)
-@import "markdown";
-
-// Spacialist utility classes
-@import "utilities";
-
-// Spacialist specific
-@import "style";
-
-// Spacialist specific
-@import "animations";
+@import "app-base";
\ No newline at end of file
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 2e31bdd56..d4214a127 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -13,7 +13,7 @@
-
+
diff --git a/resources/views/layouts/laravel.blade.php b/resources/views/layouts/laravel.blade.php
index cfd4f783e..1b3321b27 100644
--- a/resources/views/layouts/laravel.blade.php
+++ b/resources/views/layouts/laravel.blade.php
@@ -13,7 +13,7 @@
-
+
diff --git a/webpack.mix.js b/webpack.mix.js
index 866ffde93..622317ffb 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -34,6 +34,7 @@ const appPath = process.env.MIX_APP_PATH;
mix.js('resources/js/app.js', 'public/js').vue()
.sass('resources/sass/app.scss', 'public/css')
+ .sass('resources/sass/app-dark_unrounded.scss', 'public/css')
// .copy(
// 'node_modules/vue-multiselect/dist/vue-multiselect.min.css',
// 'public/css'
@@ -45,6 +46,16 @@ mix.js('resources/js/app.js', 'public/js').vue()
})
.webpackConfig(webpack => {
return {
+ module: {
+ rules: [{
+ test: /\.m?js$/,
+ resolve: {
+ fullySpecified: false
+ },
+ include: /node_modules/,
+ type: 'javascript/auto',
+ }]
+ },
resolve: {
// alias: {
// videojs: 'video.js',