@necrolab/dashboard 0.4.61 → 0.4.209

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 (133) hide show
  1. package/.prettierrc +1 -27
  2. package/.vscode/extensions.json +1 -1
  3. package/README.md +2 -64
  4. package/backend/api.js +48 -40
  5. package/backend/auth.js +3 -3
  6. package/backend/batching.js +1 -1
  7. package/backend/endpoints.js +76 -12
  8. package/backend/index.js +2 -2
  9. package/backend/mock-data.js +36 -27
  10. package/backend/mock-src/classes/logger.js +8 -8
  11. package/backend/mock-src/classes/utils.js +3 -7
  12. package/backend/mock-src/database.js +0 -0
  13. package/backend/mock-src/ticketmaster.js +79 -79
  14. package/backend/validator.js +2 -2
  15. package/config/configs.json +3 -2
  16. package/config/filter.json +3 -2
  17. package/index.html +8 -79
  18. package/index.js +1 -1
  19. package/package.json +25 -40
  20. package/postcss.config.js +1 -1
  21. package/postinstall.js +17 -98
  22. package/public/android-chrome-192x192.png +0 -0
  23. package/public/android-chrome-512x512.png +0 -0
  24. package/public/apple-touch-icon.png +0 -0
  25. package/public/favicon-16x16.png +0 -0
  26. package/public/favicon-32x32.png +0 -0
  27. package/public/favicon.ico +0 -0
  28. package/public/manifest.json +7 -12
  29. package/public/sw.js +2 -0
  30. package/public/workbox-49fdaf31.js +2 -0
  31. package/public/workbox-49fdaf31.js.map +1 -0
  32. package/public/workbox-88575b92.js +2 -0
  33. package/public/workbox-88575b92.js.map +1 -0
  34. package/public/workbox-a67a7b11.js +2 -0
  35. package/public/workbox-a67a7b11.js.map +1 -0
  36. package/public/workbox-d4314735.js +2 -0
  37. package/public/workbox-d4314735.js.map +1 -0
  38. package/public/workbox-e0f89ef3.js +2 -0
  39. package/public/workbox-e0f89ef3.js.map +1 -0
  40. package/run +9 -176
  41. package/src/App.vue +85 -498
  42. package/src/assets/css/_input.scss +99 -144
  43. package/src/assets/css/main.scss +99 -450
  44. package/src/assets/img/background.svg +2 -2
  45. package/src/assets/img/logo_icon.png +0 -0
  46. package/src/components/Auth/LoginForm.vue +11 -62
  47. package/src/components/Editors/Account/Account.vue +40 -116
  48. package/src/components/Editors/Account/AccountCreator.vue +39 -88
  49. package/src/components/Editors/Account/AccountView.vue +34 -102
  50. package/src/components/Editors/Account/CreateAccount.vue +32 -80
  51. package/src/components/Editors/Profile/CreateProfile.vue +83 -269
  52. package/src/components/Editors/Profile/Profile.vue +47 -132
  53. package/src/components/Editors/Profile/ProfileCountryChooser.vue +20 -82
  54. package/src/components/Editors/Profile/ProfileView.vue +34 -91
  55. package/src/components/Editors/TagLabel.vue +6 -67
  56. package/src/components/Filter/Filter.vue +72 -289
  57. package/src/components/Filter/FilterPreview.vue +30 -171
  58. package/src/components/Filter/PriceSortToggle.vue +4 -74
  59. package/src/components/Table/Header.vue +1 -1
  60. package/src/components/Table/Row.vue +1 -1
  61. package/src/components/Table/Table.vue +2 -19
  62. package/src/components/Tasks/CheckStock.vue +13 -28
  63. package/src/components/Tasks/Controls/DesktopControls.vue +17 -17
  64. package/src/components/Tasks/Controls/MobileControls.vue +45 -8
  65. package/src/components/Tasks/CreateTaskAXS.vue +73 -79
  66. package/src/components/Tasks/CreateTaskTM.vue +142 -94
  67. package/src/components/Tasks/MassEdit.vue +7 -9
  68. package/src/components/Tasks/QuickSettings.vue +55 -169
  69. package/src/components/Tasks/ScrapeVenue.vue +4 -7
  70. package/src/components/Tasks/Stats.vue +23 -52
  71. package/src/components/Tasks/Task.vue +135 -377
  72. package/src/components/Tasks/TaskView.vue +47 -107
  73. package/src/components/Tasks/Utilities.vue +6 -5
  74. package/src/components/icons/Bag.vue +1 -1
  75. package/src/components/icons/Loyalty.vue +1 -1
  76. package/src/components/icons/Mail.vue +2 -2
  77. package/src/components/icons/Play.vue +2 -2
  78. package/src/components/icons/Reload.vue +5 -4
  79. package/src/components/icons/Sandclock.vue +2 -2
  80. package/src/components/icons/Stadium.vue +1 -1
  81. package/src/components/icons/index.js +1 -24
  82. package/src/components/ui/Modal.vue +13 -105
  83. package/src/components/ui/Navbar.vue +37 -170
  84. package/src/components/ui/ReconnectIndicator.vue +55 -351
  85. package/src/components/ui/Splash.vue +35 -5
  86. package/src/components/ui/controls/CountryChooser.vue +62 -200
  87. package/src/components/ui/controls/atomic/Checkbox.vue +10 -119
  88. package/src/components/ui/controls/atomic/Dropdown.vue +39 -208
  89. package/src/components/ui/controls/atomic/MultiDropdown.vue +37 -300
  90. package/src/libs/Filter.js +170 -200
  91. package/src/registerServiceWorker.js +1 -1
  92. package/src/stores/connection.js +53 -51
  93. package/src/stores/logger.js +3 -11
  94. package/src/stores/sampleData.js +201 -173
  95. package/src/stores/ui.js +44 -112
  96. package/src/stores/utils.js +6 -90
  97. package/src/views/Accounts.vue +35 -44
  98. package/src/views/Console.vue +90 -341
  99. package/src/views/Editor.vue +123 -1176
  100. package/src/views/FilterBuilder.vue +251 -607
  101. package/src/views/Login.vue +14 -76
  102. package/src/views/Profiles.vue +25 -44
  103. package/src/views/Tasks.vue +100 -187
  104. package/static/offline.html +50 -192
  105. package/tailwind.config.js +26 -104
  106. package/vite.config.js +16 -73
  107. package/vue.config.js +32 -0
  108. package/workbox-config.js +11 -0
  109. package/artwork/image.png +0 -0
  110. package/dev-server.js +0 -136
  111. package/exit +0 -209
  112. package/jsconfig.json +0 -16
  113. package/src/assets/css/_utilities.scss +0 -388
  114. package/src/assets/img/background.svg.backup +0 -11
  115. package/src/components/icons/Check.vue +0 -5
  116. package/src/components/icons/Close.vue +0 -21
  117. package/src/components/icons/CloseX.vue +0 -5
  118. package/src/components/icons/Key.vue +0 -21
  119. package/src/components/icons/Pencil.vue +0 -21
  120. package/src/components/icons/Profile.vue +0 -18
  121. package/src/components/icons/Sell.vue +0 -21
  122. package/src/components/icons/Spinner.vue +0 -42
  123. package/src/components/icons/SquareCheck.vue +0 -18
  124. package/src/components/icons/SquareUncheck.vue +0 -18
  125. package/src/components/icons/Wildcard.vue +0 -18
  126. package/src/components/ui/controls/atomic/LoadingButton.vue +0 -45
  127. package/src/composables/useClickOutside.js +0 -21
  128. package/src/composables/useDropdownPosition.js +0 -174
  129. package/src/types/index.js +0 -41
  130. package/src/utils/debug.js +0 -1
  131. package/switch-branch.sh +0 -41
  132. package/workbox-config.cjs +0 -63
  133. /package/src/assets/img/{logo_icon-old.png → logo_icon_2.png} +0 -0
@@ -1,72 +1,79 @@
1
1
  <template>
2
2
  <Modal>
3
- <template #header
4
- ><span class="mb-4 flex">Quick Settings <GearIcon class="ml-4 w-4" /></span
5
- ></template>
3
+ <template #header> Quick Settings <GearIcon class="ml-4 w-4" /></template>
4
+
5
+ <div
6
+ v-if="ui.profile.admin"
7
+ class="my-3 flex gap-x-3 justify-between items-center border-dark-550 text-white border-2 bg-dark-500 p-3 rounded w-full h-10 button-default-smaller"
8
+ >
9
+ <span>Backup incap</span>
10
+ <Switch class="scale-75" v-model="quickConfig.incapBackup" />
11
+ </div>
6
12
 
7
- <div v-for="(category, categoryName) in quickConfig.keys" :key="categoryName" class="mb-4">
8
- <div class="text-light-400 mb-2">{{ categoryName }} Keys</div>
9
- <div
10
- v-for="(value, keyName) in category"
11
- :key="keyName"
12
- class="input-container"
13
- >
14
- <span class="w-1/3 text-light-300 font-medium text-xs">{{ keyName }}</span>
15
- <div class="w-2/3 h-full flex items-center">
16
- <input
17
- type="text"
18
- class="quick-settings-input"
19
- :placeholder="`Enter ${keyName} key`"
20
- v-model="quickConfig.keys[categoryName][keyName]"
21
- />
22
- </div>
23
- </div>
13
+ <div
14
+ class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between h-10"
15
+ >
16
+ <span class="w-full">HyperAPI key</span>
17
+ <input
18
+ type="text"
19
+ class="transparent w-full bg-transparent border-none text-white placeholder-light-400"
20
+ placeholder="Enter HyperAPI key"
21
+ />
24
22
  </div>
25
23
 
26
- <div class="input-container relative-positioned z-tooltip">
27
- <span class="w-1/3 text-light-300 font-medium text-xs">Checkout Proxies</span>
24
+ <div
25
+ class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between h-10"
26
+ >
27
+ <span class="w-full">Capsolver key</span>
28
+ <input
29
+ type="text"
30
+ class="transparent w-full bg-transparent border-none text-white placeholder-light-400"
31
+ placeholder="Enter Capsolver key"
32
+ />
33
+ </div>
34
+
35
+ <div
36
+ class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between"
37
+ >
38
+ <span class="w-full">Checkout Proxies</span>
28
39
  <Dropdown
29
- class="!w-2/3"
30
- variant="transparent"
40
+ class="rounded text-white pl-2 z-50 special-dropdown"
31
41
  :default="ui.profile.proxyList?.checkout || proxyLists[0]"
32
- :value="ui.profile.proxyList?.checkout"
33
42
  :options="proxyLists"
34
43
  :onClick="(f) => saveProxyListUpate('checkout', f)"
35
44
  :allowDefault="false"
45
+ rightAmount="right-3"
36
46
  />
37
47
  </div>
38
48
 
39
- <div class="input-container relative-positioned z-dropdown">
40
- <span class="w-1/3 text-light-300 font-medium text-xs">Queue Proxies</span>
49
+ <div class="text-white bg-dark-500 rounded border-dark-550 border-2 px-3 flex items-center justify-between">
50
+ <span class="w-full">Queue Proxies</span>
41
51
  <Dropdown
42
- class="!w-2/3"
43
- variant="transparent"
52
+ class="rounded text-white pl-2 z-30 special-dropdown"
44
53
  :default="ui.profile.proxyList?.queue || proxyLists[0]"
45
- :value="ui.profile.proxyList?.queue"
46
- :options="proxyLists"
47
54
  :onClick="(f) => saveProxyListUpate('queue', f)"
55
+ :options="proxyLists"
48
56
  :allowDefault="false"
57
+ rightAmount="right-3"
49
58
  />
50
59
  </div>
51
- <div class="flex mt-5 justify-between flex-row items-center quicksettings-bottom">
52
- <div class="flex gap-3 items-center quicksettings-versions">
53
- <div class="bg-gradient-to-r from-dark-400 to-dark-500 rounded-lg text-xs shadow-lg p-2 px-3 text-white font-medium border border-light-300">
54
- Dashboard v{{ version }}
55
- </div>
56
- <div class="bg-gradient-to-r from-dark-400 to-dark-500 rounded-lg text-xs shadow-lg p-2 px-3 text-white font-medium border border-light-300">
57
- Bot v{{ ui.botVersion }}
58
- </div>
59
- </div>
60
-
61
- <div class="flex gap-5 quicksettings-buttons">
60
+ <div class="flex mt-5 justify-between items-end">
61
+ <span class="text-light-400 text-sm hidden lg:block">v{{ version }}</span>
62
+ <div class="flex justify-end gap-5">
62
63
  <button
63
- class="button-default bg-dark-400 w-24 text-xs flex items-center justify-center gap-x-2 border border-light-300 hover:border-light-400"
64
+ class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
64
65
  @click="checkBalances()"
65
66
  >
66
67
  Balances <img src="@/assets/img/sell.svg" width="14" />
67
68
  </button>
68
69
  <button
69
- class="button-default bg-dark-400 w-24 text-xs flex items-center justify-center gap-x-2 border border-light-300 hover:border-light-400"
70
+ class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
71
+ @click="done(false)"
72
+ >
73
+ Cancel <img src="@/assets/img/close.svg" width="14" />
74
+ </button>
75
+ <button
76
+ class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
70
77
  @click="done(true)"
71
78
  >
72
79
  Save <img src="/img/save.svg" width="14" class="invert" />
@@ -85,125 +92,6 @@
85
92
  .transparent {
86
93
  background: transparent !important;
87
94
  }
88
-
89
- .input-container {
90
- @apply text-white bg-dark-500 mb-3 px-3 rounded-lg border-dark-550 border-2 flex items-center justify-between h-10;
91
- overflow: visible;
92
- }
93
-
94
- .quick-settings-input {
95
- @apply w-full h-full text-sm text-white bg-transparent border-0 outline-none px-2 py-1 transition-colors duration-150;
96
-
97
- &:focus {
98
- @apply outline-none border-0 shadow-none bg-transparent;
99
- }
100
-
101
- &:hover:not(:focus) {
102
- @apply bg-dark-550;
103
- }
104
-
105
- &::placeholder {
106
- @apply text-light-400 opacity-70;
107
- }
108
- }
109
-
110
- /* iPhone portrait mode fixes */
111
- @media (max-width: 430px) and (orientation: portrait) {
112
- .quicksettings-bottom {
113
- flex-direction: column;
114
- gap: 1rem;
115
- align-items: stretch;
116
- }
117
-
118
- .quicksettings-versions {
119
- justify-content: center;
120
- flex-wrap: wrap;
121
- gap: 0.5rem;
122
- }
123
-
124
- .quicksettings-versions > div {
125
- flex: 1;
126
- min-width: 120px;
127
- text-align: center;
128
- }
129
-
130
- .quicksettings-buttons {
131
- justify-content: center;
132
- gap: 0.75rem;
133
- }
134
-
135
- .quicksettings-buttons button {
136
- width: 5rem;
137
- padding-left: 0.5rem;
138
- padding-right: 0.5rem;
139
- gap: 0.25rem;
140
- }
141
-
142
- .quicksettings-buttons button img {
143
- width: 12px;
144
- }
145
- }
146
-
147
- /* Fix dropdown visibility in modal */
148
- :deep(.modal-body) {
149
- overflow: visible !important;
150
- }
151
-
152
- :deep(.component-modal) {
153
- overflow: visible !important;
154
- }
155
-
156
- /* Dropdown styling fixes */
157
- :deep(.dropdown) {
158
- background: transparent !important;
159
- border: none !important;
160
- box-shadow: none !important;
161
- padding: 0 !important;
162
- height: 40px !important;
163
- }
164
-
165
- :deep(.dropdown:hover),
166
- :deep(.dropdown:focus-within) {
167
- border: none !important;
168
- background: transparent !important;
169
- box-shadow: none !important;
170
- }
171
-
172
- :deep(.dropdown-display) {
173
- height: 100%;
174
- padding: 0.625rem;
175
- }
176
-
177
- :deep(.dropdown-value) {
178
- font-size: 0.875rem;
179
- line-height: 1.25rem;
180
- }
181
-
182
- :deep(.dropdown-menu-portal) {
183
- z-index: 1000 !important;
184
- max-height: 200px !important;
185
- overflow-y: auto !important;
186
- overscroll-behavior: contain !important;
187
- touch-action: pan-y !important;
188
- -webkit-overflow-scrolling: touch !important;
189
- border: 1px solid #3d3e44 !important;
190
- background: linear-gradient(135deg, #2a2b30 0%, #2e2f34 100%) !important;
191
- }
192
-
193
- :deep(.dropdown-item) {
194
- padding: 0.625rem 1rem;
195
- font-size: 0.875rem;
196
- line-height: 1.25rem;
197
- }
198
-
199
- /* Ensure proper z-index stacking */
200
- .z-tooltip {
201
- z-index: 100 !important;
202
- }
203
-
204
- .z-dropdown {
205
- z-index: 90 !important;
206
- }
207
95
  </style>
208
96
  <script setup>
209
97
  import Modal from "@/components/ui/Modal.vue";
@@ -258,12 +146,10 @@ const loadProxyLists = async () => {
258
146
  };
259
147
 
260
148
  const checkBalances = async () => {
261
- const balances = await getBalances();
262
- if (typeof balances == "object")
263
- Object.entries(balances).forEach(([service, balance]) => {
264
- ui.showSuccess(`${service} balance: ${balance}`);
265
- });
266
- else ui.showError("Could not get balances");
149
+ const { capsolver, hyper } = await getBalances();
150
+ if (capsolver) ui.showSuccess("Capsolver balance: " + capsolver);
151
+ if (hyper) ui.showSuccess("Hyper balance: " + hyper);
152
+ if (!capsolver && !capsolver) ui.showSuccess("Could not get balances");
267
153
  };
268
154
 
269
155
  loadProxyLists();
@@ -4,15 +4,13 @@
4
4
  <!-- Event ID -->
5
5
  <div class="input-wrapper mt-7 mb-4">
6
6
  <label class="label-override mb-2">Event ID or URL <StadiumIcon /></label>
7
- <div class="input-default required">
8
- <input
9
- :placeholder="!isEU(ui.currentCountry.siteId) ? '102PDA9125510GYU' : '529171'"
10
- v-model="eventId"
11
- />
7
+ <div class="input-default">
8
+ <input placeholder="102PDA9125510GYU" v-model="eventId" />
9
+ <span class="text-red-400 my-auto mr-2 mt-3">* </span>
12
10
  </div>
13
11
  </div>
14
12
  <button
15
- class="btn-action ml-auto"
13
+ class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-48 text-xs flex items-center justify-center gap-x-2 ml-auto"
16
14
  @click="done()"
17
15
  >
18
16
  Scrape Venue <ScrapeIcon />
@@ -31,7 +29,6 @@ import Modal from "@/components/ui/Modal.vue";
31
29
  import { StadiumIcon, ScrapeIcon } from "@/components/icons";
32
30
  import { useUIStore } from "@/stores/ui";
33
31
  import { ref } from "vue";
34
- import { isEU } from "@/stores/utils";
35
32
 
36
33
  const ui = useUIStore();
37
34
  const eventId = ref("");
@@ -1,53 +1,43 @@
1
1
  <template>
2
- <div class="flex text-white font-bold lg:gap-5 gap-1 lg:mb-1 min-h-[2.5rem]" v-if="ui.queueStats.show" :key="key">
2
+ <div class="flex text-white font-bold lg:gap-5 gap-1" v-if="show" :key="key">
3
3
  <div
4
4
  v-if="ui.queueStats.total"
5
- class="stats-card lg:mb-2 mb-1 text-sm rounded-xl lg:p-3 p-2 lg:gap-3 gap-2 flex justify-between items-center min-w-0 h-8">
6
- <h2 class="font-bold text-sm flex items-center gap-1 whitespace-nowrap">
7
- <img width="14px" src="@/assets/img/wildcard.svg" />
8
- Total MQM
5
+ class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
6
+ >
7
+ <h2 class="font-bold text-sm flex items-center gap-1 scale-100">
8
+ <img width="14px" src="@/assets/img/wildcard.svg" />Total MQM
9
9
  </h2>
10
- <span class="text-light-400 text-xs font-black flex items-center justify-center whitespace-nowrap">
11
- {{ ui.queueStats.total }}
12
- </span>
10
+ <span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.total }} </span>
13
11
  </div>
14
12
  <div
15
13
  v-if="ui.queueStats.queued"
16
- class="stats-card lg:mb-2 mb-1 text-sm rounded-xl lg:p-3 p-2 lg:gap-3 gap-2 flex justify-between items-center min-w-0 h-8">
17
- <h2 class="font-bold text-sm flex items-center gap-1 whitespace-nowrap">
18
- <SkiIcon />
19
- Queued
20
- </h2>
21
- <span class="text-light-400 text-xs font-black flex items-center justify-center whitespace-nowrap">
22
- {{ ui.queueStats.queued }}
23
- </span>
14
+ class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
15
+ >
16
+ <h2 class="font-bold text-sm flex items-center gap-1"><SkiIcon />Queued</h2>
17
+ <span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.queued }} </span>
24
18
  </div>
25
19
  <div
26
20
  v-if="ui.queueStats.sleeping"
27
- class="stats-card lg:mb-2 mb-1 text-sm rounded-xl lg:p-3 p-2 lg:gap-3 gap-2 flex justify-between items-center min-w-0 h-8">
28
- <h2 class="font-bold text-sm flex items-center gap-1 whitespace-nowrap">
29
- <TimerIcon />
30
- Sleeping
31
- </h2>
32
- <span class="text-light-400 text-xs font-black flex items-center justify-center whitespace-nowrap">
33
- {{ ui.queueStats.sleeping }}
34
- </span>
21
+ class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
22
+ >
23
+ <h2 class="font-bold text-sm flex items-center gap-1"><TimerIcon />Sleeping</h2>
24
+ <span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.sleeping }} </span>
35
25
  </div>
36
26
  <div
37
27
  v-if="ui.queueStats.nextQueuePasses.length > 0"
38
- class="stats-card lg:mb-5 mb-2 rounded-xl text-sm flex justify-between items-center lg:p-3 p-2 lg:gap-3 gap-2 min-w-0 h-8">
39
- <h2 class="font-bold flex text-sm items-center gap-1 whitespace-nowrap">
40
- <CartIcon />
41
- <span class="sm:block hidden">Next Passes</span>
28
+ class="bg-dark-500 mb-5 rounded-lg text-sm flex justify-between lg:p-2 p-1 lg:gap-3 gap-2"
29
+ >
30
+ <h2 class="font-bold flex text-sm items-center gap-1">
31
+ <CartIcon /><span class="sm:block hidden">Next Passes</span>
42
32
  <span class="sm:hidden block">Pass</span>
43
33
  </h2>
44
- <span class="text-light-400 text-xs font-black flex items-center text-right truncate">
45
- {{ ui.queueStats.nextQueuePasses.slice(0, queuePassAmount).join(", ") }}
46
- </span>
34
+ <span class="text-light-400 text-sm font-black">{{
35
+ ui.queueStats.nextQueuePasses.slice(0, queuePassAmount).join(", ")
36
+ }}</span>
47
37
  </div>
48
38
  <!-- <div
49
39
  v-if="ui.queueStats.carts"
50
- class="bg-dark-500 mb-2 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
40
+ class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
51
41
  >
52
42
  <h2 class="font-bold text-sm flex items-center gap-1"><CartIcon />Carts</h2>
53
43
  <span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.sleeping }} </span>
@@ -68,28 +58,9 @@ const getQueuePassAmount = (width) => {
68
58
  return 1;
69
59
  };
70
60
 
61
+ let show = ref(true);
71
62
  let key = ref(0);
72
63
  let queuePassAmount = ref(getQueuePassAmount(window.innerWidth));
73
64
 
74
65
  window.addEventListener("resize", () => (queuePassAmount.value = getQueuePassAmount(window.innerWidth)));
75
66
  </script>
76
- <style lang="scss" scoped>
77
- .stats-card {
78
- @apply bg-dark-500 border border-dark-650 rounded;
79
- transition: all 0.15s ease;
80
-
81
- &:hover {
82
- @apply bg-dark-550 border-dark-700;
83
- }
84
-
85
- h2 {
86
- font-weight: 600;
87
- color: #d4d4d4;
88
- }
89
-
90
- span {
91
- font-weight: 700;
92
- color: #cccccc;
93
- }
94
- }
95
- </style>