diff --git a/gradle.properties b/gradle.properties
index aae5a06..8b37b22 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,3 @@
group = de.jottyfan.camporganizer
-version = 1.0.7
+version = 1.0.8
description = CampOrganizer2
\ No newline at end of file
diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css
index d7ce9da..ce9a68c 100644
--- a/src/main/resources/static/css/style.css
+++ b/src/main/resources/static/css/style.css
@@ -41,12 +41,23 @@ html {
}
body {
- background-image: url('../images/background.jpg');
+ background-image: url('../images/background.svg');
+ background-repeat: repeat;
}
.navbar-background {
- background-image: url('../images/background.jpg');
- background-repeat: no-repeat;
+ background-image: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1)),
+ url('../images/background.svg');
+ background-repeat: repeat;
+}
+
+[data-bs-theme="dark"] html {
+ background-image: url('../images/background_dark.svg');
+}
+
+[data-bs-theme="dark"] .navbar-background {
+ background-image: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1)),
+ url('../images/background_dark.svg');
}
.logo {
@@ -462,8 +473,8 @@ div {
border: 1px solid gray;
}
-.block660 {
- max-width: 660px;
+.block800 {
+ max-width: 800px;
margin-left: auto;
margin-right: auto;
}
@@ -539,3 +550,131 @@ div {
.thumbswipe::-webkit-scrollbar {
display: none;
}
+
+/* ===== Dark Mode (Bootstrap 5.3: data-bs-theme="dark") ===== */
+
+/* --- style.css --- */
+[data-bs-theme="dark"] body,
+[data-bs-theme="dark"] .navbar-background {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.75)),
+ url('../images/background.jpg');
+}
+
+[data-bs-theme="dark"] .mainpage {
+ background-color: rgba(33, 37, 41, 0.6);
+}
+
+[data-bs-theme="dark"] .tablebox {
+ background-color: rgba(33, 37, 41, 0.6) !important;
+ border-color: #495057;
+}
+
+[data-bs-theme="dark"] .locked {
+ background-color: rgba(255, 255, 255, 0.08) !important;
+}
+
+/* Links */
+[data-bs-theme="dark"] .tablelink {
+ color: #6ea8fe;
+}
+[data-bs-theme="dark"] .tablelink:hover {
+ color: #5fd3d3;
+}
+[data-bs-theme="dark"] .hoverlink {
+ color: #ced4da;
+}
+[data-bs-theme="dark"] .hoverlink:hover {
+ color: #6ea8fe;
+}
+[data-bs-theme="dark"] .versionlink {
+ color: #ddd;
+}
+
+/* Buttons */
+[data-bs-theme="dark"] .linkbtn:hover,
+[data-bs-theme="dark"] .btn-icon-silent:hover {
+ background-color: #343a40;
+ border-color: #6c757d;
+}
+[data-bs-theme="dark"] .btn-icon-silent {
+ color: #adb5bd;
+}
+[data-bs-theme="dark"] .btn-linda {
+ box-shadow: 0 0 7px 4px rgba(0, 0, 0, 0.6);
+}
+[data-bs-theme="dark"] .btn-linda:hover {
+ background-color: #6c757d !important;
+}
+[data-bs-theme="dark"] .mytoggle_btn:hover {
+ background-color: rgba(255, 255, 255, 0.12) !important;
+}
+[data-bs-theme="dark"] .lindaborders {
+ box-shadow: 0 0 7px 4px rgba(0, 0, 0, 0.6);
+}
+
+/* Verläufe / Flächen */
+[data-bs-theme="dark"] .versionclip {
+ background-image: linear-gradient(to bottom, #495057, #212529);
+}
+[data-bs-theme="dark"] .versionclip .versionlink {
+ color: #ddd;
+}
+[data-bs-theme="dark"] .silver-to-gray-gradient {
+ background-image: linear-gradient(to bottom right, #495057, #343a40) !important;
+}
+[data-bs-theme="dark"] .roleflag {
+ background-image: linear-gradient(to right bottom, #495057, #343a40);
+ border-color: #6c757d;
+}
+[data-bs-theme="dark"] .framed-white {
+ background: #212529;
+ color: #f8f9fa;
+ border-color: #adb5bd;
+}
+
+/* Status-Farben (abgedunkelt) */
+[data-bs-theme="dark"] .acc_over {
+ background-image: linear-gradient(to bottom right, #495057, #343a40) !important;
+}
+[data-bs-theme="dark"] .acc_approved { background: #1e4d2b !important; }
+[data-bs-theme="dark"] .acc_rejected { background: #5c2323 !important; }
+[data-bs-theme="dark"] .acc_revoked { background: #5a2d5b !important; }
+[data-bs-theme="dark"] .acc_requested { background: #6b4515 !important; }
+
+/* Fehlerzustände */
+[data-bs-theme="dark"] .error {
+ color: #ff6b6b;
+}
+[data-bs-theme="dark"] .inputerror {
+ background-image: linear-gradient(to left bottom, #212529, #4a2326) !important;
+}
+[data-bs-theme="dark"] .menu-danger {
+ color: #ff6b6b;
+}
+
+/* Icons / Logo (falls dunkle Grafiken) */
+[data-bs-theme="dark"] .icon_profile {
+ filter: invert(1) brightness(1.2);
+}
+
+.icon_darkmode {
+ width: 32px;
+ height: 32px;
+ background-size: 32px;
+ background-repeat: no-repeat;
+ background-image: url('../images/Icon_Dunkelmodus.svg');
+ display: inline-block;
+ cursor: pointer;
+}
+
+[data-bs-theme="dark"] .icon_darkmode {
+ background-image: url('../images/Icon_Hellmodus.svg');
+}
+
+.icon_darkmode:hover {
+ background-image: url('../images/Icon_Dunkelmodus_hover.svg');
+}
+
+[data-bs-theme="dark"] .icon_darkmode:hover {
+ background-image: url('../images/Icon_Hellmodus_hover.svg');
+}
diff --git a/src/main/resources/static/css/style_static.css b/src/main/resources/static/css/style_static.css
deleted file mode 100644
index 9b33446..0000000
--- a/src/main/resources/static/css/style_static.css
+++ /dev/null
@@ -1,160 +0,0 @@
-.headerlayout {
- background-color: transparent !important;
-}
-
-.footerlayout {
- color: silver;
- padding: 8px;
- margin: 0px;
- background-color: #28313d;
- font-size: 12px;
- position: absolute;
- bottom: 0px;
- width: 100%;
-}
-
-.main {
- padding-left: 8px;
- padding-right: 8px;
- font-size: 14px;
- color: rgb(96, 96, 96);
- overflow: auto;
- height: calc(100vh - 34px - 126px);
-}
-
-.banner {
- background: #fafafa;
- max-height: 56px;
- margin-bottom: 30px;
- padding: 12px 0;
-}
-
-.banner>* {
- max-width: 1200px;
- margin: 0 auto;
- font-size: 25px;
- display: block;
-}
-
-.menutitle {
- flex-basis: -moz-available;
- color: rgb(6, 147, 227);
-}
-
-.blocktext {
- max-width: 1200px;
- margin: 0 auto;
-}
-
-.blocktext786 {
- max-width: 786px;
- margin: 0 auto;
-}
-
-.darkmode-textcolor {
- color: #787878 !important;
-}
-
-.darkmode-textcolor:hover {
- color: rgb(36, 31, 49) !important;
-}
-
-.lightmode-textcolor {
- color: #787878 !important;
-}
-
-.lightmode-textcolor:hover {
- color: rgb(222, 221, 218) !important;
-}
-
-.text-light {
- text-decoration: none;
-}
-
-.text-light#HOVER {
- color: rgb(6, 147, 227);
-}
-
-.leftimage {
- margin-right: 32px;
-}
-
-.rightimage {
- margin-left: 32px;
-}
-
-.center {
- text-align: center;
-}
-
-.right {
- text-align: right;
-}
-
-.gray-toggler .navbar-toggler-icon {
- background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(128, 128, 128, 1.0)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
-}
-
-/* Set the border color to the desired color */
-.gray-toggler.navbar-toggler {
- border-color: silver;
-}
-
-.dropdown-menu {
- max-height: 480px;
- overflow-y: auto;
-}
-
-.darkmodebutton {
- border: 1px solid #4d4d4d;
- border-radius: 4px;
- background-color: #242424;
-}
-
-.help {
- text-align: right;
- font-size: small;
-}
-
-html {
- overflow-x: hidden;
-}
-
-body {
- font-family: Monserrat, sans-serif;
- background-image: url('../images/background.jpg');
-}
-
-a {
- color: rgb(6, 147, 227);
-}
-
-h1 {
- font-size: 25px;
-}
-
-h2 {
- font-size: 22px;
-}
-
-h3 {
- font-size: 18px;
-}
-
-h4 {
- font-size: 16px;
-}
-
-h5 {
- font-size: 14px;
-}
-
- .preview-content {
- min-height: 200px;
- max-height: 200px;
- overflow-y: auto;
-}
-
-.accordion-collapse:not(.show) {
- height: 200px !important;
-}
diff --git a/src/main/resources/static/images/Icon_Alter.svg b/src/main/resources/static/images/Icon_Alter.svg
index 388bf42..cda5279 100644
--- a/src/main/resources/static/images/Icon_Alter.svg
+++ b/src/main/resources/static/images/Icon_Alter.svg
@@ -9,7 +9,7 @@
}
.cls-1, .cls-2 {
- stroke: #313122;
+ stroke: #3f50eb;
}
.cls-1, .cls-2, .cls-3 {
diff --git a/src/main/resources/static/images/Icon_Bett.svg b/src/main/resources/static/images/Icon_Bett.svg
index a934e5c..cc86faa 100644
--- a/src/main/resources/static/images/Icon_Bett.svg
+++ b/src/main/resources/static/images/Icon_Bett.svg
@@ -10,7 +10,7 @@
.cls-1, .cls-2 {
fill: none;
- stroke: #313122;
+ stroke: #229191;
}
.cls-2 {
diff --git a/src/main/resources/static/images/Icon_Datum.svg b/src/main/resources/static/images/Icon_Datum.svg
index 97f6f04..b2255a5 100644
--- a/src/main/resources/static/images/Icon_Datum.svg
+++ b/src/main/resources/static/images/Icon_Datum.svg
@@ -8,7 +8,7 @@
}
.cls-1, .cls-2 {
- stroke: #313122;
+ stroke: #912222;
}
.cls-1, .cls-2, .cls-3 {
diff --git a/src/main/resources/static/images/Icon_Dunkelmodus.svg b/src/main/resources/static/images/Icon_Dunkelmodus.svg
new file mode 100644
index 0000000..037f11f
--- /dev/null
+++ b/src/main/resources/static/images/Icon_Dunkelmodus.svg
@@ -0,0 +1,40 @@
+
+
diff --git a/src/main/resources/static/images/Icon_Dunkelmodus_hover.svg b/src/main/resources/static/images/Icon_Dunkelmodus_hover.svg
new file mode 100644
index 0000000..119077e
--- /dev/null
+++ b/src/main/resources/static/images/Icon_Dunkelmodus_hover.svg
@@ -0,0 +1,40 @@
+
+
diff --git a/src/main/resources/static/images/Icon_Hellmodus.svg b/src/main/resources/static/images/Icon_Hellmodus.svg
new file mode 100644
index 0000000..df73522
--- /dev/null
+++ b/src/main/resources/static/images/Icon_Hellmodus.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/main/resources/static/images/Icon_Hellmodus_hover.svg b/src/main/resources/static/images/Icon_Hellmodus_hover.svg
new file mode 100644
index 0000000..4777a0e
--- /dev/null
+++ b/src/main/resources/static/images/Icon_Hellmodus_hover.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/main/resources/static/images/Icon_Preis.svg b/src/main/resources/static/images/Icon_Preis.svg
index e51a4b2..388acd0 100644
--- a/src/main/resources/static/images/Icon_Preis.svg
+++ b/src/main/resources/static/images/Icon_Preis.svg
@@ -11,7 +11,7 @@
}
.cls-1, .cls-2, .cls-3 {
- stroke: #313122;
+ stroke: #229122;
}
.cls-1, .cls-2, .cls-3, .cls-4 {
diff --git a/src/main/resources/static/images/Icon_Stern.svg b/src/main/resources/static/images/Icon_Stern.svg
index c8e7d6e..113f3b1 100644
--- a/src/main/resources/static/images/Icon_Stern.svg
+++ b/src/main/resources/static/images/Icon_Stern.svg
@@ -13,7 +13,7 @@
}
.cls-1, .cls-3 {
- stroke: #313122;
+ stroke: #919122;
}
.cls-4 {
diff --git a/src/main/resources/static/images/background.jpg b/src/main/resources/static/images/background.jpg
deleted file mode 100644
index 43768ae..0000000
Binary files a/src/main/resources/static/images/background.jpg and /dev/null differ
diff --git a/src/main/resources/static/images/background.svg b/src/main/resources/static/images/background.svg
new file mode 100644
index 0000000..145679f
--- /dev/null
+++ b/src/main/resources/static/images/background.svg
@@ -0,0 +1,32 @@
+
diff --git a/src/main/resources/static/images/background_dark.svg b/src/main/resources/static/images/background_dark.svg
new file mode 100644
index 0000000..9fcd91e
--- /dev/null
+++ b/src/main/resources/static/images/background_dark.svg
@@ -0,0 +1,41 @@
+
diff --git a/src/main/resources/static/js/progress.js b/src/main/resources/static/js/progress.js
index 2026d6e..6f9df27 100644
--- a/src/main/resources/static/js/progress.js
+++ b/src/main/resources/static/js/progress.js
@@ -1,9 +1,22 @@
progress = {
- start : function(zin) {
- zin = zin || 1000;
- $("body").append("
");
- },
- stop : function() {
- $("#requestopen").remove();
- }
-}
\ No newline at end of file
+ start: function(zin) {
+ zin = zin || 1000;
+ $("body").append("
");
+ },
+ stop: function() {
+ $("#requestopen").remove();
+ }
+}
+
+ (function() {
+ const saved = localStorage.getItem('theme');
+ const preferred = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
+ document.documentElement.setAttribute('data-bs-theme', saved || preferred);
+ })();
+
+ function toggleTheme() {
+ const html = document.documentElement;
+ const next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
+ html.setAttribute('data-bs-theme', next);
+ localStorage.setItem('theme', next);
+ }
diff --git a/src/main/resources/templates/fragments/camplist.html b/src/main/resources/templates/fragments/camplist.html
index f84f77c..e215802 100644
--- a/src/main/resources/templates/fragments/camplist.html
+++ b/src/main/resources/templates/fragments/camplist.html
@@ -2,7 +2,7 @@