@necrolab/dashboard 0.4.221 → 0.5.2
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/.prettierrc +27 -1
- package/.vscode/extensions.json +1 -1
- package/README.md +64 -2
- package/artwork/image.png +0 -0
- package/backend/api.js +26 -24
- package/backend/auth.js +2 -2
- package/backend/batching.js +1 -1
- package/backend/endpoints.js +8 -11
- package/backend/index.js +2 -2
- package/backend/mock-data.js +27 -36
- package/backend/mock-src/classes/logger.js +5 -7
- package/backend/mock-src/classes/utils.js +3 -2
- package/backend/mock-src/ticketmaster.js +4 -4
- package/backend/validator.js +2 -2
- package/config/configs.json +0 -1
- package/dev-server.js +134 -0
- package/exit +209 -0
- package/index.html +80 -8
- package/index.js +1 -1
- package/jsconfig.json +16 -0
- package/package.json +39 -25
- package/postcss.config.js +1 -1
- package/postinstall.js +124 -20
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/img/logo_trans.png +0 -0
- package/public/img/necro_logo.png +0 -0
- package/public/manifest.json +16 -10
- package/public/reconnect-logo.png +0 -0
- package/run +176 -9
- package/src/App.vue +498 -85
- package/src/assets/css/base/reset.scss +43 -0
- package/src/assets/css/base/scroll.scss +114 -0
- package/src/assets/css/base/typography.scss +37 -0
- package/src/assets/css/components/buttons.scss +216 -0
- package/src/assets/css/components/forms.scss +221 -0
- package/src/assets/css/components/modals.scss +13 -0
- package/src/assets/css/components/tables.scss +27 -0
- package/src/assets/css/components/toasts.scss +100 -0
- package/src/assets/css/main.scss +202 -122
- package/src/assets/img/background.svg +2 -2
- package/src/assets/img/background.svg.backup +11 -0
- package/src/assets/img/logo_trans.png +0 -0
- package/src/components/Auth/LoginForm.vue +95 -11
- package/src/components/Editors/Account/Account.vue +116 -40
- package/src/components/Editors/Account/AccountCreator.vue +88 -39
- package/src/components/Editors/Account/AccountView.vue +102 -34
- package/src/components/Editors/Account/CreateAccount.vue +80 -32
- package/src/components/Editors/Profile/CreateProfile.vue +269 -83
- package/src/components/Editors/Profile/Profile.vue +132 -47
- package/src/components/Editors/Profile/ProfileCountryChooser.vue +82 -20
- package/src/components/Editors/Profile/ProfileView.vue +89 -32
- package/src/components/Editors/TagLabel.vue +67 -6
- package/src/components/Editors/TagToggle.vue +7 -2
- package/src/components/Filter/Filter.vue +288 -71
- package/src/components/Filter/FilterPreview.vue +202 -31
- package/src/components/Filter/PriceSortToggle.vue +76 -6
- package/src/components/Table/Header.vue +1 -1
- package/src/components/Table/Row.vue +1 -1
- package/src/components/Table/Table.vue +19 -2
- package/src/components/Tasks/CheckStock.vue +6 -8
- package/src/components/Tasks/Controls/DesktopControls.vue +27 -17
- package/src/components/Tasks/Controls/MobileControls.vue +8 -45
- package/src/components/Tasks/CreateTaskAXS.vue +80 -72
- package/src/components/Tasks/CreateTaskTM.vue +95 -141
- package/src/components/Tasks/MassEdit.vue +4 -6
- package/src/components/Tasks/QuickSettings.vue +199 -30
- package/src/components/Tasks/ScrapeVenue.vue +5 -6
- package/src/components/Tasks/Stats.vue +50 -24
- package/src/components/Tasks/Task.vue +384 -179
- package/src/components/Tasks/TaskLabel.vue +2 -2
- package/src/components/Tasks/TaskView.vue +136 -48
- package/src/components/Tasks/Utilities.vue +25 -10
- package/src/components/Tasks/ViewTask.vue +321 -0
- package/src/components/icons/Bag.vue +1 -1
- package/src/components/icons/Check.vue +5 -0
- package/src/components/icons/Close.vue +21 -0
- package/src/components/icons/CloseX.vue +5 -0
- package/src/components/icons/Eye.vue +6 -0
- package/src/components/icons/Key.vue +21 -0
- package/src/components/icons/Loyalty.vue +1 -1
- package/src/components/icons/Mail.vue +2 -2
- package/src/components/icons/Pencil.vue +21 -0
- package/src/components/icons/Play.vue +2 -2
- package/src/components/icons/Profile.vue +18 -0
- package/src/components/icons/Reload.vue +4 -5
- package/src/components/icons/Sandclock.vue +2 -2
- package/src/components/icons/Sell.vue +21 -0
- package/src/components/icons/Spinner.vue +42 -0
- package/src/components/icons/SquareCheck.vue +18 -0
- package/src/components/icons/SquareUncheck.vue +18 -0
- package/src/components/icons/Stadium.vue +1 -1
- package/src/components/icons/Wildcard.vue +18 -0
- package/src/components/icons/index.js +26 -1
- package/src/components/ui/Modal.vue +107 -13
- package/src/components/ui/Navbar.vue +175 -40
- package/src/components/ui/ReconnectIndicator.vue +351 -55
- package/src/components/ui/Splash.vue +5 -35
- package/src/components/ui/controls/CountryChooser.vue +200 -62
- package/src/components/ui/controls/atomic/Checkbox.vue +119 -10
- package/src/components/ui/controls/atomic/Dropdown.vue +216 -39
- package/src/components/ui/controls/atomic/LoadingButton.vue +45 -0
- package/src/components/ui/controls/atomic/MultiDropdown.vue +300 -37
- package/src/components/ui/controls/atomic/Switch.vue +53 -25
- package/src/composables/useClickOutside.js +21 -0
- package/src/composables/useDropdownPosition.js +174 -0
- package/src/libs/Filter.js +60 -24
- package/src/registerServiceWorker.js +1 -1
- package/src/stores/connection.js +4 -4
- package/src/stores/sampleData.js +172 -199
- package/src/stores/ui.js +55 -20
- package/src/stores/utils.js +30 -4
- package/src/types/index.js +41 -0
- package/src/utils/debug.js +1 -0
- package/src/views/Accounts.vue +116 -50
- package/src/views/Console.vue +394 -77
- package/src/views/Editor.vue +1176 -123
- package/src/views/FilterBuilder.vue +528 -250
- package/src/views/Login.vue +75 -14
- package/src/views/Profiles.vue +119 -34
- package/src/views/Tasks.vue +266 -98
- package/static/offline.html +192 -50
- package/switch-branch.sh +41 -0
- package/tailwind.config.js +119 -27
- package/vite.config.js +73 -16
- package/workbox-config.cjs +63 -0
- package/ICONS.md +0 -21
- package/public/img/background.svg +0 -14
- package/public/img/logo.png +0 -0
- package/public/img/logo_icon.png +0 -0
- package/public/img/logo_icon_2.png +0 -0
- package/src/assets/css/_input.scss +0 -143
- package/src/assets/img/logo.png +0 -0
- package/src/assets/img/logo_icon.png +0 -0
- package/src/assets/img/logo_icon_2.png +0 -0
- package/vue.config.js +0 -32
- package/workbox-config.js +0 -7
|
@@ -9,63 +9,71 @@
|
|
|
9
9
|
<div
|
|
10
10
|
v-for="(value, keyName) in category"
|
|
11
11
|
:key="keyName"
|
|
12
|
-
class="
|
|
12
|
+
class="input-container"
|
|
13
13
|
>
|
|
14
|
-
<span class="w-1/3">{{ keyName }}</span>
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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>
|
|
21
23
|
</div>
|
|
22
24
|
</div>
|
|
23
25
|
|
|
24
|
-
<div
|
|
25
|
-
|
|
26
|
-
>
|
|
27
|
-
<span class="w-1/3">Checkout Proxies</span>
|
|
26
|
+
<div class="text-light-400 mb-2 mt-4">Proxy Lists</div>
|
|
27
|
+
|
|
28
|
+
<div class="input-container relative-positioned z-tooltip">
|
|
29
|
+
<span class="w-1/3 text-light-300 font-medium text-xs">Checkout Proxies</span>
|
|
28
30
|
<Dropdown
|
|
29
|
-
class="
|
|
31
|
+
class="!w-2/3"
|
|
32
|
+
variant="transparent"
|
|
30
33
|
:default="ui.profile.proxyList?.checkout || proxyLists[0]"
|
|
34
|
+
:value="ui.profile.proxyList?.checkout"
|
|
31
35
|
:options="proxyLists"
|
|
32
36
|
:onClick="(f) => saveProxyListUpate('checkout', f)"
|
|
33
37
|
:allowDefault="false"
|
|
34
|
-
rightAmount="right-3"
|
|
35
38
|
/>
|
|
36
39
|
</div>
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
class="
|
|
40
|
-
>
|
|
41
|
-
<span class="w-1/3">Queue Proxies</span>
|
|
41
|
+
<div class="input-container relative-positioned z-dropdown">
|
|
42
|
+
<span class="w-1/3 text-light-300 font-medium text-xs">Queue Proxies</span>
|
|
42
43
|
<Dropdown
|
|
43
|
-
class="
|
|
44
|
+
class="!w-2/3"
|
|
45
|
+
variant="transparent"
|
|
44
46
|
:default="ui.profile.proxyList?.queue || proxyLists[0]"
|
|
45
|
-
:
|
|
47
|
+
:value="ui.profile.proxyList?.queue"
|
|
46
48
|
:options="proxyLists"
|
|
49
|
+
:onClick="(f) => saveProxyListUpate('queue', f)"
|
|
47
50
|
:allowDefault="false"
|
|
48
|
-
rightAmount="right-3"
|
|
49
51
|
/>
|
|
50
52
|
</div>
|
|
51
|
-
<div class="flex mt-5 justify-between flex-row items-center">
|
|
52
|
-
<div>
|
|
53
|
-
<
|
|
54
|
-
|
|
53
|
+
<div class="flex mt-5 justify-between flex-row items-center quicksettings-bottom">
|
|
54
|
+
<div class="flex gap-3 items-center quicksettings-versions">
|
|
55
|
+
<div class="version-badge">
|
|
56
|
+
<span class="version-label">Dashboard</span>
|
|
57
|
+
<span class="version-number">v{{ version }}</span>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="version-badge">
|
|
60
|
+
<span class="version-label">Bot</span>
|
|
61
|
+
<span class="version-number">v{{ ui.botVersion }}</span>
|
|
62
|
+
</div>
|
|
55
63
|
</div>
|
|
56
64
|
|
|
57
|
-
<div class="flex gap-
|
|
65
|
+
<div class="flex gap-3 quicksettings-buttons">
|
|
58
66
|
<button
|
|
59
|
-
class="
|
|
67
|
+
class="quicksettings-btn bg-dark-400 flex items-center justify-center gap-x-2"
|
|
60
68
|
@click="checkBalances()"
|
|
61
69
|
>
|
|
62
|
-
Balances <img src="@/assets/img/sell.svg" width="
|
|
70
|
+
Balances <img src="@/assets/img/sell.svg" width="12" />
|
|
63
71
|
</button>
|
|
64
72
|
<button
|
|
65
|
-
class="
|
|
73
|
+
class="quicksettings-btn bg-dark-400 flex items-center justify-center gap-x-2"
|
|
66
74
|
@click="done(true)"
|
|
67
75
|
>
|
|
68
|
-
Save <img src="/img/save.svg" width="
|
|
76
|
+
Save <img src="/img/save.svg" width="12" class="invert" />
|
|
69
77
|
</button>
|
|
70
78
|
</div>
|
|
71
79
|
</div>
|
|
@@ -81,6 +89,167 @@
|
|
|
81
89
|
.transparent {
|
|
82
90
|
background: transparent !important;
|
|
83
91
|
}
|
|
92
|
+
|
|
93
|
+
.input-container {
|
|
94
|
+
@apply text-white bg-dark-500 mb-3 px-3 rounded-lg border-dark-550 border-2 flex items-center justify-between h-10;
|
|
95
|
+
overflow: visible;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.quick-settings-input {
|
|
99
|
+
@apply w-full h-full text-sm text-white bg-transparent border-0 outline-none px-2 py-1 transition-colors duration-150;
|
|
100
|
+
|
|
101
|
+
&:focus {
|
|
102
|
+
@apply outline-none border-0 shadow-none bg-transparent;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
&:hover:not(:focus) {
|
|
106
|
+
background: transparent;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&::placeholder {
|
|
110
|
+
color: oklch(0.50 0 0);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.input-container:hover {
|
|
115
|
+
border-color: oklch(0.30 0 0);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.input-container:focus-within {
|
|
119
|
+
border-color: oklch(0.72 0.15 145) !important;
|
|
120
|
+
outline: 1px solid oklch(0.72 0.15 145);
|
|
121
|
+
outline-offset: 0;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* iPhone portrait mode fixes */
|
|
125
|
+
@media (max-width: 430px) and (orientation: portrait) {
|
|
126
|
+
.quicksettings-bottom {
|
|
127
|
+
flex-direction: column;
|
|
128
|
+
gap: 1rem;
|
|
129
|
+
align-items: stretch;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.quicksettings-versions {
|
|
133
|
+
justify-content: center;
|
|
134
|
+
flex-wrap: wrap;
|
|
135
|
+
gap: 0.5rem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.quicksettings-versions > div {
|
|
139
|
+
flex: 1;
|
|
140
|
+
min-width: 120px;
|
|
141
|
+
text-align: center;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.quicksettings-buttons {
|
|
145
|
+
justify-content: center;
|
|
146
|
+
gap: 0.75rem;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.quicksettings-buttons button {
|
|
150
|
+
width: 5rem;
|
|
151
|
+
padding-left: 0.5rem;
|
|
152
|
+
padding-right: 0.5rem;
|
|
153
|
+
gap: 0.25rem;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.quicksettings-buttons button img {
|
|
157
|
+
width: 12px;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Dropdowns are teleported to body, so modal can scroll normally */
|
|
162
|
+
|
|
163
|
+
/* Dropdown styling fixes */
|
|
164
|
+
:deep(.dropdown) {
|
|
165
|
+
background: transparent !important;
|
|
166
|
+
border: none !important;
|
|
167
|
+
box-shadow: none !important;
|
|
168
|
+
padding: 0 !important;
|
|
169
|
+
height: 40px !important;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:deep(.dropdown:hover),
|
|
173
|
+
:deep(.dropdown:focus-within) {
|
|
174
|
+
border: none !important;
|
|
175
|
+
background: transparent !important;
|
|
176
|
+
box-shadow: none !important;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:deep(.dropdown-display) {
|
|
180
|
+
height: 100%;
|
|
181
|
+
padding: 0.625rem;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
:deep(.dropdown-value) {
|
|
185
|
+
font-size: 0.875rem;
|
|
186
|
+
line-height: 1.25rem;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
:deep(.dropdown-menu-portal) {
|
|
190
|
+
z-index: 26000 !important;
|
|
191
|
+
max-height: 200px !important;
|
|
192
|
+
overflow-y: auto !important;
|
|
193
|
+
overscroll-behavior: contain !important;
|
|
194
|
+
touch-action: pan-y !important;
|
|
195
|
+
-webkit-overflow-scrolling: touch !important;
|
|
196
|
+
border: 1px solid oklch(0.26 0 0) !important;
|
|
197
|
+
background: linear-gradient(135deg, oklch(0.18 0 0) 0%, oklch(0.20 0 0) 100%) !important;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
:deep(.dropdown-item) {
|
|
201
|
+
padding: 0.625rem 1rem;
|
|
202
|
+
font-size: 0.875rem;
|
|
203
|
+
line-height: 1.25rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Ensure proper z-index stacking */
|
|
207
|
+
.z-tooltip {
|
|
208
|
+
z-index: 100 !important;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.z-dropdown {
|
|
212
|
+
z-index: 90 !important;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* QuickSettings compact buttons */
|
|
216
|
+
.quicksettings-btn {
|
|
217
|
+
@apply rounded transition-all duration-150;
|
|
218
|
+
background: oklch(0.2046 0 0);
|
|
219
|
+
border: 2px solid oklch(0.2809 0 0);
|
|
220
|
+
color: oklch(0.90 0 0);
|
|
221
|
+
height: 2.5rem;
|
|
222
|
+
width: 6.5rem;
|
|
223
|
+
font-size: 0.75rem;
|
|
224
|
+
font-weight: 500;
|
|
225
|
+
|
|
226
|
+
&:hover {
|
|
227
|
+
border-color: oklch(0.72 0.15 145);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
&:active, &:focus {
|
|
231
|
+
border-color: oklch(0.72 0.15 145);
|
|
232
|
+
outline: 1px solid oklch(0.72 0.15 145);
|
|
233
|
+
outline-offset: 0;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* Version badges */
|
|
238
|
+
.version-badge {
|
|
239
|
+
@apply flex items-center gap-x-2 px-3 py-2 rounded-lg border;
|
|
240
|
+
background: oklch(0.2046 0 0);
|
|
241
|
+
border-color: oklch(0.2809 0 0);
|
|
242
|
+
|
|
243
|
+
.version-label {
|
|
244
|
+
@apply text-xs font-medium;
|
|
245
|
+
color: oklch(0.65 0 0);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.version-number {
|
|
249
|
+
@apply text-xs font-bold;
|
|
250
|
+
color: oklch(0.72 0.15 145);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
84
253
|
</style>
|
|
85
254
|
<script setup>
|
|
86
255
|
import Modal from "@/components/ui/Modal.vue";
|
|
@@ -4,19 +4,18 @@
|
|
|
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">
|
|
7
|
+
<div class="input-default required">
|
|
8
8
|
<input
|
|
9
9
|
:placeholder="!isEU(ui.currentCountry.siteId) ? '102PDA9125510GYU' : '529171'"
|
|
10
10
|
v-model="eventId"
|
|
11
11
|
/>
|
|
12
|
-
<span class="text-red-400 my-auto mr-2 mt-3">* </span>
|
|
13
12
|
</div>
|
|
14
13
|
</div>
|
|
15
14
|
<button
|
|
16
|
-
class="button-default
|
|
17
|
-
@click="done()"
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
class="button-default ml-auto mt-4 flex w-48 items-center justify-center gap-x-2 bg-dark-400 text-xs"
|
|
16
|
+
@click="done()">
|
|
17
|
+
Scrape Venue
|
|
18
|
+
<ScrapeIcon />
|
|
20
19
|
</button>
|
|
21
20
|
</Modal>
|
|
22
21
|
</template>
|
|
@@ -1,43 +1,53 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="flex
|
|
2
|
+
<div class="flex items-center gap-1 font-bold text-white lg:gap-3" v-if="ui.queueStats.show" :key="key">
|
|
3
3
|
<div
|
|
4
4
|
v-if="ui.queueStats.total"
|
|
5
|
-
class="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
5
|
+
class="stats-card flex h-10 min-w-0 items-center justify-between gap-2 rounded-lg px-3 text-sm">
|
|
6
|
+
<h2 class="flex items-center gap-1 whitespace-nowrap text-sm font-bold">
|
|
7
|
+
<img width="14px" src="@/assets/img/wildcard.svg" />
|
|
8
|
+
<span class="hidden md:inline">Total</span>
|
|
9
9
|
</h2>
|
|
10
|
-
<span class="
|
|
10
|
+
<span class="flex items-center justify-center whitespace-nowrap text-xs font-black text-light-400">
|
|
11
|
+
{{ ui.queueStats.total }}
|
|
12
|
+
</span>
|
|
11
13
|
</div>
|
|
12
14
|
<div
|
|
13
15
|
v-if="ui.queueStats.queued"
|
|
14
|
-
class="
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
class="stats-card flex h-10 min-w-0 items-center justify-between gap-2 rounded-lg px-3 text-sm">
|
|
17
|
+
<h2 class="flex items-center gap-1 whitespace-nowrap text-sm font-bold">
|
|
18
|
+
<SkiIcon />
|
|
19
|
+
<span class="hidden md:inline">Queued</span>
|
|
20
|
+
</h2>
|
|
21
|
+
<span class="flex items-center justify-center whitespace-nowrap text-xs font-black text-light-400">
|
|
22
|
+
{{ ui.queueStats.queued }}
|
|
23
|
+
</span>
|
|
18
24
|
</div>
|
|
19
25
|
<div
|
|
20
26
|
v-if="ui.queueStats.sleeping"
|
|
21
|
-
class="
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
class="stats-card flex h-10 min-w-0 items-center justify-between gap-2 rounded-lg px-3 text-sm">
|
|
28
|
+
<h2 class="flex items-center gap-1 whitespace-nowrap text-sm font-bold">
|
|
29
|
+
<TimerIcon />
|
|
30
|
+
<span class="hidden md:inline">Sleeping</span>
|
|
31
|
+
</h2>
|
|
32
|
+
<span class="flex items-center justify-center whitespace-nowrap text-xs font-black text-light-400">
|
|
33
|
+
{{ ui.queueStats.sleeping }}
|
|
34
|
+
</span>
|
|
25
35
|
</div>
|
|
26
36
|
<div
|
|
27
37
|
v-if="ui.queueStats.nextQueuePasses.length > 0"
|
|
28
|
-
class="
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
<span class="sm:hidden
|
|
38
|
+
class="stats-card mb-2 flex h-8 min-w-0 items-center justify-between gap-2 rounded-xl p-2 text-sm lg:mb-5 lg:gap-3 lg:p-3">
|
|
39
|
+
<h2 class="flex items-center gap-1 whitespace-nowrap text-sm font-bold">
|
|
40
|
+
<CartIcon />
|
|
41
|
+
<span class="hidden sm:block">Next Passes</span>
|
|
42
|
+
<span class="block sm:hidden">Pass</span>
|
|
33
43
|
</h2>
|
|
34
|
-
<span class="text-
|
|
35
|
-
ui.queueStats.nextQueuePasses.slice(0, queuePassAmount).join(", ")
|
|
36
|
-
|
|
44
|
+
<span class="flex items-center truncate text-right text-xs font-black text-light-400">
|
|
45
|
+
{{ ui.queueStats.nextQueuePasses.slice(0, queuePassAmount).join(", ") }}
|
|
46
|
+
</span>
|
|
37
47
|
</div>
|
|
38
48
|
<!-- <div
|
|
39
49
|
v-if="ui.queueStats.carts"
|
|
40
|
-
class="bg-dark-500 mb-
|
|
50
|
+
class="bg-dark-500 mb-2 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
|
|
41
51
|
>
|
|
42
52
|
<h2 class="font-bold text-sm flex items-center gap-1"><CartIcon />Carts</h2>
|
|
43
53
|
<span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.sleeping }} </span>
|
|
@@ -58,9 +68,25 @@ const getQueuePassAmount = (width) => {
|
|
|
58
68
|
return 1;
|
|
59
69
|
};
|
|
60
70
|
|
|
61
|
-
let show = ref(true);
|
|
62
71
|
let key = ref(0);
|
|
63
72
|
let queuePassAmount = ref(getQueuePassAmount(window.innerWidth));
|
|
64
73
|
|
|
65
74
|
window.addEventListener("resize", () => (queuePassAmount.value = getQueuePassAmount(window.innerWidth)));
|
|
66
75
|
</script>
|
|
76
|
+
<style lang="scss" scoped>
|
|
77
|
+
.stats-card {
|
|
78
|
+
@apply rounded;
|
|
79
|
+
background: oklch(0.2046 0 0);
|
|
80
|
+
border: 2px solid oklch(0.2809 0 0);
|
|
81
|
+
|
|
82
|
+
h2 {
|
|
83
|
+
font-weight: 600;
|
|
84
|
+
color: oklch(0.90 0 0);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
span {
|
|
88
|
+
font-weight: 700;
|
|
89
|
+
color: oklch(0.90 0 0);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
</style>
|