Spaces:
Configuration error
Configuration error
Commit ·
711dab1
1
Parent(s): ded4cd1
Refactor theme vars; add employee list UI & scripts
Browse filesIntroduce centralized theme variables and refactor many CSS files to use them (base/theme/sidebar + many component styles). Add new employee management feature: template (employee-list.html), styles (employee-list.css) and JS (employee-popup.js, room-code.js, copy-code.js). Add sidebar activation JS and various template tweaks (dashboard links, faceID/document actions, user info edit popup). Add /employeeList mapping in HomeController. Remove legacy attendance-common/manager CSS. Update application.properties datasource (switch to MySQL and credential changes) and minor footer/formatting fixes.
- src/main/java/com/attendenceSystem/frontroller/HomeController.java +4 -0
- src/main/resources/static/css/absent/absent-create.css +10 -10
- src/main/resources/static/css/absent/absent-history.css +18 -18
- src/main/resources/static/css/absent/absent-list.css +2 -2
- src/main/resources/static/css/account/account-list.css +19 -19
- src/main/resources/static/css/account/employee-list.css +627 -0
- src/main/resources/static/css/attendance/attendance-common.css +0 -64
- src/main/resources/static/css/attendance/attendance-history.css +18 -18
- src/main/resources/static/css/attendance/attendance-manager.css +0 -27
- src/main/resources/static/css/attendance/attendance.css +15 -15
- src/main/resources/static/css/base.css +43 -18
- src/main/resources/static/css/dashboard/dashboard-admin.css +28 -28
- src/main/resources/static/css/dashboard/dashboard-employee.css +18 -18
- src/main/resources/static/css/dashboard/dashboard-manager.css +6 -6
- src/main/resources/static/css/document/document-create.css +11 -11
- src/main/resources/static/css/document/document-list.css +97 -84
- src/main/resources/static/css/faceID/faceID-create.css +24 -24
- src/main/resources/static/css/faceID/faceID-list.css +20 -12
- src/main/resources/static/css/layout/footer.css +14 -13
- src/main/resources/static/css/report/report-day.css +17 -17
- src/main/resources/static/css/report/report-month.css +14 -14
- src/main/resources/static/css/sidebar/sidebar.css +84 -34
- src/main/resources/static/css/theme.css +32 -224
- src/main/resources/static/css/user/user-information.css +235 -18
- src/main/resources/static/js/employee/copy-code.js +7 -0
- src/main/resources/static/js/employee/employee-popup.js +24 -0
- src/main/resources/static/js/employee/room-code.js +13 -0
- src/main/resources/static/js/main.js +8 -4
- src/main/resources/static/js/sidebar.js +13 -0
- src/main/resources/templates/cms/account/employee-list.html +271 -0
- src/main/resources/templates/cms/dashboard/dashboard-employee.html +7 -7
- src/main/resources/templates/cms/document/document-list.html +18 -25
- src/main/resources/templates/cms/face-id/faceID-list.html +5 -3
- src/main/resources/templates/cms/layout/footer.html +1 -0
- src/main/resources/templates/cms/sidebar/sidebar-admin.html +12 -2
- src/main/resources/templates/cms/sidebar/sidebar-employee.html +10 -0
- src/main/resources/templates/cms/sidebar/sidebar-manage.html +31 -9
- src/main/resources/templates/cms/user/user-information.html +59 -2
src/main/java/com/attendenceSystem/frontroller/HomeController.java
CHANGED
|
@@ -84,6 +84,10 @@ public class HomeController {
|
|
| 84 |
public String accountList() {
|
| 85 |
return "cms/account/account-list";
|
| 86 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
@GetMapping("/absentCreate")
|
| 88 |
public String absentCreate() {
|
| 89 |
return "cms/absent/absent-create";
|
|
|
|
| 84 |
public String accountList() {
|
| 85 |
return "cms/account/account-list";
|
| 86 |
}
|
| 87 |
+
@GetMapping("/employeeList")
|
| 88 |
+
public String employeeList() {
|
| 89 |
+
return "cms/account/employee-list";
|
| 90 |
+
}
|
| 91 |
@GetMapping("/absentCreate")
|
| 92 |
public String absentCreate() {
|
| 93 |
return "cms/absent/absent-create";
|
src/main/resources/static/css/absent/absent-create.css
CHANGED
|
@@ -70,13 +70,13 @@
|
|
| 70 |
.form-group textarea {
|
| 71 |
width: 100%;
|
| 72 |
|
| 73 |
-
background:
|
| 74 |
|
| 75 |
-
border: 1px solid
|
| 76 |
|
| 77 |
border-radius: 14px;
|
| 78 |
|
| 79 |
-
color: white;
|
| 80 |
|
| 81 |
padding: 14px 16px;
|
| 82 |
|
|
@@ -98,7 +98,7 @@
|
|
| 98 |
.form-group textarea:focus {
|
| 99 |
outline: none;
|
| 100 |
|
| 101 |
-
border-color: var(--indigo);
|
| 102 |
|
| 103 |
box-shadow:
|
| 104 |
0 0 0 4px rgba(99, 102, 241, .15);
|
|
@@ -109,8 +109,8 @@
|
|
| 109 |
========================= */
|
| 110 |
|
| 111 |
.form-group select option {
|
| 112 |
-
background:
|
| 113 |
-
color: white;
|
| 114 |
}
|
| 115 |
|
| 116 |
/* =========================
|
|
@@ -150,7 +150,7 @@
|
|
| 150 |
|
| 151 |
background:
|
| 152 |
linear-gradient(to right,
|
| 153 |
-
var(--indigo),
|
| 154 |
var(--purple));
|
| 155 |
}
|
| 156 |
|
|
@@ -159,12 +159,12 @@
|
|
| 159 |
}
|
| 160 |
|
| 161 |
.btn-secondary {
|
| 162 |
-
background:
|
| 163 |
-
color: white;
|
| 164 |
}
|
| 165 |
|
| 166 |
.btn-secondary:hover {
|
| 167 |
-
background:
|
| 168 |
}
|
| 169 |
|
| 170 |
/* =========================
|
|
|
|
| 70 |
.form-group textarea {
|
| 71 |
width: 100%;
|
| 72 |
|
| 73 |
+
background: var(--bg-form);
|
| 74 |
|
| 75 |
+
border: 1px solid var(--border);
|
| 76 |
|
| 77 |
border-radius: 14px;
|
| 78 |
|
| 79 |
+
color: var(--text-white);
|
| 80 |
|
| 81 |
padding: 14px 16px;
|
| 82 |
|
|
|
|
| 98 |
.form-group textarea:focus {
|
| 99 |
outline: none;
|
| 100 |
|
| 101 |
+
border-color: var(--indigo-06);
|
| 102 |
|
| 103 |
box-shadow:
|
| 104 |
0 0 0 4px rgba(99, 102, 241, .15);
|
|
|
|
| 109 |
========================= */
|
| 110 |
|
| 111 |
.form-group select option {
|
| 112 |
+
background: var(--bg-card);
|
| 113 |
+
color: var(--text-white);
|
| 114 |
}
|
| 115 |
|
| 116 |
/* =========================
|
|
|
|
| 150 |
|
| 151 |
background:
|
| 152 |
linear-gradient(to right,
|
| 153 |
+
var(--indigo-06),
|
| 154 |
var(--purple));
|
| 155 |
}
|
| 156 |
|
|
|
|
| 159 |
}
|
| 160 |
|
| 161 |
.btn-secondary {
|
| 162 |
+
background: var(--btn-secondary);
|
| 163 |
+
color: var(--text-white);
|
| 164 |
}
|
| 165 |
|
| 166 |
.btn-secondary:hover {
|
| 167 |
+
background: var(--btn-secondary-hover);
|
| 168 |
}
|
| 169 |
|
| 170 |
/* =========================
|
src/main/resources/static/css/absent/absent-history.css
CHANGED
|
@@ -71,9 +71,9 @@
|
|
| 71 |
|
| 72 |
color: white;
|
| 73 |
|
| 74 |
-
background:
|
| 75 |
|
| 76 |
-
border: 1px solid
|
| 77 |
|
| 78 |
transition: .3s;
|
| 79 |
}
|
|
@@ -82,14 +82,14 @@
|
|
| 82 |
.form-group select:focus {
|
| 83 |
outline: none;
|
| 84 |
|
| 85 |
-
border-color: var(--indigo);
|
| 86 |
|
| 87 |
box-shadow:
|
| 88 |
-
0 0 0 4px
|
| 89 |
}
|
| 90 |
|
| 91 |
.form-group select option {
|
| 92 |
-
background:
|
| 93 |
}
|
| 94 |
|
| 95 |
/* ===================================
|
|
@@ -127,7 +127,7 @@
|
|
| 127 |
|
| 128 |
background:
|
| 129 |
linear-gradient(to right,
|
| 130 |
-
var(--indigo),
|
| 131 |
var(--purple));
|
| 132 |
}
|
| 133 |
|
|
@@ -136,12 +136,12 @@
|
|
| 136 |
}
|
| 137 |
|
| 138 |
.btn-secondary {
|
| 139 |
-
background:
|
| 140 |
-
color: white;
|
| 141 |
}
|
| 142 |
|
| 143 |
.btn-secondary:hover {
|
| 144 |
-
background:
|
| 145 |
}
|
| 146 |
|
| 147 |
/* ===================================
|
|
@@ -159,7 +159,7 @@
|
|
| 159 |
|
| 160 |
.table thead {
|
| 161 |
background:
|
| 162 |
-
|
| 163 |
}
|
| 164 |
|
| 165 |
.table th {
|
|
@@ -180,7 +180,7 @@
|
|
| 180 |
color: #e2e8f0;
|
| 181 |
|
| 182 |
border-bottom:
|
| 183 |
-
1px solid
|
| 184 |
}
|
| 185 |
|
| 186 |
.table tbody tr {
|
|
@@ -189,7 +189,7 @@
|
|
| 189 |
|
| 190 |
.table tbody tr:hover {
|
| 191 |
background:
|
| 192 |
-
|
| 193 |
}
|
| 194 |
|
| 195 |
/* ===================================
|
|
@@ -218,14 +218,14 @@
|
|
| 218 |
|
| 219 |
.approved {
|
| 220 |
background:
|
| 221 |
-
|
| 222 |
|
| 223 |
color: var(--success);
|
| 224 |
}
|
| 225 |
|
| 226 |
.rejected {
|
| 227 |
background:
|
| 228 |
-
|
| 229 |
|
| 230 |
color: var(--danger);
|
| 231 |
}
|
|
@@ -253,20 +253,20 @@
|
|
| 253 |
|
| 254 |
transition: .25s;
|
| 255 |
|
| 256 |
-
color: white;
|
| 257 |
}
|
| 258 |
|
| 259 |
.btn-view {
|
| 260 |
-
background:
|
| 261 |
}
|
| 262 |
|
| 263 |
.btn-approve {
|
| 264 |
-
background:
|
| 265 |
color: var(--success);
|
| 266 |
}
|
| 267 |
|
| 268 |
.btn-reject {
|
| 269 |
-
background:
|
| 270 |
color: var(--danger);
|
| 271 |
}
|
| 272 |
|
|
|
|
| 71 |
|
| 72 |
color: white;
|
| 73 |
|
| 74 |
+
background: var(--bg-form);
|
| 75 |
|
| 76 |
+
border: 1px solid var(--border);
|
| 77 |
|
| 78 |
transition: .3s;
|
| 79 |
}
|
|
|
|
| 82 |
.form-group select:focus {
|
| 83 |
outline: none;
|
| 84 |
|
| 85 |
+
border-color: var(--indigo-06);
|
| 86 |
|
| 87 |
box-shadow:
|
| 88 |
+
0 0 0 4px var(--shadow-box);
|
| 89 |
}
|
| 90 |
|
| 91 |
.form-group select option {
|
| 92 |
+
background: var(--bg-dark);
|
| 93 |
}
|
| 94 |
|
| 95 |
/* ===================================
|
|
|
|
| 127 |
|
| 128 |
background:
|
| 129 |
linear-gradient(to right,
|
| 130 |
+
var(--indigo-06),
|
| 131 |
var(--purple));
|
| 132 |
}
|
| 133 |
|
|
|
|
| 136 |
}
|
| 137 |
|
| 138 |
.btn-secondary {
|
| 139 |
+
background: var(--btn-secondary);
|
| 140 |
+
color: var(--text-white);
|
| 141 |
}
|
| 142 |
|
| 143 |
.btn-secondary:hover {
|
| 144 |
+
background: var(--btn-secondary-hover);
|
| 145 |
}
|
| 146 |
|
| 147 |
/* ===================================
|
|
|
|
| 159 |
|
| 160 |
.table thead {
|
| 161 |
background:
|
| 162 |
+
var(--bg-table);
|
| 163 |
}
|
| 164 |
|
| 165 |
.table th {
|
|
|
|
| 180 |
color: #e2e8f0;
|
| 181 |
|
| 182 |
border-bottom:
|
| 183 |
+
1px solid var(--bg-form);
|
| 184 |
}
|
| 185 |
|
| 186 |
.table tbody tr {
|
|
|
|
| 189 |
|
| 190 |
.table tbody tr:hover {
|
| 191 |
background:
|
| 192 |
+
var(--bg-table);
|
| 193 |
}
|
| 194 |
|
| 195 |
/* ===================================
|
|
|
|
| 218 |
|
| 219 |
.approved {
|
| 220 |
background:
|
| 221 |
+
var(--btn-approv-15);
|
| 222 |
|
| 223 |
color: var(--success);
|
| 224 |
}
|
| 225 |
|
| 226 |
.rejected {
|
| 227 |
background:
|
| 228 |
+
var(--btn-reject-15);
|
| 229 |
|
| 230 |
color: var(--danger);
|
| 231 |
}
|
|
|
|
| 253 |
|
| 254 |
transition: .25s;
|
| 255 |
|
| 256 |
+
color: var(--text-white);
|
| 257 |
}
|
| 258 |
|
| 259 |
.btn-view {
|
| 260 |
+
background: var(--border);
|
| 261 |
}
|
| 262 |
|
| 263 |
.btn-approve {
|
| 264 |
+
background: var(--btn-approv-18);
|
| 265 |
color: var(--success);
|
| 266 |
}
|
| 267 |
|
| 268 |
.btn-reject {
|
| 269 |
+
background: var(--btn-reject-18);
|
| 270 |
color: var(--danger);
|
| 271 |
}
|
| 272 |
|
src/main/resources/static/css/absent/absent-list.css
CHANGED
|
@@ -83,7 +83,7 @@
|
|
| 83 |
.form-group select:focus {
|
| 84 |
outline: none;
|
| 85 |
|
| 86 |
-
border-color: var(--indigo);
|
| 87 |
|
| 88 |
box-shadow:
|
| 89 |
0 0 0 4px rgba(99, 102, 241, .15);
|
|
@@ -128,7 +128,7 @@
|
|
| 128 |
|
| 129 |
background:
|
| 130 |
linear-gradient(to right,
|
| 131 |
-
var(--indigo),
|
| 132 |
var(--purple));
|
| 133 |
}
|
| 134 |
|
|
|
|
| 83 |
.form-group select:focus {
|
| 84 |
outline: none;
|
| 85 |
|
| 86 |
+
border-color: var(--indigo-06);
|
| 87 |
|
| 88 |
box-shadow:
|
| 89 |
0 0 0 4px rgba(99, 102, 241, .15);
|
|
|
|
| 128 |
|
| 129 |
background:
|
| 130 |
linear-gradient(to right,
|
| 131 |
+
var(--indigo-06),
|
| 132 |
var(--purple));
|
| 133 |
}
|
| 134 |
|
src/main/resources/static/css/account/account-list.css
CHANGED
|
@@ -57,7 +57,7 @@
|
|
| 57 |
|
| 58 |
background:
|
| 59 |
linear-gradient(to right,
|
| 60 |
-
var(--indigo),
|
| 61 |
var(--purple));
|
| 62 |
|
| 63 |
transition: .25s;
|
|
@@ -85,11 +85,11 @@
|
|
| 85 |
|
| 86 |
border-radius: 14px;
|
| 87 |
|
| 88 |
-
border: 1px solid
|
| 89 |
|
| 90 |
-
background:
|
| 91 |
|
| 92 |
-
color: white;
|
| 93 |
|
| 94 |
transition: .3s;
|
| 95 |
}
|
|
@@ -97,9 +97,9 @@
|
|
| 97 |
.search-box input:focus {
|
| 98 |
outline: none;
|
| 99 |
|
| 100 |
-
border-color: var(--indigo);
|
| 101 |
|
| 102 |
-
box-shadow: 0 0 0 4px
|
| 103 |
}
|
| 104 |
|
| 105 |
/* ===================================
|
|
@@ -117,7 +117,7 @@ table {
|
|
| 117 |
}
|
| 118 |
|
| 119 |
thead {
|
| 120 |
-
background:
|
| 121 |
}
|
| 122 |
|
| 123 |
th {
|
|
@@ -137,7 +137,7 @@ td {
|
|
| 137 |
|
| 138 |
color: #e2e8f0;
|
| 139 |
|
| 140 |
-
border-bottom: 1px solid
|
| 141 |
}
|
| 142 |
|
| 143 |
tbody tr {
|
|
@@ -145,7 +145,7 @@ tbody tr {
|
|
| 145 |
}
|
| 146 |
|
| 147 |
tbody tr:hover {
|
| 148 |
-
background:
|
| 149 |
}
|
| 150 |
|
| 151 |
/* ===================================
|
|
@@ -174,7 +174,7 @@ tbody tr:hover {
|
|
| 174 |
|
| 175 |
background:
|
| 176 |
linear-gradient(135deg,
|
| 177 |
-
var(--indigo),
|
| 178 |
var(--purple));
|
| 179 |
}
|
| 180 |
|
|
@@ -192,7 +192,7 @@ tbody tr:hover {
|
|
| 192 |
font-size: .85rem;
|
| 193 |
font-weight: 600;
|
| 194 |
|
| 195 |
-
background:
|
| 196 |
|
| 197 |
color: #a5b4fc;
|
| 198 |
}
|
|
@@ -213,14 +213,14 @@ tbody tr:hover {
|
|
| 213 |
}
|
| 214 |
|
| 215 |
.active {
|
| 216 |
-
background:
|
| 217 |
|
| 218 |
color: var(--success);
|
| 219 |
}
|
| 220 |
|
| 221 |
.inactive,
|
| 222 |
.locked {
|
| 223 |
-
background:
|
| 224 |
|
| 225 |
color: var(--danger);
|
| 226 |
}
|
|
@@ -246,7 +246,7 @@ tbody tr:hover {
|
|
| 246 |
|
| 247 |
font-weight: 600;
|
| 248 |
|
| 249 |
-
color: white;
|
| 250 |
|
| 251 |
transition: .25s;
|
| 252 |
}
|
|
@@ -254,12 +254,12 @@ tbody tr:hover {
|
|
| 254 |
.btn-role {
|
| 255 |
background:
|
| 256 |
linear-gradient(to right,
|
| 257 |
-
var(--indigo),
|
| 258 |
var(--purple));
|
| 259 |
}
|
| 260 |
|
| 261 |
.lock {
|
| 262 |
-
background:
|
| 263 |
|
| 264 |
color: var(--danger);
|
| 265 |
}
|
|
@@ -281,7 +281,7 @@ tbody tr:hover {
|
|
| 281 |
align-items: center;
|
| 282 |
justify-content: center;
|
| 283 |
|
| 284 |
-
background:
|
| 285 |
|
| 286 |
backdrop-filter: blur(6px);
|
| 287 |
|
|
@@ -327,9 +327,9 @@ tbody tr:hover {
|
|
| 327 |
|
| 328 |
cursor: pointer;
|
| 329 |
|
| 330 |
-
color: white;
|
| 331 |
|
| 332 |
-
background:
|
| 333 |
}
|
| 334 |
|
| 335 |
.detail-body {
|
|
|
|
| 57 |
|
| 58 |
background:
|
| 59 |
linear-gradient(to right,
|
| 60 |
+
var(--indigo-06),
|
| 61 |
var(--purple));
|
| 62 |
|
| 63 |
transition: .25s;
|
|
|
|
| 85 |
|
| 86 |
border-radius: 14px;
|
| 87 |
|
| 88 |
+
border: 1px solid var(--border);
|
| 89 |
|
| 90 |
+
background: var(--bg-form);
|
| 91 |
|
| 92 |
+
color: var(--text-white);
|
| 93 |
|
| 94 |
transition: .3s;
|
| 95 |
}
|
|
|
|
| 97 |
.search-box input:focus {
|
| 98 |
outline: none;
|
| 99 |
|
| 100 |
+
border-color: var(--indigo-06);
|
| 101 |
|
| 102 |
+
box-shadow: 0 0 0 4px var(--shadow-box);
|
| 103 |
}
|
| 104 |
|
| 105 |
/* ===================================
|
|
|
|
| 117 |
}
|
| 118 |
|
| 119 |
thead {
|
| 120 |
+
background: var(--bg-table);
|
| 121 |
}
|
| 122 |
|
| 123 |
th {
|
|
|
|
| 137 |
|
| 138 |
color: #e2e8f0;
|
| 139 |
|
| 140 |
+
border-bottom: 1px solid var(--bg-form) ;
|
| 141 |
}
|
| 142 |
|
| 143 |
tbody tr {
|
|
|
|
| 145 |
}
|
| 146 |
|
| 147 |
tbody tr:hover {
|
| 148 |
+
background: var(--bg-table);
|
| 149 |
}
|
| 150 |
|
| 151 |
/* ===================================
|
|
|
|
| 174 |
|
| 175 |
background:
|
| 176 |
linear-gradient(135deg,
|
| 177 |
+
var(--indigo-06),
|
| 178 |
var(--purple));
|
| 179 |
}
|
| 180 |
|
|
|
|
| 192 |
font-size: .85rem;
|
| 193 |
font-weight: 600;
|
| 194 |
|
| 195 |
+
background: var(--shadow-box);
|
| 196 |
|
| 197 |
color: #a5b4fc;
|
| 198 |
}
|
|
|
|
| 213 |
}
|
| 214 |
|
| 215 |
.active {
|
| 216 |
+
background: var(--btn-approv-15);
|
| 217 |
|
| 218 |
color: var(--success);
|
| 219 |
}
|
| 220 |
|
| 221 |
.inactive,
|
| 222 |
.locked {
|
| 223 |
+
background:var(--btn-reject-15);
|
| 224 |
|
| 225 |
color: var(--danger);
|
| 226 |
}
|
|
|
|
| 246 |
|
| 247 |
font-weight: 600;
|
| 248 |
|
| 249 |
+
color: var(--text-white);
|
| 250 |
|
| 251 |
transition: .25s;
|
| 252 |
}
|
|
|
|
| 254 |
.btn-role {
|
| 255 |
background:
|
| 256 |
linear-gradient(to right,
|
| 257 |
+
var(--indigo-06),
|
| 258 |
var(--purple));
|
| 259 |
}
|
| 260 |
|
| 261 |
.lock {
|
| 262 |
+
background:var(--btn-reject-18);
|
| 263 |
|
| 264 |
color: var(--danger);
|
| 265 |
}
|
|
|
|
| 281 |
align-items: center;
|
| 282 |
justify-content: center;
|
| 283 |
|
| 284 |
+
background: var(--bg-dark);
|
| 285 |
|
| 286 |
backdrop-filter: blur(6px);
|
| 287 |
|
|
|
|
| 327 |
|
| 328 |
cursor: pointer;
|
| 329 |
|
| 330 |
+
color: var(--text-white);
|
| 331 |
|
| 332 |
+
background: var(--bg-form);
|
| 333 |
}
|
| 334 |
|
| 335 |
.detail-body {
|
src/main/resources/static/css/account/employee-list.css
ADDED
|
@@ -0,0 +1,627 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@import url("../base.css");
|
| 2 |
+
|
| 3 |
+
/* ===================================
|
| 4 |
+
DASHBOARD CARD
|
| 5 |
+
=================================== */
|
| 6 |
+
|
| 7 |
+
.dashboard-card {
|
| 8 |
+
background: var(--bg-card);
|
| 9 |
+
backdrop-filter: blur(20px);
|
| 10 |
+
border: 1px solid var(--border);
|
| 11 |
+
border-radius: 24px;
|
| 12 |
+
overflow: hidden;
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
.card-header {
|
| 16 |
+
padding: 24px;
|
| 17 |
+
display: flex;
|
| 18 |
+
justify-content: space-between;
|
| 19 |
+
align-items: center;
|
| 20 |
+
border-bottom: 1px solid var(--border);
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.card-header h2 {
|
| 24 |
+
font-size: 1.3rem;
|
| 25 |
+
font-weight: 700;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
/* ===================================
|
| 29 |
+
BUTTON
|
| 30 |
+
=================================== */
|
| 31 |
+
|
| 32 |
+
.add-btn {
|
| 33 |
+
height: 46px;
|
| 34 |
+
padding: 0 22px;
|
| 35 |
+
border: none;
|
| 36 |
+
border-radius: 12px;
|
| 37 |
+
cursor: pointer;
|
| 38 |
+
font-weight: 600;
|
| 39 |
+
color: white;
|
| 40 |
+
background: linear-gradient(135deg,
|
| 41 |
+
var(--indigo-06),
|
| 42 |
+
var(--purple));
|
| 43 |
+
transition: .25s;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
.add-btn:hover {
|
| 47 |
+
transform: translateY(-2px);
|
| 48 |
+
box-shadow: 0 10px 25px rgba(99, 102, 241, .35);
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
/* ===================================
|
| 53 |
+
TOOLBAR
|
| 54 |
+
=================================== */
|
| 55 |
+
|
| 56 |
+
.toolbar {
|
| 57 |
+
padding: 20px 24px;
|
| 58 |
+
display: flex;
|
| 59 |
+
justify-content: space-between;
|
| 60 |
+
gap: 20px;
|
| 61 |
+
flex-wrap: wrap;
|
| 62 |
+
border-bottom: 1px solid var(--border);
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
/* ===================================
|
| 66 |
+
SEARCH
|
| 67 |
+
=================================== */
|
| 68 |
+
|
| 69 |
+
.search-box {
|
| 70 |
+
flex: 1;
|
| 71 |
+
min-width: 320px;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
.search-box input {
|
| 75 |
+
width: 100%;
|
| 76 |
+
height: 50px;
|
| 77 |
+
padding: 0 18px;
|
| 78 |
+
border-radius: 14px;
|
| 79 |
+
border: 1px solid rgba(255, 255, 255, .08);
|
| 80 |
+
background: rgba(255, 255, 255, .05);
|
| 81 |
+
color: white;
|
| 82 |
+
font-size: .95rem;
|
| 83 |
+
transition: .25s;
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
.search-box input::placeholder {
|
| 87 |
+
color: #94a3b8;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
.search-box input:focus {
|
| 91 |
+
outline: none;
|
| 92 |
+
border-color: var(--indigo-06);
|
| 93 |
+
box-shadow: 0 0 0 4px rgba(99, 102, 241, .15);
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
/* ===================================
|
| 97 |
+
FILTER
|
| 98 |
+
=================================== */
|
| 99 |
+
|
| 100 |
+
.filter-box {
|
| 101 |
+
display: flex;
|
| 102 |
+
gap: 14px;
|
| 103 |
+
flex-wrap: wrap;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
.filter-box select {
|
| 107 |
+
min-width: 190px;
|
| 108 |
+
height: 50px;
|
| 109 |
+
padding: 0 16px;
|
| 110 |
+
border-radius: 14px;
|
| 111 |
+
border: 1px solid rgba(255, 255, 255, .08);
|
| 112 |
+
background: rgba(255, 255, 255, .05);
|
| 113 |
+
color: white;
|
| 114 |
+
cursor: pointer;
|
| 115 |
+
transition: .25s;
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
.filter-box select:focus {
|
| 119 |
+
outline: none;
|
| 120 |
+
border-color: var(--indigo-06);
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
.filter-box option {
|
| 124 |
+
background: #0f172a;
|
| 125 |
+
color: white;
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
/* ===================================
|
| 129 |
+
TABLE
|
| 130 |
+
=================================== */
|
| 131 |
+
|
| 132 |
+
table {
|
| 133 |
+
width: 100%;
|
| 134 |
+
border-collapse: collapse;
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
thead {
|
| 138 |
+
background: rgba(255, 255, 255, .03);
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
th {
|
| 142 |
+
padding: 18px;
|
| 143 |
+
text-align: left;
|
| 144 |
+
color: var(--text-light);
|
| 145 |
+
font-size: .9rem;
|
| 146 |
+
font-weight: 600;
|
| 147 |
+
border-bottom: 1px solid var(--border);
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
td {
|
| 151 |
+
padding: 18px;
|
| 152 |
+
border-bottom: 1px solid rgba(255, 255, 255, .05);
|
| 153 |
+
color: #e2e8f0;
|
| 154 |
+
}
|
| 155 |
+
|
| 156 |
+
tbody tr {
|
| 157 |
+
transition: .25s;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
tbody tr:hover {
|
| 161 |
+
background: rgba(255, 255, 255, .03);
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
/* ===================================
|
| 165 |
+
USER
|
| 166 |
+
=================================== */
|
| 167 |
+
|
| 168 |
+
.user {
|
| 169 |
+
display: flex;
|
| 170 |
+
align-items: center;
|
| 171 |
+
gap: 14px;
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
.avatar {
|
| 175 |
+
width: 44px;
|
| 176 |
+
height: 44px;
|
| 177 |
+
border-radius: 50%;
|
| 178 |
+
display: flex;
|
| 179 |
+
align-items: center;
|
| 180 |
+
justify-content: center;
|
| 181 |
+
font-weight: 700;
|
| 182 |
+
color: white;
|
| 183 |
+
background: linear-gradient(135deg,
|
| 184 |
+
var(--indigo-06),
|
| 185 |
+
var(--purple));
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
/* ===================================
|
| 189 |
+
STATUS
|
| 190 |
+
=================================== */
|
| 191 |
+
|
| 192 |
+
.status {
|
| 193 |
+
display: inline-flex;
|
| 194 |
+
align-items: center;
|
| 195 |
+
padding: 6px 14px;
|
| 196 |
+
border-radius: 999px;
|
| 197 |
+
font-size: .85rem;
|
| 198 |
+
font-weight: 600;
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
.active {
|
| 202 |
+
background: rgba(34, 197, 94, .15);
|
| 203 |
+
color: var(--success);
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
.inactive {
|
| 207 |
+
background: rgba(245, 158, 11, .15);
|
| 208 |
+
color: var(--warning);
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
.locked {
|
| 212 |
+
background: rgba(239, 68, 68, .15);
|
| 213 |
+
color: var(--danger);
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
/* ===================================
|
| 217 |
+
ACTIONS
|
| 218 |
+
=================================== */
|
| 219 |
+
|
| 220 |
+
.actions {
|
| 221 |
+
display: flex;
|
| 222 |
+
gap: 10px;
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
.icon-btn {
|
| 226 |
+
border: none;
|
| 227 |
+
border-radius: 10px;
|
| 228 |
+
padding: 10px 16px;
|
| 229 |
+
cursor: pointer;
|
| 230 |
+
font-size: .85rem;
|
| 231 |
+
font-weight: 600;
|
| 232 |
+
color: white;
|
| 233 |
+
background: rgba(255, 255, 255, .06);
|
| 234 |
+
transition: .25s;
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
.icon-btn:hover {
|
| 238 |
+
transform: translateY(-2px);
|
| 239 |
+
background: rgba(255, 255, 255, .12);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
.btn-role {
|
| 243 |
+
background: linear-gradient(135deg,
|
| 244 |
+
var(--indigo-06),
|
| 245 |
+
var(--purple));
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
.btn-role:hover {
|
| 249 |
+
box-shadow: 0 10px 20px rgba(99, 102, 241, .35);
|
| 250 |
+
}
|
| 251 |
+
|
| 252 |
+
.lock {
|
| 253 |
+
background: rgba(239, 68, 68, .18);
|
| 254 |
+
color: var(--danger);
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
.lock:hover {
|
| 259 |
+
background: rgba(239, 68, 68, .28);
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
/* ===================================
|
| 263 |
+
ADD EMPLOYEE POPUP
|
| 264 |
+
=================================== */
|
| 265 |
+
|
| 266 |
+
.card-add {
|
| 267 |
+
position: fixed;
|
| 268 |
+
inset: 0;
|
| 269 |
+
background: rgba(15, 23, 42, .65);
|
| 270 |
+
backdrop-filter: blur(8px);
|
| 271 |
+
|
| 272 |
+
display: none;
|
| 273 |
+
justify-content: center;
|
| 274 |
+
align-items: center;
|
| 275 |
+
|
| 276 |
+
z-index: 9999;
|
| 277 |
+
animation: fadeIn .25s ease;
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
.card-add.show {
|
| 281 |
+
display: flex;
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
.card-container {
|
| 285 |
+
width: 520px;
|
| 286 |
+
max-width: 92%;
|
| 287 |
+
background: var(--bg-card);
|
| 288 |
+
backdrop-filter: blur(20px);
|
| 289 |
+
border: 1px solid var(--border);
|
| 290 |
+
border-radius: 24px;
|
| 291 |
+
overflow: hidden;
|
| 292 |
+
animation: popup .3s ease;
|
| 293 |
+
box-shadow: 0 20px 60px rgba(0, 0, 0, .35);
|
| 294 |
+
}
|
| 295 |
+
|
| 296 |
+
/* ===================================
|
| 297 |
+
HEADER
|
| 298 |
+
=================================== */
|
| 299 |
+
|
| 300 |
+
.card-add .card-headers {
|
| 301 |
+
padding: 24px;
|
| 302 |
+
display: flex;
|
| 303 |
+
align-items: center;
|
| 304 |
+
gap: 18px;
|
| 305 |
+
border-bottom: 1px solid var(--border);
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
.header-icon {
|
| 309 |
+
width: 54px;
|
| 310 |
+
height: 54px;
|
| 311 |
+
|
| 312 |
+
display: flex;
|
| 313 |
+
justify-content: center;
|
| 314 |
+
align-items: center;
|
| 315 |
+
|
| 316 |
+
border-radius: 16px;
|
| 317 |
+
|
| 318 |
+
background: linear-gradient(135deg,
|
| 319 |
+
var(--indigo-06),
|
| 320 |
+
var(--purple));
|
| 321 |
+
|
| 322 |
+
color: white;
|
| 323 |
+
font-size: 22px;
|
| 324 |
+
|
| 325 |
+
flex-shrink: 0;
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
.card-add .card-headers h2 {
|
| 329 |
+
font-size: 1.25rem;
|
| 330 |
+
color: white;
|
| 331 |
+
font-weight: 700;
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
/* ===================================
|
| 335 |
+
BODY
|
| 336 |
+
=================================== */
|
| 337 |
+
|
| 338 |
+
.card-body {
|
| 339 |
+
padding: 28px;
|
| 340 |
+
}
|
| 341 |
+
|
| 342 |
+
/* ===================================
|
| 343 |
+
SELECT
|
| 344 |
+
=================================== */
|
| 345 |
+
|
| 346 |
+
.card-body label {
|
| 347 |
+
display: block;
|
| 348 |
+
margin-bottom: 10px;
|
| 349 |
+
color: var(--text-light);
|
| 350 |
+
font-size: .9rem;
|
| 351 |
+
font-weight: 600;
|
| 352 |
+
}
|
| 353 |
+
|
| 354 |
+
.card-add .filter-box {
|
| 355 |
+
display: block;
|
| 356 |
+
}
|
| 357 |
+
|
| 358 |
+
.card-add select {
|
| 359 |
+
width: 100%;
|
| 360 |
+
height: 52px;
|
| 361 |
+
|
| 362 |
+
padding: 0 18px;
|
| 363 |
+
|
| 364 |
+
border-radius: 14px;
|
| 365 |
+
border: 1px solid rgba(255, 255, 255, .08);
|
| 366 |
+
|
| 367 |
+
background: rgba(255, 255, 255, .05);
|
| 368 |
+
color: white;
|
| 369 |
+
|
| 370 |
+
font-size: .95rem;
|
| 371 |
+
transition: .25s;
|
| 372 |
+
}
|
| 373 |
+
|
| 374 |
+
.card-add select:focus {
|
| 375 |
+
outline: none;
|
| 376 |
+
border-color: var(--indigo-06);
|
| 377 |
+
box-shadow: 0 0 0 4px rgba(99, 102, 241, .15);
|
| 378 |
+
}
|
| 379 |
+
|
| 380 |
+
/* ===================================
|
| 381 |
+
QR CONTAINER
|
| 382 |
+
=================================== */
|
| 383 |
+
|
| 384 |
+
.container-QR {
|
| 385 |
+
margin-top: 28px;
|
| 386 |
+
|
| 387 |
+
display: flex;
|
| 388 |
+
flex-direction: column;
|
| 389 |
+
align-items: center;
|
| 390 |
+
gap: 24px;
|
| 391 |
+
}
|
| 392 |
+
|
| 393 |
+
/* ===================================
|
| 394 |
+
ROOM CODE
|
| 395 |
+
=================================== */
|
| 396 |
+
|
| 397 |
+
.room-code-box {
|
| 398 |
+
width: 100%;
|
| 399 |
+
|
| 400 |
+
padding: 22px;
|
| 401 |
+
|
| 402 |
+
border-radius: 18px;
|
| 403 |
+
|
| 404 |
+
border: 1px solid rgba(255, 255, 255, .08);
|
| 405 |
+
|
| 406 |
+
background: rgba(255, 255, 255, .04);
|
| 407 |
+
|
| 408 |
+
text-align: center;
|
| 409 |
+
}
|
| 410 |
+
|
| 411 |
+
.room-code-box span {
|
| 412 |
+
color: var(--text-light);
|
| 413 |
+
font-size: .9rem;
|
| 414 |
+
}
|
| 415 |
+
|
| 416 |
+
.room-code-box h1 {
|
| 417 |
+
margin: 16px 0 20px;
|
| 418 |
+
|
| 419 |
+
font-size: 2rem;
|
| 420 |
+
letter-spacing: 4px;
|
| 421 |
+
color: white;
|
| 422 |
+
}
|
| 423 |
+
|
| 424 |
+
/* ===================================
|
| 425 |
+
COPY BUTTON
|
| 426 |
+
=================================== */
|
| 427 |
+
|
| 428 |
+
#copyBtn {
|
| 429 |
+
border: none;
|
| 430 |
+
cursor: pointer;
|
| 431 |
+
|
| 432 |
+
padding: 12px 26px;
|
| 433 |
+
|
| 434 |
+
border-radius: 12px;
|
| 435 |
+
|
| 436 |
+
font-weight: 600;
|
| 437 |
+
color: white;
|
| 438 |
+
|
| 439 |
+
background: linear-gradient(135deg,
|
| 440 |
+
var(--indigo-06),
|
| 441 |
+
var(--purple));
|
| 442 |
+
|
| 443 |
+
transition: .25s;
|
| 444 |
+
}
|
| 445 |
+
|
| 446 |
+
#copyBtn:hover {
|
| 447 |
+
transform: translateY(-2px);
|
| 448 |
+
box-shadow: 0 10px 25px rgba(99, 102, 241, .35);
|
| 449 |
+
}
|
| 450 |
+
|
| 451 |
+
/* ===================================
|
| 452 |
+
QR
|
| 453 |
+
=================================== */
|
| 454 |
+
|
| 455 |
+
.qr-box {
|
| 456 |
+
width: 220px;
|
| 457 |
+
height: 220px;
|
| 458 |
+
|
| 459 |
+
padding: 14px;
|
| 460 |
+
|
| 461 |
+
background: white;
|
| 462 |
+
border-radius: 20px;
|
| 463 |
+
|
| 464 |
+
display: flex;
|
| 465 |
+
justify-content: center;
|
| 466 |
+
align-items: center;
|
| 467 |
+
}
|
| 468 |
+
|
| 469 |
+
.qr-box img {
|
| 470 |
+
width: 100%;
|
| 471 |
+
height: 100%;
|
| 472 |
+
object-fit: contain;
|
| 473 |
+
}
|
| 474 |
+
|
| 475 |
+
/* ===================================
|
| 476 |
+
NOTE
|
| 477 |
+
=================================== */
|
| 478 |
+
|
| 479 |
+
.note {
|
| 480 |
+
text-align: center;
|
| 481 |
+
color: var(--text-light);
|
| 482 |
+
line-height: 1.6;
|
| 483 |
+
font-size: .9rem;
|
| 484 |
+
}
|
| 485 |
+
|
| 486 |
+
/* ===================================
|
| 487 |
+
CLOSE BUTTON
|
| 488 |
+
=================================== */
|
| 489 |
+
|
| 490 |
+
.close-btn {
|
| 491 |
+
margin-left: auto;
|
| 492 |
+
|
| 493 |
+
width:60px;
|
| 494 |
+
height: 42px;
|
| 495 |
+
padding:5px;
|
| 496 |
+
border: none;
|
| 497 |
+
border-radius: 12px;
|
| 498 |
+
margin-top: 10px;
|
| 499 |
+
cursor: pointer;
|
| 500 |
+
|
| 501 |
+
background: linear-gradient(135deg,
|
| 502 |
+
var(--indigo-06),
|
| 503 |
+
var(--purple));
|
| 504 |
+
transition: .25s;
|
| 505 |
+
color: var(--text-white);
|
| 506 |
+
|
| 507 |
+
font-size: 22px;
|
| 508 |
+
|
| 509 |
+
transition: .25s;
|
| 510 |
+
display:flex;
|
| 511 |
+
align-items: center;
|
| 512 |
+
justify-content: end;
|
| 513 |
+
}
|
| 514 |
+
|
| 515 |
+
|
| 516 |
+
|
| 517 |
+
.close-btn:hover {
|
| 518 |
+
background: var(--btn-reject-18);
|
| 519 |
+
color: var(--danger);
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
/* ===================================
|
| 523 |
+
ANIMATION
|
| 524 |
+
=================================== */
|
| 525 |
+
|
| 526 |
+
@keyframes popup {
|
| 527 |
+
|
| 528 |
+
from {
|
| 529 |
+
opacity: 0;
|
| 530 |
+
transform: translateY(20px) scale(.95);
|
| 531 |
+
}
|
| 532 |
+
|
| 533 |
+
to {
|
| 534 |
+
opacity: 1;
|
| 535 |
+
transform: translateY(0) scale(1);
|
| 536 |
+
}
|
| 537 |
+
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
@keyframes fadeIn {
|
| 541 |
+
|
| 542 |
+
from {
|
| 543 |
+
opacity: 0;
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
to {
|
| 547 |
+
opacity: 1;
|
| 548 |
+
}
|
| 549 |
+
|
| 550 |
+
}
|
| 551 |
+
|
| 552 |
+
/* ===================================
|
| 553 |
+
RESPONSIVE
|
| 554 |
+
=================================== */
|
| 555 |
+
|
| 556 |
+
@media (max-width: 600px) {
|
| 557 |
+
|
| 558 |
+
.card-container {
|
| 559 |
+
width: 95%;
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
.room-code-box h1 {
|
| 563 |
+
font-size: 1.5rem;
|
| 564 |
+
letter-spacing: 2px;
|
| 565 |
+
}
|
| 566 |
+
|
| 567 |
+
.qr-box {
|
| 568 |
+
width: 180px;
|
| 569 |
+
height: 180px;
|
| 570 |
+
}
|
| 571 |
+
|
| 572 |
+
}
|
| 573 |
+
|
| 574 |
+
/* ===================================
|
| 575 |
+
RESPONSIVE
|
| 576 |
+
=================================== */
|
| 577 |
+
|
| 578 |
+
@media (max-width:1200px) {
|
| 579 |
+
|
| 580 |
+
.actions {
|
| 581 |
+
flex-direction: column;
|
| 582 |
+
}
|
| 583 |
+
|
| 584 |
+
.icon-btn {
|
| 585 |
+
width: 100%;
|
| 586 |
+
}
|
| 587 |
+
|
| 588 |
+
}
|
| 589 |
+
|
| 590 |
+
@media (max-width:900px) {
|
| 591 |
+
|
| 592 |
+
.toolbar {
|
| 593 |
+
flex-direction: column;
|
| 594 |
+
}
|
| 595 |
+
|
| 596 |
+
.search-box {
|
| 597 |
+
min-width: 100%;
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
.filter-box {
|
| 601 |
+
width: 100%;
|
| 602 |
+
flex-direction: column;
|
| 603 |
+
}
|
| 604 |
+
|
| 605 |
+
.filter-box select {
|
| 606 |
+
width: 100%;
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
}
|
| 610 |
+
|
| 611 |
+
@media (max-width:768px) {
|
| 612 |
+
|
| 613 |
+
.card-header {
|
| 614 |
+
flex-direction: column;
|
| 615 |
+
align-items: flex-start;
|
| 616 |
+
gap: 15px;
|
| 617 |
+
}
|
| 618 |
+
|
| 619 |
+
table {
|
| 620 |
+
min-width: 900px;
|
| 621 |
+
}
|
| 622 |
+
|
| 623 |
+
.dashboard-card {
|
| 624 |
+
overflow-x: auto;
|
| 625 |
+
}
|
| 626 |
+
|
| 627 |
+
}
|
src/main/resources/static/css/attendance/attendance-common.css
DELETED
|
@@ -1,64 +0,0 @@
|
|
| 1 |
-
/* =========================
|
| 2 |
-
ATTENDANCE BASE UI
|
| 3 |
-
========================= */
|
| 4 |
-
|
| 5 |
-
/* CONTAINER */
|
| 6 |
-
.attendance-container{
|
| 7 |
-
max-width:1400px;
|
| 8 |
-
margin:auto;
|
| 9 |
-
}
|
| 10 |
-
|
| 11 |
-
/* =========================
|
| 12 |
-
HEADER (CHUNG)
|
| 13 |
-
========================= */
|
| 14 |
-
.attendance-header{
|
| 15 |
-
padding:20px;
|
| 16 |
-
margin-bottom:20px;
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
-
.attendance-header h1{
|
| 20 |
-
font-size:1.6rem;
|
| 21 |
-
font-weight:800;
|
| 22 |
-
|
| 23 |
-
background: linear-gradient(to right, #c7cbeb, #e5e1e8);
|
| 24 |
-
background-clip: text;
|
| 25 |
-
-webkit-background-clip: text;
|
| 26 |
-
-webkit-text-fill-color: transparent;
|
| 27 |
-
}
|
| 28 |
-
|
| 29 |
-
.attendance-header p{
|
| 30 |
-
color:var(--text-gray);
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
/* =========================
|
| 34 |
-
STATS GRID (CHUNG)
|
| 35 |
-
========================= */
|
| 36 |
-
.stats-grid{
|
| 37 |
-
display:grid;
|
| 38 |
-
grid-template-columns:repeat(5,1fr);
|
| 39 |
-
gap:16px;
|
| 40 |
-
margin-bottom:20px;
|
| 41 |
-
}
|
| 42 |
-
|
| 43 |
-
/* CARD CHUNG */
|
| 44 |
-
.stats-card{
|
| 45 |
-
padding:18px;
|
| 46 |
-
border-radius:18px;
|
| 47 |
-
|
| 48 |
-
background:var(--bg-card);
|
| 49 |
-
border:1px solid var(--border);
|
| 50 |
-
|
| 51 |
-
backdrop-filter:blur(16px);
|
| 52 |
-
}
|
| 53 |
-
|
| 54 |
-
/* VALUE */
|
| 55 |
-
.stats-value{
|
| 56 |
-
font-size:1.8rem;
|
| 57 |
-
font-weight:800;
|
| 58 |
-
display:block;
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
/* LABEL */
|
| 62 |
-
.stats-label{
|
| 63 |
-
color:var(--text-gray);
|
| 64 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/main/resources/static/css/attendance/attendance-history.css
CHANGED
|
@@ -30,7 +30,7 @@
|
|
| 30 |
|
| 31 |
object-fit: cover;
|
| 32 |
|
| 33 |
-
border: 2px solid
|
| 34 |
}
|
| 35 |
|
| 36 |
.profile-info h3 {
|
|
@@ -86,7 +86,7 @@
|
|
| 86 |
|
| 87 |
margin-bottom: 6px;
|
| 88 |
|
| 89 |
-
color: white;
|
| 90 |
}
|
| 91 |
|
| 92 |
.stats-label {
|
|
@@ -107,7 +107,7 @@
|
|
| 107 |
}
|
| 108 |
|
| 109 |
.total .stats-value {
|
| 110 |
-
color: var(--indigo);
|
| 111 |
}
|
| 112 |
|
| 113 |
/* ===================================
|
|
@@ -132,11 +132,11 @@
|
|
| 132 |
|
| 133 |
border-radius: 14px;
|
| 134 |
|
| 135 |
-
border: 1px solid
|
| 136 |
|
| 137 |
-
background:
|
| 138 |
|
| 139 |
-
color: white;
|
| 140 |
|
| 141 |
transition: .25s;
|
| 142 |
}
|
|
@@ -145,9 +145,9 @@
|
|
| 145 |
.filter-panel select:focus {
|
| 146 |
outline: none;
|
| 147 |
|
| 148 |
-
border-color: var(--indigo);
|
| 149 |
|
| 150 |
-
box-shadow: 0 0 0 4px
|
| 151 |
}
|
| 152 |
|
| 153 |
.filter-panel button {
|
|
@@ -162,9 +162,9 @@
|
|
| 162 |
|
| 163 |
font-weight: 600;
|
| 164 |
|
| 165 |
-
color: white;
|
| 166 |
|
| 167 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 168 |
|
| 169 |
transition: .25s;
|
| 170 |
}
|
|
@@ -205,7 +205,7 @@
|
|
| 205 |
font-size: 1.2rem;
|
| 206 |
font-weight: 700;
|
| 207 |
|
| 208 |
-
color: white;
|
| 209 |
}
|
| 210 |
|
| 211 |
.table-header span {
|
|
@@ -224,7 +224,7 @@
|
|
| 224 |
}
|
| 225 |
|
| 226 |
.attendance-table thead {
|
| 227 |
-
background:
|
| 228 |
}
|
| 229 |
|
| 230 |
.attendance-table th {
|
|
@@ -240,13 +240,13 @@
|
|
| 240 |
.attendance-table td {
|
| 241 |
padding: 16px;
|
| 242 |
|
| 243 |
-
color:
|
| 244 |
|
| 245 |
-
border-bottom: 1px solid
|
| 246 |
}
|
| 247 |
|
| 248 |
.attendance-table tbody tr:hover {
|
| 249 |
-
background:
|
| 250 |
}
|
| 251 |
|
| 252 |
/* ===================================
|
|
@@ -265,17 +265,17 @@
|
|
| 265 |
}
|
| 266 |
|
| 267 |
.badge.success {
|
| 268 |
-
background:
|
| 269 |
color: var(--success);
|
| 270 |
}
|
| 271 |
|
| 272 |
.badge.late {
|
| 273 |
-
background:
|
| 274 |
color: var(--warning);
|
| 275 |
}
|
| 276 |
|
| 277 |
.badge.warning {
|
| 278 |
-
background:
|
| 279 |
color: var(--purple);
|
| 280 |
}
|
| 281 |
|
|
|
|
| 30 |
|
| 31 |
object-fit: cover;
|
| 32 |
|
| 33 |
+
border: 2px solid var(--bg-table);
|
| 34 |
}
|
| 35 |
|
| 36 |
.profile-info h3 {
|
|
|
|
| 86 |
|
| 87 |
margin-bottom: 6px;
|
| 88 |
|
| 89 |
+
color: var(--text-white);
|
| 90 |
}
|
| 91 |
|
| 92 |
.stats-label {
|
|
|
|
| 107 |
}
|
| 108 |
|
| 109 |
.total .stats-value {
|
| 110 |
+
color: var(--indigo-06);
|
| 111 |
}
|
| 112 |
|
| 113 |
/* ===================================
|
|
|
|
| 132 |
|
| 133 |
border-radius: 14px;
|
| 134 |
|
| 135 |
+
border: 1px solid var(--border);
|
| 136 |
|
| 137 |
+
background: var(--bg-form);
|
| 138 |
|
| 139 |
+
color: var(--text-white);
|
| 140 |
|
| 141 |
transition: .25s;
|
| 142 |
}
|
|
|
|
| 145 |
.filter-panel select:focus {
|
| 146 |
outline: none;
|
| 147 |
|
| 148 |
+
border-color: var(--indigo-06);
|
| 149 |
|
| 150 |
+
box-shadow: 0 0 0 4px var(--shadow-box);
|
| 151 |
}
|
| 152 |
|
| 153 |
.filter-panel button {
|
|
|
|
| 162 |
|
| 163 |
font-weight: 600;
|
| 164 |
|
| 165 |
+
color: var(--text-white);
|
| 166 |
|
| 167 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 168 |
|
| 169 |
transition: .25s;
|
| 170 |
}
|
|
|
|
| 205 |
font-size: 1.2rem;
|
| 206 |
font-weight: 700;
|
| 207 |
|
| 208 |
+
color: var(--text-white);
|
| 209 |
}
|
| 210 |
|
| 211 |
.table-header span {
|
|
|
|
| 224 |
}
|
| 225 |
|
| 226 |
.attendance-table thead {
|
| 227 |
+
background: var(--bg-table);
|
| 228 |
}
|
| 229 |
|
| 230 |
.attendance-table th {
|
|
|
|
| 240 |
.attendance-table td {
|
| 241 |
padding: 16px;
|
| 242 |
|
| 243 |
+
color: var(--text-white);
|
| 244 |
|
| 245 |
+
border-bottom: 1px solid var(--bg-form);
|
| 246 |
}
|
| 247 |
|
| 248 |
.attendance-table tbody tr:hover {
|
| 249 |
+
background: var(--bg-table);
|
| 250 |
}
|
| 251 |
|
| 252 |
/* ===================================
|
|
|
|
| 265 |
}
|
| 266 |
|
| 267 |
.badge.success {
|
| 268 |
+
background: var(--btn-approv-15);
|
| 269 |
color: var(--success);
|
| 270 |
}
|
| 271 |
|
| 272 |
.badge.late {
|
| 273 |
+
background: var(--btn-reject-15);
|
| 274 |
color: var(--warning);
|
| 275 |
}
|
| 276 |
|
| 277 |
.badge.warning {
|
| 278 |
+
background: var( --btn-warning);
|
| 279 |
color: var(--purple);
|
| 280 |
}
|
| 281 |
|
src/main/resources/static/css/attendance/attendance-manager.css
DELETED
|
@@ -1,27 +0,0 @@
|
|
| 1 |
-
@import url("/css/layout/footer.css");
|
| 2 |
-
@import url("/css/sidebar/sidebar.css");
|
| 3 |
-
@import url("/css/attendance/attendance-common.css");
|
| 4 |
-
@import url("/css/base.css");
|
| 5 |
-
/* =========================
|
| 6 |
-
STATS VARIANTS
|
| 7 |
-
========================= */
|
| 8 |
-
|
| 9 |
-
.present .stats-value{
|
| 10 |
-
color:var(--success);
|
| 11 |
-
}
|
| 12 |
-
|
| 13 |
-
.absent .stats-value{
|
| 14 |
-
color:var(--danger);
|
| 15 |
-
}
|
| 16 |
-
|
| 17 |
-
.pending .stats-value{
|
| 18 |
-
color:var(--warning);
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
-
.late .stats-value{
|
| 22 |
-
color:var(--purple);
|
| 23 |
-
}
|
| 24 |
-
|
| 25 |
-
/* =========================
|
| 26 |
-
PAGE CUSTOM (nếu có)
|
| 27 |
-
========================= */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/main/resources/static/css/attendance/attendance.css
CHANGED
|
@@ -99,11 +99,11 @@
|
|
| 99 |
padding:0 16px;
|
| 100 |
|
| 101 |
background:
|
| 102 |
-
|
| 103 |
|
| 104 |
color:white;
|
| 105 |
|
| 106 |
-
border:1px solid
|
| 107 |
|
| 108 |
transition:.3s;
|
| 109 |
}
|
|
@@ -112,10 +112,10 @@
|
|
| 112 |
.filter-panel select:focus{
|
| 113 |
outline:none;
|
| 114 |
|
| 115 |
-
border-color:var(--indigo);
|
| 116 |
|
| 117 |
box-shadow:
|
| 118 |
-
0 0 0 4px
|
| 119 |
}
|
| 120 |
|
| 121 |
.search-input{
|
|
@@ -133,13 +133,13 @@
|
|
| 133 |
|
| 134 |
cursor:pointer;
|
| 135 |
|
| 136 |
-
color:white;
|
| 137 |
font-weight:600;
|
| 138 |
|
| 139 |
background:
|
| 140 |
linear-gradient(
|
| 141 |
to right,
|
| 142 |
-
var(--indigo),
|
| 143 |
var(--purple)
|
| 144 |
);
|
| 145 |
|
|
@@ -151,7 +151,7 @@
|
|
| 151 |
}
|
| 152 |
|
| 153 |
.secondary{
|
| 154 |
-
background:
|
| 155 |
}
|
| 156 |
|
| 157 |
/* ===================================
|
|
@@ -206,10 +206,10 @@
|
|
| 206 |
.attendance-table td{
|
| 207 |
padding:18px;
|
| 208 |
|
| 209 |
-
color:
|
| 210 |
|
| 211 |
border-bottom:
|
| 212 |
-
1px solid
|
| 213 |
}
|
| 214 |
|
| 215 |
.attendance-table tbody tr{
|
|
@@ -218,7 +218,7 @@
|
|
| 218 |
|
| 219 |
.attendance-table tbody tr:hover{
|
| 220 |
background:
|
| 221 |
-
|
| 222 |
}
|
| 223 |
|
| 224 |
/* ===================================
|
|
@@ -236,21 +236,21 @@
|
|
| 236 |
|
| 237 |
.badge-success{
|
| 238 |
background:
|
| 239 |
-
|
| 240 |
|
| 241 |
color:var(--success);
|
| 242 |
}
|
| 243 |
|
| 244 |
.badge-warning{
|
| 245 |
background:
|
| 246 |
-
|
| 247 |
|
| 248 |
color:var(--warning);
|
| 249 |
}
|
| 250 |
|
| 251 |
.badge-danger{
|
| 252 |
background:
|
| 253 |
-
|
| 254 |
|
| 255 |
color:var(--danger);
|
| 256 |
}
|
|
@@ -265,11 +265,11 @@
|
|
| 265 |
}
|
| 266 |
|
| 267 |
::-webkit-scrollbar-track{
|
| 268 |
-
background:
|
| 269 |
}
|
| 270 |
|
| 271 |
::-webkit-scrollbar-thumb{
|
| 272 |
-
background:
|
| 273 |
border-radius:8px;
|
| 274 |
}
|
| 275 |
|
|
|
|
| 99 |
padding:0 16px;
|
| 100 |
|
| 101 |
background:
|
| 102 |
+
var(--bg-form);
|
| 103 |
|
| 104 |
color:white;
|
| 105 |
|
| 106 |
+
border:1px solid var(--border);
|
| 107 |
|
| 108 |
transition:.3s;
|
| 109 |
}
|
|
|
|
| 112 |
.filter-panel select:focus{
|
| 113 |
outline:none;
|
| 114 |
|
| 115 |
+
border-color:var(--indigo-06);
|
| 116 |
|
| 117 |
box-shadow:
|
| 118 |
+
0 0 0 4px var(--shadow-box);
|
| 119 |
}
|
| 120 |
|
| 121 |
.search-input{
|
|
|
|
| 133 |
|
| 134 |
cursor:pointer;
|
| 135 |
|
| 136 |
+
color:var(--text-white);
|
| 137 |
font-weight:600;
|
| 138 |
|
| 139 |
background:
|
| 140 |
linear-gradient(
|
| 141 |
to right,
|
| 142 |
+
var(--indigo-06),
|
| 143 |
var(--purple)
|
| 144 |
);
|
| 145 |
|
|
|
|
| 151 |
}
|
| 152 |
|
| 153 |
.secondary{
|
| 154 |
+
background:var(--btn-secondary) !important;
|
| 155 |
}
|
| 156 |
|
| 157 |
/* ===================================
|
|
|
|
| 206 |
.attendance-table td{
|
| 207 |
padding:18px;
|
| 208 |
|
| 209 |
+
color:var(--text-white);
|
| 210 |
|
| 211 |
border-bottom:
|
| 212 |
+
1px solid var(--bg-form);
|
| 213 |
}
|
| 214 |
|
| 215 |
.attendance-table tbody tr{
|
|
|
|
| 218 |
|
| 219 |
.attendance-table tbody tr:hover{
|
| 220 |
background:
|
| 221 |
+
var(--bg-table);
|
| 222 |
}
|
| 223 |
|
| 224 |
/* ===================================
|
|
|
|
| 236 |
|
| 237 |
.badge-success{
|
| 238 |
background:
|
| 239 |
+
var(--btn-approv-15);
|
| 240 |
|
| 241 |
color:var(--success);
|
| 242 |
}
|
| 243 |
|
| 244 |
.badge-warning{
|
| 245 |
background:
|
| 246 |
+
var(--btn-warning-15);
|
| 247 |
|
| 248 |
color:var(--warning);
|
| 249 |
}
|
| 250 |
|
| 251 |
.badge-danger{
|
| 252 |
background:
|
| 253 |
+
var(--btn-reject-15);
|
| 254 |
|
| 255 |
color:var(--danger);
|
| 256 |
}
|
|
|
|
| 265 |
}
|
| 266 |
|
| 267 |
::-webkit-scrollbar-track{
|
| 268 |
+
background:var(--bg-card);
|
| 269 |
}
|
| 270 |
|
| 271 |
::-webkit-scrollbar-thumb{
|
| 272 |
+
background:var(--border);
|
| 273 |
border-radius:8px;
|
| 274 |
}
|
| 275 |
|
src/main/resources/static/css/base.css
CHANGED
|
@@ -6,22 +6,47 @@
|
|
| 6 |
=================================== */
|
| 7 |
|
| 8 |
:root {
|
| 9 |
-
--bg-dark: #
|
| 10 |
--bg-card: rgba(15, 23, 42, .65);
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
--border: rgba(255, 255, 255, .08);
|
| 13 |
|
| 14 |
--text-white: #ffffff;
|
| 15 |
--text-gray: #94a3b8;
|
| 16 |
--text-light: #cbd5e1;
|
| 17 |
|
| 18 |
-
--indigo:
|
|
|
|
|
|
|
| 19 |
--purple: #8b5cf6;
|
|
|
|
| 20 |
--pink: #ec4899;
|
|
|
|
|
|
|
| 21 |
|
| 22 |
-
--success:
|
| 23 |
--warning: #f59e0b;
|
| 24 |
--danger: #ef4444;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
}
|
| 26 |
|
| 27 |
/* ===================================
|
|
@@ -44,13 +69,13 @@ body {
|
|
| 44 |
"Segoe UI",
|
| 45 |
sans-serif;
|
| 46 |
|
| 47 |
-
color: white;
|
| 48 |
|
| 49 |
background:
|
| 50 |
linear-gradient(135deg,
|
| 51 |
-
#
|
| 52 |
-
|
| 53 |
-
#
|
| 54 |
}
|
| 55 |
|
| 56 |
.layout {
|
|
@@ -85,11 +110,11 @@ body {
|
|
| 85 |
|
| 86 |
background:
|
| 87 |
radial-gradient(circle at top left,
|
| 88 |
-
|
| 89 |
-
transparent
|
| 90 |
radial-gradient(circle at bottom right,
|
| 91 |
-
|
| 92 |
-
transparent
|
| 93 |
}
|
| 94 |
|
| 95 |
/* ===================================
|
|
@@ -111,14 +136,14 @@ body {
|
|
| 111 |
=================================== */
|
| 112 |
|
| 113 |
.container-header {
|
| 114 |
-
background-color:
|
| 115 |
margin-bottom: 32px;
|
| 116 |
padding: 15px 20px 15px 15px;
|
| 117 |
border-radius: 1px;
|
| 118 |
height: 112px;
|
| 119 |
-
border: 0.65px solid
|
| 120 |
padding-left: 20px;
|
| 121 |
-
height:140px;
|
| 122 |
}
|
| 123 |
|
| 124 |
.container-header h1 {
|
|
@@ -130,9 +155,9 @@ body {
|
|
| 130 |
|
| 131 |
background:
|
| 132 |
linear-gradient(to right,
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
|
| 137 |
background-clip: text;
|
| 138 |
-webkit-background-clip: text;
|
|
@@ -140,7 +165,7 @@ body {
|
|
| 140 |
}
|
| 141 |
|
| 142 |
.container-header p {
|
| 143 |
-
color:
|
| 144 |
font-size: 1rem;
|
| 145 |
}
|
| 146 |
|
|
|
|
| 6 |
=================================== */
|
| 7 |
|
| 8 |
:root {
|
| 9 |
+
--bg-dark: #171233;
|
| 10 |
--bg-card: rgba(15, 23, 42, .65);
|
| 11 |
|
| 12 |
+
--bg-table: rgba(255, 255, 255, .03);
|
| 13 |
+
--bg-form: rgba(255, 255, 255, .04);
|
| 14 |
+
--bg-table-06: rgba(255, 255, 255, .06);
|
| 15 |
+
--bg-table-015: rgba(255, 255, 255, .15);
|
| 16 |
+
|
| 17 |
+
--bg-purple-025:rgba(1, 1, 11, 0.25);
|
| 18 |
+
|
| 19 |
--border: rgba(255, 255, 255, .08);
|
| 20 |
|
| 21 |
--text-white: #ffffff;
|
| 22 |
--text-gray: #94a3b8;
|
| 23 |
--text-light: #cbd5e1;
|
| 24 |
|
| 25 |
+
--indigo-06: rgba(99, 102, 241, .6);
|
| 26 |
+
--indigo-15: rgba(99, 102, 241, .15);
|
| 27 |
+
--indigo-08: rgba(10, 11, 65, 0.08);
|
| 28 |
--purple: #8b5cf6;
|
| 29 |
+
--purple-light: #b794ff;
|
| 30 |
--pink: #ec4899;
|
| 31 |
+
--blue: #3b82f6;
|
| 32 |
+
--pinl-light: #d68eff;
|
| 33 |
|
| 34 |
+
--success: rgb(37, 249, 83);
|
| 35 |
--warning: #f59e0b;
|
| 36 |
--danger: #ef4444;
|
| 37 |
+
|
| 38 |
+
--shadow-box: rgba(99, 102, 241, .15);
|
| 39 |
+
|
| 40 |
+
--btn-secondary: #334155;
|
| 41 |
+
--btn-secondary-hover: #475569;
|
| 42 |
+
|
| 43 |
+
--btn-warning-15: rgba(139, 92, 246, .15);
|
| 44 |
+
|
| 45 |
+
--btn-reject-18: rgba(239, 68, 68, .18);
|
| 46 |
+
--btn-reject-15: rgba(239, 68, 68, .15);
|
| 47 |
+
|
| 48 |
+
--btn-approv-18: rgba(34, 197, 94, .18);
|
| 49 |
+
--btn-approv-15: rgba(34, 197, 94, .15);
|
| 50 |
}
|
| 51 |
|
| 52 |
/* ===================================
|
|
|
|
| 69 |
"Segoe UI",
|
| 70 |
sans-serif;
|
| 71 |
|
| 72 |
+
color: var(--text-white);
|
| 73 |
|
| 74 |
background:
|
| 75 |
linear-gradient(135deg,
|
| 76 |
+
#1a1633 0%,
|
| 77 |
+
rgba(188, 163, 237) 50%,
|
| 78 |
+
#191339 100%);
|
| 79 |
}
|
| 80 |
|
| 81 |
.layout {
|
|
|
|
| 110 |
|
| 111 |
background:
|
| 112 |
radial-gradient(circle at top left,
|
| 113 |
+
#1b0f38,
|
| 114 |
+
transparent 80%),
|
| 115 |
radial-gradient(circle at bottom right,
|
| 116 |
+
#220d54,
|
| 117 |
+
transparent 80%);
|
| 118 |
}
|
| 119 |
|
| 120 |
/* ===================================
|
|
|
|
| 136 |
=================================== */
|
| 137 |
|
| 138 |
.container-header {
|
| 139 |
+
background-color: var(--bg-dark);
|
| 140 |
margin-bottom: 32px;
|
| 141 |
padding: 15px 20px 15px 15px;
|
| 142 |
border-radius: 1px;
|
| 143 |
height: 112px;
|
| 144 |
+
border: 0.65px solid var(--shadow-box);
|
| 145 |
padding-left: 20px;
|
| 146 |
+
height: 140px;
|
| 147 |
}
|
| 148 |
|
| 149 |
.container-header h1 {
|
|
|
|
| 155 |
|
| 156 |
background:
|
| 157 |
linear-gradient(to right,
|
| 158 |
+
var(--text-white),
|
| 159 |
+
var(--text-light),
|
| 160 |
+
var(--text-white));
|
| 161 |
|
| 162 |
background-clip: text;
|
| 163 |
-webkit-background-clip: text;
|
|
|
|
| 165 |
}
|
| 166 |
|
| 167 |
.container-header p {
|
| 168 |
+
color: var(--text-gray);
|
| 169 |
font-size: 1rem;
|
| 170 |
}
|
| 171 |
|
src/main/resources/static/css/dashboard/dashboard-admin.css
CHANGED
|
@@ -24,7 +24,7 @@
|
|
| 24 |
|
| 25 |
background:
|
| 26 |
linear-gradient(135deg,
|
| 27 |
-
var(--indigo),
|
| 28 |
var(--purple));
|
| 29 |
}
|
| 30 |
|
|
@@ -32,7 +32,7 @@
|
|
| 32 |
/* width: 42px;
|
| 33 |
height: 42px; */
|
| 34 |
font-size: 20px;
|
| 35 |
-
color: white;
|
| 36 |
}
|
| 37 |
/* ===================================
|
| 38 |
STAT CARD
|
|
@@ -112,7 +112,7 @@
|
|
| 112 |
|
| 113 |
.admin-action-card:hover {
|
| 114 |
transform: translateY(-4px);
|
| 115 |
-
border-color:
|
| 116 |
}
|
| 117 |
|
| 118 |
.admin-action-card__badge {
|
|
@@ -123,8 +123,8 @@
|
|
| 123 |
height: 24px;
|
| 124 |
padding: 0 7px;
|
| 125 |
border-radius: 999px;
|
| 126 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 127 |
-
color: white;
|
| 128 |
font-size: .75rem;
|
| 129 |
font-weight: 700;
|
| 130 |
display: flex;
|
|
@@ -145,7 +145,7 @@
|
|
| 145 |
|
| 146 |
background:
|
| 147 |
linear-gradient(135deg,
|
| 148 |
-
var(--indigo),
|
| 149 |
var(--purple));
|
| 150 |
}
|
| 151 |
|
|
@@ -153,7 +153,7 @@
|
|
| 153 |
/* width: 42px;
|
| 154 |
height: 42px; */
|
| 155 |
font-size: 20px;
|
| 156 |
-
color: white;
|
| 157 |
}
|
| 158 |
|
| 159 |
.admin-action-card__title {
|
|
@@ -248,7 +248,7 @@
|
|
| 248 |
}
|
| 249 |
|
| 250 |
.activity-item:hover {
|
| 251 |
-
background:
|
| 252 |
}
|
| 253 |
|
| 254 |
.activity-item__left {
|
|
@@ -264,7 +264,7 @@
|
|
| 264 |
flex-shrink: 0;
|
| 265 |
}
|
| 266 |
|
| 267 |
-
.activity-dot--blue { background: var(--indigo); }
|
| 268 |
.activity-dot--green { background: var(--success); }
|
| 269 |
.activity-dot--yellow { background: var(--warning); }
|
| 270 |
.activity-dot--red { background: var(--danger); }
|
|
@@ -319,8 +319,8 @@
|
|
| 319 |
border-radius: 12px;
|
| 320 |
cursor: pointer;
|
| 321 |
font-weight: 600;
|
| 322 |
-
color: white;
|
| 323 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 324 |
transition: .25s;
|
| 325 |
}
|
| 326 |
|
|
@@ -342,14 +342,14 @@
|
|
| 342 |
padding: 12px 14px;
|
| 343 |
border-radius: 12px;
|
| 344 |
border: 1px solid var(--border);
|
| 345 |
-
background:
|
| 346 |
-
color: white;
|
| 347 |
outline: none;
|
| 348 |
transition: .2s;
|
| 349 |
}
|
| 350 |
|
| 351 |
.search-box input:focus {
|
| 352 |
-
border-color:
|
| 353 |
}
|
| 354 |
|
| 355 |
|
|
@@ -363,7 +363,7 @@ table {
|
|
| 363 |
}
|
| 364 |
|
| 365 |
thead {
|
| 366 |
-
background:
|
| 367 |
}
|
| 368 |
|
| 369 |
th {
|
|
@@ -376,12 +376,12 @@ th {
|
|
| 376 |
|
| 377 |
td {
|
| 378 |
padding: 14px;
|
| 379 |
-
color:
|
| 380 |
-
border-bottom: 1px solid
|
| 381 |
}
|
| 382 |
|
| 383 |
tbody tr:hover {
|
| 384 |
-
background:
|
| 385 |
}
|
| 386 |
|
| 387 |
|
|
@@ -402,7 +402,7 @@ tbody tr:hover {
|
|
| 402 |
display: flex;
|
| 403 |
align-items: center;
|
| 404 |
justify-content: center;
|
| 405 |
-
background:
|
| 406 |
font-weight: 700;
|
| 407 |
color: white;
|
| 408 |
}
|
|
@@ -418,8 +418,8 @@ tbody tr:hover {
|
|
| 418 |
border-radius: 999px;
|
| 419 |
font-size: .8rem;
|
| 420 |
font-weight: 600;
|
| 421 |
-
background:
|
| 422 |
-
color: var(--indigo);
|
| 423 |
}
|
| 424 |
|
| 425 |
.status {
|
|
@@ -431,12 +431,12 @@ tbody tr:hover {
|
|
| 431 |
}
|
| 432 |
|
| 433 |
.status.active {
|
| 434 |
-
background:
|
| 435 |
color: var(--success);
|
| 436 |
}
|
| 437 |
|
| 438 |
.status.locked {
|
| 439 |
-
background:
|
| 440 |
color: var(--danger);
|
| 441 |
}
|
| 442 |
|
|
@@ -454,7 +454,7 @@ tbody tr:hover {
|
|
| 454 |
padding: 6px 10px;
|
| 455 |
border-radius: 10px;
|
| 456 |
border: 1px solid var(--border);
|
| 457 |
-
background:
|
| 458 |
color: white;
|
| 459 |
cursor: pointer;
|
| 460 |
transition: .2s;
|
|
@@ -479,7 +479,7 @@ tbody tr:hover {
|
|
| 479 |
display: none;
|
| 480 |
align-items: center;
|
| 481 |
justify-content: center;
|
| 482 |
-
background:
|
| 483 |
backdrop-filter: blur(6px);
|
| 484 |
}
|
| 485 |
|
|
@@ -499,14 +499,14 @@ tbody tr:hover {
|
|
| 499 |
}
|
| 500 |
|
| 501 |
.detail-header h2 {
|
| 502 |
-
color: white;
|
| 503 |
font-size: 1.1rem;
|
| 504 |
}
|
| 505 |
|
| 506 |
.close-btn {
|
| 507 |
background: transparent;
|
| 508 |
border: none;
|
| 509 |
-
color: white;
|
| 510 |
font-size: 1.3rem;
|
| 511 |
cursor: pointer;
|
| 512 |
}
|
|
@@ -524,7 +524,7 @@ tbody tr:hover {
|
|
| 524 |
|
| 525 |
.detail-item p,
|
| 526 |
.detail-item span {
|
| 527 |
-
color: white;
|
| 528 |
font-weight: 600;
|
| 529 |
}
|
| 530 |
|
|
|
|
| 24 |
|
| 25 |
background:
|
| 26 |
linear-gradient(135deg,
|
| 27 |
+
var(--indigo-06),
|
| 28 |
var(--purple));
|
| 29 |
}
|
| 30 |
|
|
|
|
| 32 |
/* width: 42px;
|
| 33 |
height: 42px; */
|
| 34 |
font-size: 20px;
|
| 35 |
+
color: var(--text-white);
|
| 36 |
}
|
| 37 |
/* ===================================
|
| 38 |
STAT CARD
|
|
|
|
| 112 |
|
| 113 |
.admin-action-card:hover {
|
| 114 |
transform: translateY(-4px);
|
| 115 |
+
border-color: var(--shadow-box);
|
| 116 |
}
|
| 117 |
|
| 118 |
.admin-action-card__badge {
|
|
|
|
| 123 |
height: 24px;
|
| 124 |
padding: 0 7px;
|
| 125 |
border-radius: 999px;
|
| 126 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 127 |
+
color: var(--text-white);
|
| 128 |
font-size: .75rem;
|
| 129 |
font-weight: 700;
|
| 130 |
display: flex;
|
|
|
|
| 145 |
|
| 146 |
background:
|
| 147 |
linear-gradient(135deg,
|
| 148 |
+
var(--indigo-06),
|
| 149 |
var(--purple));
|
| 150 |
}
|
| 151 |
|
|
|
|
| 153 |
/* width: 42px;
|
| 154 |
height: 42px; */
|
| 155 |
font-size: 20px;
|
| 156 |
+
color: var(--text-white);
|
| 157 |
}
|
| 158 |
|
| 159 |
.admin-action-card__title {
|
|
|
|
| 248 |
}
|
| 249 |
|
| 250 |
.activity-item:hover {
|
| 251 |
+
background: var(--bg-form);
|
| 252 |
}
|
| 253 |
|
| 254 |
.activity-item__left {
|
|
|
|
| 264 |
flex-shrink: 0;
|
| 265 |
}
|
| 266 |
|
| 267 |
+
.activity-dot--blue { background: var(--indigo-06); }
|
| 268 |
.activity-dot--green { background: var(--success); }
|
| 269 |
.activity-dot--yellow { background: var(--warning); }
|
| 270 |
.activity-dot--red { background: var(--danger); }
|
|
|
|
| 319 |
border-radius: 12px;
|
| 320 |
cursor: pointer;
|
| 321 |
font-weight: 600;
|
| 322 |
+
color: var(--text-white);
|
| 323 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 324 |
transition: .25s;
|
| 325 |
}
|
| 326 |
|
|
|
|
| 342 |
padding: 12px 14px;
|
| 343 |
border-radius: 12px;
|
| 344 |
border: 1px solid var(--border);
|
| 345 |
+
background: var(--bg-table);
|
| 346 |
+
color: var(--text-white);
|
| 347 |
outline: none;
|
| 348 |
transition: .2s;
|
| 349 |
}
|
| 350 |
|
| 351 |
.search-box input:focus {
|
| 352 |
+
border-color: var(--indigo-06);
|
| 353 |
}
|
| 354 |
|
| 355 |
|
|
|
|
| 363 |
}
|
| 364 |
|
| 365 |
thead {
|
| 366 |
+
background: var(--bg-table);
|
| 367 |
}
|
| 368 |
|
| 369 |
th {
|
|
|
|
| 376 |
|
| 377 |
td {
|
| 378 |
padding: 14px;
|
| 379 |
+
color: var(--text-white);
|
| 380 |
+
border-bottom: 1px solid var(--bg-form);
|
| 381 |
}
|
| 382 |
|
| 383 |
tbody tr:hover {
|
| 384 |
+
background: var(--bg-table);
|
| 385 |
}
|
| 386 |
|
| 387 |
|
|
|
|
| 402 |
display: flex;
|
| 403 |
align-items: center;
|
| 404 |
justify-content: center;
|
| 405 |
+
background: var(--bg-table-06);
|
| 406 |
font-weight: 700;
|
| 407 |
color: white;
|
| 408 |
}
|
|
|
|
| 418 |
border-radius: 999px;
|
| 419 |
font-size: .8rem;
|
| 420 |
font-weight: 600;
|
| 421 |
+
background: var(--indigo-15);
|
| 422 |
+
color: var(--indigo-06);
|
| 423 |
}
|
| 424 |
|
| 425 |
.status {
|
|
|
|
| 431 |
}
|
| 432 |
|
| 433 |
.status.active {
|
| 434 |
+
background: var(--btn-approv-15);
|
| 435 |
color: var(--success);
|
| 436 |
}
|
| 437 |
|
| 438 |
.status.locked {
|
| 439 |
+
background: var(--btn-reject-15);
|
| 440 |
color: var(--danger);
|
| 441 |
}
|
| 442 |
|
|
|
|
| 454 |
padding: 6px 10px;
|
| 455 |
border-radius: 10px;
|
| 456 |
border: 1px solid var(--border);
|
| 457 |
+
background: var(--bg-table);
|
| 458 |
color: white;
|
| 459 |
cursor: pointer;
|
| 460 |
transition: .2s;
|
|
|
|
| 479 |
display: none;
|
| 480 |
align-items: center;
|
| 481 |
justify-content: center;
|
| 482 |
+
background: var(--bg-dark);
|
| 483 |
backdrop-filter: blur(6px);
|
| 484 |
}
|
| 485 |
|
|
|
|
| 499 |
}
|
| 500 |
|
| 501 |
.detail-header h2 {
|
| 502 |
+
color: var(--text-white);
|
| 503 |
font-size: 1.1rem;
|
| 504 |
}
|
| 505 |
|
| 506 |
.close-btn {
|
| 507 |
background: transparent;
|
| 508 |
border: none;
|
| 509 |
+
color: var(--text-white);
|
| 510 |
font-size: 1.3rem;
|
| 511 |
cursor: pointer;
|
| 512 |
}
|
|
|
|
| 524 |
|
| 525 |
.detail-item p,
|
| 526 |
.detail-item span {
|
| 527 |
+
color: var(--text-white);
|
| 528 |
font-weight: 600;
|
| 529 |
}
|
| 530 |
|
src/main/resources/static/css/dashboard/dashboard-employee.css
CHANGED
|
@@ -56,7 +56,7 @@
|
|
| 56 |
|
| 57 |
background:
|
| 58 |
linear-gradient(135deg,
|
| 59 |
-
var(--indigo),
|
| 60 |
var(--purple));
|
| 61 |
}
|
| 62 |
|
|
@@ -64,14 +64,14 @@
|
|
| 64 |
/* width: 42px;
|
| 65 |
height: 42px; */
|
| 66 |
font-size: 24px;
|
| 67 |
-
color: white;
|
| 68 |
}
|
| 69 |
|
| 70 |
.employee-stat-card__number {
|
| 71 |
font-size: 1.6rem;
|
| 72 |
font-weight: 800;
|
| 73 |
|
| 74 |
-
color: white;
|
| 75 |
}
|
| 76 |
|
| 77 |
.employee-stat-card__label {
|
|
@@ -88,7 +88,7 @@
|
|
| 88 |
|
| 89 |
border-radius: 999px;
|
| 90 |
|
| 91 |
-
background:
|
| 92 |
|
| 93 |
color: var(--text-light);
|
| 94 |
}
|
|
@@ -96,7 +96,7 @@
|
|
| 96 |
/* color variants */
|
| 97 |
|
| 98 |
.report-submitted .employee-stat-card__number {
|
| 99 |
-
color: var(--indigo);
|
| 100 |
}
|
| 101 |
|
| 102 |
.report-approved .employee-stat-card__number {
|
|
@@ -137,7 +137,7 @@
|
|
| 137 |
|
| 138 |
margin-bottom: 14px;
|
| 139 |
|
| 140 |
-
color: white;
|
| 141 |
}
|
| 142 |
|
| 143 |
.quick-actions-grid {
|
|
@@ -159,7 +159,7 @@
|
|
| 159 |
|
| 160 |
text-decoration: none;
|
| 161 |
|
| 162 |
-
color: white;
|
| 163 |
|
| 164 |
transition: .25s;
|
| 165 |
|
|
@@ -176,7 +176,7 @@
|
|
| 176 |
/* width: 42px;
|
| 177 |
height: 42px; */
|
| 178 |
font-size: 25px;
|
| 179 |
-
color: white;
|
| 180 |
}
|
| 181 |
|
| 182 |
.quick-action-card:hover {
|
|
@@ -210,7 +210,7 @@
|
|
| 210 |
}
|
| 211 |
|
| 212 |
.attendance-table thead {
|
| 213 |
-
background:
|
| 214 |
}
|
| 215 |
|
| 216 |
.attendance-table th {
|
|
@@ -226,13 +226,13 @@
|
|
| 226 |
.attendance-table td {
|
| 227 |
padding: 16px;
|
| 228 |
|
| 229 |
-
color:
|
| 230 |
|
| 231 |
-
border-bottom: 1px solid
|
| 232 |
}
|
| 233 |
|
| 234 |
.attendance-table tbody tr:hover {
|
| 235 |
-
background:
|
| 236 |
}
|
| 237 |
|
| 238 |
/* ===================================
|
|
@@ -252,17 +252,17 @@
|
|
| 252 |
}
|
| 253 |
|
| 254 |
.status-success {
|
| 255 |
-
background:
|
| 256 |
color: var(--success);
|
| 257 |
}
|
| 258 |
|
| 259 |
.status-warning {
|
| 260 |
-
background:
|
| 261 |
color: var(--warning);
|
| 262 |
}
|
| 263 |
|
| 264 |
.status-danger {
|
| 265 |
-
background:
|
| 266 |
color: var(--danger);
|
| 267 |
}
|
| 268 |
|
|
@@ -332,9 +332,9 @@
|
|
| 332 |
|
| 333 |
font-weight: 600;
|
| 334 |
|
| 335 |
-
color: white;
|
| 336 |
|
| 337 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 338 |
|
| 339 |
transition: .25s;
|
| 340 |
}
|
|
@@ -352,7 +352,7 @@
|
|
| 352 |
|
| 353 |
margin-bottom: 8px;
|
| 354 |
|
| 355 |
-
color: white;
|
| 356 |
}
|
| 357 |
|
| 358 |
.reminder-card__content {
|
|
|
|
| 56 |
|
| 57 |
background:
|
| 58 |
linear-gradient(135deg,
|
| 59 |
+
var(--indigo-06),
|
| 60 |
var(--purple));
|
| 61 |
}
|
| 62 |
|
|
|
|
| 64 |
/* width: 42px;
|
| 65 |
height: 42px; */
|
| 66 |
font-size: 24px;
|
| 67 |
+
color: var(--text-white);
|
| 68 |
}
|
| 69 |
|
| 70 |
.employee-stat-card__number {
|
| 71 |
font-size: 1.6rem;
|
| 72 |
font-weight: 800;
|
| 73 |
|
| 74 |
+
color: var(--text-white);
|
| 75 |
}
|
| 76 |
|
| 77 |
.employee-stat-card__label {
|
|
|
|
| 88 |
|
| 89 |
border-radius: 999px;
|
| 90 |
|
| 91 |
+
background: var(--bg-form);
|
| 92 |
|
| 93 |
color: var(--text-light);
|
| 94 |
}
|
|
|
|
| 96 |
/* color variants */
|
| 97 |
|
| 98 |
.report-submitted .employee-stat-card__number {
|
| 99 |
+
color: var(--indigo-06);
|
| 100 |
}
|
| 101 |
|
| 102 |
.report-approved .employee-stat-card__number {
|
|
|
|
| 137 |
|
| 138 |
margin-bottom: 14px;
|
| 139 |
|
| 140 |
+
color: var(--text-white);
|
| 141 |
}
|
| 142 |
|
| 143 |
.quick-actions-grid {
|
|
|
|
| 159 |
|
| 160 |
text-decoration: none;
|
| 161 |
|
| 162 |
+
color: var(--text-white);
|
| 163 |
|
| 164 |
transition: .25s;
|
| 165 |
|
|
|
|
| 176 |
/* width: 42px;
|
| 177 |
height: 42px; */
|
| 178 |
font-size: 25px;
|
| 179 |
+
color: var(--text-white);
|
| 180 |
}
|
| 181 |
|
| 182 |
.quick-action-card:hover {
|
|
|
|
| 210 |
}
|
| 211 |
|
| 212 |
.attendance-table thead {
|
| 213 |
+
background: var(--bg-table);
|
| 214 |
}
|
| 215 |
|
| 216 |
.attendance-table th {
|
|
|
|
| 226 |
.attendance-table td {
|
| 227 |
padding: 16px;
|
| 228 |
|
| 229 |
+
color: var(--text-white);
|
| 230 |
|
| 231 |
+
border-bottom: 1px solid var(--bg-form);
|
| 232 |
}
|
| 233 |
|
| 234 |
.attendance-table tbody tr:hover {
|
| 235 |
+
background: var(--bg-table);
|
| 236 |
}
|
| 237 |
|
| 238 |
/* ===================================
|
|
|
|
| 252 |
}
|
| 253 |
|
| 254 |
.status-success {
|
| 255 |
+
background: var(--btn-approv-15);
|
| 256 |
color: var(--success);
|
| 257 |
}
|
| 258 |
|
| 259 |
.status-warning {
|
| 260 |
+
background: var(--btn-warning-15);
|
| 261 |
color: var(--warning);
|
| 262 |
}
|
| 263 |
|
| 264 |
.status-danger {
|
| 265 |
+
background: var(--btn-reject-15);
|
| 266 |
color: var(--danger);
|
| 267 |
}
|
| 268 |
|
|
|
|
| 332 |
|
| 333 |
font-weight: 600;
|
| 334 |
|
| 335 |
+
color: var(--text-white);
|
| 336 |
|
| 337 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 338 |
|
| 339 |
transition: .25s;
|
| 340 |
}
|
|
|
|
| 352 |
|
| 353 |
margin-bottom: 8px;
|
| 354 |
|
| 355 |
+
color: var(--text-white);
|
| 356 |
}
|
| 357 |
|
| 358 |
.reminder-card__content {
|
src/main/resources/static/css/dashboard/dashboard-manager.css
CHANGED
|
@@ -48,7 +48,7 @@
|
|
| 48 |
|
| 49 |
margin-bottom:6px;
|
| 50 |
|
| 51 |
-
color:white;
|
| 52 |
}
|
| 53 |
|
| 54 |
.stat-card p{
|
|
@@ -59,7 +59,7 @@
|
|
| 59 |
|
| 60 |
/* COLORS */
|
| 61 |
.stat-card.total h3{
|
| 62 |
-
color:var(--indigo);
|
| 63 |
}
|
| 64 |
|
| 65 |
.stat-card.present h3{
|
|
@@ -112,7 +112,7 @@
|
|
| 112 |
|
| 113 |
font-weight:700;
|
| 114 |
|
| 115 |
-
color:white;
|
| 116 |
}
|
| 117 |
|
| 118 |
.card-body{
|
|
@@ -134,7 +134,7 @@
|
|
| 134 |
|
| 135 |
border-radius:14px;
|
| 136 |
|
| 137 |
-
background:
|
| 138 |
|
| 139 |
margin-bottom:10px;
|
| 140 |
|
|
@@ -142,7 +142,7 @@
|
|
| 142 |
}
|
| 143 |
|
| 144 |
.activity-card .activity-item:hover{
|
| 145 |
-
background:
|
| 146 |
}
|
| 147 |
|
| 148 |
.activity-left{
|
|
@@ -169,7 +169,7 @@
|
|
| 169 |
.activity-item h4{
|
| 170 |
font-size:.95rem;
|
| 171 |
|
| 172 |
-
color:white;
|
| 173 |
}
|
| 174 |
|
| 175 |
.activity-item p{
|
|
|
|
| 48 |
|
| 49 |
margin-bottom:6px;
|
| 50 |
|
| 51 |
+
color:var(--text-white);
|
| 52 |
}
|
| 53 |
|
| 54 |
.stat-card p{
|
|
|
|
| 59 |
|
| 60 |
/* COLORS */
|
| 61 |
.stat-card.total h3{
|
| 62 |
+
color:var(--indigo-06);
|
| 63 |
}
|
| 64 |
|
| 65 |
.stat-card.present h3{
|
|
|
|
| 112 |
|
| 113 |
font-weight:700;
|
| 114 |
|
| 115 |
+
color:var(--text-white);
|
| 116 |
}
|
| 117 |
|
| 118 |
.card-body{
|
|
|
|
| 134 |
|
| 135 |
border-radius:14px;
|
| 136 |
|
| 137 |
+
background:var(--bg-table);
|
| 138 |
|
| 139 |
margin-bottom:10px;
|
| 140 |
|
|
|
|
| 142 |
}
|
| 143 |
|
| 144 |
.activity-card .activity-item:hover{
|
| 145 |
+
background:var(--bg-table-06);
|
| 146 |
}
|
| 147 |
|
| 148 |
.activity-left{
|
|
|
|
| 169 |
.activity-item h4{
|
| 170 |
font-size:.95rem;
|
| 171 |
|
| 172 |
+
color:var(--text-white);
|
| 173 |
}
|
| 174 |
|
| 175 |
.activity-item p{
|
src/main/resources/static/css/document/document-create.css
CHANGED
|
@@ -64,11 +64,11 @@
|
|
| 64 |
|
| 65 |
border-radius:14px;
|
| 66 |
|
| 67 |
-
border:1px solid
|
| 68 |
|
| 69 |
-
background:
|
| 70 |
|
| 71 |
-
color:white;
|
| 72 |
|
| 73 |
outline:none;
|
| 74 |
|
|
@@ -82,9 +82,9 @@
|
|
| 82 |
.form-group input:focus,
|
| 83 |
.form-group textarea:focus,
|
| 84 |
.form-group select:focus{
|
| 85 |
-
border-color:var(--indigo);
|
| 86 |
|
| 87 |
-
box-shadow:0 0 0 4px
|
| 88 |
}
|
| 89 |
|
| 90 |
/* ===================================
|
|
@@ -102,11 +102,11 @@
|
|
| 102 |
input[type="file"]{
|
| 103 |
padding:10px;
|
| 104 |
|
| 105 |
-
background:
|
| 106 |
|
| 107 |
border-radius:14px;
|
| 108 |
|
| 109 |
-
border:1px dashed
|
| 110 |
|
| 111 |
color:var(--text-gray);
|
| 112 |
}
|
|
@@ -137,7 +137,7 @@ input[type="file"]{
|
|
| 137 |
|
| 138 |
color:white;
|
| 139 |
|
| 140 |
-
background:linear-gradient(to right, var(--indigo), var(--purple));
|
| 141 |
|
| 142 |
transition:.25s;
|
| 143 |
|
|
@@ -158,9 +158,9 @@ input[type="file"]{
|
|
| 158 |
|
| 159 |
border-radius:14px;
|
| 160 |
|
| 161 |
-
border:1px solid
|
| 162 |
|
| 163 |
-
background:
|
| 164 |
|
| 165 |
color:var(--text-light);
|
| 166 |
|
|
@@ -170,7 +170,7 @@ input[type="file"]{
|
|
| 170 |
}
|
| 171 |
|
| 172 |
.btn-secondary:hover{
|
| 173 |
-
background:
|
| 174 |
}
|
| 175 |
|
| 176 |
/* ===================================
|
|
|
|
| 64 |
|
| 65 |
border-radius:14px;
|
| 66 |
|
| 67 |
+
border:1px solid var(--border);
|
| 68 |
|
| 69 |
+
background:var(--bg-table-06);
|
| 70 |
|
| 71 |
+
color:var(--text-white);
|
| 72 |
|
| 73 |
outline:none;
|
| 74 |
|
|
|
|
| 82 |
.form-group input:focus,
|
| 83 |
.form-group textarea:focus,
|
| 84 |
.form-group select:focus{
|
| 85 |
+
border-color:var(--indigo-06);
|
| 86 |
|
| 87 |
+
box-shadow:0 0 0 4px var(--indigo-15);
|
| 88 |
}
|
| 89 |
|
| 90 |
/* ===================================
|
|
|
|
| 102 |
input[type="file"]{
|
| 103 |
padding:10px;
|
| 104 |
|
| 105 |
+
background:var(--bg-table);
|
| 106 |
|
| 107 |
border-radius:14px;
|
| 108 |
|
| 109 |
+
border:1px dashed var(--bg-table-015);
|
| 110 |
|
| 111 |
color:var(--text-gray);
|
| 112 |
}
|
|
|
|
| 137 |
|
| 138 |
color:white;
|
| 139 |
|
| 140 |
+
background:linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 141 |
|
| 142 |
transition:.25s;
|
| 143 |
|
|
|
|
| 158 |
|
| 159 |
border-radius:14px;
|
| 160 |
|
| 161 |
+
border:1px solid var(--bg-table);
|
| 162 |
|
| 163 |
+
background:var(--bg-table-015);
|
| 164 |
|
| 165 |
color:var(--text-light);
|
| 166 |
|
|
|
|
| 170 |
}
|
| 171 |
|
| 172 |
.btn-secondary:hover{
|
| 173 |
+
background:var(--border);
|
| 174 |
}
|
| 175 |
|
| 176 |
/* ===================================
|
src/main/resources/static/css/document/document-list.css
CHANGED
|
@@ -1,35 +1,27 @@
|
|
| 1 |
@import url("../base.css");
|
| 2 |
|
| 3 |
-
/* ===================================
|
| 4 |
-
CARD WRAPPER
|
| 5 |
-
=================================== */
|
| 6 |
|
| 7 |
.document-card {
|
| 8 |
background: var(--bg-card);
|
| 9 |
-
|
| 10 |
border: 1px solid var(--border);
|
| 11 |
-
|
| 12 |
border-radius: 24px;
|
| 13 |
-
|
| 14 |
-
backdrop-filter: blur(20px);
|
| 15 |
-
|
| 16 |
overflow: hidden;
|
|
|
|
| 17 |
}
|
| 18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
.document-container {
|
| 20 |
overflow-x: auto;
|
| 21 |
}
|
| 22 |
|
| 23 |
-
/* ===================================
|
| 24 |
-
TABLE SYSTEM (UNIFIED)
|
| 25 |
-
=================================== */
|
| 26 |
-
|
| 27 |
.document-table {
|
| 28 |
width: 100%;
|
| 29 |
-
|
| 30 |
border-collapse: collapse;
|
| 31 |
-
|
| 32 |
-
min-width: 900px;
|
| 33 |
}
|
| 34 |
|
| 35 |
.document-table thead {
|
|
@@ -37,60 +29,64 @@
|
|
| 37 |
}
|
| 38 |
|
| 39 |
.document-table th {
|
| 40 |
-
padding:
|
| 41 |
-
|
| 42 |
text-align: left;
|
| 43 |
-
|
| 44 |
color: var(--text-light);
|
| 45 |
-
|
| 46 |
font-size: .9rem;
|
| 47 |
-
|
| 48 |
border-bottom: 1px solid var(--border);
|
| 49 |
}
|
| 50 |
|
| 51 |
.document-table td {
|
| 52 |
-
padding:
|
| 53 |
-
|
| 54 |
color: #e2e8f0;
|
|
|
|
|
|
|
|
|
|
| 55 |
|
| 56 |
-
|
|
|
|
| 57 |
}
|
| 58 |
|
| 59 |
.document-table tbody tr:hover {
|
| 60 |
background: rgba(255, 255, 255, .03);
|
| 61 |
}
|
| 62 |
|
| 63 |
-
/* ==========================
|
| 64 |
FILE LINK
|
| 65 |
-
==========================
|
| 66 |
|
| 67 |
.file-link {
|
| 68 |
-
color: var(--indigo);
|
| 69 |
-
|
| 70 |
-
text-decoration: none;
|
| 71 |
-
|
| 72 |
font-weight: 600;
|
|
|
|
|
|
|
| 73 |
}
|
| 74 |
|
| 75 |
.file-link:hover {
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
}
|
| 78 |
|
| 79 |
-
/* ==========================
|
| 80 |
-
STATUS
|
| 81 |
-
==========================
|
| 82 |
|
| 83 |
.status-pending,
|
| 84 |
.status-approved,
|
| 85 |
.status-rejected {
|
| 86 |
display: inline-flex;
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
border-radius: 999px;
|
| 91 |
-
|
| 92 |
font-size: .85rem;
|
| 93 |
-
|
| 94 |
font-weight: 600;
|
| 95 |
}
|
| 96 |
|
|
@@ -109,113 +105,130 @@
|
|
| 109 |
color: var(--danger);
|
| 110 |
}
|
| 111 |
|
| 112 |
-
/* ==========================
|
| 113 |
-
BUTTON
|
| 114 |
-
==========================
|
| 115 |
|
| 116 |
.btn {
|
| 117 |
-
padding: 8px 14px;
|
| 118 |
-
|
| 119 |
-
border-radius: 12px;
|
| 120 |
-
|
| 121 |
border: none;
|
| 122 |
-
|
|
|
|
| 123 |
cursor: pointer;
|
| 124 |
-
|
| 125 |
-
font-weight: 600;
|
| 126 |
-
|
| 127 |
font-size: .85rem;
|
| 128 |
-
|
| 129 |
transition: .25s;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
}
|
| 131 |
|
| 132 |
-
/*
|
| 133 |
-
.btn-detail {
|
| 134 |
-
background: rgba(59, 130, 246, .15);
|
| 135 |
|
| 136 |
-
|
|
|
|
|
|
|
| 137 |
}
|
| 138 |
|
| 139 |
.btn-detail:hover {
|
| 140 |
-
background: rgba(
|
|
|
|
| 141 |
}
|
| 142 |
|
| 143 |
-
/*
|
|
|
|
| 144 |
.btn-success {
|
| 145 |
background: rgba(34, 197, 94, .15);
|
| 146 |
-
|
| 147 |
color: var(--success);
|
| 148 |
}
|
| 149 |
|
| 150 |
.btn-success:hover {
|
| 151 |
background: rgba(34, 197, 94, .25);
|
|
|
|
| 152 |
}
|
| 153 |
|
| 154 |
-
/*
|
|
|
|
| 155 |
.btn-danger {
|
| 156 |
background: rgba(239, 68, 68, .15);
|
| 157 |
-
|
| 158 |
color: var(--danger);
|
| 159 |
}
|
| 160 |
|
| 161 |
.btn-danger:hover {
|
| 162 |
background: rgba(239, 68, 68, .25);
|
|
|
|
| 163 |
}
|
| 164 |
|
| 165 |
-
/*
|
|
|
|
|
|
|
|
|
|
| 166 |
.action-group {
|
| 167 |
display: flex;
|
| 168 |
-
|
| 169 |
gap: 10px;
|
| 170 |
}
|
| 171 |
|
| 172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
PAGINATION
|
| 174 |
-
==========================
|
| 175 |
|
| 176 |
.pagination {
|
| 177 |
-
|
|
|
|
| 178 |
|
|
|
|
| 179 |
justify-content: space-between;
|
| 180 |
-
|
| 181 |
align-items: center;
|
| 182 |
-
|
| 183 |
-
padding: 16px;
|
| 184 |
-
|
| 185 |
-
border-top: 1px solid var(--border);
|
| 186 |
}
|
| 187 |
|
| 188 |
.btn-pagination {
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
color: var(--text-light);
|
| 192 |
-
|
| 193 |
-
padding: 8px 14px;
|
| 194 |
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
|
|
|
|
|
|
| 198 |
|
| 199 |
-
|
| 200 |
}
|
| 201 |
|
| 202 |
.btn-pagination:hover {
|
| 203 |
-
|
|
|
|
| 204 |
}
|
| 205 |
|
| 206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
RESPONSIVE
|
| 208 |
-
==========================
|
| 209 |
|
| 210 |
-
@media(max-width:
|
| 211 |
|
| 212 |
.action-group {
|
| 213 |
flex-direction: column;
|
| 214 |
}
|
| 215 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 216 |
.pagination {
|
| 217 |
flex-direction: column;
|
| 218 |
-
|
| 219 |
-
gap: 10px;
|
| 220 |
}
|
| 221 |
}
|
|
|
|
| 1 |
@import url("../base.css");
|
| 2 |
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
.document-card {
|
| 5 |
background: var(--bg-card);
|
| 6 |
+
backdrop-filter: blur(20px);
|
| 7 |
border: 1px solid var(--border);
|
|
|
|
| 8 |
border-radius: 24px;
|
|
|
|
|
|
|
|
|
|
| 9 |
overflow: hidden;
|
| 10 |
+
box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
|
| 11 |
}
|
| 12 |
|
| 13 |
+
/* ==========================
|
| 14 |
+
TABLE
|
| 15 |
+
========================== */
|
| 16 |
+
|
| 17 |
.document-container {
|
| 18 |
overflow-x: auto;
|
| 19 |
}
|
| 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
.document-table {
|
| 22 |
width: 100%;
|
| 23 |
+
min-width: 1200px;
|
| 24 |
border-collapse: collapse;
|
|
|
|
|
|
|
| 25 |
}
|
| 26 |
|
| 27 |
.document-table thead {
|
|
|
|
| 29 |
}
|
| 30 |
|
| 31 |
.document-table th {
|
| 32 |
+
padding: 18px;
|
|
|
|
| 33 |
text-align: left;
|
|
|
|
| 34 |
color: var(--text-light);
|
|
|
|
| 35 |
font-size: .9rem;
|
| 36 |
+
font-weight: 600;
|
| 37 |
border-bottom: 1px solid var(--border);
|
| 38 |
}
|
| 39 |
|
| 40 |
.document-table td {
|
| 41 |
+
padding: 18px;
|
|
|
|
| 42 |
color: #e2e8f0;
|
| 43 |
+
border-bottom: 1px solid rgba(255, 255, 255, .05);
|
| 44 |
+
vertical-align: middle;
|
| 45 |
+
}
|
| 46 |
|
| 47 |
+
.document-table tbody tr {
|
| 48 |
+
transition: .25s;
|
| 49 |
}
|
| 50 |
|
| 51 |
.document-table tbody tr:hover {
|
| 52 |
background: rgba(255, 255, 255, .03);
|
| 53 |
}
|
| 54 |
|
| 55 |
+
/* ==========================
|
| 56 |
FILE LINK
|
| 57 |
+
========================== */
|
| 58 |
|
| 59 |
.file-link {
|
| 60 |
+
color: var(--indigo-06);
|
|
|
|
|
|
|
|
|
|
| 61 |
font-weight: 600;
|
| 62 |
+
text-decoration: none;
|
| 63 |
+
transition: .25s;
|
| 64 |
}
|
| 65 |
|
| 66 |
.file-link:hover {
|
| 67 |
+
color: var(--purple);
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
td span {
|
| 71 |
+
display: block;
|
| 72 |
+
margin-top: 6px;
|
| 73 |
+
font-size: .85rem;
|
| 74 |
+
color: #94a3b8;
|
| 75 |
}
|
| 76 |
|
| 77 |
+
/* ==========================
|
| 78 |
+
STATUS
|
| 79 |
+
========================== */
|
| 80 |
|
| 81 |
.status-pending,
|
| 82 |
.status-approved,
|
| 83 |
.status-rejected {
|
| 84 |
display: inline-flex;
|
| 85 |
+
align-items: center;
|
| 86 |
+
justify-content: center;
|
| 87 |
+
padding: 6px 14px;
|
| 88 |
border-radius: 999px;
|
|
|
|
| 89 |
font-size: .85rem;
|
|
|
|
| 90 |
font-weight: 600;
|
| 91 |
}
|
| 92 |
|
|
|
|
| 105 |
color: var(--danger);
|
| 106 |
}
|
| 107 |
|
| 108 |
+
/* ==========================
|
| 109 |
+
BUTTON
|
| 110 |
+
========================== */
|
| 111 |
|
| 112 |
.btn {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
border: none;
|
| 114 |
+
border-radius: 12px;
|
| 115 |
+
padding: 10px 16px;
|
| 116 |
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
| 117 |
font-size: .85rem;
|
| 118 |
+
font-weight: 600;
|
| 119 |
transition: .25s;
|
| 120 |
+
text-decoration: none;
|
| 121 |
+
display: inline-flex;
|
| 122 |
+
align-items: center;
|
| 123 |
+
justify-content: center;
|
| 124 |
}
|
| 125 |
|
| 126 |
+
/* XEM */
|
|
|
|
|
|
|
| 127 |
|
| 128 |
+
.btn-detail {
|
| 129 |
+
background: rgba(255, 255, 255, .06);
|
| 130 |
+
color: white;
|
| 131 |
}
|
| 132 |
|
| 133 |
.btn-detail:hover {
|
| 134 |
+
background: rgba(255, 255, 255, .12);
|
| 135 |
+
transform: translateY(-2px);
|
| 136 |
}
|
| 137 |
|
| 138 |
+
/* DUYỆT */
|
| 139 |
+
|
| 140 |
.btn-success {
|
| 141 |
background: rgba(34, 197, 94, .15);
|
|
|
|
| 142 |
color: var(--success);
|
| 143 |
}
|
| 144 |
|
| 145 |
.btn-success:hover {
|
| 146 |
background: rgba(34, 197, 94, .25);
|
| 147 |
+
transform: translateY(-2px);
|
| 148 |
}
|
| 149 |
|
| 150 |
+
/* TỪ CHỐI */
|
| 151 |
+
|
| 152 |
.btn-danger {
|
| 153 |
background: rgba(239, 68, 68, .15);
|
|
|
|
| 154 |
color: var(--danger);
|
| 155 |
}
|
| 156 |
|
| 157 |
.btn-danger:hover {
|
| 158 |
background: rgba(239, 68, 68, .25);
|
| 159 |
+
transform: translateY(-2px);
|
| 160 |
}
|
| 161 |
|
| 162 |
+
/* ==========================
|
| 163 |
+
ACTIONS
|
| 164 |
+
========================== */
|
| 165 |
+
|
| 166 |
.action-group {
|
| 167 |
display: flex;
|
|
|
|
| 168 |
gap: 10px;
|
| 169 |
}
|
| 170 |
|
| 171 |
+
.action-group form {
|
| 172 |
+
margin: 0;
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
/* ==========================
|
| 176 |
PAGINATION
|
| 177 |
+
========================== */
|
| 178 |
|
| 179 |
.pagination {
|
| 180 |
+
padding: 20px 24px;
|
| 181 |
+
border-top: 1px solid var(--border);
|
| 182 |
|
| 183 |
+
display: flex;
|
| 184 |
justify-content: space-between;
|
|
|
|
| 185 |
align-items: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
}
|
| 187 |
|
| 188 |
.btn-pagination {
|
| 189 |
+
min-width: 120px;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
|
| 191 |
+
background: linear-gradient(
|
| 192 |
+
135deg,
|
| 193 |
+
var(--indigo-06),
|
| 194 |
+
var(--purple)
|
| 195 |
+
);
|
| 196 |
|
| 197 |
+
color: white;
|
| 198 |
}
|
| 199 |
|
| 200 |
.btn-pagination:hover {
|
| 201 |
+
transform: translateY(-2px);
|
| 202 |
+
box-shadow: 0 10px 25px rgba(99, 102, 241, .35);
|
| 203 |
}
|
| 204 |
|
| 205 |
+
.pagination span {
|
| 206 |
+
color: var(--text-light);
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
/* ==========================
|
| 210 |
RESPONSIVE
|
| 211 |
+
========================== */
|
| 212 |
|
| 213 |
+
@media (max-width: 1200px) {
|
| 214 |
|
| 215 |
.action-group {
|
| 216 |
flex-direction: column;
|
| 217 |
}
|
| 218 |
|
| 219 |
+
.action-group .btn {
|
| 220 |
+
width: 100%;
|
| 221 |
+
}
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
@media (max-width: 768px) {
|
| 225 |
+
|
| 226 |
+
.document-table {
|
| 227 |
+
min-width: 1200px;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
.pagination {
|
| 231 |
flex-direction: column;
|
| 232 |
+
gap: 15px;
|
|
|
|
| 233 |
}
|
| 234 |
}
|
src/main/resources/static/css/faceID/faceID-create.css
CHANGED
|
@@ -31,7 +31,7 @@ video {
|
|
| 31 |
|
| 32 |
font-weight:700;
|
| 33 |
|
| 34 |
-
color:white;
|
| 35 |
}
|
| 36 |
|
| 37 |
.card-body{
|
|
@@ -65,11 +65,11 @@ video {
|
|
| 65 |
|
| 66 |
border-radius:14px;
|
| 67 |
|
| 68 |
-
border:1px solid
|
| 69 |
|
| 70 |
-
background:
|
| 71 |
|
| 72 |
-
color:white;
|
| 73 |
|
| 74 |
outline:none;
|
| 75 |
|
|
@@ -77,9 +77,9 @@ video {
|
|
| 77 |
}
|
| 78 |
|
| 79 |
.room-code-input input:focus{
|
| 80 |
-
border-color:var(--indigo);
|
| 81 |
|
| 82 |
-
box-shadow:0 0 0 4px
|
| 83 |
}
|
| 84 |
|
| 85 |
/* ===================================
|
|
@@ -113,11 +113,11 @@ video {
|
|
| 113 |
|
| 114 |
border-radius:14px;
|
| 115 |
|
| 116 |
-
border:1px solid
|
| 117 |
|
| 118 |
-
background:
|
| 119 |
|
| 120 |
-
color:white;
|
| 121 |
|
| 122 |
outline:none;
|
| 123 |
}
|
|
@@ -127,9 +127,9 @@ video {
|
|
| 127 |
|
| 128 |
border-radius:14px;
|
| 129 |
|
| 130 |
-
border:1px solid
|
| 131 |
|
| 132 |
-
background:
|
| 133 |
|
| 134 |
color:var(--text-light);
|
| 135 |
|
|
@@ -153,7 +153,7 @@ video {
|
|
| 153 |
=================================== */
|
| 154 |
|
| 155 |
.panel{
|
| 156 |
-
background:
|
| 157 |
|
| 158 |
border:1px solid var(--border);
|
| 159 |
|
|
@@ -187,9 +187,9 @@ video {
|
|
| 187 |
|
| 188 |
cursor:pointer;
|
| 189 |
|
| 190 |
-
background:linear-gradient(to right, var(--indigo), var(--purple));
|
| 191 |
|
| 192 |
-
color:white;
|
| 193 |
|
| 194 |
font-weight:600;
|
| 195 |
}
|
|
@@ -213,9 +213,9 @@ video {
|
|
| 213 |
|
| 214 |
border-radius:12px;
|
| 215 |
|
| 216 |
-
border:1px solid
|
| 217 |
|
| 218 |
-
background:
|
| 219 |
|
| 220 |
color:var(--text-light);
|
| 221 |
|
|
@@ -225,11 +225,11 @@ video {
|
|
| 225 |
}
|
| 226 |
|
| 227 |
.mode-tabs button.active{
|
| 228 |
-
background:
|
| 229 |
|
| 230 |
border-color:var(--indigo);
|
| 231 |
|
| 232 |
-
color:white;
|
| 233 |
}
|
| 234 |
|
| 235 |
/* ===================================
|
|
@@ -241,9 +241,9 @@ video {
|
|
| 241 |
|
| 242 |
border-radius:14px;
|
| 243 |
|
| 244 |
-
background:
|
| 245 |
|
| 246 |
-
border:1px solid
|
| 247 |
|
| 248 |
margin-bottom:12px;
|
| 249 |
|
|
@@ -308,19 +308,19 @@ video {
|
|
| 308 |
|
| 309 |
font-weight:600;
|
| 310 |
|
| 311 |
-
color:white;
|
| 312 |
}
|
| 313 |
|
| 314 |
/* PRIMARY */
|
| 315 |
#captureFaceBtn{
|
| 316 |
-
background:linear-gradient(to right, var(--indigo), var(--purple));
|
| 317 |
}
|
| 318 |
|
| 319 |
/* SECONDARY */
|
| 320 |
.action-row .secondary{
|
| 321 |
-
background:
|
| 322 |
|
| 323 |
-
border:1px solid
|
| 324 |
|
| 325 |
color:var(--text-light);
|
| 326 |
}
|
|
|
|
| 31 |
|
| 32 |
font-weight:700;
|
| 33 |
|
| 34 |
+
color:var(--text-white);
|
| 35 |
}
|
| 36 |
|
| 37 |
.card-body{
|
|
|
|
| 65 |
|
| 66 |
border-radius:14px;
|
| 67 |
|
| 68 |
+
border:1px solid var(--border);
|
| 69 |
|
| 70 |
+
background:var(--bg-form);
|
| 71 |
|
| 72 |
+
color:var(--text-white);
|
| 73 |
|
| 74 |
outline:none;
|
| 75 |
|
|
|
|
| 77 |
}
|
| 78 |
|
| 79 |
.room-code-input input:focus{
|
| 80 |
+
border-color:var(--indigo-06);
|
| 81 |
|
| 82 |
+
box-shadow:0 0 0 4px var(--indigo-15);
|
| 83 |
}
|
| 84 |
|
| 85 |
/* ===================================
|
|
|
|
| 113 |
|
| 114 |
border-radius:14px;
|
| 115 |
|
| 116 |
+
border:1px solid var(--border);
|
| 117 |
|
| 118 |
+
background:var(--bg-table-06);
|
| 119 |
|
| 120 |
+
color:var(--text-white);
|
| 121 |
|
| 122 |
outline:none;
|
| 123 |
}
|
|
|
|
| 127 |
|
| 128 |
border-radius:14px;
|
| 129 |
|
| 130 |
+
border:1px solid var(--border);
|
| 131 |
|
| 132 |
+
background:var(--bg-table-06);
|
| 133 |
|
| 134 |
color:var(--text-light);
|
| 135 |
|
|
|
|
| 153 |
=================================== */
|
| 154 |
|
| 155 |
.panel{
|
| 156 |
+
background:var(--bg-table);
|
| 157 |
|
| 158 |
border:1px solid var(--border);
|
| 159 |
|
|
|
|
| 187 |
|
| 188 |
cursor:pointer;
|
| 189 |
|
| 190 |
+
background:linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 191 |
|
| 192 |
+
color:var(--text-white);
|
| 193 |
|
| 194 |
font-weight:600;
|
| 195 |
}
|
|
|
|
| 213 |
|
| 214 |
border-radius:12px;
|
| 215 |
|
| 216 |
+
border:1px solid var(--border);
|
| 217 |
|
| 218 |
+
background:var(--bg-table-06);
|
| 219 |
|
| 220 |
color:var(--text-light);
|
| 221 |
|
|
|
|
| 225 |
}
|
| 226 |
|
| 227 |
.mode-tabs button.active{
|
| 228 |
+
background:var(--indigo-15);
|
| 229 |
|
| 230 |
border-color:var(--indigo);
|
| 231 |
|
| 232 |
+
color:var(--text-white);
|
| 233 |
}
|
| 234 |
|
| 235 |
/* ===================================
|
|
|
|
| 241 |
|
| 242 |
border-radius:14px;
|
| 243 |
|
| 244 |
+
background:var(--bg-table);
|
| 245 |
|
| 246 |
+
border:1px solid var(--border);
|
| 247 |
|
| 248 |
margin-bottom:12px;
|
| 249 |
|
|
|
|
| 308 |
|
| 309 |
font-weight:600;
|
| 310 |
|
| 311 |
+
color:var(--text-white);
|
| 312 |
}
|
| 313 |
|
| 314 |
/* PRIMARY */
|
| 315 |
#captureFaceBtn{
|
| 316 |
+
background:linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 317 |
}
|
| 318 |
|
| 319 |
/* SECONDARY */
|
| 320 |
.action-row .secondary{
|
| 321 |
+
background:var(--bg-table-06);
|
| 322 |
|
| 323 |
+
border:1px solid var(--border);
|
| 324 |
|
| 325 |
color:var(--text-light);
|
| 326 |
}
|
src/main/resources/static/css/faceID/faceID-list.css
CHANGED
|
@@ -25,11 +25,11 @@
|
|
| 25 |
|
| 26 |
border-collapse:collapse;
|
| 27 |
|
| 28 |
-
color:
|
| 29 |
}
|
| 30 |
|
| 31 |
.face-table thead{
|
| 32 |
-
background:
|
| 33 |
}
|
| 34 |
|
| 35 |
.face-table th{
|
|
@@ -47,7 +47,7 @@
|
|
| 47 |
.face-table td{
|
| 48 |
padding:16px;
|
| 49 |
|
| 50 |
-
border-bottom:1px solid
|
| 51 |
|
| 52 |
font-size:.95rem;
|
| 53 |
}
|
|
@@ -57,9 +57,10 @@
|
|
| 57 |
}
|
| 58 |
|
| 59 |
.face-table tbody tr:hover{
|
| 60 |
-
background:
|
| 61 |
}
|
| 62 |
|
|
|
|
| 63 |
/* ===================================
|
| 64 |
BADGE
|
| 65 |
=================================== */
|
|
@@ -75,11 +76,11 @@
|
|
| 75 |
|
| 76 |
font-weight:600;
|
| 77 |
|
| 78 |
-
background:
|
| 79 |
|
| 80 |
-
color:var(--
|
| 81 |
|
| 82 |
-
border:1px solid
|
| 83 |
}
|
| 84 |
|
| 85 |
/* ===================================
|
|
@@ -91,9 +92,9 @@
|
|
| 91 |
|
| 92 |
border-radius:12px;
|
| 93 |
|
| 94 |
-
border:1px solid
|
| 95 |
|
| 96 |
-
background:
|
| 97 |
|
| 98 |
color:var(--text-light);
|
| 99 |
|
|
@@ -103,9 +104,9 @@
|
|
| 103 |
}
|
| 104 |
|
| 105 |
.detail-btn:hover{
|
| 106 |
-
background:
|
| 107 |
|
| 108 |
-
border-color:var(--indigo);
|
| 109 |
|
| 110 |
color:white;
|
| 111 |
}
|
|
@@ -125,7 +126,14 @@
|
|
| 125 |
|
| 126 |
font-weight:600;
|
| 127 |
}
|
| 128 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
/* ===================================
|
| 130 |
TABLE WRAPPER IMPROVEMENT
|
| 131 |
=================================== */
|
|
|
|
| 25 |
|
| 26 |
border-collapse:collapse;
|
| 27 |
|
| 28 |
+
color:var(--text-white);
|
| 29 |
}
|
| 30 |
|
| 31 |
.face-table thead{
|
| 32 |
+
background:var(--bg-table);
|
| 33 |
}
|
| 34 |
|
| 35 |
.face-table th{
|
|
|
|
| 47 |
.face-table td{
|
| 48 |
padding:16px;
|
| 49 |
|
| 50 |
+
border-bottom:1px solid var(--bg-form);
|
| 51 |
|
| 52 |
font-size:.95rem;
|
| 53 |
}
|
|
|
|
| 57 |
}
|
| 58 |
|
| 59 |
.face-table tbody tr:hover{
|
| 60 |
+
background:var(--bg-table);
|
| 61 |
}
|
| 62 |
|
| 63 |
+
|
| 64 |
/* ===================================
|
| 65 |
BADGE
|
| 66 |
=================================== */
|
|
|
|
| 76 |
|
| 77 |
font-weight:600;
|
| 78 |
|
| 79 |
+
background:var(--bg-table-015);
|
| 80 |
|
| 81 |
+
color:var(--text-white );
|
| 82 |
|
| 83 |
+
border:1px solid var(--indigo-15);
|
| 84 |
}
|
| 85 |
|
| 86 |
/* ===================================
|
|
|
|
| 92 |
|
| 93 |
border-radius:12px;
|
| 94 |
|
| 95 |
+
border:1px solid var(--border);
|
| 96 |
|
| 97 |
+
background:var(--bg-table-06);
|
| 98 |
|
| 99 |
color:var(--text-light);
|
| 100 |
|
|
|
|
| 104 |
}
|
| 105 |
|
| 106 |
.detail-btn:hover{
|
| 107 |
+
background:var(--indigo-15);
|
| 108 |
|
| 109 |
+
border-color:var(--indigo-06);
|
| 110 |
|
| 111 |
color:white;
|
| 112 |
}
|
|
|
|
| 126 |
|
| 127 |
font-weight:600;
|
| 128 |
}
|
| 129 |
+
.btn-secondery{
|
| 130 |
+
background-color:var(--danger) ;
|
| 131 |
+
color: var(--text-white);
|
| 132 |
+
}
|
| 133 |
+
.btn-primary{
|
| 134 |
+
background-color:var(--success) ;
|
| 135 |
+
color: var(--text-white);
|
| 136 |
+
}
|
| 137 |
/* ===================================
|
| 138 |
TABLE WRAPPER IMPROVEMENT
|
| 139 |
=================================== */
|
src/main/resources/static/css/layout/footer.css
CHANGED
|
@@ -4,24 +4,24 @@
|
|
| 4 |
|
| 5 |
footer {
|
| 6 |
width: 100%;
|
| 7 |
-
|
| 8 |
}
|
| 9 |
|
| 10 |
.footer-layout {
|
| 11 |
max-width: 1550px;
|
| 12 |
|
| 13 |
margin: 0px;
|
| 14 |
-
padding:40px 60px 30px 60px;
|
| 15 |
|
| 16 |
display: flex;
|
| 17 |
justify-content: space-between;
|
| 18 |
align-items: flex-start;
|
| 19 |
|
| 20 |
-
background:
|
| 21 |
|
| 22 |
backdrop-filter: blur(12px);
|
| 23 |
|
| 24 |
-
border-top: 1px solid
|
| 25 |
}
|
| 26 |
|
| 27 |
/* =========================
|
|
@@ -39,15 +39,15 @@ footer {
|
|
| 39 |
font-weight: 700;
|
| 40 |
|
| 41 |
background: linear-gradient(90deg,
|
| 42 |
-
#
|
| 43 |
-
#
|
| 44 |
background-clip: text;
|
| 45 |
-webkit-background-clip: text;
|
| 46 |
-webkit-text-fill-color: transparent;
|
| 47 |
}
|
| 48 |
|
| 49 |
.left-description {
|
| 50 |
-
color:
|
| 51 |
font-size: 1rem;
|
| 52 |
line-height: 1.6;
|
| 53 |
}
|
|
@@ -63,7 +63,7 @@ footer {
|
|
| 63 |
}
|
| 64 |
|
| 65 |
.right-title {
|
| 66 |
-
color: white;
|
| 67 |
font-size: 1.1rem;
|
| 68 |
font-weight: 600;
|
| 69 |
|
|
@@ -73,13 +73,13 @@ footer {
|
|
| 73 |
.right-description {
|
| 74 |
text-decoration: none;
|
| 75 |
|
| 76 |
-
color:
|
| 77 |
|
| 78 |
transition: .3s;
|
| 79 |
}
|
| 80 |
|
| 81 |
.right-description:hover {
|
| 82 |
-
color:
|
| 83 |
}
|
| 84 |
|
| 85 |
/* =========================
|
|
@@ -91,9 +91,10 @@ footer {
|
|
| 91 |
|
| 92 |
padding: 20px;
|
| 93 |
|
| 94 |
-
color:
|
| 95 |
-
background-color: #
|
| 96 |
-
|
|
|
|
| 97 |
}
|
| 98 |
|
| 99 |
/* =========================
|
|
|
|
| 4 |
|
| 5 |
footer {
|
| 6 |
width: 100%;
|
| 7 |
+
|
| 8 |
}
|
| 9 |
|
| 10 |
.footer-layout {
|
| 11 |
max-width: 1550px;
|
| 12 |
|
| 13 |
margin: 0px;
|
| 14 |
+
padding: 40px 60px 30px 60px;
|
| 15 |
|
| 16 |
display: flex;
|
| 17 |
justify-content: space-between;
|
| 18 |
align-items: flex-start;
|
| 19 |
|
| 20 |
+
background: var(--bg-card);
|
| 21 |
|
| 22 |
backdrop-filter: blur(12px);
|
| 23 |
|
| 24 |
+
border-top: 1px solid var(--border);
|
| 25 |
}
|
| 26 |
|
| 27 |
/* =========================
|
|
|
|
| 39 |
font-weight: 700;
|
| 40 |
|
| 41 |
background: linear-gradient(90deg,
|
| 42 |
+
#8b5cf6,
|
| 43 |
+
#b794ff);
|
| 44 |
background-clip: text;
|
| 45 |
-webkit-background-clip: text;
|
| 46 |
-webkit-text-fill-color: transparent;
|
| 47 |
}
|
| 48 |
|
| 49 |
.left-description {
|
| 50 |
+
color: var(--text-light);
|
| 51 |
font-size: 1rem;
|
| 52 |
line-height: 1.6;
|
| 53 |
}
|
|
|
|
| 63 |
}
|
| 64 |
|
| 65 |
.right-title {
|
| 66 |
+
color: var(--text-white);
|
| 67 |
font-size: 1.1rem;
|
| 68 |
font-weight: 600;
|
| 69 |
|
|
|
|
| 73 |
.right-description {
|
| 74 |
text-decoration: none;
|
| 75 |
|
| 76 |
+
color: var(--text-light);
|
| 77 |
|
| 78 |
transition: .3s;
|
| 79 |
}
|
| 80 |
|
| 81 |
.right-description:hover {
|
| 82 |
+
color: var(--purple-light);
|
| 83 |
}
|
| 84 |
|
| 85 |
/* =========================
|
|
|
|
| 91 |
|
| 92 |
padding: 20px;
|
| 93 |
|
| 94 |
+
color: var(--text-light);
|
| 95 |
+
background-color: #0f172a;
|
| 96 |
+
|
| 97 |
+
border-top: 1px solid var(--bg-table-06);
|
| 98 |
}
|
| 99 |
|
| 100 |
/* =========================
|
src/main/resources/static/css/report/report-day.css
CHANGED
|
@@ -23,7 +23,7 @@
|
|
| 23 |
|
| 24 |
font-weight: 800;
|
| 25 |
|
| 26 |
-
color: white;
|
| 27 |
}
|
| 28 |
|
| 29 |
.container-header p {
|
|
@@ -37,7 +37,7 @@
|
|
| 37 |
=================================== */
|
| 38 |
|
| 39 |
.card-header {
|
| 40 |
-
background:
|
| 41 |
|
| 42 |
border: 1px solid var(--border);
|
| 43 |
|
|
@@ -51,7 +51,7 @@
|
|
| 51 |
|
| 52 |
font-weight: 700;
|
| 53 |
|
| 54 |
-
color: white;
|
| 55 |
}
|
| 56 |
|
| 57 |
/* ===================================
|
|
@@ -90,11 +90,11 @@
|
|
| 90 |
|
| 91 |
border-radius: 14px;
|
| 92 |
|
| 93 |
-
border: 1px solid
|
| 94 |
|
| 95 |
-
background:
|
| 96 |
|
| 97 |
-
color: white;
|
| 98 |
|
| 99 |
outline: none;
|
| 100 |
|
|
@@ -103,9 +103,9 @@
|
|
| 103 |
|
| 104 |
.filter-group input:focus,
|
| 105 |
.filter-group select:focus {
|
| 106 |
-
border-color: var(--indigo);
|
| 107 |
|
| 108 |
-
box-shadow: 0 0 0 4px
|
| 109 |
}
|
| 110 |
|
| 111 |
/* FILTER BUTTON */
|
|
@@ -123,9 +123,9 @@
|
|
| 123 |
|
| 124 |
font-weight: 700;
|
| 125 |
|
| 126 |
-
color: white;
|
| 127 |
|
| 128 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 129 |
|
| 130 |
transition: .25s;
|
| 131 |
}
|
|
@@ -153,11 +153,11 @@
|
|
| 153 |
|
| 154 |
border-collapse: collapse;
|
| 155 |
|
| 156 |
-
color:
|
| 157 |
}
|
| 158 |
|
| 159 |
.attendance-table thead {
|
| 160 |
-
background:
|
| 161 |
}
|
| 162 |
|
| 163 |
.attendance-table th {
|
|
@@ -175,7 +175,7 @@
|
|
| 175 |
.attendance-table td {
|
| 176 |
padding: 16px;
|
| 177 |
|
| 178 |
-
border-bottom: 1px solid
|
| 179 |
}
|
| 180 |
|
| 181 |
.attendance-table tbody tr {
|
|
@@ -183,7 +183,7 @@
|
|
| 183 |
}
|
| 184 |
|
| 185 |
.attendance-table tbody tr:hover {
|
| 186 |
-
background:
|
| 187 |
}
|
| 188 |
|
| 189 |
/* ===================================
|
|
@@ -201,19 +201,19 @@
|
|
| 201 |
}
|
| 202 |
|
| 203 |
.status.present {
|
| 204 |
-
background:
|
| 205 |
|
| 206 |
color: var(--success);
|
| 207 |
}
|
| 208 |
|
| 209 |
.status.late {
|
| 210 |
-
background:
|
| 211 |
|
| 212 |
color: var(--warning);
|
| 213 |
}
|
| 214 |
|
| 215 |
.status.absent {
|
| 216 |
-
background:
|
| 217 |
|
| 218 |
color: var(--danger);
|
| 219 |
}
|
|
|
|
| 23 |
|
| 24 |
font-weight: 800;
|
| 25 |
|
| 26 |
+
color: var(--text-white);
|
| 27 |
}
|
| 28 |
|
| 29 |
.container-header p {
|
|
|
|
| 37 |
=================================== */
|
| 38 |
|
| 39 |
.card-header {
|
| 40 |
+
background: var(--bg-table);
|
| 41 |
|
| 42 |
border: 1px solid var(--border);
|
| 43 |
|
|
|
|
| 51 |
|
| 52 |
font-weight: 700;
|
| 53 |
|
| 54 |
+
color: var(--text-white);
|
| 55 |
}
|
| 56 |
|
| 57 |
/* ===================================
|
|
|
|
| 90 |
|
| 91 |
border-radius: 14px;
|
| 92 |
|
| 93 |
+
border: 1px solid var(--border);
|
| 94 |
|
| 95 |
+
background: var(--bg-table-06);
|
| 96 |
|
| 97 |
+
color: var(--text-white);
|
| 98 |
|
| 99 |
outline: none;
|
| 100 |
|
|
|
|
| 103 |
|
| 104 |
.filter-group input:focus,
|
| 105 |
.filter-group select:focus {
|
| 106 |
+
border-color: var(--indigo-06);
|
| 107 |
|
| 108 |
+
box-shadow: 0 0 0 4px var(--indigo-15);
|
| 109 |
}
|
| 110 |
|
| 111 |
/* FILTER BUTTON */
|
|
|
|
| 123 |
|
| 124 |
font-weight: 700;
|
| 125 |
|
| 126 |
+
color: var(--text-white);
|
| 127 |
|
| 128 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 129 |
|
| 130 |
transition: .25s;
|
| 131 |
}
|
|
|
|
| 153 |
|
| 154 |
border-collapse: collapse;
|
| 155 |
|
| 156 |
+
color: var(--text-white);
|
| 157 |
}
|
| 158 |
|
| 159 |
.attendance-table thead {
|
| 160 |
+
background: var(--bg-table);
|
| 161 |
}
|
| 162 |
|
| 163 |
.attendance-table th {
|
|
|
|
| 175 |
.attendance-table td {
|
| 176 |
padding: 16px;
|
| 177 |
|
| 178 |
+
border-bottom: 1px solid var(--bg-form);
|
| 179 |
}
|
| 180 |
|
| 181 |
.attendance-table tbody tr {
|
|
|
|
| 183 |
}
|
| 184 |
|
| 185 |
.attendance-table tbody tr:hover {
|
| 186 |
+
background: var(--bg-table);
|
| 187 |
}
|
| 188 |
|
| 189 |
/* ===================================
|
|
|
|
| 201 |
}
|
| 202 |
|
| 203 |
.status.present {
|
| 204 |
+
background: var(--btn-approv-15);
|
| 205 |
|
| 206 |
color: var(--success);
|
| 207 |
}
|
| 208 |
|
| 209 |
.status.late {
|
| 210 |
+
background: var(--btn-warning-15);
|
| 211 |
|
| 212 |
color: var(--warning);
|
| 213 |
}
|
| 214 |
|
| 215 |
.status.absent {
|
| 216 |
+
background: var(--btn-reject-15);
|
| 217 |
|
| 218 |
color: var(--danger);
|
| 219 |
}
|
src/main/resources/static/css/report/report-month.css
CHANGED
|
@@ -23,7 +23,7 @@
|
|
| 23 |
|
| 24 |
font-weight: 800;
|
| 25 |
|
| 26 |
-
color: white;
|
| 27 |
}
|
| 28 |
|
| 29 |
.container-header p {
|
|
@@ -80,11 +80,11 @@
|
|
| 80 |
|
| 81 |
border-radius: 14px;
|
| 82 |
|
| 83 |
-
border: 1px solid
|
| 84 |
|
| 85 |
-
background:
|
| 86 |
|
| 87 |
-
color: white;
|
| 88 |
|
| 89 |
outline: none;
|
| 90 |
|
|
@@ -93,9 +93,9 @@
|
|
| 93 |
|
| 94 |
.filter-group input:focus,
|
| 95 |
.filter-group select:focus {
|
| 96 |
-
border-color: var(--indigo);
|
| 97 |
|
| 98 |
-
box-shadow: 0 0 0 4px
|
| 99 |
}
|
| 100 |
|
| 101 |
/* EXPORT BUTTON */
|
|
@@ -111,9 +111,9 @@
|
|
| 111 |
|
| 112 |
font-weight: 700;
|
| 113 |
|
| 114 |
-
color: white;
|
| 115 |
|
| 116 |
-
background: linear-gradient(to right, var(--indigo), var(--purple));
|
| 117 |
|
| 118 |
transition: .25s;
|
| 119 |
}
|
|
@@ -169,7 +169,7 @@
|
|
| 169 |
|
| 170 |
font-weight: 800;
|
| 171 |
|
| 172 |
-
color: white;
|
| 173 |
}
|
| 174 |
|
| 175 |
/* ===================================
|
|
@@ -195,7 +195,7 @@
|
|
| 195 |
|
| 196 |
font-weight: 700;
|
| 197 |
|
| 198 |
-
color: white;
|
| 199 |
|
| 200 |
margin-bottom: 12px;
|
| 201 |
}
|
|
@@ -221,7 +221,7 @@
|
|
| 221 |
.table-card h2 {
|
| 222 |
font-size: 1.1rem;
|
| 223 |
|
| 224 |
-
color: white;
|
| 225 |
|
| 226 |
margin-bottom: 12px;
|
| 227 |
}
|
|
@@ -231,7 +231,7 @@
|
|
| 231 |
|
| 232 |
border-collapse: collapse;
|
| 233 |
|
| 234 |
-
color:
|
| 235 |
}
|
| 236 |
|
| 237 |
.report-table th {
|
|
@@ -249,11 +249,11 @@
|
|
| 249 |
.report-table td {
|
| 250 |
padding: 14px;
|
| 251 |
|
| 252 |
-
border-bottom: 1px solid
|
| 253 |
}
|
| 254 |
|
| 255 |
.report-table tbody tr:hover {
|
| 256 |
-
background:
|
| 257 |
}
|
| 258 |
|
| 259 |
/* ===================================
|
|
|
|
| 23 |
|
| 24 |
font-weight: 800;
|
| 25 |
|
| 26 |
+
color: var(--text-white);
|
| 27 |
}
|
| 28 |
|
| 29 |
.container-header p {
|
|
|
|
| 80 |
|
| 81 |
border-radius: 14px;
|
| 82 |
|
| 83 |
+
border: 1px solid var(--border);
|
| 84 |
|
| 85 |
+
background: var(--bg-table-06);
|
| 86 |
|
| 87 |
+
color: var(--text-white);
|
| 88 |
|
| 89 |
outline: none;
|
| 90 |
|
|
|
|
| 93 |
|
| 94 |
.filter-group input:focus,
|
| 95 |
.filter-group select:focus {
|
| 96 |
+
border-color: var(--indigo-06);
|
| 97 |
|
| 98 |
+
box-shadow: 0 0 0 4px var(--indigo-15);
|
| 99 |
}
|
| 100 |
|
| 101 |
/* EXPORT BUTTON */
|
|
|
|
| 111 |
|
| 112 |
font-weight: 700;
|
| 113 |
|
| 114 |
+
color: var(--text-white);
|
| 115 |
|
| 116 |
+
background: linear-gradient(to right, var(--indigo-06), var(--purple));
|
| 117 |
|
| 118 |
transition: .25s;
|
| 119 |
}
|
|
|
|
| 169 |
|
| 170 |
font-weight: 800;
|
| 171 |
|
| 172 |
+
color: var(--text-white);
|
| 173 |
}
|
| 174 |
|
| 175 |
/* ===================================
|
|
|
|
| 195 |
|
| 196 |
font-weight: 700;
|
| 197 |
|
| 198 |
+
color: var(--text-white);
|
| 199 |
|
| 200 |
margin-bottom: 12px;
|
| 201 |
}
|
|
|
|
| 221 |
.table-card h2 {
|
| 222 |
font-size: 1.1rem;
|
| 223 |
|
| 224 |
+
color: var(--text-white);
|
| 225 |
|
| 226 |
margin-bottom: 12px;
|
| 227 |
}
|
|
|
|
| 231 |
|
| 232 |
border-collapse: collapse;
|
| 233 |
|
| 234 |
+
color: var(--text-white);
|
| 235 |
}
|
| 236 |
|
| 237 |
.report-table th {
|
|
|
|
| 249 |
.report-table td {
|
| 250 |
padding: 14px;
|
| 251 |
|
| 252 |
+
border-bottom: 1px solid var(--bg-form);
|
| 253 |
}
|
| 254 |
|
| 255 |
.report-table tbody tr:hover {
|
| 256 |
+
background: var(--bg-table);
|
| 257 |
}
|
| 258 |
|
| 259 |
/* ===================================
|
src/main/resources/static/css/sidebar/sidebar.css
CHANGED
|
@@ -1,15 +1,56 @@
|
|
| 1 |
/* ===== SIDEBAR ===== */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
.sidebar {
|
| 4 |
-
|
| 5 |
min-height: 100vh;
|
| 6 |
|
| 7 |
-
background:
|
| 8 |
|
| 9 |
display: flex;
|
| 10 |
flex-direction: column;
|
| 11 |
|
| 12 |
-
color: white;
|
| 13 |
font-family: "Segoe UI", sans-serif;
|
| 14 |
padding-bottom: 30px;
|
| 15 |
}
|
|
@@ -25,7 +66,7 @@
|
|
| 25 |
}
|
| 26 |
|
| 27 |
.logo {
|
| 28 |
-
width:56px;
|
| 29 |
height: 48px;
|
| 30 |
|
| 31 |
border-radius: 18px;
|
|
@@ -36,15 +77,14 @@
|
|
| 36 |
|
| 37 |
font-size: 24px;
|
| 38 |
|
| 39 |
-
background: linear-gradient(
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
#2461ca
|
| 43 |
-
);
|
| 44 |
}
|
| 45 |
-
|
|
|
|
| 46 |
width: 26px;
|
| 47 |
-
height:26px;
|
| 48 |
}
|
| 49 |
|
| 50 |
.sidebar-header h2 {
|
|
@@ -53,7 +93,7 @@
|
|
| 53 |
}
|
| 54 |
|
| 55 |
.header-description {
|
| 56 |
-
color:
|
| 57 |
margin-top: 4px;
|
| 58 |
font-size: 0.95rem;
|
| 59 |
}
|
|
@@ -62,7 +102,7 @@
|
|
| 62 |
|
| 63 |
.sidebar-line {
|
| 64 |
height: 1px;
|
| 65 |
-
background:
|
| 66 |
}
|
| 67 |
|
| 68 |
/* ===== MENU ===== */
|
|
@@ -85,7 +125,7 @@
|
|
| 85 |
|
| 86 |
text-decoration: none;
|
| 87 |
|
| 88 |
-
color:
|
| 89 |
|
| 90 |
padding: 14px 18px;
|
| 91 |
|
|
@@ -100,23 +140,33 @@
|
|
| 100 |
/* Hover */
|
| 101 |
|
| 102 |
.sidebar-link:hover {
|
| 103 |
-
background:
|
| 104 |
-
color: white;
|
| 105 |
}
|
| 106 |
|
| 107 |
/* Active giống ảnh */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
|
| 109 |
-
|
| 110 |
-
background: linear-gradient(
|
| 111 |
-
90deg,
|
| 112 |
-
#02085c,
|
| 113 |
-
#2461ca
|
| 114 |
-
);
|
| 115 |
|
| 116 |
-
|
| 117 |
|
| 118 |
box-shadow:
|
| 119 |
-
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
}
|
| 121 |
|
| 122 |
/* ===== FOOTER ===== */
|
|
@@ -135,7 +185,7 @@
|
|
| 135 |
|
| 136 |
border-radius: 20px;
|
| 137 |
|
| 138 |
-
background:
|
| 139 |
|
| 140 |
margin-bottom: 20px;
|
| 141 |
}
|
|
@@ -152,16 +202,16 @@
|
|
| 152 |
|
| 153 |
font-size: 20px;
|
| 154 |
|
| 155 |
-
background: linear-gradient(
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
#251785
|
| 159 |
-
);
|
| 160 |
}
|
|
|
|
| 161 |
.avatar i {
|
| 162 |
font-size: 28px;
|
| 163 |
-
color:white;
|
| 164 |
}
|
|
|
|
| 165 |
.footer-user h3 {
|
| 166 |
font-size: 1.1rem;
|
| 167 |
}
|
|
@@ -171,7 +221,7 @@
|
|
| 171 |
align-items: center;
|
| 172 |
gap: 12px;
|
| 173 |
|
| 174 |
-
color:
|
| 175 |
|
| 176 |
cursor: pointer;
|
| 177 |
|
|
@@ -186,6 +236,6 @@
|
|
| 186 |
}
|
| 187 |
|
| 188 |
.logout:hover {
|
| 189 |
-
background:
|
| 190 |
-
color: white;
|
| 191 |
}
|
|
|
|
| 1 |
/* ===== SIDEBAR ===== */
|
| 2 |
+
:root {
|
| 3 |
+
--bg-dark: #020617;
|
| 4 |
+
--bg-card: rgba(15, 23, 42, .65);
|
| 5 |
+
|
| 6 |
+
--bg-table: rgba(255, 255, 255, .03);
|
| 7 |
+
--bg-form: rgba(255, 255, 255, .04);
|
| 8 |
+
--bg-table-06: rgba(255, 255, 255, .06);
|
| 9 |
+
--bg-table-015: rgba(255, 255, 255, .15);
|
| 10 |
+
|
| 11 |
+
--border: rgba(255, 255, 255, .08);
|
| 12 |
+
|
| 13 |
+
--text-white: #ffffff;
|
| 14 |
+
--text-gray: #94a3b8;
|
| 15 |
+
--text-light: #cbd5e1;
|
| 16 |
+
|
| 17 |
+
--indigo-06: rgba(99, 102, 241, .6);
|
| 18 |
+
--indigo-15: rgba(99, 102, 241, .15);
|
| 19 |
+
|
| 20 |
+
--purple: #8b5cf6;
|
| 21 |
+
--purple-light: #b794ff;
|
| 22 |
+
--pink: #ec4899;
|
| 23 |
+
--blue: #3b82f6;
|
| 24 |
+
--pinl-light: #d68eff;
|
| 25 |
+
|
| 26 |
+
--success: rgb(37, 249, 83);
|
| 27 |
+
--warning: #f59e0b;
|
| 28 |
+
--danger: #ef4444;
|
| 29 |
+
|
| 30 |
+
--shadow-box: rgba(99, 102, 241, .15);
|
| 31 |
+
|
| 32 |
+
--btn-secondary: #334155;
|
| 33 |
+
--btn-secondary-hover: #475569;
|
| 34 |
+
|
| 35 |
+
--btn-warning-15: rgba(139, 92, 246, .15);
|
| 36 |
+
|
| 37 |
+
--btn-reject-18: rgba(239, 68, 68, .18);
|
| 38 |
+
--btn-reject-15: rgba(239, 68, 68, .15);
|
| 39 |
+
|
| 40 |
+
--btn-approv-18: rgba(34, 197, 94, .18);
|
| 41 |
+
--btn-approv-15: rgba(34, 197, 94, .15);
|
| 42 |
+
}
|
| 43 |
|
| 44 |
.sidebar {
|
| 45 |
+
|
| 46 |
min-height: 100vh;
|
| 47 |
|
| 48 |
+
background: var(--bg-dark);
|
| 49 |
|
| 50 |
display: flex;
|
| 51 |
flex-direction: column;
|
| 52 |
|
| 53 |
+
color: var(--text-white);
|
| 54 |
font-family: "Segoe UI", sans-serif;
|
| 55 |
padding-bottom: 30px;
|
| 56 |
}
|
|
|
|
| 66 |
}
|
| 67 |
|
| 68 |
.logo {
|
| 69 |
+
width: 56px;
|
| 70 |
height: 48px;
|
| 71 |
|
| 72 |
border-radius: 18px;
|
|
|
|
| 77 |
|
| 78 |
font-size: 24px;
|
| 79 |
|
| 80 |
+
background: linear-gradient(135deg,
|
| 81 |
+
#02085c,
|
| 82 |
+
#2461ca);
|
|
|
|
|
|
|
| 83 |
}
|
| 84 |
+
|
| 85 |
+
.logo i {
|
| 86 |
width: 26px;
|
| 87 |
+
height: 26px;
|
| 88 |
}
|
| 89 |
|
| 90 |
.sidebar-header h2 {
|
|
|
|
| 93 |
}
|
| 94 |
|
| 95 |
.header-description {
|
| 96 |
+
color: var(--text-gray);
|
| 97 |
margin-top: 4px;
|
| 98 |
font-size: 0.95rem;
|
| 99 |
}
|
|
|
|
| 102 |
|
| 103 |
.sidebar-line {
|
| 104 |
height: 1px;
|
| 105 |
+
background: var(--border);
|
| 106 |
}
|
| 107 |
|
| 108 |
/* ===== MENU ===== */
|
|
|
|
| 125 |
|
| 126 |
text-decoration: none;
|
| 127 |
|
| 128 |
+
color: var(--text-gray);
|
| 129 |
|
| 130 |
padding: 14px 18px;
|
| 131 |
|
|
|
|
| 140 |
/* Hover */
|
| 141 |
|
| 142 |
.sidebar-link:hover {
|
| 143 |
+
background: var(--bg-table-06);
|
| 144 |
+
color: var(--text-white);
|
| 145 |
}
|
| 146 |
|
| 147 |
/* Active giống ảnh */
|
| 148 |
+
.sidebar-link.active {
|
| 149 |
+
background: linear-gradient(135deg,
|
| 150 |
+
#3b82f6,
|
| 151 |
+
#6366f1,
|
| 152 |
+
#8b5cf6);
|
| 153 |
+
|
| 154 |
+
color: #fff;
|
| 155 |
|
| 156 |
+
border: 1px solid rgba(255, 255, 255, .08);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
|
| 158 |
+
transform: translateX(6px);
|
| 159 |
|
| 160 |
box-shadow:
|
| 161 |
+
0 0 20px rgba(99, 102, 241, .45),
|
| 162 |
+
0 10px 30px rgba(99, 102, 241, .35);
|
| 163 |
+
|
| 164 |
+
backdrop-filter: blur(10px);
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
.sidebar-link.active span {
|
| 168 |
+
transform: scale(1.15);
|
| 169 |
+
text-shadow: 0 0 12px rgba(255, 255, 255, .8);
|
| 170 |
}
|
| 171 |
|
| 172 |
/* ===== FOOTER ===== */
|
|
|
|
| 185 |
|
| 186 |
border-radius: 20px;
|
| 187 |
|
| 188 |
+
background: var(--bg-table-06);
|
| 189 |
|
| 190 |
margin-bottom: 20px;
|
| 191 |
}
|
|
|
|
| 202 |
|
| 203 |
font-size: 20px;
|
| 204 |
|
| 205 |
+
background: linear-gradient(135deg,
|
| 206 |
+
#1e044d,
|
| 207 |
+
#251785);
|
|
|
|
|
|
|
| 208 |
}
|
| 209 |
+
|
| 210 |
.avatar i {
|
| 211 |
font-size: 28px;
|
| 212 |
+
color: var(--text-white);
|
| 213 |
}
|
| 214 |
+
|
| 215 |
.footer-user h3 {
|
| 216 |
font-size: 1.1rem;
|
| 217 |
}
|
|
|
|
| 221 |
align-items: center;
|
| 222 |
gap: 12px;
|
| 223 |
|
| 224 |
+
color: var(--text-gray);
|
| 225 |
|
| 226 |
cursor: pointer;
|
| 227 |
|
|
|
|
| 236 |
}
|
| 237 |
|
| 238 |
.logout:hover {
|
| 239 |
+
background: var(--bg-table-06);
|
| 240 |
+
color: var(--text-white);
|
| 241 |
}
|
src/main/resources/static/css/theme.css
CHANGED
|
@@ -1,235 +1,43 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
=========================== */
|
| 5 |
|
| 6 |
-
:
|
| 7 |
-
|
| 8 |
-
--
|
| 9 |
-
--
|
| 10 |
-
--card: #ffffff;
|
| 11 |
-
--card-foreground: #0F1117;
|
| 12 |
-
--popover: #ffffff;
|
| 13 |
-
--popover-foreground: #0F1117;
|
| 14 |
-
--primary: #3B82F6;
|
| 15 |
-
--primary-foreground: #ffffff;
|
| 16 |
-
--secondary: #F3F4F6;
|
| 17 |
-
--secondary-foreground: #0F1117;
|
| 18 |
-
--muted: #F3F4F6;
|
| 19 |
-
--muted-foreground: #6B7280;
|
| 20 |
-
--accent: #F3F4F6;
|
| 21 |
-
--accent-foreground: #0F1117;
|
| 22 |
-
--destructive: #EF4444;
|
| 23 |
-
--destructive-foreground: #ffffff;
|
| 24 |
-
--border: #E5E7EB;
|
| 25 |
-
--input: #E5E7EB;
|
| 26 |
-
--input-background: #ffffff;
|
| 27 |
-
--ring: #3B82F6;
|
| 28 |
-
--success: #10B981;
|
| 29 |
-
--warning: #F59E0B;
|
| 30 |
-
--info: #3B82F6;
|
| 31 |
|
| 32 |
-
|
| 33 |
-
--radius: 0.5rem;
|
| 34 |
-
--transition-duration: 300ms;
|
| 35 |
-
}
|
| 36 |
|
| 37 |
-
|
| 38 |
-
/* Dark Mode Colors */
|
| 39 |
-
--background: #0F1117;
|
| 40 |
-
--foreground: #F9FAFB;
|
| 41 |
-
--card: #1B1F2A;
|
| 42 |
-
--card-foreground: #F9FAFB;
|
| 43 |
-
--popover: #1B1F2A;
|
| 44 |
-
--popover-foreground: #F9FAFB;
|
| 45 |
-
--primary: #60A5FA;
|
| 46 |
-
--primary-foreground: #0F1117;
|
| 47 |
-
--secondary: #1F2937;
|
| 48 |
-
--secondary-foreground: #F9FAFB;
|
| 49 |
-
--muted: #1F2937;
|
| 50 |
-
--muted-foreground: #9CA3AF;
|
| 51 |
-
--accent: #1F2937;
|
| 52 |
-
--accent-foreground: #F9FAFB;
|
| 53 |
-
--destructive: #EF4444;
|
| 54 |
-
--destructive-foreground: #ffffff;
|
| 55 |
-
--border: #374151;
|
| 56 |
-
--input: #374151;
|
| 57 |
-
--input-background: #1F2937;
|
| 58 |
-
--ring: #60A5FA;
|
| 59 |
-
--success: #10B981;
|
| 60 |
-
--warning: #F59E0B;
|
| 61 |
-
--info: #60A5FA;
|
| 62 |
-
}
|
| 63 |
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
background-color: var(--background);
|
| 78 |
-
color: var(--foreground);
|
| 79 |
-
line-height: 1.5;
|
| 80 |
-
transition: background-color var(--transition-duration), color var(--transition-duration);
|
| 81 |
-
}
|
| 82 |
|
| 83 |
-
|
| 84 |
-
font-weight: 700;
|
| 85 |
-
line-height: 1.2;
|
| 86 |
-
}
|
| 87 |
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
h3 { font-size: 1.25rem; }
|
| 91 |
|
| 92 |
-
|
| 93 |
-
SCROLLBAR STYLING
|
| 94 |
-
=========================== */
|
| 95 |
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
height: 8px;
|
| 99 |
-
}
|
| 100 |
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
}
|
| 104 |
-
|
| 105 |
-
::-webkit-scrollbar-thumb {
|
| 106 |
-
background: var(--muted-foreground);
|
| 107 |
-
border-radius: 4px;
|
| 108 |
-
}
|
| 109 |
-
|
| 110 |
-
::-webkit-scrollbar-thumb:hover {
|
| 111 |
-
background: var(--foreground);
|
| 112 |
-
}
|
| 113 |
-
|
| 114 |
-
/* ===========================
|
| 115 |
-
UTILITY CLASSES
|
| 116 |
-
=========================== */
|
| 117 |
-
|
| 118 |
-
.container {
|
| 119 |
-
max-width: 1280px;
|
| 120 |
-
margin: 0 auto;
|
| 121 |
-
padding: 0 1.5rem;
|
| 122 |
-
}
|
| 123 |
-
|
| 124 |
-
.text-center { text-align: center; }
|
| 125 |
-
.text-left { text-align: left; }
|
| 126 |
-
.text-right { text-align: right; }
|
| 127 |
-
|
| 128 |
-
.font-bold { font-weight: 700; }
|
| 129 |
-
.font-semibold { font-weight: 600; }
|
| 130 |
-
.font-medium { font-weight: 500; }
|
| 131 |
-
|
| 132 |
-
.text-sm { font-size: 0.875rem; }
|
| 133 |
-
.text-xs { font-size: 0.75rem; }
|
| 134 |
-
.text-lg { font-size: 1.125rem; }
|
| 135 |
-
.text-xl { font-size: 1.25rem; }
|
| 136 |
-
.text-2xl { font-size: 1.5rem; }
|
| 137 |
-
.text-3xl { font-size: 1.875rem; }
|
| 138 |
-
|
| 139 |
-
.text-muted { color: var(--muted-foreground); }
|
| 140 |
-
.text-primary { color: var(--primary); }
|
| 141 |
-
.text-success { color: var(--success); }
|
| 142 |
-
.text-warning { color: var(--warning); }
|
| 143 |
-
.text-destructive { color: var(--destructive); }
|
| 144 |
-
|
| 145 |
-
.bg-card { background-color: var(--card); }
|
| 146 |
-
.bg-secondary { background-color: var(--secondary); }
|
| 147 |
-
.bg-primary { background-color: var(--primary); }
|
| 148 |
-
.bg-success { background-color: var(--success); }
|
| 149 |
-
.bg-warning { background-color: var(--warning); }
|
| 150 |
-
.bg-destructive { background-color: var(--destructive); }
|
| 151 |
-
|
| 152 |
-
.border { border: 1px solid var(--border); }
|
| 153 |
-
.border-primary { border-color: var(--primary); }
|
| 154 |
-
.border-success { border-color: var(--success); }
|
| 155 |
-
.border-warning { border-color: var(--warning); }
|
| 156 |
-
.border-destructive { border-color: var(--destructive); }
|
| 157 |
-
|
| 158 |
-
.rounded { border-radius: var(--radius); }
|
| 159 |
-
.rounded-lg { border-radius: calc(var(--radius) * 1.5); }
|
| 160 |
-
.rounded-xl { border-radius: calc(var(--radius) * 2); }
|
| 161 |
-
.rounded-full { border-radius: 9999px; }
|
| 162 |
-
|
| 163 |
-
.shadow { box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); }
|
| 164 |
-
.shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); }
|
| 165 |
-
|
| 166 |
-
.transition-all {
|
| 167 |
-
transition: all var(--transition-duration);
|
| 168 |
-
}
|
| 169 |
-
|
| 170 |
-
/* Flexbox */
|
| 171 |
-
.flex { display: flex; }
|
| 172 |
-
.flex-col { flex-direction: column; }
|
| 173 |
-
.items-center { align-items: center; }
|
| 174 |
-
.items-start { align-items: flex-start; }
|
| 175 |
-
.items-end { align-items: flex-end; }
|
| 176 |
-
.justify-center { justify-content: center; }
|
| 177 |
-
.justify-between { justify-content: space-between; }
|
| 178 |
-
.justify-end { justify-content: flex-end; }
|
| 179 |
-
.gap-1 { gap: 0.25rem; }
|
| 180 |
-
.gap-2 { gap: 0.5rem; }
|
| 181 |
-
.gap-3 { gap: 0.75rem; }
|
| 182 |
-
.gap-4 { gap: 1rem; }
|
| 183 |
-
.gap-6 { gap: 1.5rem; }
|
| 184 |
-
|
| 185 |
-
/* Grid */
|
| 186 |
-
.grid { display: grid; }
|
| 187 |
-
.grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
|
| 188 |
-
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
|
| 189 |
-
.grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
|
| 190 |
-
.grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
|
| 191 |
-
.grid-cols-5 { grid-template-columns: repeat(5, 1fr); }
|
| 192 |
-
|
| 193 |
-
/* Spacing */
|
| 194 |
-
.p-1 { padding: 0.25rem; }
|
| 195 |
-
.p-2 { padding: 0.5rem; }
|
| 196 |
-
.p-3 { padding: 0.75rem; }
|
| 197 |
-
.p-4 { padding: 1rem; }
|
| 198 |
-
.p-6 { padding: 1.5rem; }
|
| 199 |
-
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
|
| 200 |
-
.px-4 { padding-left: 1rem; padding-right: 1rem; }
|
| 201 |
-
.px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
|
| 202 |
-
.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
|
| 203 |
-
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
|
| 204 |
-
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
|
| 205 |
-
|
| 206 |
-
.m-0 { margin: 0; }
|
| 207 |
-
.mb-1 { margin-bottom: 0.25rem; }
|
| 208 |
-
.mb-2 { margin-bottom: 0.5rem; }
|
| 209 |
-
.mb-3 { margin-bottom: 0.75rem; }
|
| 210 |
-
.mb-4 { margin-bottom: 1rem; }
|
| 211 |
-
.mb-6 { margin-bottom: 1.5rem; }
|
| 212 |
-
.mt-1 { margin-top: 0.25rem; }
|
| 213 |
-
.mt-2 { margin-top: 0.5rem; }
|
| 214 |
-
.mt-4 { margin-top: 1rem; }
|
| 215 |
-
.mx-auto { margin-left: auto; margin-right: auto; }
|
| 216 |
-
|
| 217 |
-
/* Width & Height */
|
| 218 |
-
.w-full { width: 100%; }
|
| 219 |
-
.h-full { height: 100%; }
|
| 220 |
-
.min-h-screen { min-height: 100vh; }
|
| 221 |
-
|
| 222 |
-
/* Display */
|
| 223 |
-
.hidden { display: none; }
|
| 224 |
-
.block { display: block; }
|
| 225 |
-
.inline-block { display: inline-block; }
|
| 226 |
-
.inline-flex { display: inline-flex; }
|
| 227 |
-
|
| 228 |
-
/* Position */
|
| 229 |
-
.relative { position: relative; }
|
| 230 |
-
.absolute { position: absolute; }
|
| 231 |
-
.fixed { position: fixed; }
|
| 232 |
-
|
| 233 |
-
/* Overflow */
|
| 234 |
-
.overflow-hidden { overflow: hidden; }
|
| 235 |
-
.overflow-auto { overflow: auto; }
|
|
|
|
| 1 |
+
[data-theme="light"] {
|
| 2 |
+
--bg-dark: #020617;
|
| 3 |
+
--bg-card: rgba(15, 23, 42, .65);
|
|
|
|
| 4 |
|
| 5 |
+
--bg-table: rgba(255, 255, 255, .03);
|
| 6 |
+
--bg-form: rgba(255, 255, 255, .04);
|
| 7 |
+
--bg-table-06: rgba(255, 255, 255, .06);
|
| 8 |
+
--bg-table-015: rgba(255, 255, 255, .15);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
+
--bg-purple-025:rgba(1, 1, 11, 0.25);
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
+
--border: rgba(255, 255, 255, .08);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
+
--text-white: #ffffff;
|
| 15 |
+
--text-gray: #94a3b8;
|
| 16 |
+
--text-light: #cbd5e1;
|
| 17 |
|
| 18 |
+
--indigo-06: rgba(99, 102, 241, .6);
|
| 19 |
+
--indigo-15: rgba(99, 102, 241, .15);
|
| 20 |
+
--indigo-08: rgba(10, 11, 65, 0.08);
|
| 21 |
+
--purple: #8b5cf6;
|
| 22 |
+
--purple-light: #b794ff;
|
| 23 |
+
--pink: #ec4899;
|
| 24 |
+
--blue: #3b82f6;
|
| 25 |
+
--pinl-light: #d68eff;
|
| 26 |
|
| 27 |
+
--success: rgb(37, 249, 83);
|
| 28 |
+
--warning: #f59e0b;
|
| 29 |
+
--danger: #ef4444;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
--shadow-box: rgba(99, 102, 241, .15);
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
+
--btn-secondary: #334155;
|
| 34 |
+
--btn-secondary-hover: #475569;
|
|
|
|
| 35 |
|
| 36 |
+
--btn-warning-15: rgba(139, 92, 246, .15);
|
|
|
|
|
|
|
| 37 |
|
| 38 |
+
--btn-reject-18: rgba(239, 68, 68, .18);
|
| 39 |
+
--btn-reject-15: rgba(239, 68, 68, .15);
|
|
|
|
|
|
|
| 40 |
|
| 41 |
+
--btn-approv-18: rgba(34, 197, 94, .18);
|
| 42 |
+
--btn-approv-15: rgba(34, 197, 94, .15);
|
| 43 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/main/resources/static/css/user/user-information.css
CHANGED
|
@@ -7,7 +7,7 @@
|
|
| 7 |
.container-card,
|
| 8 |
.dashboard-card {
|
| 9 |
background: var(--bg-card);
|
| 10 |
-
border: 0.65px solid
|
| 11 |
border-radius: 14px;
|
| 12 |
|
| 13 |
backdrop-filter: blur(10px);
|
|
@@ -22,15 +22,35 @@
|
|
| 22 |
|
| 23 |
.card-header {
|
| 24 |
padding: 16px 20px;
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
|
|
|
|
|
|
| 28 |
}
|
| 29 |
|
| 30 |
.card-header h2 {
|
| 31 |
font-size: 16px;
|
| 32 |
font-weight: 700;
|
| 33 |
color: var(--text-white);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
}
|
| 35 |
|
| 36 |
/* =========================
|
|
@@ -40,24 +60,35 @@
|
|
| 40 |
.card-body {
|
| 41 |
padding: 18px 20px;
|
| 42 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
/* =========================
|
| 45 |
INFO GRID
|
| 46 |
========================= */
|
| 47 |
|
| 48 |
-
|
| 49 |
-
display: grid;
|
| 50 |
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 51 |
-
gap: 14px;
|
| 52 |
-
}
|
| 53 |
|
| 54 |
.info-item {
|
| 55 |
padding: 12px 14px;
|
| 56 |
|
| 57 |
border-radius: 12px;
|
| 58 |
-
border: 1px solid
|
| 59 |
|
| 60 |
-
background:
|
| 61 |
}
|
| 62 |
|
| 63 |
.info-item label {
|
|
@@ -93,16 +124,16 @@
|
|
| 93 |
padding: 10px 12px;
|
| 94 |
|
| 95 |
border-radius: 10px;
|
| 96 |
-
border: 1px solid
|
| 97 |
|
| 98 |
-
background:
|
| 99 |
color: var(--text-white);
|
| 100 |
|
| 101 |
outline: none;
|
| 102 |
}
|
| 103 |
|
| 104 |
.form-group input:focus {
|
| 105 |
-
border-color: var(--indigo);
|
| 106 |
}
|
| 107 |
|
| 108 |
/* =========================
|
|
@@ -124,8 +155,8 @@
|
|
| 124 |
cursor: pointer;
|
| 125 |
font-weight: 600;
|
| 126 |
|
| 127 |
-
color: white;
|
| 128 |
-
background: linear-gradient(90deg, var(--indigo), var(--purple));
|
| 129 |
|
| 130 |
transition: 0.2s;
|
| 131 |
}
|
|
@@ -139,7 +170,7 @@
|
|
| 139 |
padding: 10px 14px;
|
| 140 |
|
| 141 |
border-radius: 10px;
|
| 142 |
-
border: 1px solid
|
| 143 |
|
| 144 |
background: transparent;
|
| 145 |
color: var(--text-white);
|
|
@@ -149,9 +180,195 @@
|
|
| 149 |
}
|
| 150 |
|
| 151 |
.btn-secondary:hover {
|
| 152 |
-
background:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
}
|
| 154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
/* =========================
|
| 156 |
RESPONSIVE
|
| 157 |
========================= */
|
|
|
|
| 7 |
.container-card,
|
| 8 |
.dashboard-card {
|
| 9 |
background: var(--bg-card);
|
| 10 |
+
border: 0.65px solid var(--indigo-15);
|
| 11 |
border-radius: 14px;
|
| 12 |
|
| 13 |
backdrop-filter: blur(10px);
|
|
|
|
| 22 |
|
| 23 |
.card-header {
|
| 24 |
padding: 16px 20px;
|
| 25 |
+
display: flex;
|
| 26 |
+
justify-content: space-between;
|
| 27 |
+
align-items: center;
|
| 28 |
+
border-bottom: 1px solid var(--bg-table-06);
|
| 29 |
+
background: var(--indigo-08);
|
| 30 |
}
|
| 31 |
|
| 32 |
.card-header h2 {
|
| 33 |
font-size: 16px;
|
| 34 |
font-weight: 700;
|
| 35 |
color: var(--text-white);
|
| 36 |
+
padding-right: 730px;
|
| 37 |
+
}
|
| 38 |
+
.edit-header {
|
| 39 |
+
padding: 16px 20px;
|
| 40 |
+
display: flex;
|
| 41 |
+
justify-content: space-between;
|
| 42 |
+
align-items: center;
|
| 43 |
+
border-bottom: 1px solid var(--bg-table-06);
|
| 44 |
+
background: var(--indigo-08);
|
| 45 |
+
margin-bottom: 30px;
|
| 46 |
+
border-radius: 15px;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
.edit-header h2 {
|
| 50 |
+
font-size: 16px;
|
| 51 |
+
font-weight: 700;
|
| 52 |
+
color: var(--text-white);
|
| 53 |
+
padding-right: 730px;
|
| 54 |
}
|
| 55 |
|
| 56 |
/* =========================
|
|
|
|
| 60 |
.card-body {
|
| 61 |
padding: 18px 20px;
|
| 62 |
}
|
| 63 |
+
#editInformation {
|
| 64 |
+
display: none;
|
| 65 |
+
position: fixed;
|
| 66 |
+
top: 0;
|
| 67 |
+
left: 0;
|
| 68 |
+
|
| 69 |
+
width: 100%;
|
| 70 |
+
height: 100%;
|
| 71 |
|
| 72 |
+
background: var(--bg-dark);
|
| 73 |
+
|
| 74 |
+
justify-content: center;
|
| 75 |
+
align-items: center;
|
| 76 |
+
|
| 77 |
+
z-index: 9999;
|
| 78 |
+
}
|
| 79 |
/* =========================
|
| 80 |
INFO GRID
|
| 81 |
========================= */
|
| 82 |
|
| 83 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
.info-item {
|
| 86 |
padding: 12px 14px;
|
| 87 |
|
| 88 |
border-radius: 12px;
|
| 89 |
+
border: 1px solid var(--bg-table-06);
|
| 90 |
|
| 91 |
+
background: var(--bg-card);
|
| 92 |
}
|
| 93 |
|
| 94 |
.info-item label {
|
|
|
|
| 124 |
padding: 10px 12px;
|
| 125 |
|
| 126 |
border-radius: 10px;
|
| 127 |
+
border: 1px solid var(--bg-table-06);
|
| 128 |
|
| 129 |
+
background: var(--bg-dark);
|
| 130 |
color: var(--text-white);
|
| 131 |
|
| 132 |
outline: none;
|
| 133 |
}
|
| 134 |
|
| 135 |
.form-group input:focus {
|
| 136 |
+
border-color: var(--indigo-06);
|
| 137 |
}
|
| 138 |
|
| 139 |
/* =========================
|
|
|
|
| 155 |
cursor: pointer;
|
| 156 |
font-weight: 600;
|
| 157 |
|
| 158 |
+
color: var(--text-white);
|
| 159 |
+
background: linear-gradient(90deg, var(--indigo-06), var(--purple));
|
| 160 |
|
| 161 |
transition: 0.2s;
|
| 162 |
}
|
|
|
|
| 170 |
padding: 10px 14px;
|
| 171 |
|
| 172 |
border-radius: 10px;
|
| 173 |
+
border: 1px solid var(--bg-table-015);
|
| 174 |
|
| 175 |
background: transparent;
|
| 176 |
color: var(--text-white);
|
|
|
|
| 180 |
}
|
| 181 |
|
| 182 |
.btn-secondary:hover {
|
| 183 |
+
background: var(--bg-table-06);
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
|
| 187 |
+
/* =========================
|
| 188 |
+
POPUP
|
| 189 |
+
========================= */
|
| 190 |
+
|
| 191 |
+
#editInformation {
|
| 192 |
+
display: none;
|
| 193 |
+
position: fixed;
|
| 194 |
+
inset: 0;
|
| 195 |
+
|
| 196 |
+
background: var(--bg-dark);
|
| 197 |
+
backdrop-filter: blur(6px);
|
| 198 |
+
|
| 199 |
+
justify-content: center;
|
| 200 |
+
align-items: center;
|
| 201 |
+
|
| 202 |
+
z-index: 9999;
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
/* hiện popup */
|
| 206 |
+
#editInformation.show {
|
| 207 |
+
display: flex;
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
/* =========================
|
| 211 |
+
CARD
|
| 212 |
+
========================= */
|
| 213 |
+
|
| 214 |
+
.edit-card {
|
| 215 |
+
width: 1550px;
|
| 216 |
+
max-width: 100%;
|
| 217 |
+
|
| 218 |
+
background: var(--bg-card);
|
| 219 |
+
border: 1px solid var(--border);
|
| 220 |
+
border-radius: 18px;
|
| 221 |
+
|
| 222 |
+
overflow: hidden;
|
| 223 |
+
|
| 224 |
+
box-shadow: 0 20px 60px var(--bg-dark);
|
| 225 |
+
animation: popup .25s ease;
|
| 226 |
+
|
| 227 |
+
backdrop-filter: blur(10px);
|
| 228 |
+
|
| 229 |
+
margin-bottom: 20px;
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
@keyframes popup{
|
| 233 |
+
from{
|
| 234 |
+
opacity:0;
|
| 235 |
+
transform:translateY(-20px) scale(.95);
|
| 236 |
+
}
|
| 237 |
+
to{
|
| 238 |
+
opacity:1;
|
| 239 |
+
transform:translateY(0) scale(1);
|
| 240 |
+
}
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
/* =========================
|
| 244 |
+
HEADER
|
| 245 |
+
========================= */
|
| 246 |
+
|
| 247 |
+
.card-header{
|
| 248 |
+
padding:18px 24px;
|
| 249 |
+
|
| 250 |
+
background: var(--bg-card);
|
| 251 |
+
border-bottom:1px solid var(--border);
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
.card-header h2{
|
| 255 |
+
margin:0;
|
| 256 |
+
font-size:18px;
|
| 257 |
+
color:var(--text-white);
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
/* =========================
|
| 261 |
+
BODY
|
| 262 |
+
========================= */
|
| 263 |
+
|
| 264 |
+
.edit-body{
|
| 265 |
+
|
| 266 |
+
padding: 18px 20px;
|
| 267 |
+
|
| 268 |
+
background-color: var(--bg-card);
|
| 269 |
+
border-radius: 30px;
|
| 270 |
+
border-color:1px var(--border) ;
|
| 271 |
}
|
| 272 |
|
| 273 |
+
.info-grid{
|
| 274 |
+
|
| 275 |
+
|
| 276 |
+
display:grid;
|
| 277 |
+
grid-template-columns:repeat(2,1fr);
|
| 278 |
+
gap:18px;
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
+
/* =========================
|
| 282 |
+
INPUT
|
| 283 |
+
========================= */
|
| 284 |
+
|
| 285 |
+
.info-item{
|
| 286 |
+
display:flex;
|
| 287 |
+
flex-direction:column;
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
.info-item label{
|
| 291 |
+
margin-bottom:8px;
|
| 292 |
+
|
| 293 |
+
font-size:13px;
|
| 294 |
+
font-weight:600;
|
| 295 |
+
|
| 296 |
+
color:var(--text-gray);
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
.info-item input{
|
| 300 |
+
width:100%;
|
| 301 |
+
padding:12px 14px;
|
| 302 |
+
|
| 303 |
+
border-radius:12px;
|
| 304 |
+
border:1px solid var(--border);
|
| 305 |
+
|
| 306 |
+
background:var(--bg-card);
|
| 307 |
+
|
| 308 |
+
color:var(--text-white);
|
| 309 |
+
font-size:14px;
|
| 310 |
+
|
| 311 |
+
outline:none;
|
| 312 |
+
transition:.25s;
|
| 313 |
+
}
|
| 314 |
+
|
| 315 |
+
.info-item input::placeholder{
|
| 316 |
+
color:var(--text-gray);
|
| 317 |
+
}
|
| 318 |
+
|
| 319 |
+
.info-item input:focus{
|
| 320 |
+
border-color:var(--indigo-06);
|
| 321 |
+
box-shadow:0 0 0 3px var(--indigo-15);
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
/* =========================
|
| 325 |
+
BUTTONS
|
| 326 |
+
========================= */
|
| 327 |
+
|
| 328 |
+
.btn-run{
|
| 329 |
+
grid-column:1 / -1;
|
| 330 |
+
|
| 331 |
+
display:flex;
|
| 332 |
+
justify-content:flex-end;
|
| 333 |
+
gap:12px;
|
| 334 |
+
|
| 335 |
+
margin-top:10px;
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
.btn{
|
| 339 |
+
min-width:120px;
|
| 340 |
+
padding:12px 18px;
|
| 341 |
+
|
| 342 |
+
border:none;
|
| 343 |
+
border-radius:10px;
|
| 344 |
+
|
| 345 |
+
font-size:14px;
|
| 346 |
+
font-weight:600;
|
| 347 |
+
|
| 348 |
+
cursor:pointer;
|
| 349 |
+
transition:.25s;
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
.btn-primary{
|
| 353 |
+
color:var(--text-white);
|
| 354 |
+
background:linear-gradient(135deg,var(--indigo-06),var(--purple));
|
| 355 |
+
}
|
| 356 |
+
|
| 357 |
+
.btn-primary:hover{
|
| 358 |
+
transform:translateY(-2px);
|
| 359 |
+
box-shadow:0 10px 20px var(--indigo-15);
|
| 360 |
+
}
|
| 361 |
+
|
| 362 |
+
.btn-close{
|
| 363 |
+
color:var(--text-white);
|
| 364 |
+
|
| 365 |
+
background:transparent;
|
| 366 |
+
border:1px solid var(--bg-table-015);
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
.btn-close:hover{
|
| 370 |
+
background:var(--bg-table-06);
|
| 371 |
+
}
|
| 372 |
/* =========================
|
| 373 |
RESPONSIVE
|
| 374 |
========================= */
|
src/main/resources/static/js/employee/copy-code.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const copyBtn = document.getElementById("copyBtn");
|
| 2 |
+
|
| 3 |
+
copyBtn.addEventListener("click", () => {
|
| 4 |
+
navigator.clipboard.writeText(
|
| 5 |
+
document.getElementById("roomCode").textContent
|
| 6 |
+
);
|
| 7 |
+
});
|
src/main/resources/static/js/employee/employee-popup.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const popup = document.getElementById("card-addEmployee");
|
| 2 |
+
|
| 3 |
+
function openPopup() {
|
| 4 |
+
popup.classList.add("show");
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
function closePopup() {
|
| 8 |
+
popup.classList.remove("show");
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
// Mở popup
|
| 12 |
+
document.getElementById("add-employee")
|
| 13 |
+
.addEventListener("click", openPopup);
|
| 14 |
+
|
| 15 |
+
// Đóng bằng nút X
|
| 16 |
+
document.getElementById("closePopup")
|
| 17 |
+
.addEventListener("click", closePopup);
|
| 18 |
+
|
| 19 |
+
// Đóng khi click nền tối
|
| 20 |
+
popup.addEventListener("click", (e) => {
|
| 21 |
+
if (e.target === popup) {
|
| 22 |
+
closePopup();
|
| 23 |
+
}
|
| 24 |
+
});
|
src/main/resources/static/js/employee/room-code.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const roomSelect = document.getElementById("roomSelect");
|
| 2 |
+
const roomCode = document.getElementById("roomCode");
|
| 3 |
+
|
| 4 |
+
const roomCodes = {
|
| 5 |
+
DE211: "DE211-X7A9",
|
| 6 |
+
DE212: "DE212-LP81",
|
| 7 |
+
DE213: "DE213-KM32"
|
| 8 |
+
};
|
| 9 |
+
|
| 10 |
+
roomSelect.addEventListener("change", () => {
|
| 11 |
+
roomCode.textContent =
|
| 12 |
+
roomCodes[roomSelect.value] || "--------";
|
| 13 |
+
});
|
src/main/resources/static/js/main.js
CHANGED
|
@@ -8,14 +8,18 @@
|
|
| 8 |
// ===========================
|
| 9 |
|
| 10 |
function initTheme() {
|
| 11 |
-
const savedTheme = localStorage.getItem(
|
| 12 |
-
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
}
|
| 15 |
|
| 16 |
function toggleTheme() {
|
| 17 |
const currentTheme = document.documentElement.getAttribute('data-theme');
|
| 18 |
-
const newTheme = currentTheme === 'light' ? 'dark' : '
|
| 19 |
document.documentElement.setAttribute('data-theme', newTheme);
|
| 20 |
localStorage.setItem('theme', newTheme);
|
| 21 |
updateThemeIcon(newTheme);
|
|
|
|
| 8 |
// ===========================
|
| 9 |
|
| 10 |
function initTheme() {
|
| 11 |
+
const savedTheme = localStorage.getItem("theme");
|
| 12 |
+
|
| 13 |
+
if (savedTheme) {
|
| 14 |
+
document.documentElement.setAttribute("data-theme", savedTheme);
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
updateThemeIcon(savedTheme || "dark");
|
| 18 |
}
|
| 19 |
|
| 20 |
function toggleTheme() {
|
| 21 |
const currentTheme = document.documentElement.getAttribute('data-theme');
|
| 22 |
+
const newTheme = currentTheme === 'light' ? 'dark' : 'dark';
|
| 23 |
document.documentElement.setAttribute('data-theme', newTheme);
|
| 24 |
localStorage.setItem('theme', newTheme);
|
| 25 |
updateThemeIcon(newTheme);
|
src/main/resources/static/js/sidebar.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
document.addEventListener("DOMContentLoaded", () => {
|
| 3 |
+
const links = document.querySelectorAll(".sidebar-link");
|
| 4 |
+
|
| 5 |
+
links.forEach(link => {
|
| 6 |
+
link.addEventListener("click", function (e) {
|
| 7 |
+
e.preventDefault();
|
| 8 |
+
|
| 9 |
+
links.forEach(item => item.classList.remove("active"));
|
| 10 |
+
this.classList.add("active");
|
| 11 |
+
});
|
| 12 |
+
});
|
| 13 |
+
});
|
src/main/resources/templates/cms/account/employee-list.html
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
|
| 3 |
+
<html xmlns:th="http://www.thymeleaf.org">
|
| 4 |
+
|
| 5 |
+
<head>
|
| 6 |
+
<meta charset="UTF-8">
|
| 7 |
+
<title>Quản lý nhân viên</title>
|
| 8 |
+
|
| 9 |
+
<link rel="stylesheet" th:href="@{/css/account/employee-list.css}">
|
| 10 |
+
</head>
|
| 11 |
+
|
| 12 |
+
<body>
|
| 13 |
+
|
| 14 |
+
<div class="bg-image"></div>
|
| 15 |
+
|
| 16 |
+
<div class="layout">
|
| 17 |
+
|
| 18 |
+
<div th:replace="~{cms/sidebar/sidebar-manage :: sidebar}"></div>
|
| 19 |
+
|
| 20 |
+
<div class="container-layout">
|
| 21 |
+
|
| 22 |
+
<!-- HEADER -->
|
| 23 |
+
<div class="container-header">
|
| 24 |
+
<h1>Quản lý nhân viên</h1>
|
| 25 |
+
<p>Quản lý nhân viên theo phòng ban</p>
|
| 26 |
+
</div>
|
| 27 |
+
|
| 28 |
+
<main class="main-container">
|
| 29 |
+
|
| 30 |
+
<section class="dashboard-card">
|
| 31 |
+
|
| 32 |
+
<!-- Header -->
|
| 33 |
+
<div class="card-header">
|
| 34 |
+
|
| 35 |
+
<h2>Danh sách nhân viên</h2>
|
| 36 |
+
|
| 37 |
+
<button id="add-employee" class="add-btn">
|
| 38 |
+
+ Thêm nhân viên
|
| 39 |
+
</button>
|
| 40 |
+
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
<!-- Search + Filter -->
|
| 44 |
+
<div class="toolbar">
|
| 45 |
+
|
| 46 |
+
<div class="search-box">
|
| 47 |
+
<input type="text" placeholder="Tìm theo tên, email hoặc mã nhân viên...">
|
| 48 |
+
</div>
|
| 49 |
+
|
| 50 |
+
<div class="filter-box">
|
| 51 |
+
|
| 52 |
+
<select>
|
| 53 |
+
<option>Tất cả phòng ban</option>
|
| 54 |
+
<option>Phòng IT</option>
|
| 55 |
+
<option>Phòng Nhân sự</option>
|
| 56 |
+
<option>Phòng Kế toán</option>
|
| 57 |
+
<option>Phòng Marketing</option>
|
| 58 |
+
</select>
|
| 59 |
+
|
| 60 |
+
<select>
|
| 61 |
+
<option>Tất cả trạng thái</option>
|
| 62 |
+
<option>Đang làm việc</option>
|
| 63 |
+
<option>Nghỉ việc</option>
|
| 64 |
+
<option>Tạm khóa</option>
|
| 65 |
+
</select>
|
| 66 |
+
|
| 67 |
+
</div>
|
| 68 |
+
|
| 69 |
+
</div>
|
| 70 |
+
|
| 71 |
+
<!-- TABLE -->
|
| 72 |
+
<table>
|
| 73 |
+
|
| 74 |
+
<thead>
|
| 75 |
+
|
| 76 |
+
<tr>
|
| 77 |
+
|
| 78 |
+
<th>Nhân viên</th>
|
| 79 |
+
|
| 80 |
+
<th>Mã NV</th>
|
| 81 |
+
|
| 82 |
+
<th>Email</th>
|
| 83 |
+
|
| 84 |
+
<th>Phòng ban</th>
|
| 85 |
+
|
| 86 |
+
<th>Vai trò</th>
|
| 87 |
+
|
| 88 |
+
<th>Trạng thái</th>
|
| 89 |
+
|
| 90 |
+
<th>Hành động</th>
|
| 91 |
+
|
| 92 |
+
</tr>
|
| 93 |
+
|
| 94 |
+
</thead>
|
| 95 |
+
|
| 96 |
+
<tbody>
|
| 97 |
+
|
| 98 |
+
<tr>
|
| 99 |
+
|
| 100 |
+
<td>
|
| 101 |
+
|
| 102 |
+
<div class="user">
|
| 103 |
+
|
| 104 |
+
<div class="avatar">H</div>
|
| 105 |
+
|
| 106 |
+
<strong>Nguyễn Minh Hải</strong>
|
| 107 |
+
|
| 108 |
+
</div>
|
| 109 |
+
|
| 110 |
+
</td>
|
| 111 |
+
|
| 112 |
+
<td>EMP001</td>
|
| 113 |
+
|
| 114 |
+
<td>hai@gmail.com</td>
|
| 115 |
+
|
| 116 |
+
<td>IT</td>
|
| 117 |
+
|
| 118 |
+
<td>Nhân viên</td>
|
| 119 |
+
|
| 120 |
+
<td>
|
| 121 |
+
|
| 122 |
+
<span class="status active">
|
| 123 |
+
Đang làm việc
|
| 124 |
+
</span>
|
| 125 |
+
|
| 126 |
+
</td>
|
| 127 |
+
|
| 128 |
+
<td>
|
| 129 |
+
|
| 130 |
+
<div class="actions">
|
| 131 |
+
|
| 132 |
+
<button class="icon-btn">
|
| 133 |
+
Chi tiết
|
| 134 |
+
</button>
|
| 135 |
+
|
| 136 |
+
<button class="icon-btn btn-role">
|
| 137 |
+
Chuyển phòng
|
| 138 |
+
</button>
|
| 139 |
+
|
| 140 |
+
<button class="icon-btn lock">
|
| 141 |
+
Khóa
|
| 142 |
+
</button>
|
| 143 |
+
|
| 144 |
+
</div>
|
| 145 |
+
|
| 146 |
+
</td>
|
| 147 |
+
|
| 148 |
+
</tr>
|
| 149 |
+
|
| 150 |
+
<tr>
|
| 151 |
+
|
| 152 |
+
<td>
|
| 153 |
+
|
| 154 |
+
<div class="user">
|
| 155 |
+
|
| 156 |
+
<div class="avatar">A</div>
|
| 157 |
+
|
| 158 |
+
<strong>Nguyễn Văn An</strong>
|
| 159 |
+
|
| 160 |
+
</div>
|
| 161 |
+
|
| 162 |
+
</td>
|
| 163 |
+
|
| 164 |
+
<td>EMP002</td>
|
| 165 |
+
|
| 166 |
+
<td>an@gmail.com</td>
|
| 167 |
+
|
| 168 |
+
<td>Nhân sự</td>
|
| 169 |
+
|
| 170 |
+
<td>Trưởng phòng</td>
|
| 171 |
+
|
| 172 |
+
<td>
|
| 173 |
+
|
| 174 |
+
<span class="status inactive">
|
| 175 |
+
Nghỉ việc
|
| 176 |
+
</span>
|
| 177 |
+
|
| 178 |
+
</td>
|
| 179 |
+
|
| 180 |
+
<td>
|
| 181 |
+
|
| 182 |
+
<div class="actions">
|
| 183 |
+
|
| 184 |
+
<button class="icon-btn">
|
| 185 |
+
Chi tiết
|
| 186 |
+
</button>
|
| 187 |
+
|
| 188 |
+
<button class="icon-btn btn-role">
|
| 189 |
+
Chuyển phòng
|
| 190 |
+
</button>
|
| 191 |
+
|
| 192 |
+
<button class="icon-btn lock">
|
| 193 |
+
Mở khóa
|
| 194 |
+
</button>
|
| 195 |
+
|
| 196 |
+
</div>
|
| 197 |
+
|
| 198 |
+
</td>
|
| 199 |
+
|
| 200 |
+
</tr>
|
| 201 |
+
|
| 202 |
+
</tbody>
|
| 203 |
+
|
| 204 |
+
</table>
|
| 205 |
+
|
| 206 |
+
</section>
|
| 207 |
+
|
| 208 |
+
</main>
|
| 209 |
+
|
| 210 |
+
<div th:replace="~{cms/layout/footer :: footer}"></div>
|
| 211 |
+
|
| 212 |
+
</div>
|
| 213 |
+
|
| 214 |
+
</div>
|
| 215 |
+
<section id="card-addEmployee" class="card-add">
|
| 216 |
+
<div class="card-container">
|
| 217 |
+
|
| 218 |
+
<div class="card-headers">
|
| 219 |
+
<div class="header-icon">
|
| 220 |
+
<i class="bi bi-person-add"></i>
|
| 221 |
+
</div>
|
| 222 |
+
|
| 223 |
+
<h2>Mời thành viên vào phòng</h2>
|
| 224 |
+
</div>
|
| 225 |
+
|
| 226 |
+
<div class="card-body">
|
| 227 |
+
|
| 228 |
+
<!-- Chọn phòng -->
|
| 229 |
+
<div class="filter-box">
|
| 230 |
+
<label>Chọn phòng</label>
|
| 231 |
+
|
| 232 |
+
<select id="roomSelect">
|
| 233 |
+
<option value="">-- Chọn phòng ban --</option>
|
| 234 |
+
<option value="DE211">Phòng DE211</option>
|
| 235 |
+
<option value="DE212">Phòng DE212</option>
|
| 236 |
+
<option value="DE213">Phòng DE213</option>
|
| 237 |
+
</select>
|
| 238 |
+
</div>
|
| 239 |
+
|
| 240 |
+
<!-- Hiển thị sau khi chọn -->
|
| 241 |
+
<div class="container-QR" id="joinInfo">
|
| 242 |
+
|
| 243 |
+
<div class="room-code-box">
|
| 244 |
+
<span>Mã tham gia</span>
|
| 245 |
+
|
| 246 |
+
<h1 id="roomCode">DE211-X7A9</h1>
|
| 247 |
+
|
| 248 |
+
<button id="copyBtn">
|
| 249 |
+
Sao chép mã
|
| 250 |
+
</button>
|
| 251 |
+
</div>
|
| 252 |
+
|
| 253 |
+
<p class="note">
|
| 254 |
+
Sinh viên nhập mã trên hoặc quét QR để tham gia phòng.
|
| 255 |
+
</p>
|
| 256 |
+
|
| 257 |
+
</div>
|
| 258 |
+
<button id="closePopup" class="close-btn">
|
| 259 |
+
<i class="fas fa-times">Đóng</i>
|
| 260 |
+
|
| 261 |
+
</button>
|
| 262 |
+
</div>
|
| 263 |
+
|
| 264 |
+
</div>
|
| 265 |
+
</section>
|
| 266 |
+
<script src="/js/employee/employee-popup.js"></script>
|
| 267 |
+
<script src="/js/employee/room-code.js"></script>
|
| 268 |
+
<script src="/js/employee/copy-code.js"></script>
|
| 269 |
+
</body>
|
| 270 |
+
|
| 271 |
+
</html>
|
src/main/resources/templates/cms/dashboard/dashboard-employee.html
CHANGED
|
@@ -103,7 +103,7 @@
|
|
| 103 |
|
| 104 |
<div class="quick-actions-grid">
|
| 105 |
|
| 106 |
-
<a href="
|
| 107 |
<div class="quick-action-card__icon">
|
| 108 |
<i class="bi bi-person-lines-fill"></i>
|
| 109 |
</div>
|
|
@@ -115,7 +115,7 @@
|
|
| 115 |
</div>
|
| 116 |
</a>
|
| 117 |
|
| 118 |
-
<a href="
|
| 119 |
<div class="quick-action-card__icon">
|
| 120 |
<i class="bi bi-file-earmark-arrow-up-fill"></i>
|
| 121 |
</div>
|
|
@@ -125,7 +125,7 @@
|
|
| 125 |
</div>
|
| 126 |
</a>
|
| 127 |
|
| 128 |
-
<a href="
|
| 129 |
<div class="quick-action-card__icon">
|
| 130 |
<i class="bi bi-calendar-check-fill"></i>
|
| 131 |
</div>
|
|
@@ -135,7 +135,7 @@
|
|
| 135 |
</div>
|
| 136 |
</a>
|
| 137 |
|
| 138 |
-
<a href="
|
| 139 |
<div class="quick-action-card__icon">
|
| 140 |
<i class="bi bi-calendar2-x-fill"></i>
|
| 141 |
</div>
|
|
@@ -241,17 +241,17 @@
|
|
| 241 |
|
| 242 |
<div class="profile-item">
|
| 243 |
<label>Email</label>
|
| 244 |
-
<span
|
| 245 |
</div>
|
| 246 |
|
| 247 |
<div class="profile-item">
|
| 248 |
<label>Số điện thoại</label>
|
| 249 |
-
<span
|
| 250 |
</div>
|
| 251 |
|
| 252 |
<div class="profile-item">
|
| 253 |
<label>Phòng ban</label>
|
| 254 |
-
<span
|
| 255 |
</div>
|
| 256 |
|
| 257 |
<div class="profile-item">
|
|
|
|
| 103 |
|
| 104 |
<div class="quick-actions-grid">
|
| 105 |
|
| 106 |
+
<a href="/useInformation" class="quick-action-card">
|
| 107 |
<div class="quick-action-card__icon">
|
| 108 |
<i class="bi bi-person-lines-fill"></i>
|
| 109 |
</div>
|
|
|
|
| 115 |
</div>
|
| 116 |
</a>
|
| 117 |
|
| 118 |
+
<a href="/documentCreate" class="quick-action-card">
|
| 119 |
<div class="quick-action-card__icon">
|
| 120 |
<i class="bi bi-file-earmark-arrow-up-fill"></i>
|
| 121 |
</div>
|
|
|
|
| 125 |
</div>
|
| 126 |
</a>
|
| 127 |
|
| 128 |
+
<a href="/attendanceHistory" class="quick-action-card">
|
| 129 |
<div class="quick-action-card__icon">
|
| 130 |
<i class="bi bi-calendar-check-fill"></i>
|
| 131 |
</div>
|
|
|
|
| 135 |
</div>
|
| 136 |
</a>
|
| 137 |
|
| 138 |
+
<a href="/absentCreate" class="quick-action-card">
|
| 139 |
<div class="quick-action-card__icon">
|
| 140 |
<i class="bi bi-calendar2-x-fill"></i>
|
| 141 |
</div>
|
|
|
|
| 241 |
|
| 242 |
<div class="profile-item">
|
| 243 |
<label>Email</label>
|
| 244 |
+
<span >haivuive266@gmail.com</span>
|
| 245 |
</div>
|
| 246 |
|
| 247 |
<div class="profile-item">
|
| 248 |
<label>Số điện thoại</label>
|
| 249 |
+
<span >0987654321</span>
|
| 250 |
</div>
|
| 251 |
|
| 252 |
<div class="profile-item">
|
| 253 |
<label>Phòng ban</label>
|
| 254 |
+
<span >IT Department</span>
|
| 255 |
</div>
|
| 256 |
|
| 257 |
<div class="profile-item">
|
src/main/resources/templates/cms/document/document-list.html
CHANGED
|
@@ -45,22 +45,21 @@
|
|
| 45 |
|
| 46 |
<tr>
|
| 47 |
|
| 48 |
-
<td
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
📎 Tải file
|
| 64 |
</a>
|
| 65 |
|
| 66 |
<span>
|
|
@@ -80,17 +79,11 @@
|
|
| 80 |
|
| 81 |
<td>
|
| 82 |
|
| 83 |
-
<span
|
| 84 |
Chờ duyệt
|
| 85 |
</span>
|
| 86 |
|
| 87 |
-
|
| 88 |
-
Đã duyệt
|
| 89 |
-
</span>
|
| 90 |
-
|
| 91 |
-
<span th:if="${report.status == 'REJECTED'}" class="status-rejected">
|
| 92 |
-
Từ chối
|
| 93 |
-
</span>
|
| 94 |
|
| 95 |
</td>
|
| 96 |
|
|
@@ -102,7 +95,7 @@
|
|
| 102 |
|
| 103 |
<td>
|
| 104 |
|
| 105 |
-
<div class="action-group"
|
| 106 |
|
| 107 |
<form method="post">
|
| 108 |
|
|
|
|
| 45 |
|
| 46 |
<tr>
|
| 47 |
|
| 48 |
+
<td>
|
| 49 |
+
Nguyễn Văn A
|
| 50 |
+
</td>
|
| 51 |
+
|
| 52 |
+
<td>
|
| 53 |
+
Báo cáo tuần 01
|
| 54 |
+
</td>
|
| 55 |
+
|
| 56 |
+
<td>
|
| 57 |
+
15/02/2025
|
| 58 |
+
</td>
|
| 59 |
+
|
| 60 |
+
<td>
|
| 61 |
+
<a class=" file-link">
|
| 62 |
+
📎 Tải file
|
|
|
|
| 63 |
</a>
|
| 64 |
|
| 65 |
<span>
|
|
|
|
| 79 |
|
| 80 |
<td>
|
| 81 |
|
| 82 |
+
<span class="status-pending">
|
| 83 |
Chờ duyệt
|
| 84 |
</span>
|
| 85 |
|
| 86 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
</td>
|
| 89 |
|
|
|
|
| 95 |
|
| 96 |
<td>
|
| 97 |
|
| 98 |
+
<div class="action-group" >
|
| 99 |
|
| 100 |
<form method="post">
|
| 101 |
|
src/main/resources/templates/cms/face-id/faceID-list.html
CHANGED
|
@@ -57,6 +57,7 @@
|
|
| 57 |
10 / 10
|
| 58 |
</span>
|
| 59 |
</td>
|
|
|
|
| 60 |
<td><button class="detail-btn" onclick="openFaceGallery()">
|
| 61 |
|
| 62 |
Xem ảnh
|
|
@@ -65,8 +66,8 @@
|
|
| 65 |
</td>
|
| 66 |
|
| 67 |
<td>
|
| 68 |
-
|
| 69 |
-
|
| 70 |
</td>
|
| 71 |
</tr>
|
| 72 |
|
|
@@ -89,7 +90,8 @@
|
|
| 89 |
|
| 90 |
</button>
|
| 91 |
</td>
|
| 92 |
-
<td>
|
|
|
|
| 93 |
</tr>
|
| 94 |
|
| 95 |
</tbody>
|
|
|
|
| 57 |
10 / 10
|
| 58 |
</span>
|
| 59 |
</td>
|
| 60 |
+
<td>DE214</td>
|
| 61 |
<td><button class="detail-btn" onclick="openFaceGallery()">
|
| 62 |
|
| 63 |
Xem ảnh
|
|
|
|
| 66 |
</td>
|
| 67 |
|
| 68 |
<td>
|
| 69 |
+
<button class="detail-btn btn-primary" type="submit">Chấp nhận</button>
|
| 70 |
+
<button class="detail-btn btn-secondery" type="submit">Từ chối</button>
|
| 71 |
</td>
|
| 72 |
</tr>
|
| 73 |
|
|
|
|
| 90 |
|
| 91 |
</button>
|
| 92 |
</td>
|
| 93 |
+
<td><button class="detail-btn btn-primary" type="submit">Chấp nhận</button>
|
| 94 |
+
<button class="detail-btn btn-secondery" type="submit">Từ chối</button></td>
|
| 95 |
</tr>
|
| 96 |
|
| 97 |
</tbody>
|
src/main/resources/templates/cms/layout/footer.html
CHANGED
|
@@ -45,6 +45,7 @@
|
|
| 45 |
© 2026 Smart Attendance. All rights reserved.
|
| 46 |
</div>
|
| 47 |
</footer>
|
|
|
|
| 48 |
</body>
|
| 49 |
|
| 50 |
</html>
|
|
|
|
| 45 |
© 2026 Smart Attendance. All rights reserved.
|
| 46 |
</div>
|
| 47 |
</footer>
|
| 48 |
+
|
| 49 |
</body>
|
| 50 |
|
| 51 |
</html>
|
src/main/resources/templates/cms/sidebar/sidebar-admin.html
CHANGED
|
@@ -60,8 +60,8 @@
|
|
| 60 |
</div>
|
| 61 |
</div> -->
|
| 62 |
<div>
|
| 63 |
-
<h3
|
| 64 |
-
<div class="header-description"
|
| 65 |
admin
|
| 66 |
</div>
|
| 67 |
</div>
|
|
@@ -74,4 +74,14 @@
|
|
| 74 |
</form>
|
| 75 |
|
| 76 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
</div>
|
|
|
|
| 60 |
</div>
|
| 61 |
</div> -->
|
| 62 |
<div>
|
| 63 |
+
<h3>Nguyen van an</h3>
|
| 64 |
+
<div class="header-description">
|
| 65 |
admin
|
| 66 |
</div>
|
| 67 |
</div>
|
|
|
|
| 74 |
</form>
|
| 75 |
|
| 76 |
</div>
|
| 77 |
+
<script>
|
| 78 |
+
const links = document.querySelectorAll(".sidebar-link");
|
| 79 |
+
const currentPath = window.location.pathname;
|
| 80 |
+
|
| 81 |
+
links.forEach(link => {
|
| 82 |
+
if (link.getAttribute("href") === currentPath) {
|
| 83 |
+
link.classList.add("active");
|
| 84 |
+
}
|
| 85 |
+
});
|
| 86 |
+
</script>
|
| 87 |
</div>
|
src/main/resources/templates/cms/sidebar/sidebar-employee.html
CHANGED
|
@@ -94,4 +94,14 @@
|
|
| 94 |
</form>
|
| 95 |
|
| 96 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
</div>
|
|
|
|
| 94 |
</form>
|
| 95 |
|
| 96 |
</div>
|
| 97 |
+
<script>
|
| 98 |
+
const links = document.querySelectorAll(".sidebar-link");
|
| 99 |
+
const currentPath = window.location.pathname;
|
| 100 |
+
|
| 101 |
+
links.forEach(link => {
|
| 102 |
+
if (link.getAttribute("href") === currentPath) {
|
| 103 |
+
link.classList.add("active");
|
| 104 |
+
}
|
| 105 |
+
});
|
| 106 |
+
</script>
|
| 107 |
</div>
|
src/main/resources/templates/cms/sidebar/sidebar-manage.html
CHANGED
|
@@ -1,18 +1,20 @@
|
|
| 1 |
<div class="sidebar" th:fragment="sidebar">
|
| 2 |
|
| 3 |
<div class="sidebar-header">
|
| 4 |
-
<div class="logo">
|
| 5 |
-
<a href="/" >
|
| 6 |
-
📷
|
| 7 |
-
</a>
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
</div>
|
| 10 |
-
|
| 11 |
|
| 12 |
<div>
|
| 13 |
<h2>Smart Attendance</h2>
|
| 14 |
<div class="header-description">Quản lý</div>
|
| 15 |
</div>
|
|
|
|
|
|
|
| 16 |
</div>
|
| 17 |
|
| 18 |
<div class="sidebar-line"></div>
|
|
@@ -32,7 +34,12 @@
|
|
| 32 |
Quản lý điểm danh
|
| 33 |
</a>
|
| 34 |
</li>
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
<li class="sidebar-option">
|
| 37 |
<a href="/faceIDList" class="sidebar-link">
|
| 38 |
<span>👤</span>
|
|
@@ -46,6 +53,12 @@
|
|
| 46 |
Duyệt nghỉ phép
|
| 47 |
</a>
|
| 48 |
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
<li class="sidebar-option">
|
| 50 |
<a href="/userInformation" class="sidebar-link">
|
| 51 |
<span>🪪</span>
|
|
@@ -73,9 +86,9 @@
|
|
| 73 |
Vai trò
|
| 74 |
</div>
|
| 75 |
</div> -->
|
| 76 |
-
|
| 77 |
-
<h3
|
| 78 |
-
<div class="header-description"
|
| 79 |
Manager
|
| 80 |
</div>
|
| 81 |
</div>
|
|
@@ -88,5 +101,14 @@
|
|
| 88 |
</form>
|
| 89 |
|
| 90 |
</div>
|
|
|
|
|
|
|
|
|
|
| 91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
</div>
|
|
|
|
| 1 |
<div class="sidebar" th:fragment="sidebar">
|
| 2 |
|
| 3 |
<div class="sidebar-header">
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
+
<div class="logo">
|
| 6 |
+
<a href="/">
|
| 7 |
+
📷
|
| 8 |
+
</a>
|
| 9 |
</div>
|
| 10 |
+
|
| 11 |
|
| 12 |
<div>
|
| 13 |
<h2>Smart Attendance</h2>
|
| 14 |
<div class="header-description">Quản lý</div>
|
| 15 |
</div>
|
| 16 |
+
|
| 17 |
+
|
| 18 |
</div>
|
| 19 |
|
| 20 |
<div class="sidebar-line"></div>
|
|
|
|
| 34 |
Quản lý điểm danh
|
| 35 |
</a>
|
| 36 |
</li>
|
| 37 |
+
<li class="sidebar-option">
|
| 38 |
+
<a href="/employeeList" class="sidebar-link">
|
| 39 |
+
<span>👥</span>
|
| 40 |
+
Quản lý nhân viên
|
| 41 |
+
</a>
|
| 42 |
+
</li>
|
| 43 |
<li class="sidebar-option">
|
| 44 |
<a href="/faceIDList" class="sidebar-link">
|
| 45 |
<span>👤</span>
|
|
|
|
| 53 |
Duyệt nghỉ phép
|
| 54 |
</a>
|
| 55 |
</li>
|
| 56 |
+
<li class="sidebar-option">
|
| 57 |
+
<a href="/documentList" class="sidebar-link">
|
| 58 |
+
<span>📝</span>
|
| 59 |
+
Danh sách báo cáo
|
| 60 |
+
</a>
|
| 61 |
+
</li>
|
| 62 |
<li class="sidebar-option">
|
| 63 |
<a href="/userInformation" class="sidebar-link">
|
| 64 |
<span>🪪</span>
|
|
|
|
| 86 |
Vai trò
|
| 87 |
</div>
|
| 88 |
</div> -->
|
| 89 |
+
<div>
|
| 90 |
+
<h3>Nguyen van an</h3>
|
| 91 |
+
<div class="header-description">
|
| 92 |
Manager
|
| 93 |
</div>
|
| 94 |
</div>
|
|
|
|
| 101 |
</form>
|
| 102 |
|
| 103 |
</div>
|
| 104 |
+
<script>
|
| 105 |
+
const links = document.querySelectorAll(".sidebar-link");
|
| 106 |
+
const currentPath = window.location.pathname;
|
| 107 |
|
| 108 |
+
links.forEach(link => {
|
| 109 |
+
if (link.getAttribute("href") === currentPath) {
|
| 110 |
+
link.classList.add("active");
|
| 111 |
+
}
|
| 112 |
+
});
|
| 113 |
+
</script>
|
| 114 |
</div>
|
src/main/resources/templates/cms/user/user-information.html
CHANGED
|
@@ -34,10 +34,11 @@
|
|
| 34 |
|
| 35 |
<div class="card-header">
|
| 36 |
<h2>Thông tin cá nhân</h2>
|
|
|
|
|
|
|
| 37 |
</div>
|
| 38 |
|
| 39 |
<div class="card-body">
|
| 40 |
-
|
| 41 |
<div class="info-grid">
|
| 42 |
|
| 43 |
<div class="info-item">
|
|
@@ -112,13 +113,69 @@
|
|
| 112 |
</section>
|
| 113 |
|
| 114 |
</main>
|
|
|
|
| 115 |
<div th:replace="~{cms/layout/footer :: footer}"></div>
|
| 116 |
|
| 117 |
</div>
|
| 118 |
</div>
|
| 119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
<!-- FOOTER -->
|
| 121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
</body>
|
| 123 |
|
| 124 |
</html>
|
|
|
|
| 34 |
|
| 35 |
<div class="card-header">
|
| 36 |
<h2>Thông tin cá nhân</h2>
|
| 37 |
+
<button class="btn btn-primary" id="changeInformation">Sửa</button>
|
| 38 |
+
|
| 39 |
</div>
|
| 40 |
|
| 41 |
<div class="card-body">
|
|
|
|
| 42 |
<div class="info-grid">
|
| 43 |
|
| 44 |
<div class="info-item">
|
|
|
|
| 113 |
</section>
|
| 114 |
|
| 115 |
</main>
|
| 116 |
+
|
| 117 |
<div th:replace="~{cms/layout/footer :: footer}"></div>
|
| 118 |
|
| 119 |
</div>
|
| 120 |
</div>
|
| 121 |
|
| 122 |
+
<section class="edit-card" id="editInformation">
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
<div class="edit-body">
|
| 126 |
+
<div class="edit-header">
|
| 127 |
+
<h2>Thông tin cá nhân</h2>
|
| 128 |
+
</div>
|
| 129 |
+
<div class="info-grid">
|
| 130 |
+
<div class="info-item">
|
| 131 |
+
<label >Họ và tên</label>
|
| 132 |
+
<input type="text">
|
| 133 |
+
</div>
|
| 134 |
+
<div class="info-item">
|
| 135 |
+
<label >Tên đăng nhập</label>
|
| 136 |
+
<input type="text">
|
| 137 |
+
</div>
|
| 138 |
+
<div class="info-item">
|
| 139 |
+
<label >Email</label>
|
| 140 |
+
<input type="text">
|
| 141 |
+
</div>
|
| 142 |
+
<div class="info-item">
|
| 143 |
+
<label >Số điện thoại</label>
|
| 144 |
+
<input type="text">
|
| 145 |
+
</div>
|
| 146 |
+
<div class="info-item">
|
| 147 |
+
<label >Bộ phận</label>
|
| 148 |
+
<input type="text">
|
| 149 |
+
</div>
|
| 150 |
+
<div class="btn-run">
|
| 151 |
+
<button id="btnEdit" class="btn btn-primary">
|
| 152 |
+
Sửa
|
| 153 |
+
</button>
|
| 154 |
+
|
| 155 |
+
<button id="btnClose" class="btn btn-close">
|
| 156 |
+
Đóng
|
| 157 |
+
</button>
|
| 158 |
+
</div>
|
| 159 |
+
</div>
|
| 160 |
+
</div>
|
| 161 |
+
|
| 162 |
+
</section>
|
| 163 |
<!-- FOOTER -->
|
| 164 |
+
<script>
|
| 165 |
+
const btn = document.getElementById("editInformation");
|
| 166 |
+
document.getElementById("changeInformation").onclick = function () {
|
| 167 |
+
btn.style.display = "flex";
|
| 168 |
+
};
|
| 169 |
+
document.getElementById("btnClose").onclick = function () {
|
| 170 |
+
btn.style.display = "none";
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
btn.addEventListener("click", function (e) {
|
| 174 |
+
if (e.target === btn) {
|
| 175 |
+
btn.style.display = "none";
|
| 176 |
+
}
|
| 177 |
+
});
|
| 178 |
+
</script>
|
| 179 |
</body>
|
| 180 |
|
| 181 |
</html>
|