@necrolab/dashboard 0.4.220 → 0.5.1

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 (140) hide show
  1. package/.prettierrc +27 -1
  2. package/.vscode/extensions.json +1 -1
  3. package/README.md +64 -2
  4. package/artwork/image.png +0 -0
  5. package/backend/api.js +26 -24
  6. package/backend/auth.js +2 -2
  7. package/backend/batching.js +1 -1
  8. package/backend/endpoints.js +8 -11
  9. package/backend/index.js +2 -2
  10. package/backend/mock-data.js +27 -36
  11. package/backend/mock-src/classes/logger.js +5 -7
  12. package/backend/mock-src/classes/utils.js +3 -2
  13. package/backend/mock-src/ticketmaster.js +4 -4
  14. package/backend/validator.js +2 -2
  15. package/config/configs.json +0 -1
  16. package/dev-server.js +134 -0
  17. package/exit +209 -0
  18. package/index.html +78 -8
  19. package/index.js +1 -1
  20. package/jsconfig.json +16 -0
  21. package/package.json +39 -25
  22. package/postcss.config.js +1 -1
  23. package/postinstall.js +124 -20
  24. package/public/android-chrome-192x192.png +0 -0
  25. package/public/android-chrome-512x512.png +0 -0
  26. package/public/apple-touch-icon.png +0 -0
  27. package/public/favicon-16x16.png +0 -0
  28. package/public/favicon-32x32.png +0 -0
  29. package/public/favicon.ico +0 -0
  30. package/public/img/logo_trans.png +0 -0
  31. package/public/img/necro_logo.png +0 -0
  32. package/public/manifest.json +16 -10
  33. package/run +176 -9
  34. package/src/App.vue +498 -85
  35. package/src/assets/css/base/reset.scss +43 -0
  36. package/src/assets/css/base/scroll.scss +114 -0
  37. package/src/assets/css/base/typography.scss +37 -0
  38. package/src/assets/css/components/buttons.scss +216 -0
  39. package/src/assets/css/components/forms.scss +221 -0
  40. package/src/assets/css/components/modals.scss +13 -0
  41. package/src/assets/css/components/tables.scss +27 -0
  42. package/src/assets/css/components/toasts.scss +100 -0
  43. package/src/assets/css/main.scss +201 -122
  44. package/src/assets/img/background.svg +2 -2
  45. package/src/assets/img/background.svg.backup +11 -0
  46. package/src/assets/img/logo_trans.png +0 -0
  47. package/src/components/Auth/LoginForm.vue +62 -11
  48. package/src/components/Editors/Account/Account.vue +116 -40
  49. package/src/components/Editors/Account/AccountCreator.vue +88 -39
  50. package/src/components/Editors/Account/AccountView.vue +102 -34
  51. package/src/components/Editors/Account/CreateAccount.vue +80 -32
  52. package/src/components/Editors/Profile/CreateProfile.vue +269 -83
  53. package/src/components/Editors/Profile/Profile.vue +132 -47
  54. package/src/components/Editors/Profile/ProfileCountryChooser.vue +82 -20
  55. package/src/components/Editors/Profile/ProfileView.vue +89 -32
  56. package/src/components/Editors/TagLabel.vue +67 -6
  57. package/src/components/Editors/TagToggle.vue +7 -2
  58. package/src/components/Filter/Filter.vue +288 -71
  59. package/src/components/Filter/FilterPreview.vue +202 -31
  60. package/src/components/Filter/PriceSortToggle.vue +76 -6
  61. package/src/components/Table/Header.vue +1 -1
  62. package/src/components/Table/Row.vue +1 -1
  63. package/src/components/Table/Table.vue +19 -2
  64. package/src/components/Tasks/CheckStock.vue +6 -8
  65. package/src/components/Tasks/Controls/DesktopControls.vue +27 -17
  66. package/src/components/Tasks/Controls/MobileControls.vue +8 -45
  67. package/src/components/Tasks/CreateTaskAXS.vue +80 -72
  68. package/src/components/Tasks/CreateTaskTM.vue +95 -141
  69. package/src/components/Tasks/MassEdit.vue +4 -6
  70. package/src/components/Tasks/QuickSettings.vue +199 -30
  71. package/src/components/Tasks/ScrapeVenue.vue +5 -6
  72. package/src/components/Tasks/Stats.vue +50 -24
  73. package/src/components/Tasks/Task.vue +384 -179
  74. package/src/components/Tasks/TaskLabel.vue +2 -2
  75. package/src/components/Tasks/TaskView.vue +136 -48
  76. package/src/components/Tasks/Utilities.vue +25 -10
  77. package/src/components/Tasks/ViewTask.vue +321 -0
  78. package/src/components/icons/Bag.vue +1 -1
  79. package/src/components/icons/Check.vue +5 -0
  80. package/src/components/icons/Close.vue +21 -0
  81. package/src/components/icons/CloseX.vue +5 -0
  82. package/src/components/icons/Eye.vue +6 -0
  83. package/src/components/icons/Key.vue +21 -0
  84. package/src/components/icons/Loyalty.vue +1 -1
  85. package/src/components/icons/Mail.vue +2 -2
  86. package/src/components/icons/Pencil.vue +21 -0
  87. package/src/components/icons/Play.vue +2 -2
  88. package/src/components/icons/Profile.vue +18 -0
  89. package/src/components/icons/Reload.vue +4 -5
  90. package/src/components/icons/Sandclock.vue +2 -2
  91. package/src/components/icons/Sell.vue +21 -0
  92. package/src/components/icons/Spinner.vue +42 -0
  93. package/src/components/icons/SquareCheck.vue +18 -0
  94. package/src/components/icons/SquareUncheck.vue +18 -0
  95. package/src/components/icons/Stadium.vue +1 -1
  96. package/src/components/icons/Wildcard.vue +18 -0
  97. package/src/components/icons/index.js +26 -1
  98. package/src/components/ui/Modal.vue +107 -13
  99. package/src/components/ui/Navbar.vue +175 -40
  100. package/src/components/ui/ReconnectIndicator.vue +351 -55
  101. package/src/components/ui/Splash.vue +5 -35
  102. package/src/components/ui/controls/CountryChooser.vue +200 -62
  103. package/src/components/ui/controls/atomic/Checkbox.vue +119 -10
  104. package/src/components/ui/controls/atomic/Dropdown.vue +216 -39
  105. package/src/components/ui/controls/atomic/LoadingButton.vue +45 -0
  106. package/src/components/ui/controls/atomic/MultiDropdown.vue +300 -37
  107. package/src/components/ui/controls/atomic/Switch.vue +53 -25
  108. package/src/composables/useClickOutside.js +21 -0
  109. package/src/composables/useDropdownPosition.js +174 -0
  110. package/src/libs/Filter.js +60 -24
  111. package/src/registerServiceWorker.js +1 -1
  112. package/src/stores/connection.js +4 -4
  113. package/src/stores/sampleData.js +172 -199
  114. package/src/stores/ui.js +55 -20
  115. package/src/stores/utils.js +30 -4
  116. package/src/types/index.js +41 -0
  117. package/src/utils/debug.js +1 -0
  118. package/src/views/Accounts.vue +116 -50
  119. package/src/views/Console.vue +394 -79
  120. package/src/views/Editor.vue +1176 -123
  121. package/src/views/FilterBuilder.vue +528 -250
  122. package/src/views/Login.vue +76 -14
  123. package/src/views/Profiles.vue +119 -34
  124. package/src/views/Tasks.vue +266 -98
  125. package/static/offline.html +192 -50
  126. package/switch-branch.sh +41 -0
  127. package/tailwind.config.js +119 -27
  128. package/vite.config.js +73 -16
  129. package/workbox-config.cjs +63 -0
  130. package/ICONS.md +0 -21
  131. package/public/img/background.svg +0 -14
  132. package/public/img/logo.png +0 -0
  133. package/public/img/logo_icon.png +0 -0
  134. package/public/img/logo_icon_2.png +0 -0
  135. package/src/assets/css/_input.scss +0 -143
  136. package/src/assets/img/logo.png +0 -0
  137. package/src/assets/img/logo_icon.png +0 -0
  138. package/src/assets/img/logo_icon_2.png +0 -0
  139. package/vue.config.js +0 -32
  140. package/workbox-config.js +0 -7
@@ -0,0 +1,6 @@
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
3
+ <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
4
+ <circle cx="12" cy="12" r="3"></circle>
5
+ </svg>
6
+ </template>
@@ -0,0 +1,21 @@
1
+ <template>
2
+ <svg
3
+ width="16"
4
+ height="9"
5
+ viewBox="0 0 16 9"
6
+ fill="none"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ class="key-icon"
9
+ >
10
+ <path
11
+ d="M4.44791 5.89583C4.09843 5.89583 3.79936 5.77129 3.5507 5.52221C3.30161 5.27355 3.17707 4.97448 3.17707 4.625C3.17707 4.27552 3.30161 3.97624 3.5507 3.72716C3.79936 3.4785 4.09843 3.35417 4.44791 3.35417C4.79739 3.35417 5.09645 3.4785 5.34511 3.72716C5.5942 3.97624 5.71874 4.27552 5.71874 4.625C5.71874 4.97448 5.5942 5.27355 5.34511 5.52221C5.09645 5.77129 4.79739 5.89583 4.44791 5.89583ZM4.44791 8.4375C3.38888 8.4375 2.4887 8.06684 1.74739 7.32552C1.00607 6.5842 0.635406 5.68403 0.635406 4.625C0.635406 3.56597 1.00607 2.6658 1.74739 1.92448C2.4887 1.18316 3.38888 0.8125 4.44791 0.8125C5.15745 0.8125 5.80092 0.987239 6.3783 1.33672C6.95526 1.6862 7.41318 2.14688 7.75207 2.71875H13.3437L15.25 4.625L12.3906 7.48438L11.1198 6.53125L9.84895 7.48438L8.49869 6.53125H7.75207C7.41318 7.10313 6.95526 7.5638 6.3783 7.91328C5.80092 8.26276 5.15745 8.4375 4.44791 8.4375ZM4.44791 7.16667C5.04096 7.16667 5.56264 6.98663 6.01294 6.62656C6.46281 6.26649 6.76188 5.81111 6.91015 5.26042H8.89582L9.81718 5.91172L11.1198 4.94271L12.2476 5.81641L13.4391 4.625L12.8036 3.98958H6.91015C6.76188 3.43889 6.46281 2.98351 6.01294 2.62344C5.56264 2.26337 5.04096 2.08333 4.44791 2.08333C3.74895 2.08333 3.1506 2.33221 2.65285 2.82995C2.15511 3.32769 1.90624 3.92604 1.90624 4.625C1.90624 5.32396 2.15511 5.92231 2.65285 6.42005C3.1506 6.9178 3.74895 7.16667 4.44791 7.16667Z"
12
+ fill="currentColor"
13
+ />
14
+ </svg>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .key-icon {
19
+ @apply w-4 h-4;
20
+ }
21
+ </style>
@@ -2,7 +2,7 @@
2
2
  <svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
3
3
  <path
4
4
  d="M9.29168 12.854L12.0625 10.0831C12.2076 9.93799 12.3232 9.76646 12.4093 9.56855C12.4948 9.37063 12.5375 9.15952 12.5375 8.93521C12.5375 8.4866 12.3792 8.10396 12.0625 7.7873C11.7458 7.47063 11.3632 7.3123 10.9146 7.3123C10.6639 7.3123 10.4166 7.38487 10.1728 7.53C9.92844 7.67514 9.63473 7.91924 9.29168 8.2623C8.89584 7.89285 8.58577 7.64216 8.36147 7.51021C8.13716 7.37827 7.90626 7.3123 7.66876 7.3123C7.22015 7.3123 6.83751 7.47063 6.52084 7.7873C6.20418 8.10396 6.04584 8.4866 6.04584 8.93521C6.04584 9.15952 6.08859 9.37063 6.17409 9.56855C6.26012 9.76646 6.3757 9.93799 6.52084 10.0831L9.29168 12.854ZM10.2813 15.9415C9.97779 16.2449 9.60175 16.3967 9.15314 16.3967C8.70452 16.3967 8.32848 16.2449 8.02501 15.9415L1.05834 8.9748C0.913205 8.82966 0.797885 8.65813 0.712385 8.46021C0.626357 8.2623 0.583344 8.05119 0.583344 7.82688V2.16646C0.583344 1.73105 0.73851 1.35817 1.04884 1.04784C1.35865 0.738033 1.73126 0.58313 2.16668 0.58313H7.82709C8.0514 0.58313 8.26251 0.62588 8.46043 0.71138C8.65834 0.797408 8.82987 0.912991 8.97501 1.05813L15.9417 8.04459C16.2451 8.34806 16.3969 8.72067 16.3969 9.16242C16.3969 9.6047 16.2451 9.97757 15.9417 10.281L10.2813 15.9415ZM9.15314 14.8331L14.8136 9.17271L7.82709 2.16646H2.16668V7.82688L9.15314 14.8331ZM4.14584 5.33313C4.4757 5.33313 4.75595 5.21755 4.98659 4.98638C5.21776 4.75574 5.33334 4.47549 5.33334 4.14563C5.33334 3.81577 5.21776 3.53552 4.98659 3.30488C4.75595 3.07371 4.4757 2.95813 4.14584 2.95813C3.81598 2.95813 3.53573 3.07371 3.30509 3.30488C3.07393 3.53552 2.95834 3.81577 2.95834 4.14563C2.95834 4.47549 3.07393 4.75574 3.30509 4.98638C3.53573 5.21755 3.81598 5.33313 4.14584 5.33313Z"
5
- fill="#6E7084"
5
+ fill="currentColor"
6
6
  />
7
7
  </svg>
8
8
  </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <svg width="19" height="19" viewBox="0 0 19 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
3
3
  <path
4
- d="M1.54165 10.7083C1.19217 10.7083 0.893098 10.584 0.644438 10.3353C0.395355 10.0863 0.270813 9.78698 0.270813 9.4375V1.8125C0.270813 1.46302 0.395355 1.16395 0.644438 0.915289C0.893098 0.666206 1.19217 0.541664 1.54165 0.541664H11.7083C12.0578 0.541664 12.3571 0.666206 12.6062 0.915289C12.8548 1.16395 12.9791 1.46302 12.9791 1.8125V9.4375C12.9791 9.78698 12.8548 10.0863 12.6062 10.3353C12.3571 10.584 12.0578 10.7083 11.7083 10.7083H1.54165ZM6.62498 6.26041L1.54165 3.08333V9.4375H11.7083V3.08333L6.62498 6.26041ZM6.62498 4.98958L11.7083 1.8125H1.54165L6.62498 4.98958ZM1.54165 3.08333V1.8125V9.4375V3.08333Z"
4
+ d="M3.54165 15.2083C3.19217 15.2083 2.893098 15.084 2.644438 14.8353C2.395355 14.5863 2.270813 14.287 2.270813 13.9375V6.3125C2.270813 5.96302 2.395355 5.66395 2.644438 5.41529C2.893098 5.16621 3.19217 5.04166 3.54165 5.04166H16.7083C17.0578 5.04166 17.3571 5.16621 17.6062 5.41529C17.8548 5.66395 17.9791 5.96302 17.9791 6.3125V13.9375C17.9791 14.287 17.8548 14.5863 17.6062 14.8353C17.3571 15.084 17.0578 15.2083 16.7083 15.2083H3.54165ZM10.125 10.7604L3.54165 7.58333V13.9375H16.7083V7.58333L10.125 10.7604ZM10.125 9.48958L16.7083 6.3125H3.54165L10.125 9.48958ZM3.54165 7.58333V6.3125V13.9375V7.58333Z"
5
5
  fill="white"
6
6
  />
7
7
  </svg>
@@ -0,0 +1,21 @@
1
+ <template>
2
+ <svg
3
+ width="19"
4
+ height="20"
5
+ viewBox="0 0 19 20"
6
+ fill="none"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ class="pencil-icon"
9
+ >
10
+ <path
11
+ d="M0.75 20V16.5H18.25V20H0.75ZM2.5 14.75V11.4688L10.4187 3.55004L13.7 6.83129L5.78125 14.75H2.5ZM4.25 13H5.0375L11.25 6.83129L10.4187 6.00004L4.25 12.2125V13ZM14.6844 5.86879L11.4031 2.58754L12.9781 1.01254C13.1385 0.837536 13.3427 0.753536 13.5906 0.760536C13.8385 0.768119 14.0427 0.852119 14.2031 1.01254L16.2594 3.06879C16.4198 3.2292 16.5 3.42987 16.5 3.67079C16.5 3.91112 16.4198 4.11879 16.2594 4.29379L14.6844 5.86879Z"
12
+ fill="currentColor"
13
+ />
14
+ </svg>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .pencil-icon {
19
+ @apply w-4 h-4;
20
+ }
21
+ </style>
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <svg width="9" height="12" viewBox="0 0 9 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
3
3
  <path
4
- d="M0 11.2311V0.73114L8.25 5.98114L0 11.2311ZM1.5 8.49364L5.4375 5.98114L1.5 3.46864V8.49364Z"
4
+ d="M1.5 11.2311V0.73114L9.75 5.98114L1.5 11.2311ZM3 8.49364L6.9375 5.98114L3 3.46864V8.49364Z"
5
5
  fill="white"
6
6
  />
7
7
  </svg>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 1024 1024"
5
+ class="profile-icon"
6
+ >
7
+ <path
8
+ fill="currentColor"
9
+ d="M0 1024v-72.874521c0-149.917478 93.497315-353.841814 241.330575-402.948929l9.031614-2.998349 4.497524 8.117483a316.618401 316.618401 0 0 0 33.201237 48.485506l10.567354 12.688138-16.088705 4.387828c-118.178851 32.579628-201.986378 215.917734-206.88612 332.341454h872.519723c-4.899742-116.387154-99.457449-299.834957-217.6363-332.341454l-16.088705-4.387828 10.457658-12.578442a316.874358 316.874358 0 0 0 33.201237-48.485507l4.497524-8.117483 8.921918 2.888654c147.979521 49.107115 252.300146 252.994886 252.300147 402.948929V1024H0z m511.91334-365.652386a246.888491 246.888491 0 0 1-255.95667-255.95667V256.129989a246.888491 246.888491 0 0 1 255.95667-255.95667 246.888491 246.888491 0 0 1 255.956671 255.95667v146.260955a246.888491 246.888491 0 0 1-255.956671 255.95667z m182.826193-402.217625A182.826193 182.826193 0 1 0 329.087147 256.129989v146.260955a182.826193 182.826193 0 1 0 365.652386 0V256.129989z"
10
+ />
11
+ </svg>
12
+ </template>
13
+
14
+ <style scoped>
15
+ .profile-icon {
16
+ @apply w-4 h-4;
17
+ }
18
+ </style>
@@ -1,8 +1,7 @@
1
1
  <template>
2
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="15" fill="white">
3
- <path
4
- fill="white"
5
- d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"
6
- />
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
3
+ <path d="M23 4v6h-6" />
4
+ <path d="M1 20v-6h6" />
5
+ <path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" />
7
6
  </svg>
8
7
  </template>
@@ -13,14 +13,14 @@
13
13
  <g>
14
14
  <g>
15
15
  <path
16
- style="fill: #6e7084"
16
+ fill="white"
17
17
  d="M16.192,5.224V4.487h-8.77v0.737c0,0,1.334,3.713,3.838,5.428v1.785c0,0-2.761,2.686-3.838,5.775
18
18
  v0.842h8.77v-0.842c-1.399-3.41-3.837-5.775-3.837-5.775v-1.785C15.759,7.726,16.192,5.224,16.192,5.224z"
19
19
  />
20
20
  </g>
21
21
  <g>
22
22
  <path
23
- style="fill: #6e7084"
23
+ fill="white"
24
24
  d="M19.353,3.856V2.529h1.258V0H3.002v2.529h1.259v1.327c0,2.025,3.634,7.555,3.804,7.955
25
25
  c-0.167,0.397-3.804,5.929-3.804,7.946v1.325H3.002v2.53h17.609v-2.53h-1.258v-1.325c0-2.025-3.635-7.521-3.829-7.951
26
26
  C15.718,11.376,19.353,5.88,19.353,3.856z M18.096,19.757v1.325H5.519v-1.325c0-1.455,3.854-7.222,3.854-7.951
@@ -0,0 +1,21 @@
1
+ <template>
2
+ <svg
3
+ width="16"
4
+ height="16"
5
+ viewBox="0 0 16 16"
6
+ fill="none"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ class="sell-icon"
9
+ >
10
+ <path
11
+ d="M9.68747 15.05C9.39997 15.3375 9.04372 15.4812 8.61872 15.4812C8.19372 15.4812 7.83747 15.3375 7.54997 15.05L0.949969 8.44995C0.812469 8.31245 0.70322 8.14995 0.62222 7.96245C0.54072 7.77495 0.499969 7.57495 0.499969 7.36245V1.99995C0.499969 1.58745 0.64697 1.2342 0.94097 0.940204C1.23447 0.646704 1.58747 0.499954 1.99997 0.499954H7.36247C7.57497 0.499954 7.77497 0.540454 7.96247 0.621454C8.14997 0.702954 8.31247 0.812454 8.44997 0.949954L15.05 7.5687C15.3375 7.8562 15.4812 8.2092 15.4812 8.6277C15.4812 9.0467 15.3375 9.39995 15.05 9.68745L9.68747 15.05ZM8.61872 14L13.9812 8.63745L7.36247 1.99995H1.99997V7.36245L8.61872 14ZM3.87497 4.99995C4.18747 4.99995 4.45297 4.89045 4.67147 4.67145C4.89047 4.45295 4.99997 4.18745 4.99997 3.87495C4.99997 3.56245 4.89047 3.29695 4.67147 3.07845C4.45297 2.85945 4.18747 2.74995 3.87497 2.74995C3.56247 2.74995 3.29697 2.85945 3.07847 3.07845C2.85947 3.29695 2.74997 3.56245 2.74997 3.87495C2.74997 4.18745 2.85947 4.45295 3.07847 4.67145C3.29697 4.89045 3.56247 4.99995 3.87497 4.99995Z"
12
+ fill="currentColor"
13
+ />
14
+ </svg>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .sell-icon {
19
+ @apply w-4 h-4;
20
+ }
21
+ </style>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <svg class="spinner" viewBox="0 0 50 50">
3
+ <circle class="path" cx="25" cy="25" r="20" fill="none" stroke-width="5"></circle>
4
+ </svg>
5
+ </template>
6
+
7
+ <style lang="scss" scoped>
8
+ .spinner {
9
+ @apply mx-auto;
10
+ animation: rotate 2s linear infinite;
11
+ z-index: 2;
12
+ width: 30px;
13
+ height: 30px;
14
+
15
+ & .path {
16
+ stroke: rgba(70, 198, 210, 100%);
17
+ stroke-linecap: round;
18
+ animation: dash 1.5s ease-in-out infinite;
19
+ }
20
+ }
21
+
22
+ @keyframes rotate {
23
+ 100% {
24
+ transform: rotate(360deg);
25
+ }
26
+ }
27
+
28
+ @keyframes dash {
29
+ 0% {
30
+ stroke-dasharray: 1, 150;
31
+ stroke-dashoffset: 0;
32
+ }
33
+ 50% {
34
+ stroke-dasharray: 90, 150;
35
+ stroke-dashoffset: -35;
36
+ }
37
+ 100% {
38
+ stroke-dasharray: 90, 150;
39
+ stroke-dashoffset: -124;
40
+ }
41
+ }
42
+ </style>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 448 512"
5
+ class="square-check-icon"
6
+ >
7
+ <path
8
+ fill="currentColor"
9
+ d="M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"
10
+ />
11
+ </svg>
12
+ </template>
13
+
14
+ <style scoped>
15
+ .square-check-icon {
16
+ @apply w-4 h-4;
17
+ }
18
+ </style>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 448 512"
5
+ class="square-uncheck-icon"
6
+ >
7
+ <path
8
+ fill="currentColor"
9
+ d="M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"
10
+ />
11
+ </svg>
12
+ </template>
13
+
14
+ <style scoped>
15
+ .square-uncheck-icon {
16
+ @apply w-4 h-4;
17
+ }
18
+ </style>
@@ -6,7 +6,7 @@
6
6
  <g mask="url(#mask0_16_241)">
7
7
  <path
8
8
  d="M2.37499 5.54165V2.37498L5.54166 3.95831L2.37499 5.54165ZM14.25 5.54165V2.37498L17.4167 3.95831L14.25 5.54165ZM8.70833 4.74998V1.58331L11.875 3.16665L8.70833 4.74998ZM8.70833 17.4166C7.70555 17.3903 6.77218 17.3079 5.9082 17.1696C5.0437 17.0308 4.29162 16.8559 3.65195 16.6448C3.01176 16.4337 2.50694 16.1896 2.13749 15.9125C1.76805 15.6354 1.58333 15.3451 1.58333 15.0416V7.91665C1.58333 7.58678 1.79127 7.27988 2.20716 6.99594C2.62252 6.71252 3.18645 6.46183 3.89895 6.24385C4.61145 6.02641 5.4493 5.85488 6.4125 5.72927C7.37569 5.60419 8.40486 5.54165 9.49999 5.54165C10.5951 5.54165 11.6243 5.60419 12.5875 5.72927C13.5507 5.85488 14.3885 6.02641 15.101 6.24385C15.8135 6.46183 16.3775 6.71252 16.7928 6.99594C17.2087 7.27988 17.4167 7.58678 17.4167 7.91665V15.0416C17.4167 15.3451 17.2319 15.6354 16.8625 15.9125C16.493 16.1896 15.9885 16.4337 15.3488 16.6448C14.7086 16.8559 13.9565 17.0308 13.0926 17.1696C12.2281 17.3079 11.2944 17.3903 10.2917 17.4166V14.25H8.70833V17.4166ZM9.49999 8.70831C10.7799 8.70831 11.885 8.63231 12.8155 8.48031C13.7454 8.32884 14.4875 8.15415 15.0417 7.95623C15.0417 7.89026 14.5403 7.73509 13.5375 7.49073C12.5347 7.2469 11.1889 7.12498 9.49999 7.12498C7.81111 7.12498 6.46527 7.2469 5.46249 7.49073C4.45972 7.73509 3.95833 7.89026 3.95833 7.95623C4.51249 8.15415 5.25481 8.32884 6.18529 8.48031C7.11523 8.63231 8.22013 8.70831 9.49999 8.70831ZM7.12499 15.7146V12.6666H11.875V15.7146C12.9305 15.609 13.7948 15.4538 14.4677 15.2491C15.1406 15.0448 15.5958 14.8635 15.8333 14.7052V9.34165C15.1076 9.63192 14.1972 9.86283 13.1021 10.0344C12.0069 10.2059 10.8062 10.2916 9.49999 10.2916C8.19374 10.2916 6.99305 10.2059 5.89791 10.0344C4.80277 9.86283 3.89236 9.63192 3.16666 9.34165V14.7052C3.40416 14.8635 3.85937 15.0448 4.53229 15.2491C5.2052 15.4538 6.06944 15.609 7.12499 15.7146Z"
9
- fill="#6E7084"
9
+ fill="white"
10
10
  />
11
11
  </g>
12
12
  </svg>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 512 512"
5
+ class="wildcard-icon"
6
+ >
7
+ <path
8
+ fill="currentColor"
9
+ d="M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z"
10
+ />
11
+ </svg>
12
+ </template>
13
+
14
+ <style scoped>
15
+ .wildcard-icon {
16
+ @apply w-4 h-4;
17
+ }
18
+ </style>
@@ -43,6 +43,19 @@ import ReloadIcon from "./Reload.vue";
43
43
  import FilterIcon from "./Filter.vue";
44
44
  import SandclockIcon from "./Sandclock.vue";
45
45
  import GearIcon from "./Gear.vue";
46
+ import CloseIcon from "./Close.vue";
47
+ import KeyIcon from "./Key.vue";
48
+ import PencilIcon from "./Pencil.vue";
49
+ import SellIcon from "./Sell.vue";
50
+ import SquareCheckIcon from "./SquareCheck.vue";
51
+ import SquareUncheckIcon from "./SquareUncheck.vue";
52
+ import WildcardIcon from "./Wildcard.vue";
53
+ import ProfileIcon from "./Profile.vue";
54
+ import CloseXIcon from "./CloseX.vue";
55
+ import CheckIcon from "./Check.vue";
56
+ import SpinnerIcon from "./Spinner.vue";
57
+ import EyeIcon from "./Eye.vue";
58
+
46
59
  export {
47
60
  EditIcon,
48
61
  ConsoleIcon,
@@ -84,5 +97,17 @@ export {
84
97
  ReloadIcon,
85
98
  FilterIcon,
86
99
  SandclockIcon,
87
- GearIcon
100
+ GearIcon,
101
+ CloseIcon,
102
+ KeyIcon,
103
+ PencilIcon,
104
+ SellIcon,
105
+ SquareCheckIcon,
106
+ SquareUncheckIcon,
107
+ WildcardIcon,
108
+ ProfileIcon,
109
+ CloseXIcon,
110
+ CheckIcon,
111
+ SpinnerIcon,
112
+ EyeIcon
88
113
  };
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <div class="modal-mask pt-14 ipadlg:py-1 overflow-y-scroll scrollable">
2
+ <div class="modal-mask scrollable overflow-y-auto" role="dialog" @touchmove.stop>
3
3
  <div class="component-modal" ref="target">
4
4
  <div class="modal-header">
5
5
  <slot name="header" />
6
- <button @click="ui.toggleModal()">
7
- <img src="@/assets/img/close.svg" />
6
+ <button @click="ui.toggleModal()" class="btn-icon border-none hover:bg-dark-400">
7
+ <CloseIcon />
8
8
  </button>
9
9
  </div>
10
10
  <div class="modal-body">
@@ -16,40 +16,134 @@
16
16
  <script setup>
17
17
  import { useUIStore } from "@/stores/ui";
18
18
  import { onClickOutside } from "@vueuse/core";
19
- import { ref } from "vue";
19
+ import { ref, onMounted, onUnmounted } from "vue";
20
+ import { CloseIcon } from "@/components/icons";
21
+
20
22
  const ui = useUIStore();
21
23
  const target = ref(null);
22
24
 
25
+ // Store original body styles
26
+ let originalOverflow = "";
27
+ let originalPosition = "";
28
+ let originalTop = "";
29
+ let scrollY = 0;
30
+
31
+ onMounted(() => {
32
+ // Lock body scroll
33
+ scrollY = window.scrollY;
34
+ originalOverflow = document.body.style.overflow;
35
+ originalPosition = document.body.style.position;
36
+ originalTop = document.body.style.top;
37
+
38
+ document.body.style.overflow = "hidden";
39
+ document.body.style.position = "fixed";
40
+ document.body.style.top = `-${scrollY}px`;
41
+ document.body.style.width = "100%";
42
+ });
43
+
44
+ onUnmounted(() => {
45
+ // Restore body scroll
46
+ document.body.style.overflow = originalOverflow;
47
+ document.body.style.position = originalPosition;
48
+ document.body.style.top = originalTop;
49
+ document.body.style.width = "";
50
+ window.scrollTo(0, scrollY);
51
+ });
52
+
23
53
  onClickOutside(target, (event) => {
24
54
  if (event.target.classList.contains("modal-mask")) ui.toggleModal();
25
55
  });
26
56
  </script>
27
57
  <style lang="scss" scoped>
28
58
  .modal-mask {
29
- @apply fixed top-0 left-0 w-full h-full flex duration-300 ease-in-out;
30
- z-index: 9998;
31
- background-color: #111111d6;
59
+ @apply fixed left-0 top-0 flex h-screen w-screen duration-300 ease-in-out;
60
+ z-index: 25000;
61
+ align-items: flex-start;
62
+ justify-content: center;
63
+ padding: 1rem;
64
+ padding-top: 3.5rem;
65
+ background-color: rgba(17, 17, 17, 0.85);
66
+ backdrop-filter: blur(4px);
67
+ overflow-y: auto;
68
+ -webkit-overflow-scrolling: touch;
32
69
  }
70
+
33
71
  .component-modal {
34
- margin: auto;
35
72
  width: 640px;
36
- // background: url('@/assets/img/background.svg') center center no-repeat;
73
+ margin-bottom: 10rem;
74
+ overflow-y: visible;
75
+ @apply flex flex-col rounded-lg bg-dark-300 px-5 py-5;
37
76
 
38
- @apply bg-dark-300 px-5 py-5 rounded-lg m-auto flex flex-col;
39
77
  .modal-header {
40
- @apply flex text-white font-bold;
78
+ @apply flex font-bold text-white;
79
+
41
80
  button {
42
81
  @apply ml-auto;
43
82
  }
44
83
  }
84
+
45
85
  .modal-body {
46
86
  @apply flex flex-col;
87
+ flex: 1;
47
88
  }
48
89
  }
90
+
49
91
  @media (max-width: 810px) {
92
+ .modal-mask {
93
+ align-items: flex-start; // Start from top on mobile
94
+ justify-content: center;
95
+ padding: 1rem;
96
+ padding-top: 3rem;
97
+ padding-bottom: 2rem; // Ensure bottom space
98
+ }
99
+
100
+ .component-modal {
101
+ width: calc(100vw - 2rem);
102
+ margin-bottom: 6rem; // Increased bottom margin for better button access
103
+ }
104
+
105
+ .modal-body {
106
+ padding-bottom: 4rem; // Increased padding for create button accessibility
107
+ overflow-y: auto; // Allow scrolling on mobile
108
+ flex: 1;
109
+ min-height: 0;
110
+ }
111
+ }
112
+
113
+ /* iPhone portrait mode - extra spacing for create button */
114
+ @media (max-width: 480px) and (orientation: portrait) {
115
+ .modal-mask {
116
+ padding-bottom: 3rem !important; // Extra bottom padding for iPhone
117
+ }
118
+
50
119
  .component-modal {
51
- width: 100vh !important;
52
- height: 100% !important;
120
+ margin-bottom: 3rem !important; // Even more bottom margin for iPhone portrait
121
+ max-height: calc(100vh - 12rem) !important; // Ensure modal doesn't get too tall
122
+ }
123
+
124
+ .modal-body {
125
+ padding-bottom: 1rem !important; // Extra padding for create button on iPhone
53
126
  }
54
127
  }
128
+
129
+ // iPhone landscape mode - proper modal centering with consistent spacing
130
+ // @media (max-height: 500px) and (orientation: landscape) {
131
+ // .modal-mask {
132
+ // padding: 1rem 1rem 4rem 1rem !important;
133
+ // align-items: center !important;
134
+ // justify-content: center !important;
135
+ // padding-bottom: 3rem !important; // Extra padding for create button on iPhone
136
+ // }
137
+
138
+ // .component-modal {
139
+ // max-height: calc(100vh - 10rem) !important;
140
+ // overflow-y: auto !important;
141
+ // margin: 0 !important;
142
+ // margin-bottom: 30px;
143
+ // }
144
+
145
+ // .modal-body {
146
+ // padding-bottom: 1rem !important;
147
+ // }
148
+ // }
55
149
  </style>