feat: implement full authentication system and CRUD APIs for users, rumah ibadah, and penduduk miskin with database updates.
This commit is contained in:
+132
-5
@@ -139,6 +139,18 @@ body.right-panel-open .custom-layer-panel {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.layer-section-title {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
color: #6366f1;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
margin-bottom: 8px;
|
||||
margin-top: 12px;
|
||||
padding-bottom: 2px;
|
||||
border-bottom: 1px dashed #e2e8f0;
|
||||
}
|
||||
|
||||
.layer-option {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -190,6 +202,25 @@ body.right-panel-open .custom-layer-panel {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.sidebar-section-label {
|
||||
font-size: 9px;
|
||||
font-weight: 700;
|
||||
color: #94a3b8;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
letter-spacing: 0.8px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 2px;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.sidebar-divider {
|
||||
height: 1px;
|
||||
background: #e2e8f0;
|
||||
margin: 4px 6px;
|
||||
}
|
||||
|
||||
.sidebar-btn {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
@@ -400,9 +431,6 @@ body.right-panel-open .custom-layer-panel {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.card-icon-spbu { background: #f0fdf4; }
|
||||
.card-icon-jalan { background: #eff6ff; }
|
||||
.card-icon-parsil { background: #fefce8; }
|
||||
.card-icon-ibadah { background: #fff7ed; }
|
||||
.card-icon-miskin-out { background: #f0fdf4; }
|
||||
.card-icon-miskin-in { background: #fef2f2; }
|
||||
@@ -690,6 +718,7 @@ body.right-panel-open .custom-layer-panel {
|
||||
.modal-body input[type="text"],
|
||||
.modal-body input[type="number"],
|
||||
.modal-body input[type="date"],
|
||||
.modal-body input[type="password"],
|
||||
.modal-body select,
|
||||
.modal-body textarea {
|
||||
width: 100%;
|
||||
@@ -836,8 +865,6 @@ body.right-panel-open .custom-layer-panel {
|
||||
}
|
||||
|
||||
/* Warna bubble per tipe */
|
||||
.emoji-marker .bubble.spbu-24 { background: linear-gradient(135deg, #22c55e, #16a34a); }
|
||||
.emoji-marker .bubble.spbu-not24 { background: linear-gradient(135deg, #ef4444, #dc2626); }
|
||||
.emoji-marker .bubble.ibadah { background: linear-gradient(135deg, #f97316, #ea580c); }
|
||||
.emoji-marker .bubble.miskin-in { background: linear-gradient(135deg, #ef4444, #dc2626); }
|
||||
.emoji-marker .bubble.miskin-out { background: linear-gradient(135deg, #22c55e, #16a34a); }
|
||||
@@ -893,3 +920,103 @@ body.right-panel-open .custom-layer-panel {
|
||||
0% { opacity: 1; transform: translateY(0) scale(1); }
|
||||
100% { opacity: 0; transform: translateY(10px) scale(0.95); }
|
||||
}
|
||||
|
||||
/* Auth Widget Styling */
|
||||
.auth-widget {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 80px;
|
||||
z-index: 1000;
|
||||
transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
|
||||
body.right-panel-open .auth-widget {
|
||||
right: 400px;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
background: linear-gradient(135deg, #6366f1, #4f46e5);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 24px;
|
||||
height: 48px;
|
||||
padding: 0 24px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
box-shadow: 0 6px 16px rgba(99, 102, 241, 0.45);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.user-profile-pill {
|
||||
background-color: white;
|
||||
border-radius: 24px;
|
||||
height: 48px;
|
||||
padding: 0 8px 0 16px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
border: 1px solid rgba(226, 232, 240, 0.8);
|
||||
backdrop-filter: blur(10px);
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
.user-profile-info {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.user-profile-name {
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.user-profile-role {
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
color: #6366f1;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.btn-profile-logout {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
background: #f1f5f9;
|
||||
color: #64748b;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.btn-profile-logout:hover {
|
||||
background: #fee2e2;
|
||||
color: #ef4444;
|
||||
}
|
||||
|
||||
/* User management table styling */
|
||||
#userManagementModal table th {
|
||||
padding: 10px 12px;
|
||||
font-weight: 600;
|
||||
background-color: #f1f5f9;
|
||||
border-bottom: 1px solid #cbd5e1;
|
||||
}
|
||||
|
||||
#userManagementModal table td {
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user