@necrolab/dashboard 0.4.48 → 0.4.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +2 -1
- package/.prettierrc +12 -1
- package/exit +209 -0
- package/index.html +1 -1
- package/package.json +1 -1
- package/public/manifest.json +8 -3
- package/src/assets/css/_input.scss +104 -111
- package/src/assets/css/_utilities.scss +441 -0
- package/src/assets/css/main.scss +228 -154
- package/src/components/Auth/LoginForm.vue +49 -6
- package/src/components/Editors/Account/Account.vue +156 -146
- package/src/components/Editors/Account/AccountCreator.vue +1 -1
- package/src/components/Editors/Account/AccountView.vue +13 -13
- package/src/components/Editors/Account/CreateAccount.vue +25 -16
- package/src/components/Editors/Profile/CreateProfile.vue +1 -1
- package/src/components/Editors/Profile/Profile.vue +1 -1
- package/src/components/Editors/Profile/ProfileCountryChooser.vue +83 -19
- package/src/components/Editors/Profile/ProfileView.vue +11 -11
- package/src/components/Tasks/CreateTaskAXS.vue +3 -3
- package/src/components/Tasks/CreateTaskTM.vue +7 -35
- package/src/components/Tasks/QuickSettings.vue +112 -9
- package/src/components/Tasks/Stats.vue +29 -26
- package/src/components/Tasks/Task.vue +499 -365
- package/src/components/Tasks/TaskView.vue +187 -127
- package/src/components/icons/Sandclock.vue +2 -2
- package/src/components/icons/Stadium.vue +1 -1
- package/src/components/ui/Modal.vue +37 -35
- package/src/components/ui/controls/CountryChooser.vue +200 -62
- package/src/components/ui/controls/atomic/Dropdown.vue +177 -91
- package/src/components/ui/controls/atomic/MultiDropdown.vue +247 -168
- package/src/composables/useClickOutside.js +21 -0
- package/src/composables/useDropdownPosition.js +174 -0
- package/src/stores/sampleData.js +4 -2
- package/src/stores/ui.js +8 -6
- package/src/views/Accounts.vue +12 -19
- package/src/views/Console.vue +34 -47
- package/src/views/Editor.vue +1194 -730
- package/src/views/Login.vue +65 -119
- package/src/views/Profiles.vue +2 -2
- package/src/views/Tasks.vue +170 -137
- package/static/offline.html +192 -50
- package/tailwind.config.js +47 -21
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Z-INDEX MANAGEMENT
|
|
3
|
+
========================================================================== */
|
|
4
|
+
|
|
5
|
+
.z-dropdown {
|
|
6
|
+
z-index: 100;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.z-dropdown-high {
|
|
10
|
+
z-index: 200;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.z-modal {
|
|
14
|
+
z-index: 1000;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.z-tooltip {
|
|
18
|
+
z-index: 2000;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.z-overlay {
|
|
22
|
+
z-index: 3000;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.z-max {
|
|
26
|
+
z-index: 9999;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* ==========================================================================
|
|
30
|
+
COMMON POSITIONING UTILITIES
|
|
31
|
+
========================================================================== */
|
|
32
|
+
|
|
33
|
+
.relative-positioned {
|
|
34
|
+
position: relative !important;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dropdown-container {
|
|
38
|
+
position: relative;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ==========================================================================
|
|
42
|
+
EDITOR UTILITIES
|
|
43
|
+
========================================================================== */
|
|
44
|
+
|
|
45
|
+
.editor-base {
|
|
46
|
+
font-family: "JetBrains Mono", "Fira Code", "Menlo", "Monaco", "Courier New", monospace;
|
|
47
|
+
font-size: 14px;
|
|
48
|
+
line-height: 1.6;
|
|
49
|
+
tab-size: 4;
|
|
50
|
+
background-color: transparent;
|
|
51
|
+
border: none;
|
|
52
|
+
outline: none;
|
|
53
|
+
resize: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.editor-scrollable {
|
|
57
|
+
overflow: auto !important;
|
|
58
|
+
-webkit-overflow-scrolling: touch !important;
|
|
59
|
+
touch-action: auto !important;
|
|
60
|
+
overscroll-behavior: auto !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* ==========================================================================
|
|
64
|
+
TABLE UTILITIES
|
|
65
|
+
========================================================================== */
|
|
66
|
+
|
|
67
|
+
.table-row-even {
|
|
68
|
+
background-color: #1a1b1e;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.table-row-odd {
|
|
72
|
+
background-color: #242529;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.table-component {
|
|
76
|
+
@apply w-full rounded-lg border border-dark-600;
|
|
77
|
+
overflow: visible !important;
|
|
78
|
+
background-color: #2e2f34;
|
|
79
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* ==========================================================================
|
|
83
|
+
DROPDOWN UTILITIES
|
|
84
|
+
========================================================================== */
|
|
85
|
+
|
|
86
|
+
.dropdown-base {
|
|
87
|
+
@apply bg-dark-500 border-2 border-dark-550 rounded-lg;
|
|
88
|
+
margin-left: 0 !important;
|
|
89
|
+
border-width: 2px !important;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.dropdown-no-margin {
|
|
93
|
+
margin-left: 0 !important;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Dropdown menu z-index inheritance */
|
|
97
|
+
.z-dropdown-high .dropdown-menu,
|
|
98
|
+
.z-dropdown-high .option-list,
|
|
99
|
+
.z-dropdown-high [class*="dropdown"] {
|
|
100
|
+
z-index: 200 !important;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.z-dropdown .dropdown-menu,
|
|
104
|
+
.z-dropdown .option-list,
|
|
105
|
+
.z-dropdown [class*="dropdown"] {
|
|
106
|
+
z-index: 100 !important;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* ==========================================================================
|
|
110
|
+
REFRESH BUTTON UTILITIES
|
|
111
|
+
========================================================================== */
|
|
112
|
+
|
|
113
|
+
.refresh-button {
|
|
114
|
+
&:hover {
|
|
115
|
+
.refresh-icon {
|
|
116
|
+
transform: rotate(180deg);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.refresh-icon {
|
|
122
|
+
transition: transform 0.5s ease;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* ==========================================================================
|
|
126
|
+
MOBILE RESPONSIVE UTILITIES
|
|
127
|
+
========================================================================== */
|
|
128
|
+
|
|
129
|
+
.mobile-header-controls {
|
|
130
|
+
@apply flex lg:hidden ml-auto items-center gap-x-2;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.desktop-controls-hide {
|
|
134
|
+
@apply hidden lg:block;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* ==========================================================================
|
|
138
|
+
SPACING UTILITIES
|
|
139
|
+
========================================================================== */
|
|
140
|
+
|
|
141
|
+
.section-divider {
|
|
142
|
+
@apply border border-dark-650 my-8;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.controls-wrapper {
|
|
146
|
+
@apply lg:mb-3;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.stats-component {
|
|
150
|
+
/* Add any stats-specific styling here */
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.utilities-section {
|
|
154
|
+
/* Add any utilities-specific styling here */
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* ==========================================================================
|
|
158
|
+
RESPONSIVE LAYOUT UTILITIES - CONSOLIDATED
|
|
159
|
+
========================================================================== */
|
|
160
|
+
|
|
161
|
+
/* Mobile-first responsive containers */
|
|
162
|
+
.container-responsive {
|
|
163
|
+
@apply w-full mx-auto px-4;
|
|
164
|
+
|
|
165
|
+
@screen sm {
|
|
166
|
+
@apply px-6;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@screen lg {
|
|
170
|
+
@apply px-8;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Responsive grid systems */
|
|
175
|
+
.grid-responsive-1-2 {
|
|
176
|
+
@apply grid grid-cols-1;
|
|
177
|
+
|
|
178
|
+
@screen md {
|
|
179
|
+
@apply grid-cols-2;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.grid-responsive-1-2-3 {
|
|
184
|
+
@apply grid grid-cols-1;
|
|
185
|
+
|
|
186
|
+
@screen sm {
|
|
187
|
+
@apply grid-cols-2;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
@screen lg {
|
|
191
|
+
@apply grid-cols-3;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.grid-responsive-2-4 {
|
|
196
|
+
@apply grid grid-cols-2;
|
|
197
|
+
|
|
198
|
+
@screen md {
|
|
199
|
+
@apply grid-cols-4;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* Responsive flex utilities */
|
|
204
|
+
.flex-responsive-col-row {
|
|
205
|
+
@apply flex flex-col;
|
|
206
|
+
|
|
207
|
+
@screen lg {
|
|
208
|
+
@apply flex-row;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.flex-responsive-wrap {
|
|
213
|
+
@apply flex flex-col gap-4;
|
|
214
|
+
|
|
215
|
+
@screen md {
|
|
216
|
+
@apply flex-row justify-between items-center;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Responsive spacing */
|
|
221
|
+
.gap-responsive {
|
|
222
|
+
@apply gap-2;
|
|
223
|
+
|
|
224
|
+
@screen sm {
|
|
225
|
+
@apply gap-3;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@screen lg {
|
|
229
|
+
@apply gap-4;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.padding-responsive {
|
|
234
|
+
@apply p-2;
|
|
235
|
+
|
|
236
|
+
@screen sm {
|
|
237
|
+
@apply p-4;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@screen lg {
|
|
241
|
+
@apply p-6;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Responsive text sizes */
|
|
246
|
+
.text-responsive-sm {
|
|
247
|
+
@apply text-xs;
|
|
248
|
+
|
|
249
|
+
@screen sm {
|
|
250
|
+
@apply text-sm;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.text-responsive-base {
|
|
255
|
+
@apply text-sm;
|
|
256
|
+
|
|
257
|
+
@screen sm {
|
|
258
|
+
@apply text-base;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.text-responsive-lg {
|
|
263
|
+
@apply text-base;
|
|
264
|
+
|
|
265
|
+
@screen sm {
|
|
266
|
+
@apply text-lg;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* ==========================================================================
|
|
271
|
+
DEVICE-SPECIFIC UTILITIES
|
|
272
|
+
========================================================================== */
|
|
273
|
+
|
|
274
|
+
/* Mobile portrait utilities */
|
|
275
|
+
@screen mobile-portrait {
|
|
276
|
+
.mobile-portrait-hidden {
|
|
277
|
+
display: none !important;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.mobile-portrait-full-width {
|
|
281
|
+
width: 100% !important;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.mobile-portrait-stack {
|
|
285
|
+
flex-direction: column !important;
|
|
286
|
+
gap: 0.75rem !important;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.mobile-portrait-compact {
|
|
290
|
+
padding: 0.25rem !important;
|
|
291
|
+
gap: 0.25rem !important;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.editor-controls-row,
|
|
295
|
+
.proxy-controls-row {
|
|
296
|
+
gap: 0.75rem !important;
|
|
297
|
+
flex-wrap: wrap;
|
|
298
|
+
|
|
299
|
+
.dropdown-container {
|
|
300
|
+
width: 100% !important;
|
|
301
|
+
max-width: 16rem;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
> div:last-child {
|
|
305
|
+
margin-right: auto;
|
|
306
|
+
margin-top: 0.5rem;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.task-switches h4 {
|
|
311
|
+
font-size: 12px !important;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* Desktop-specific utilities */
|
|
316
|
+
@screen lg {
|
|
317
|
+
.desktop-only {
|
|
318
|
+
display: block !important;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.desktop-hidden {
|
|
322
|
+
display: none !important;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* Height-based responsive utilities */
|
|
327
|
+
@screen h-sm {
|
|
328
|
+
.short-screen-compact {
|
|
329
|
+
padding-top: 0.5rem !important;
|
|
330
|
+
padding-bottom: 0.5rem !important;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.short-screen-hidden {
|
|
334
|
+
display: none !important;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* Touch device optimizations */
|
|
339
|
+
@screen touch {
|
|
340
|
+
.touch-larger {
|
|
341
|
+
min-height: 44px !important;
|
|
342
|
+
min-width: 44px !important;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.touch-spacing {
|
|
346
|
+
margin: 0.25rem !important;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* ==========================================================================
|
|
351
|
+
CONSOLE UTILITIES
|
|
352
|
+
========================================================================== */
|
|
353
|
+
|
|
354
|
+
.console-base {
|
|
355
|
+
@apply bg-dark-400 border border-dark-550 border-2 rounded relative;
|
|
356
|
+
|
|
357
|
+
textarea {
|
|
358
|
+
background: transparent;
|
|
359
|
+
resize: none;
|
|
360
|
+
@apply w-full focus:outline-none text-white;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.console-dropdown {
|
|
365
|
+
font-size: 0.875rem !important;
|
|
366
|
+
font-weight: 500 !important;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/* ==========================================================================
|
|
370
|
+
TASK UTILITIES
|
|
371
|
+
========================================================================== */
|
|
372
|
+
|
|
373
|
+
.task-switches {
|
|
374
|
+
h4 {
|
|
375
|
+
color: #e1e1e4;
|
|
376
|
+
@apply text-xs text-center flex items-center gap-x-2 mx-auto;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.switch-wrapper {
|
|
380
|
+
@apply gap-y-2;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/* ==========================================================================
|
|
385
|
+
INPUT UTILITIES
|
|
386
|
+
========================================================================== */
|
|
387
|
+
|
|
388
|
+
.input-container {
|
|
389
|
+
position: relative;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.input-wrapper {
|
|
393
|
+
@apply z-20;
|
|
394
|
+
|
|
395
|
+
label {
|
|
396
|
+
@apply text-xs text-light-300 block;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.label-override {
|
|
401
|
+
display: flex;
|
|
402
|
+
align-items: center;
|
|
403
|
+
font-size: 12px;
|
|
404
|
+
margin-bottom: 8px;
|
|
405
|
+
color: #a0a0a6;
|
|
406
|
+
|
|
407
|
+
svg {
|
|
408
|
+
margin-left: 8px;
|
|
409
|
+
width: 16px;
|
|
410
|
+
height: 16px;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/* ==========================================================================
|
|
415
|
+
CONTEXT MENU UTILITIES
|
|
416
|
+
========================================================================== */
|
|
417
|
+
|
|
418
|
+
.context-menu {
|
|
419
|
+
position: fixed;
|
|
420
|
+
z-index: 9999;
|
|
421
|
+
background: var(--bg-dark-400);
|
|
422
|
+
border: 1px solid var(--border-dark-650);
|
|
423
|
+
border-radius: 8px;
|
|
424
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/* ==========================================================================
|
|
428
|
+
ICON UTILITIES
|
|
429
|
+
========================================================================== */
|
|
430
|
+
|
|
431
|
+
.icon-muted {
|
|
432
|
+
color: #a0a0a6 !important;
|
|
433
|
+
fill: #a0a0a6 !important;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.icon-muted svg,
|
|
437
|
+
.icon-muted svg path,
|
|
438
|
+
.icon-muted svg * {
|
|
439
|
+
color: #a0a0a6 !important;
|
|
440
|
+
fill: #a0a0a6 !important;
|
|
441
|
+
}
|