@necrolab/dashboard 0.4.61 → 0.4.208

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 +79 -43
  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 +77 -13
  8. package/backend/index.js +2 -2
  9. package/backend/mock-data.js +38 -29
  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 +10 -81
  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 +136 -378
  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 +38 -171
  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 +235 -207
  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,8 +1,9 @@
1
1
  <template>
2
2
  <div class="navbar" :class="{ 'force-z': menuOpen }">
3
- <div :class="['component-container ios-wrapper flex items-center relative', { 'ios-wrapper': landscapeIos }]">
3
+ <div :class="`component-container ios-wrapper flex items-center relative ${landscapeIos ? 'ios-wrapper' : ''}`">
4
4
  <!-- Brand -->
5
- <img src="@/assets/img/logo_trans.png" class="h-6 lg:h-8 mr-4 z-30 object-cover" alt="Logo: Necro" />
5
+ <!-- <h3 class="font-bold text-white mr-4 z-30">Russonoro Labs</h3> -->
6
+ <img src="@/assets/img/logo_trans.png" class="h-6 lg:h-8 mr-4 z-30 object-cover" alt="Logo: Russonoro" />
6
7
  <!-- Navlinks -->
7
8
  <ul class="hidden lg:flex">
8
9
  <li>
@@ -15,16 +16,18 @@
15
16
  <router-link to="/console"><ConsoleIcon /><span class="hidden xl:block">Console</span></router-link>
16
17
  </li>
17
18
  <li>
18
- <router-link to="/profiles">
19
- <GroupIcon class="xl:mr-2" />
20
- <span class="hidden xl:block">Profiles</span>
21
- </router-link>
19
+ <router-link to="/profiles"
20
+ ><img src="/img/groups.svg" class="xl:mr-2" /><span class="hidden xl:block"
21
+ >Profiles</span
22
+ ></router-link
23
+ >
22
24
  </li>
23
25
  <li>
24
- <router-link to="/accounts">
25
- <MailIcon class="xl:mr-2" />
26
- <span class="hidden xl:block">Accounts</span>
27
- </router-link>
26
+ <router-link to="/accounts"
27
+ ><img src="/img/mail.svg" class="xl:mr-2" /><span class="hidden xl:block"
28
+ >Accounts</span
29
+ ></router-link
30
+ >
28
31
  </li>
29
32
  <li>
30
33
  <router-link to="/filter"><FilterIcon /><span class="hidden xl:block">Filter</span></router-link>
@@ -42,6 +45,7 @@
42
45
  <h4 v-else class="hidden lg:block text-white text-sm font-medium">
43
46
  <span class="text-lightgray">Loading </span>
44
47
  </h4>
48
+ <!-- <div class="hidden lg:block w-10 h-10 rounded-full bg-dark-400"></div> -->
45
49
  <img
46
50
  v-if="ui.profile?.profilePicture"
47
51
  :src="ui.profile?.profilePicture"
@@ -72,16 +76,10 @@
72
76
  <router-link to="/console"><ConsoleIcon />Console</router-link>
73
77
  </li>
74
78
  <li @click="toggleMenu">
75
- <router-link to="/profiles">
76
- <GroupIcon class="mr-2" />
77
- Profiles
78
- </router-link>
79
+ <router-link to="/profiles"><img src="/img/groups.svg" class="mr-2" />Profiles</router-link>
79
80
  </li>
80
81
  <li @click="toggleMenu">
81
- <router-link to="/accounts">
82
- <MailIcon class="mr-2" />
83
- Accounts
84
- </router-link>
82
+ <router-link to="/accounts"><img src="/img/mail.svg" class="mr-2" />Accounts</router-link>
85
83
  </li>
86
84
  <li @click="toggleMenu">
87
85
  <router-link to="/filter"><FilterIcon />Filter</router-link>
@@ -97,21 +95,12 @@
97
95
  <span class="text-lightgray">Logged in as </span>
98
96
  <span class="font-black"> {{ ui.profile?.name }}</span>
99
97
  </h4>
98
+ <!-- <div class="w-10 h-10 rounded-full bg-light-300"></div> -->
100
99
  <img :src="ui.profile?.profilePicture" alt="" class="h-10 w-10 rounded-full" />
101
100
  </div>
102
-
103
- <div class="mx-auto mt-6 mb-14 flex gap-3 items-center">
104
- <div
105
- class="bg-gradient-to-r from-dark-400 to-dark-500 rounded-full text-sm shadow-lg p-2 px-4 text-white font-medium border border-light-300"
106
- >
107
- Dashboard v{{ dashVersion }}
108
- </div>
109
- <div
110
- class="bg-gradient-to-r from-dark-400 to-dark-500 rounded-full text-sm shadow-lg p-2 px-4 text-white font-medium border border-light-300"
111
- >
112
- Bot v{{ ui.botVersion }}
113
- </div>
114
- </div>
101
+ <span class="bg-dark-500 rounded-full text-sm shadow-lg p-2 px-3 text-light-400 mx-auto mt-6 mb-14"
102
+ >v{{ version }}</span
103
+ >
115
104
  </div>
116
105
  </transition>
117
106
  </div>
@@ -120,152 +109,39 @@
120
109
  .navbar {
121
110
  @apply border-b py-5 fixed w-full;
122
111
  top: 0;
123
- left: 0;
124
- z-index: 1000;
125
- background: rgba(26, 27, 30, 0.95);
112
+ z-index: 1;
126
113
  backdrop-filter: blur(23px);
127
- -webkit-backdrop-filter: blur(23px);
128
- border-color: #3d3e44;
129
-
130
- // Consistent padding base
131
- padding-top: 1.25rem;
132
- padding-bottom: 1.25rem;
133
-
134
- // Only add safe area top padding for portrait notch devices
135
- @supports (padding-top: env(safe-area-inset-top)) {
136
- @media (max-device-width: 430px) and (orientation: portrait) {
137
- padding-top: max(1.25rem, env(safe-area-inset-top));
138
- }
139
- }
140
-
141
- // Extend background above viewport for notch area with theme gradient
142
- &::before {
143
- content: "";
144
- position: absolute;
145
- top: -100px;
146
- left: 0;
147
- right: 0;
148
- height: 100px;
149
- background: #1a1b1e;
150
- backdrop-filter: blur(8px);
151
- -webkit-backdrop-filter: blur(8px);
152
- z-index: -1;
153
- }
154
-
114
+ border-color: #323340;
155
115
  ul {
156
116
  @apply gap-x-4;
157
-
158
- // Global SVG normalization - force all icons to be identical
159
- svg {
160
- width: 20px !important;
161
- height: 20px !important;
162
- display: block !important;
163
- flex-shrink: 0 !important;
164
- box-sizing: border-box !important;
165
- }
166
-
167
- li a {
168
- @apply flex text-white text-sm items-center rounded-lg;
169
- height: 40px;
170
- border: 1px solid transparent;
171
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
172
- position: relative;
173
-
174
- svg {
175
- @apply mr-2;
176
- }
177
-
178
- &.router-link-exact-active {
179
- border-color: #e2e2e5;
180
- border-top: 2px solid #e2e2e5;
181
- transform: translateY(0px);
182
- box-shadow: 0 2px 4px rgba(226, 226, 229, 0.1);
183
- margin-top: -2px;
184
-
185
- // Mobile styling
186
- @media (max-width: 1023px) {
187
- border: 1px solid #e2e2e5;
188
- transform: translateY(0px);
189
- box-shadow: 0 2px 4px rgba(226, 226, 229, 0.1);
190
- margin-top: 0;
191
- padding: 0.5rem 0.75rem;
192
- border-radius: 0.5rem;
193
- }
194
- }
195
- }
196
-
197
- // Desktop mode (lg to xl): icon-only view with perfect centering
198
- @media (min-width: 1024px) and (max-width: 1279px) {
199
- li a {
200
- width: 40px;
201
- height: 40px;
202
- padding: 0 !important;
203
- display: flex !important;
204
- align-items: center !important;
205
- justify-content: center !important;
206
- position: relative;
207
-
208
- // Hide text completely in icon-only mode
209
- span {
210
- display: none !important;
211
- }
212
-
117
+ li {
118
+ a {
119
+ @apply flex text-white text-sm border-none h-10 items-center px-4 rounded-lg;
213
120
  svg {
214
- margin: 0 !important;
215
- padding: 0 !important;
216
- position: absolute;
217
- top: 50%;
218
- left: 50%;
219
- transform: translate(-50%, -50%);
121
+ @apply mr-2;
220
122
  }
221
-
222
123
  &.router-link-exact-active {
223
- border: 1px solid #e2e2e5 !important;
224
- border-radius: 0.5rem !important;
225
- width: 40px !important;
226
- height: 40px !important;
227
- background: rgba(226, 226, 229, 0.05) !important;
228
- transform: translateY(-1px) !important;
229
- box-shadow: 0 2px 4px rgba(226, 226, 229, 0.1) !important;
230
- margin-top: 0 !important;
231
-
232
- svg {
233
- transform: translate(-50%, calc(-50% - 1px));
234
- }
235
- }
236
- }
237
- }
238
-
239
- // XL and above: full width with text
240
- @media (min-width: 1280px) {
241
- li a {
242
- @apply px-4;
243
- height: 40px;
244
-
245
- svg {
246
- @apply mr-2;
124
+ @apply border-solid border border-light-300;
247
125
  }
248
126
  }
249
127
  }
250
128
  }
251
129
  }
252
-
253
130
  .force-z {
254
131
  z-index: 20000;
255
132
  }
256
-
257
133
  .mobile-menu {
258
- margin-top: 0;
259
- height: 100vh;
260
- height: 100dvh; // Dynamic viewport height for mobile
134
+ margin-top: -81px; // Tuck under Nav
135
+ height: calc(100vh + 40px);
261
136
  will-change: transform, opacity, filter;
262
- @apply bg-dark-400 fixed inset-0 pt-20 pb-8 w-full z-10;
263
-
264
- ul li {
265
- @apply mb-4 mx-auto;
266
137
 
267
- a {
268
- font-size: 20px !important;
138
+ @apply bg-dark-400 absolute pt-16 pb-8 w-full z-10;
139
+ ul {
140
+ li {
141
+ @apply mb-4 mx-auto;
142
+ a {
143
+ font-size: 20px !important;
144
+ }
269
145
  }
270
146
  }
271
147
  }
@@ -274,16 +150,7 @@
274
150
  <script setup>
275
151
  import { storeToRefs } from "pinia";
276
152
  import { ref } from "vue";
277
- import {
278
- EditIcon,
279
- ConsoleIcon,
280
- TasksIcon,
281
- LogoutIcon,
282
- MenuIcon,
283
- FilterIcon,
284
- GroupIcon,
285
- MailIcon
286
- } from "@/components/icons";
153
+ import { EditIcon, ConsoleIcon, TasksIcon, LogoutIcon, MenuIcon, FilterIcon } from "@/components/icons";
287
154
  import { useUIStore } from "@/stores/ui";
288
155
  import router from "@/router/index";
289
156
  import CountryChooser from "@/components/ui/controls/CountryChooser.vue";
@@ -308,7 +175,7 @@ window.matchMedia("(orientation: portrait)").addEventListener("change", (e) => {
308
175
  else landscapeIos.value = false;
309
176
  });
310
177
 
311
- const dashVersion = __APP_VERSION__;
178
+ const version = __APP_VERSION__;
312
179
  const ui = useUIStore();
313
180
  const menuOpen = storeToRefs(ui).menuOpen;
314
181
  const toggleMenu = () => {