Skip to content

Commit 53cf5aa

Browse files
committed
fixed merge conflicts
2 parents 0d5d92c + 6c96773 commit 53cf5aa

106 files changed

Lines changed: 33473 additions & 1768 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

backup.diff

Lines changed: 1155 additions & 0 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 24294 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@
7070
"leaflet": "^1.9.4",
7171
"leaflet.heat": "^0.2.0",
7272
"leaflet.markercluster": "^1.5.3",
73-
"lodash": "^4.17.23",
73+
"libphonenumber-js": "^1.12.31",
74+
"lodash": "^4.17.21",
7475
"lucide-react": "^0.484.0",
7576
"micromatch": "^4.0.8",
7677
"moment": "^2.30.1",
@@ -155,6 +156,7 @@
155156
"@babel/core": "^7.28.0",
156157
"@babel/eslint-parser": "^7.28.0",
157158
"@babel/helper-validator-identifier": "^7.12.11",
159+
"@babel/plugin-proposal-logical-assignment-operators": "^7.20.7",
158160
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
159161
"@babel/plugin-transform-optional-chaining": "^7.27.1",
160162
"@babel/plugin-transform-private-property-in-object": "^7.21.11",
@@ -170,6 +172,8 @@
170172
"@types/html-to-pdfmake": "^2.4.4",
171173
"@types/pdfmake": "^0.2.11",
172174
"@types/react-router-dom": "^5.3.3",
175+
"@typescript-eslint/eslint-plugin": "^8.44.1",
176+
"@typescript-eslint/parser": "^8.44.1",
173177
"@vitejs/plugin-react": "^4.5.0",
174178
"@vitest/ui": "3.2.2",
175179
"babel-jest": "^29.7.0",

public/index.css

Lines changed: 121 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
/* public/index.css */
2-
1+
/* Root background (light mode default) */
32
#root {
43
background-color: #ffffff;
54
}
65

6+
/* ========================= */
7+
/* THEME ROOT (BODY / ROOT) */
8+
/* ========================= */
9+
710
body.dark-mode:not(.no-global-theme),
811
body.bm-dashboard-dark:not(.no-global-theme) {
912
background-color: #1b2a41 !important;
@@ -16,26 +19,23 @@ body.bm-dashboard-dark:not(.no-global-theme) #root {
1619
color: #ffffff !important;
1720
}
1821

19-
/* SAFE BASE */
20-
body.dark-mode:not(.no-global-theme) {
22+
/* SAFE BASE (dark mode) */
23+
body.dark-mode:not(.no-global-theme),
24+
body.bm-dashboard-dark:not(.no-global-theme) {
2125
color: #ffffff;
2226
}
2327

24-
/* Text elements */
28+
/* ========================= */
29+
/* TYPOGRAPHY (DARK MODE) */
30+
/* ========================= */
31+
32+
/* Text elements (avoid targeting all divs) */
2533
body.dark-mode:not(.no-global-theme) p,
2634
body.dark-mode:not(.no-global-theme) span,
2735
body.dark-mode:not(.no-global-theme) label,
28-
body.dark-mode:not(.no-global-theme) div:not(.rs__option),
29-
body.dark-mode:not(.no-global-theme) h1,
30-
body.dark-mode:not(.no-global-theme) h2,
31-
body.dark-mode:not(.no-global-theme) h3,
3236
body.bm-dashboard-dark:not(.no-global-theme) p,
3337
body.bm-dashboard-dark:not(.no-global-theme) span,
34-
body.bm-dashboard-dark:not(.no-global-theme) label,
35-
body.bm-dashboard-dark:not(.no-global-theme) div:not(.rs__option),
36-
body.bm-dashboard-dark:not(.no-global-theme) h1,
37-
body.bm-dashboard-dark:not(.no-global-theme) h2,
38-
body.bm-dashboard-dark:not(.no-global-theme) h3 {
38+
body.bm-dashboard-dark:not(.no-global-theme) label {
3939
color: #ffffff !important;
4040
}
4141

@@ -62,7 +62,10 @@ body.bm-dashboard-dark:not(.no-global-theme) .text-muted {
6262
color: #b8c5d1 !important;
6363
}
6464

65-
/* Containers */
65+
/* ========================= */
66+
/* LAYOUT CONTAINERS (DARK) */
67+
/* ========================= */
68+
6669
body.dark-mode:not(.no-global-theme) .container,
6770
body.dark-mode:not(.no-global-theme) .container-fluid,
6871
body.bm-dashboard-dark:not(.no-global-theme) .container,
@@ -79,7 +82,10 @@ body.bm-dashboard-dark:not(.no-global-theme) .card {
7982
color: #ffffff;
8083
}
8184

82-
/* Tables */
85+
/* ========================= */
86+
/* TABLES (DARK) */
87+
/* ========================= */
88+
8389
body.dark-mode:not(.no-global-theme) .table,
8490
body.bm-dashboard-dark:not(.no-global-theme) .table {
8591
color: #ffffff !important;
@@ -97,7 +103,10 @@ body.bm-dashboard-dark:not(.no-global-theme) .table th {
97103
background-color: #2e5061 !important;
98104
}
99105

100-
/* Buttons */
106+
/* ========================= */
107+
/* BUTTONS (DARK) */
108+
/* ========================= */
109+
101110
body.dark-mode:not(.no-global-theme) .btn,
102111
body.bm-dashboard-dark:not(.no-global-theme) .btn {
103112
color: #ffffff !important;
@@ -109,45 +118,121 @@ body.bm-dashboard-dark:not(.no-global-theme) .btn-primary {
109118
border-color: #3a506b;
110119
}
111120

112-
/* Inputs */
121+
/* ========================= */
122+
/* FORMS (DARK + LIGHT) */
123+
/* ========================= */
124+
125+
/* Dark-mode form controls (SAFE: does not touch checkbox/radio/switch) */
113126
body.dark-mode:not(.no-global-theme) .form-control,
114-
body.bm-dashboard-dark:not(.no-global-theme) .form-control {
115-
background-color: #2e5061;
116-
border-color: #3a506b;
127+
body.bm-dashboard-dark:not(.no-global-theme) .form-control,
128+
body.dark-mode:not(.no-global-theme) select.form-control,
129+
body.bm-dashboard-dark:not(.no-global-theme) select.form-control {
130+
background-color: #1e293b !important;
131+
color: #ffffff !important;
132+
border: 1px solid #334155 !important;
133+
}
134+
135+
/* Dark-mode placeholders */
136+
body.dark-mode:not(.no-global-theme) .form-control::placeholder,
137+
body.bm-dashboard-dark:not(.no-global-theme) .form-control::placeholder {
138+
color: #94a3b8 !important;
139+
}
140+
141+
/* Dark-mode select arrow styling (Bootstrap selects) */
142+
body.dark-mode:not(.no-global-theme) select.form-control,
143+
body.bm-dashboard-dark:not(.no-global-theme) select.form-control {
144+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
145+
background-repeat: no-repeat !important;
146+
background-position: right 0.75rem center !important;
147+
background-size: 16px 12px !important;
148+
}
149+
150+
/* Dark-mode option colors (browser-dependent, but helps) */
151+
body.dark-mode:not(.no-global-theme) option,
152+
body.bm-dashboard-dark:not(.no-global-theme) option {
153+
background-color: #1e293b !important;
117154
color: #ffffff !important;
118155
}
119156

120-
/* Modals */
121-
body.dark-mode:not(.no-global-theme) .modal-content {
157+
/* Light-mode form controls (Option B): Bootstrap `.form-control` only */
158+
body:not(.dark-mode) .form-control,
159+
body:not(.dark-mode) textarea.form-control,
160+
body:not(.dark-mode) select.form-control {
161+
background-color: #ffffff !important;
162+
color: #212529 !important;
163+
border-color: #ced4da !important;
164+
}
165+
166+
/* ========================= */
167+
/* MODALS (DARK) */
168+
/* ========================= */
169+
170+
body.dark-mode:not(.no-global-theme) .modal-content,
171+
body.bm-dashboard-dark:not(.no-global-theme) .modal-content {
172+
background-color: #1b2a41 !important;
173+
border: 1px solid #2e3d55 !important;
174+
color: #ffffff !important;
175+
}
176+
177+
body.dark-mode:not(.no-global-theme) .modal-header,
178+
body.dark-mode:not(.no-global-theme) .modal-body,
179+
body.dark-mode:not(.no-global-theme) .modal-footer,
180+
body.bm-dashboard-dark:not(.no-global-theme) .modal-header,
181+
body.bm-dashboard-dark:not(.no-global-theme) .modal-body,
182+
body.bm-dashboard-dark:not(.no-global-theme) .modal-footer {
122183
background-color: #1b2a41 !important;
123184
color: #ffffff !important;
185+
border-color: #2e3d55 !important;
186+
}
187+
188+
body.dark-mode:not(.no-global-theme) .modal-header,
189+
body.bm-dashboard-dark:not(.no-global-theme) .modal-header {
190+
background-color: #24344d !important;
191+
border-bottom: 1px solid #334155 !important;
192+
color: #ffffff !important;
193+
padding: 1rem 1.5rem;
194+
}
195+
196+
body.dark-mode:not(.no-global-theme) .modal-title,
197+
body.bm-dashboard-dark:not(.no-global-theme) .modal-title {
198+
font-weight: 600;
199+
letter-spacing: 0.5px;
200+
}
201+
202+
/* Modal table header */
203+
body.dark-mode:not(.no-global-theme) .modal-content .table thead th,
204+
body.bm-dashboard-dark:not(.no-global-theme) .modal-content .table thead th {
205+
background-color: #2d3d5a !important;
206+
color: #ffffff !important;
207+
border-bottom: 2px solid #334155 !important;
208+
font-size: 0.85rem;
209+
letter-spacing: 1px;
124210
}
125211

126-
/* Dropdowns */
212+
/* ========================= */
213+
/* DROPDOWNS (DARK) */
214+
/* ========================= */
215+
127216
body.dark-mode:not(.no-global-theme) .dropdown-menu,
128217
body.bm-dashboard-dark:not(.no-global-theme) .dropdown-menu {
129218
background-color: #2e5061;
130219
border-color: #3a506b;
131220
}
132221

133-
/* Pagination */
222+
/* ========================= */
223+
/* PAGINATION (DARK) */
224+
/* ========================= */
225+
134226
body.dark-mode:not(.no-global-theme) .page-link,
135227
body.bm-dashboard-dark:not(.no-global-theme) .page-link {
136228
background-color: #2e5061;
137229
border-color: #3a506b;
138230
color: #ffffff !important;
139231
}
140232

141-
/* ============================= */
142-
/* LIGHT MODE RULES (UNCHANGED) */
143-
/* ============================= */
144-
145-
body:not(.dark-mode) input,
146-
body:not(.dark-mode) textarea {
147-
background-color: #ffffff !important;
148-
color: #212529 !important;
149-
border-color: #ced4da !important;
150-
}
233+
/* ========================= */
234+
/* UTILITIES */
235+
/* ========================= */
151236

152237
/* container scrolling */
153238
.container-fluid {
@@ -168,7 +253,7 @@ body:not(.dark-mode) textarea {
168253
display: flex;
169254
align-items: center;
170255
justify-content: center;
171-
background-color: #2A1B3D;
256+
background-color: #2a1b3d;
172257
color: #ffffff;
173258
border-radius: 50%;
174259
font-size: 22px;
@@ -181,95 +266,3 @@ body:not(.dark-mode) textarea {
181266
transform: translateY(-4px);
182267
opacity: 0.9;
183268
}
184-
185-
/* Allow the page content to scroll horizontally */
186-
.container-fluid {
187-
overflow-x: auto;
188-
}
189-
190-
/* Hide the horizontal scrollbar */
191-
.container-fluid::-webkit-scrollbar {
192-
display: none;
193-
}
194-
195-
/* Explicit targeting for all input types and selects */
196-
body.dark-mode .form-control,
197-
body.bm-dashboard-dark .form-control,
198-
body.dark-mode select,
199-
body.bm-dashboard-dark select,
200-
body.dark-mode input[type="text"] {
201-
background-color: #1e293b !important;
202-
color: #ffffff !important;
203-
border: 1px solid #334155 !important;
204-
}
205-
206-
/* Fix for the Project and Tool dropdown arrows and internal padding */
207-
body.dark-mode select.form-control,
208-
body.bm-dashboard-dark select.form-control {
209-
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
210-
background-repeat: no-repeat !important;
211-
background-position: right 0.75rem center !important;
212-
background-size: 16px 12px !important;
213-
}
214-
215-
body.dark-mode .form-control::placeholder {
216-
color: #94a3b8 !important;
217-
}
218-
219-
body.dark-mode option,
220-
body.bm-dashboard-dark option {
221-
background-color: #1e293b !important;
222-
color: #ffffff !important;
223-
}
224-
225-
body.dark-mode .modal-content,
226-
body.bm-dashboard-dark .modal-content {
227-
background-color: #1b2a41 !important;
228-
border: 1px solid #2e3d55 !important;
229-
color: #ffffff !important;
230-
}
231-
232-
body.dark-mode .modal-header,
233-
body.dark-mode .modal-body,
234-
body.dark-mode .modal-footer,
235-
body.bm-dashboard-dark .modal-header,
236-
body.bm-dashboard-dark .modal-body,
237-
body.bm-dashboard-dark .modal-footer {
238-
background-color: #1b2a41 !important;
239-
color: #ffffff !important;
240-
border-color: #2e3d55 !important;
241-
}
242-
243-
body.dark-mode .form-control,
244-
body.dark-mode select,
245-
body.dark-mode input {
246-
background-color: #1e293b !important;
247-
color: #ffffff !important;
248-
border: 1px solid #334155 !important;
249-
}
250-
251-
body.dark-mode select.form-control {
252-
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
253-
}
254-
255-
body.dark-mode .modal-header,
256-
body.bm-dashboard-dark .modal-header {
257-
background-color: #24344d !important;
258-
border-bottom: 1px solid #334155 !important;
259-
color: #ffffff !important;
260-
padding: 1rem 1.5rem;
261-
}
262-
263-
body.dark-mode .modal-title,
264-
body.bm-dashboard-dark .modal-title {
265-
font-weight: 600;
266-
letter-spacing: 0.5px;
267-
}
268-
269-
body.dark-mode .modal-content .table thead th {
270-
background-color: #2d3d5a !important;
271-
color: #ffffff !important;
272-
border-bottom: 2px solid #334155 !important;
273-
font-size: 0.85rem;
274-
letter-spacing: 1px;
275-
}

0 commit comments

Comments
 (0)