@necrolab/dashboard 0.5.12 → 0.5.14

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.
Files changed (54) hide show
  1. package/.playwright-mcp/verification-accounts-desktop.png +0 -0
  2. package/.playwright-mcp/verification-tasks-desktop.png +0 -0
  3. package/.playwright-mcp/verification-tasks-mobile.png +0 -0
  4. package/README.md +21 -0
  5. package/docs/plans/2026-02-08-tailwind-consolidation-results.md +476 -0
  6. package/docs/plans/2026-02-08-tailwind-consolidation.md +2416 -0
  7. package/package.json +1 -1
  8. package/src/App.vue +2 -163
  9. package/src/assets/css/components/buttons.scss +43 -95
  10. package/src/assets/css/components/forms.scss +10 -28
  11. package/src/assets/css/components/search-groups.scss +80 -0
  12. package/src/assets/css/components/tables.scss +0 -8
  13. package/src/assets/css/main.scss +2 -43
  14. package/src/components/Editors/Account/Account.vue +14 -220
  15. package/src/components/Editors/Account/AccountCreator.vue +0 -4
  16. package/src/components/Editors/Account/AccountView.vue +0 -1
  17. package/src/components/Editors/Account/CreateAccount.vue +36 -107
  18. package/src/components/Editors/Profile/CreateProfile.vue +46 -135
  19. package/src/components/Editors/Profile/Profile.vue +10 -213
  20. package/src/components/Editors/Profile/ProfileView.vue +0 -1
  21. package/src/components/Filter/Filter.vue +14 -17
  22. package/src/components/Filter/FilterPreview.vue +0 -6
  23. package/src/components/Table/Row.vue +1 -1
  24. package/src/components/Table/Table.vue +2 -16
  25. package/src/components/Tasks/CreateTaskAXS.vue +45 -104
  26. package/src/components/Tasks/CreateTaskTM.vue +58 -96
  27. package/src/components/Tasks/Task.vue +22 -209
  28. package/src/components/Tasks/TaskView.vue +5 -4
  29. package/src/components/Tasks/ViewTask.vue +201 -214
  30. package/src/components/icons/Copy.vue +6 -0
  31. package/src/components/icons/index.js +3 -1
  32. package/src/components/ui/ActionButtonGroup.vue +70 -0
  33. package/src/components/ui/FormField.vue +74 -0
  34. package/src/components/ui/InfoRow.vue +100 -0
  35. package/src/components/ui/Modal.vue +6 -47
  36. package/src/components/ui/Navbar.vue +15 -43
  37. package/src/components/ui/ReconnectIndicator.vue +4 -4
  38. package/src/components/ui/SectionCard.vue +24 -0
  39. package/src/components/ui/Splash.vue +1 -6
  40. package/src/components/ui/StatusBadge.vue +37 -0
  41. package/src/components/ui/controls/CountryChooser.vue +14 -58
  42. package/src/components/ui/controls/atomic/Dropdown.vue +16 -24
  43. package/src/components/ui/controls/atomic/MultiDropdown.vue +7 -1
  44. package/src/components/ui/controls/atomic/Switch.vue +13 -29
  45. package/src/composables/useCopyToClipboard.js +25 -0
  46. package/src/composables/useRowSelection.js +48 -0
  47. package/src/views/Accounts.vue +0 -81
  48. package/src/views/Console.vue +4 -21
  49. package/src/views/Editor.vue +48 -138
  50. package/src/views/FilterBuilder.vue +0 -23
  51. package/src/views/Login.vue +14 -63
  52. package/src/views/Profiles.vue +0 -82
  53. package/src/views/Tasks.vue +3 -24
  54. package/tailwind.config.js +47 -5
@@ -10,7 +10,7 @@
10
10
  <!-- Admin Editor Section - Hidden when proxy editor is open -->
11
11
  <div v-if="ui.profile.admin" class="admin-editor-section" :class="{ 'landscape-hidden': currentProxyList }">
12
12
  <h5 class="text-white text-xl font-bold flex gap-x-3 mb-3">Admin Editor</h5>
13
- <div class="flex-responsive-wrap editor-controls-row">
13
+ <div class="flex flex-wrap items-center gap-3 w-full">
14
14
  <div class="w-full lg:w-64 flex flex-shrink-0 dropdown-container z-dropdown-high">
15
15
  <div class="relative flex-grow">
16
16
  <Dropdown
@@ -30,11 +30,9 @@
30
30
  </button>
31
31
  </div>
32
32
  <!-- Admin editor buttons moved here -->
33
- <div
34
- v-if="textEditorVisible"
35
- class="flex flex-wrap gap-responsive justify-center lg:justify-end editor-buttons-responsive">
33
+ <div v-if="textEditorVisible" class="flex gap-1.5 ml-auto">
36
34
  <button
37
- class="btn-action flex-shrink-0"
35
+ class="button-default bg-dark-400"
38
36
  @click="format()"
39
37
  v-if="isJsonFile()"
40
38
  title="Format JSON">
@@ -53,9 +51,8 @@
53
51
  <path d="M21 14H3" />
54
52
  <path d="M21 18H7" />
55
53
  </svg>
56
- <span class="hidden sm:inline">Format</span>
57
54
  </button>
58
- <button class="btn-action flex-shrink-0" @click="saveAll" title="Save File">
55
+ <button class="button-default bg-dark-400" @click="saveAll" title="Save File">
59
56
  <svg
60
57
  xmlns="http://www.w3.org/2000/svg"
61
58
  width="16"
@@ -70,9 +67,8 @@
70
67
  <polyline points="17 21 17 13 7 13 7 21" />
71
68
  <polyline points="7 3 7 8 15 8" />
72
69
  </svg>
73
- <span class="hidden sm:inline">Save File</span>
74
70
  </button>
75
- <button class="btn-action flex-shrink-0" @click="closeFile" title="Close File">
71
+ <button class="button-default bg-dark-400" @click="closeFile" title="Close File">
76
72
  <svg
77
73
  xmlns="http://www.w3.org/2000/svg"
78
74
  width="16"
@@ -86,7 +82,6 @@
86
82
  <line x1="18" y1="6" x2="6" y2="18"></line>
87
83
  <line x1="6" y1="6" x2="18" y2="18"></line>
88
84
  </svg>
89
- <span class="hidden sm:inline">Close File</span>
90
85
  </button>
91
86
  </div>
92
87
  </div>
@@ -139,7 +134,7 @@
139
134
  <!-- Proxy Editor Section - Hidden when admin editor is open -->
140
135
  <div class="proxy-editor-section" :class="{ 'landscape-hidden': textEditorVisible }">
141
136
  <h5 class="text-white text-xl font-bold flex gap-x-3 mb-3">Proxy Editor</h5>
142
- <div class="flex-responsive-wrap proxy-controls-row mb-1">
137
+ <div class="flex flex-wrap items-center gap-3 w-full mb-1">
143
138
  <div class="w-full lg:w-64 flex flex-shrink-0 dropdown-container z-dropdown">
144
139
  <div class="relative flex-grow">
145
140
  <Dropdown
@@ -153,10 +148,8 @@
153
148
  </div>
154
149
  </div>
155
150
  <!-- Proxy save button moved here -->
156
- <div
157
- v-if="currentProxyList"
158
- class="flex flex-wrap gap-responsive justify-center lg:justify-end editor-buttons-responsive">
159
- <button class="btn-action flex-shrink-0" @click="saveProxies" title="Save Proxies">
151
+ <div v-if="currentProxyList" class="flex gap-1.5 ml-auto">
152
+ <button class="button-default bg-dark-400" @click="saveProxies" title="Save Proxies">
160
153
  <svg
161
154
  xmlns="http://www.w3.org/2000/svg"
162
155
  width="16"
@@ -171,9 +164,8 @@
171
164
  <polyline points="17 21 17 13 7 13 7 21" />
172
165
  <polyline points="7 3 7 8 15 8" />
173
166
  </svg>
174
- <span class="hidden sm:inline">Save Proxies</span>
175
167
  </button>
176
- <button class="btn-action flex-shrink-0" @click="closeProxyFile" title="Close File">
168
+ <button class="button-default bg-dark-400" @click="closeProxyFile" title="Close File">
177
169
  <svg
178
170
  xmlns="http://www.w3.org/2000/svg"
179
171
  width="16"
@@ -187,7 +179,6 @@
187
179
  <line x1="18" y1="6" x2="6" y2="18"></line>
188
180
  <line x1="6" y1="6" x2="18" y2="18"></line>
189
181
  </svg>
190
- <span class="hidden sm:inline">Close File</span>
191
182
  </button>
192
183
  </div>
193
184
  </div>
@@ -599,27 +590,10 @@ loadProxyLists();
599
590
  z-index: 150;
600
591
  }
601
592
 
602
- /* ==========================================================================
603
- CARD CONTAINER RESPONSIVENESS
604
- Component-scoped definition (not global utility)
605
- ========================================================================== */
606
-
607
- .card-dark {
608
- max-height: calc(100vh - 100px) !important;
609
- overflow-y: auto !important;
610
- -webkit-overflow-scrolling: touch !important;
611
- margin-bottom: 0.5rem !important;
612
- padding-bottom: 0.5rem !important;
613
- }
614
-
615
593
  /* ==========================================================================
616
594
  ADMIN EDITOR SECTION CONDITIONAL VISIBILITY
617
595
  ========================================================================== */
618
596
 
619
- .admin-editor-section {
620
- /* Default: always visible */
621
- }
622
-
623
597
  /* Hide admin editor when proxy editor is open - ALL SCREEN SIZES */
624
598
  .admin-editor-section.landscape-hidden {
625
599
  display: none !important;
@@ -629,30 +603,15 @@ loadProxyLists();
629
603
  PROXY EDITOR SECTION CONDITIONAL VISIBILITY
630
604
  ========================================================================== */
631
605
 
632
- .proxy-editor-section {
633
- /* Default: always visible */
634
- }
635
-
636
606
  /* Hide proxy editor when admin editor is open - ALL SCREEN SIZES */
637
607
  .proxy-editor-section.landscape-hidden {
638
608
  display: none !important;
639
609
  }
640
610
 
641
- /* Ensure card has proper bottom margin when sections are hidden */
642
- .proxy-editor-section.landscape-hidden ~ .card-dark,
643
- .admin-editor-section.landscape-hidden ~ .card-dark {
644
- margin-bottom: 1rem !important;
645
- }
646
-
647
611
  /* ==========================================================================
648
612
  SECTION HEADERS
649
613
  ========================================================================== */
650
614
 
651
- .admin-editor-section h5,
652
- .proxy-editor-section h5 {
653
- /* Remove the gradient underline styling */
654
- }
655
-
656
615
  /* ==========================================================================
657
616
  ADMIN FILE DROPDOWN STYLING
658
617
  ========================================================================== */
@@ -758,7 +717,6 @@ loadProxyLists();
758
717
  color: transparent !important;
759
718
  z-index: 2;
760
719
  position: relative;
761
- background-color: transparent;
762
720
  caret-color: #ffffff; /* Keep cursor visible */
763
721
 
764
722
  /* Selection styling */
@@ -769,7 +727,6 @@ loadProxyLists();
769
727
 
770
728
  .proxy-editor {
771
729
  @apply w-full h-full resize-none focus:outline-none;
772
- background-color: transparent;
773
730
  color: oklch(0.90 0 0); /* Keep normal text color for proxy editor */
774
731
  /* Ensure proxy editor takes full height */
775
732
  flex: 1;
@@ -960,21 +917,6 @@ pre[class*="language-"] {
960
917
  word-break: break-word;
961
918
  }
962
919
 
963
- /* ==========================================================================
964
- CONSOLE STYLES
965
- ========================================================================== */
966
-
967
- .console {
968
- @apply bg-dark-400 p-7 rounded relative border-dark-550 border-2;
969
-
970
- textarea {
971
- background: transparent;
972
- resize: none;
973
- height: calc(100vh - 450px);
974
- @apply w-full focus:outline-none text-xs text-white;
975
- }
976
- }
977
-
978
920
  /* ==========================================================================
979
921
  SECTION DIVIDER
980
922
  ========================================================================== */
@@ -1001,21 +943,12 @@ pre[class*="language-"] {
1001
943
  @apply flex flex-wrap items-center gap-4;
1002
944
  }
1003
945
 
946
+
1004
947
  /* ==========================================================================
1005
948
  MOBILE RESPONSIVE STYLES (max-width: 767px)
1006
949
  ========================================================================== */
1007
950
 
1008
951
  @media (max-width: 767px) {
1009
- /* Card container - increased height to use more available space */
1010
- .card-dark {
1011
- max-height: calc(100vh - 100px) !important; /* Increased from 120px */
1012
- overflow-y: auto !important;
1013
- -webkit-overflow-scrolling: touch !important;
1014
- margin-bottom: 0.5rem !important; /* Reduced from 1rem */
1015
- /* Reduced bottom padding to minimize empty space */
1016
- padding-bottom: 0.5rem !important; /* Reduced from 1.5rem */
1017
- }
1018
-
1019
952
  /* Layout adjustments - almost no gap between dropdown and buttons */
1020
953
  .flex-responsive-wrap {
1021
954
  @apply flex-col items-stretch !important;
@@ -1027,32 +960,19 @@ pre[class*="language-"] {
1027
960
  @apply flex justify-center !important;
1028
961
  }
1029
962
 
1030
- /* Smaller buttons on mobile */
1031
- .btn-action {
1032
- height: 32px !important;
1033
- min-height: 32px !important;
1034
- padding: 0 8px !important;
1035
- font-size: 12px !important;
1036
-
1037
- svg {
1038
- width: 14px !important;
1039
- height: 14px !important;
1040
- }
1041
- }
1042
-
1043
- /* Editor container heights - reduced for better mobile experience */
963
+ /* Editor container heights - fill available space on mobile */
1044
964
  .editor-container,
1045
965
  .proxy-editor-container {
1046
- height: 200px !important; /* Reduced from 280px for better mobile experience */
1047
- max-height: 30vh !important; /* Reduced from 35vh */
1048
- min-height: 180px !important; /* Reduced from 220px */
966
+ height: calc(100vh - 380px) !important; /* Fill viewport minus header/controls */
967
+ max-height: 60vh !important; /* Allow more height */
968
+ min-height: 300px !important; /* Ensure minimum usable height */
1049
969
  }
1050
970
 
1051
971
  /* Reduce editor height when JSON error is showing in portrait */
1052
972
  .editor-container.has-error {
1053
- height: 160px !important; /* Reduced to make room for error message */
1054
- max-height: 25vh !important;
1055
- min-height: 140px !important;
973
+ height: calc(100vh - 460px) !important; /* Account for error message */
974
+ max-height: 50vh !important;
975
+ min-height: 250px !important;
1056
976
  }
1057
977
 
1058
978
  /* Error message spacing on mobile */
@@ -1123,17 +1043,6 @@ pre[class*="language-"] {
1123
1043
  ========================================================================== */
1124
1044
 
1125
1045
  @media (max-height: 500px) and (orientation: landscape) and (min-width: 568px) {
1126
- /* Make card fit in landscape mode with reduced bottom spacing */
1127
- .card-dark {
1128
- max-height: calc(100vh - 80px) !important; /* Increased from 60px to 80px */
1129
- overflow-y: auto !important;
1130
- -webkit-overflow-scrolling: touch !important;
1131
- margin-bottom: 0.5rem !important; /* Reduced from 1rem */
1132
- padding: 8px !important;
1133
- /* Reduced bottom padding to minimize empty space */
1134
- padding-bottom: 0.5rem !important; /* Reduced from 1.5rem */
1135
- }
1136
-
1137
1046
  /* Truncate card cleanly when admin editor is open */
1138
1047
  .admin-editor-section:not(.landscape-hidden) + .section-divider + .proxy-editor-section.landscape-hidden {
1139
1048
  display: none !important;
@@ -1174,16 +1083,8 @@ pre[class*="language-"] {
1174
1083
  gap: 6px !important;
1175
1084
  }
1176
1085
 
1177
- /* Compact button styling */
1178
- .btn-action {
1179
- min-height: 28px !important;
1180
- height: 28px !important;
1181
- padding: 0 6px !important;
1182
- font-size: 11px !important;
1183
- }
1184
-
1185
- /* Hide button text to save space */
1186
- .btn-action span {
1086
+ /* Hide button text to save space in landscape mode */
1087
+ .button-default span {
1187
1088
  display: none !important;
1188
1089
  }
1189
1090
 
@@ -1273,14 +1174,6 @@ pre[class*="language-"] {
1273
1174
  ========================================================================== */
1274
1175
 
1275
1176
  @media (max-height: 400px) and (orientation: landscape) {
1276
- .card-dark {
1277
- max-height: calc(100vh - 70px) !important; /* Increased from 60px */
1278
- padding: 6px !important;
1279
- margin-bottom: 0.5rem !important; /* Reduced from 1rem */
1280
- /* Reduced bottom padding to minimize empty space */
1281
- padding-bottom: 0.5rem !important; /* Reduced from 1.5rem */
1282
- }
1283
-
1284
1177
  .editor-container,
1285
1178
  .proxy-editor-container {
1286
1179
  height: 140px !important; /* Increased from 100px */
@@ -1351,21 +1244,38 @@ pre[class*="language-"] {
1351
1244
  }
1352
1245
  }
1353
1246
 
1354
- /* Section divider */
1355
- .section-divider {
1356
- margin: 12px 0 !important;
1357
- /* Reduce glow effect in landscape */
1358
- box-shadow: 0 0 4px rgba(61, 62, 68, 0.2) !important;
1247
+ /* ==========================================================================
1248
+ MOBILE & TABLET - COMPACT EDITOR BUTTONS FOR ONE-ROW LAYOUT
1249
+ ========================================================================== */
1250
+
1251
+ /* Icon-sized buttons - compact for all screens */
1252
+ .button-default {
1253
+ @apply h-7 w-7 p-0; // 28x28px on desktop/tablet
1254
+ min-width: 28px !important;
1255
+ max-width: 28px !important;
1256
+ width: 28px !important;
1257
+ height: 28px !important;
1258
+ padding: 0 !important;
1259
+ border-radius: 6px;
1260
+
1261
+ svg {
1262
+ @apply w-4 h-4; // 16x16px icons
1263
+ }
1359
1264
  }
1360
1265
 
1361
- /* Compact section headers in landscape */
1362
- .admin-editor-section h5,
1363
- .proxy-editor-section h5 {
1364
- padding-bottom: 4px !important;
1266
+ /* Even more compact on mobile */
1267
+ @media (max-width: 640px) {
1268
+ .button-default {
1269
+ @apply h-6 w-6; // 24x24px on mobile
1270
+ min-width: 24px !important;
1271
+ max-width: 24px !important;
1272
+ width: 24px !important;
1273
+ height: 24px !important;
1365
1274
 
1366
- &::after {
1367
- width: 30px !important;
1368
- height: 1px !important;
1275
+ svg {
1276
+ @apply w-3.5 h-3.5; // 14x14px icons
1277
+ }
1369
1278
  }
1370
1279
  }
1280
+
1371
1281
  </style>
@@ -486,11 +486,6 @@ watch(renderSeats, async () => {
486
486
  </script>
487
487
 
488
488
  <style scoped>
489
- .slider-dim {
490
- width: 60px;
491
- height: 30px;
492
- }
493
-
494
489
  .compact-filter {
495
490
  font-size: 0.75rem;
496
491
  padding: 0.25rem !important;
@@ -598,22 +593,10 @@ watch(renderSeats, async () => {
598
593
  overflow: hidden;
599
594
  }
600
595
 
601
- /* Component-scoped definition (not global utility) */
602
- .card-dark {
603
- height: calc(100vh - 175px);
604
- min-height: 500px;
605
- overflow: hidden;
606
- }
607
-
608
596
  @media (max-width: 768px) {
609
597
  .filter-builder-container {
610
598
  overflow: auto;
611
599
  }
612
-
613
- .card-dark {
614
- height: auto;
615
- overflow: auto;
616
- }
617
600
  }
618
601
 
619
602
  /* Mobile portrait header spacing fixes */
@@ -630,12 +613,6 @@ watch(renderSeats, async () => {
630
613
  min-height: 100vh;
631
614
  overflow: auto;
632
615
  }
633
-
634
- .card-dark {
635
- height: auto;
636
- min-height: 500px;
637
- overflow: auto;
638
- }
639
616
  }
640
617
 
641
618
  /* Desktop: enforce grid column constraints */
@@ -1,8 +1,8 @@
1
1
  <template>
2
- <div class="login-container" v-once>
3
- <div class="login-card">
4
- <div class="mb-10 flex justify-center">
5
- <img src="@/assets/img/logo_trans.png" class="mb-3 h-16 object-cover" alt="Logo: NecroLab" />
2
+ <div class="login-container flex min-h-screen flex-col items-center px-4 mt-[3vh] landscape:mt-[1vh] landscape:justify-start landscape:min-h-dvh" v-once>
3
+ <div class="login-card w-full max-w-[420px] rounded-lg border border-dark-650 bg-dark-400 p-7 backdrop-blur-[10px] shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]">
4
+ <div class="mb-10 flex justify-center landscape:mb-2">
5
+ <img src="@/assets/img/logo_trans.png" class="mb-3 h-16 object-cover landscape:h-10" alt="Logo: NecroLab" />
6
6
  </div>
7
7
 
8
8
  <LoginForm />
@@ -13,76 +13,27 @@
13
13
  import LoginForm from "@/components/Auth/LoginForm.vue";
14
14
  </script>
15
15
  <style lang="scss" scoped>
16
- .login-container {
17
- @apply flex min-h-screen flex-col items-center px-4;
18
- margin-top: 3vh;
19
-
20
- // Mobile devices
21
- @media (max-width: 480px) {
16
+ /* Mobile-specific overrides (max-width: 480px) */
17
+ @media (max-width: 480px) {
18
+ .login-container {
22
19
  margin-top: 2vh;
23
20
  }
24
21
 
25
- // Landscape mode
26
- @media (orientation: landscape) {
27
- margin-top: 1vh;
28
- justify-content: flex-start;
29
- min-height: 100vh;
30
- min-height: 100dvh;
31
- }
32
- }
33
-
34
- .login-card {
35
- @apply rounded-lg border border-dark-650 bg-dark-400 shadow-xl;
36
- backdrop-filter: blur(10px);
37
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
38
- width: 100%;
39
- max-width: 420px;
40
- padding: 1.75rem;
41
-
42
- // Mobile devices
43
- @media (max-width: 480px) {
22
+ .login-card {
44
23
  max-width: 380px;
45
24
  padding: 1.5rem;
46
25
  }
47
26
 
48
- // Landscape mode
49
- @media (orientation: landscape) {
50
- padding: 1.25rem;
51
- margin: 0.25rem 0;
52
-
53
- h2 {
54
- @apply mb-2 text-lg;
55
- }
56
-
57
- .flex.justify-center {
58
- @apply mb-2;
59
-
60
- img {
61
- @apply h-10;
62
- }
63
- }
64
- }
65
- }
66
-
67
- // Logo responsive sizing
68
- .login-card img {
69
- @media (max-width: 480px) {
27
+ .login-card img {
70
28
  @apply h-12;
71
29
  }
72
-
73
- @media (orientation: landscape) {
74
- @apply h-10;
75
- }
76
30
  }
77
31
 
78
- // Title responsive sizing
79
- .login-card h2 {
80
- @media (max-width: 480px) {
81
- @apply mb-3 text-lg;
82
- }
83
-
84
- @media (orientation: landscape) {
85
- @apply mb-2 text-base;
32
+ /* Landscape overrides */
33
+ @media (orientation: landscape) {
34
+ .login-card {
35
+ padding: 1.25rem;
36
+ margin: 0.25rem 0;
86
37
  }
87
38
  }
88
39
  </style>
@@ -117,12 +117,6 @@
117
117
  </div>
118
118
  </template>
119
119
  <style lang="scss" scoped>
120
- .custom-dropdown-content {
121
- top: 2.6rem !important;
122
- left: -13px;
123
- @apply border border-dark-650;
124
- }
125
-
126
120
  /* Page buttons styling - match Tasks page */
127
121
  button.bg-dark-400,
128
122
  button.bg-green-400,
@@ -134,82 +128,6 @@ button.bg-red-400 {
134
128
  border-color: oklch(0.72 0.15 145) !important;
135
129
  }
136
130
  }
137
-
138
- /* Unified search component group */
139
- .unified-search-group {
140
- border: 2px solid oklch(0.2809 0 0);
141
- border-radius: 0.5rem;
142
- overflow: hidden;
143
- background: oklch(0.2603 0 0);
144
- transition: all 0.15s ease;
145
- display: flex;
146
-
147
- :deep(.tag-toggle),
148
- :deep(.dropdown),
149
- input {
150
- border: none !important;
151
- border-width: 0 !important;
152
- border-radius: 0 !important;
153
- height: 40px !important;
154
- background: transparent !important;
155
- box-shadow: none !important;
156
- min-width: fit-content !important;
157
- }
158
-
159
- :deep(.tag-toggle) {
160
- padding: 0;
161
- border: 0 solid transparent !important;
162
- border-top: 0 !important;
163
- border-bottom: 0 !important;
164
- border-left: 0 !important;
165
- border-right: 0 !important;
166
- }
167
-
168
- :deep(.tag-toggle button) {
169
- font-size: 0.875rem;
170
- padding: 0.5rem 0.75rem;
171
- min-width: fit-content;
172
- border: 0 solid transparent !important;
173
- border-top: 0 !important;
174
- border-bottom: 0 !important;
175
- border-left: 0 !important;
176
- border-right: 0 !important;
177
- }
178
-
179
- :deep(.dropdown) {
180
- width: 120px !important;
181
- min-width: 120px !important;
182
- }
183
-
184
- :deep(.dropdown-display) {
185
- padding: 0 0.75rem;
186
- font-size: 0.875rem;
187
- }
188
-
189
- input {
190
- padding-left: 0.75rem;
191
- padding-right: 0.75rem;
192
- flex: 1;
193
-
194
- &::placeholder {
195
- color: oklch(0.50 0 0);
196
- }
197
-
198
- &:focus {
199
- outline: none !important;
200
- }
201
- }
202
-
203
- &:hover {
204
- border-color: oklch(0.30 0 0);
205
- }
206
-
207
- &:focus-within {
208
- border-color: oklch(0.72 0.15 145);
209
- outline: 1px solid oklch(0.72 0.15 145);
210
- outline-offset: 0;
211
- }
212
- }
213
131
  </style>
214
132
  <script setup>
215
133
  import { computed, ref, watch } from "vue";
@@ -41,11 +41,6 @@
41
41
  <div class="mb-1 flex items-center justify-between gap-2 md:hidden">
42
42
  <Stats class="stats-component flex-1" />
43
43
  <div class="flex items-center gap-2">
44
- <div
45
- class="flex h-8 items-center justify-between rounded-md border border-dark-650 bg-dark-400 px-2 text-xs font-medium text-white">
46
- <p class="text-[10px]">Name</p>
47
- <Switch class="scale-75" v-model="preferEventName" />
48
- </div>
49
44
  <PriceSortToggle
50
45
  class="h-8 min-w-20 max-w-28 flex-shrink-0"
51
46
  :options="['All', 'Checkout']"
@@ -138,18 +133,10 @@
138
133
  // Add padding in PWA mode to prevent content hiding under navbar
139
134
  .tasks-header {
140
135
  @media (display-mode: standalone) {
141
- padding-top: 3.5rem !important;
136
+ padding-top: 3.5rem;
142
137
  }
143
138
  }
144
139
 
145
- // Bottom padding now handled globally in App.vue component-container
146
-
147
- .custom-dropdown-content {
148
- top: 2.6rem !important;
149
- left: -13px;
150
- @apply border border-dark-650;
151
- }
152
-
153
140
  /* ==========================================================================
154
141
  TASKS PAGE RESPONSIVE LAYOUT - MOBILE FIRST
155
142
  ========================================================================== */
@@ -167,7 +154,7 @@
167
154
  .event-dropdown {
168
155
  min-width: 0;
169
156
  /* Match PriceSortToggle height instead of input-default */
170
- height: 40px !important;
157
+ height: 40px;
171
158
  }
172
159
 
173
160
  .event-dropdown .dropdown-value {
@@ -179,10 +166,6 @@
179
166
 
180
167
  /* Small mobile screens (portrait) */
181
168
  @media (max-width: 480px) and (orientation: portrait) {
182
- .event-dropdown {
183
- height: 40px !important; /* Match PriceSortToggle height exactly */
184
- }
185
-
186
169
  .event-dropdown .dropdown-value {
187
170
  max-width: calc(100vw - 140px);
188
171
  font-size: 0.875rem;
@@ -195,10 +178,6 @@
195
178
 
196
179
  /* Extra small screens */
197
180
  @media (max-width: 375px) and (orientation: portrait) {
198
- .event-dropdown {
199
- height: 40px !important; /* Maintain 40px height to match PriceSortToggle */
200
- }
201
-
202
181
  .event-dropdown .dropdown-value {
203
182
  max-width: calc(100vw - 120px);
204
183
  font-size: 0.8rem;
@@ -214,7 +193,7 @@
214
193
  }
215
194
 
216
195
  .pb-2 {
217
- padding-top: 1rem !important;
196
+ padding-top: 1rem;
218
197
  padding-bottom: 0.25rem;
219
198
  margin-bottom: 0.25rem;
220
199
  }