@visualizevalue/mint-app-base 0.0.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 (129) hide show
  1. package/.env.example +26 -0
  2. package/README.md +24 -0
  3. package/app/app.vue +7 -0
  4. package/app/assets/styles/animation.css +50 -0
  5. package/app/assets/styles/base.css +34 -0
  6. package/app/assets/styles/cards.css +20 -0
  7. package/app/assets/styles/custom-media.css +4 -0
  8. package/app/assets/styles/custom-selectors.css +1 -0
  9. package/app/assets/styles/forms.css +183 -0
  10. package/app/assets/styles/index.css +11 -0
  11. package/app/assets/styles/normalize.css +541 -0
  12. package/app/assets/styles/prose.css +166 -0
  13. package/app/assets/styles/scroll.css +13 -0
  14. package/app/assets/styles/text.css +14 -0
  15. package/app/assets/styles/utils.css +24 -0
  16. package/app/assets/styles/variables.css +195 -0
  17. package/app/assets/styles/web3-modals.css +26 -0
  18. package/app/components/Account.client.vue +20 -0
  19. package/app/components/Actions.vue +25 -0
  20. package/app/components/AppHeader.vue +99 -0
  21. package/app/components/Authenticated.client.vue +17 -0
  22. package/app/components/Avatar.vue +61 -0
  23. package/app/components/BlocksTimeAgo.client.vue +20 -0
  24. package/app/components/Breadcrumbs.vue +51 -0
  25. package/app/components/Button.vue +98 -0
  26. package/app/components/CardLink.vue +38 -0
  27. package/app/components/CheckSpinner.vue +39 -0
  28. package/app/components/Collection/Intro.vue +111 -0
  29. package/app/components/Collection/OverviewCard.vue +73 -0
  30. package/app/components/Collection/Withdraw.client.vue +61 -0
  31. package/app/components/CollectionsOverview.client.vue +58 -0
  32. package/app/components/Connect.client.vue +88 -0
  33. package/app/components/CountDown.vue +153 -0
  34. package/app/components/DialogFrame.vue +96 -0
  35. package/app/components/ExpandableText.vue +50 -0
  36. package/app/components/Form/Errors.vue +18 -0
  37. package/app/components/Form/Group.vue +57 -0
  38. package/app/components/Form/Input.vue +48 -0
  39. package/app/components/Form/SelectFile.vue +60 -0
  40. package/app/components/GasPrice.client.vue +9 -0
  41. package/app/components/HeaderSection.vue +18 -0
  42. package/app/components/Icon.vue +37 -0
  43. package/app/components/IconLink.vue +29 -0
  44. package/app/components/Image.client.vue +120 -0
  45. package/app/components/Loading.vue +79 -0
  46. package/app/components/MintGasPrice.client.vue +20 -0
  47. package/app/components/MintGasPricePopover.client.vue +69 -0
  48. package/app/components/MintToken.vue +89 -0
  49. package/app/components/MintTokenBar.vue +79 -0
  50. package/app/components/Modal.vue +36 -0
  51. package/app/components/Navbar.client.vue +86 -0
  52. package/app/components/Page/Frame.vue +77 -0
  53. package/app/components/Page/FrameSM.vue +33 -0
  54. package/app/components/Popover.client.vue +119 -0
  55. package/app/components/Profile/Header.client.vue +96 -0
  56. package/app/components/QueryDialog.vue +38 -0
  57. package/app/components/ToggleDarkMode.client.vue +58 -0
  58. package/app/components/Token/Detail.client.vue +194 -0
  59. package/app/components/Token/MintTimeline.client.vue +110 -0
  60. package/app/components/Token/MintTimelineItem.vue +33 -0
  61. package/app/components/Token/OverviewCard.vue +140 -0
  62. package/app/components/TransactionFlow.vue +225 -0
  63. package/app/components/Visual/ImagePreview.vue +8 -0
  64. package/app/composables/account.ts +21 -0
  65. package/app/composables/app.ts +15 -0
  66. package/app/composables/artistData.ts +22 -0
  67. package/app/composables/chainId.ts +25 -0
  68. package/app/composables/collections.ts +435 -0
  69. package/app/composables/darkMode.ts +1 -0
  70. package/app/composables/gasPrice.ts +46 -0
  71. package/app/composables/head.ts +29 -0
  72. package/app/composables/priceFeed.ts +80 -0
  73. package/app/composables/subdomain.ts +27 -0
  74. package/app/error.vue +31 -0
  75. package/app/layouts/default.vue +42 -0
  76. package/app/middleware/lowercaseId.ts +1 -0
  77. package/app/middleware/lowercaseProfileAddress.ts +1 -0
  78. package/app/middleware/redirectUserScope.ts +13 -0
  79. package/app/pages/[id]/[collection]/[tokenId]/index.vue +66 -0
  80. package/app/pages/[id]/[collection]/[tokenId].vue +25 -0
  81. package/app/pages/[id]/[collection]/index.vue +51 -0
  82. package/app/pages/[id]/[collection]/mint.vue +260 -0
  83. package/app/pages/[id]/[collection].vue +24 -0
  84. package/app/pages/[id]/add.vue +40 -0
  85. package/app/pages/[id]/create.vue +177 -0
  86. package/app/pages/[id]/index.vue +43 -0
  87. package/app/pages/[id].vue +9 -0
  88. package/app/pages/index.vue +47 -0
  89. package/app/pages/profile/[address]/index.vue +51 -0
  90. package/app/pages/profile/[address].vue +9 -0
  91. package/app/pages/profile/index.vue +28 -0
  92. package/app/plugins/1.polyfill.client.ts +12 -0
  93. package/app/plugins/2.wagmi.ts +57 -0
  94. package/app/router.options.ts +25 -0
  95. package/app/utils/abis.ts +77 -0
  96. package/app/utils/arrays.ts +1 -0
  97. package/app/utils/artifact.ts +21 -0
  98. package/app/utils/breakpoints.ts +11 -0
  99. package/app/utils/dates.ts +23 -0
  100. package/app/utils/format.ts +60 -0
  101. package/app/utils/images.ts +27 -0
  102. package/app/utils/ipfs.ts +13 -0
  103. package/app/utils/lowercaseRouteParam.ts +10 -0
  104. package/app/utils/serializer.ts +18 -0
  105. package/app/utils/strings.ts +30 -0
  106. package/app/utils/time.ts +23 -0
  107. package/app/utils/types.ts +62 -0
  108. package/app/utils/urls.ts +43 -0
  109. package/nuxt.config.ts +130 -0
  110. package/package.json +44 -0
  111. package/public/apple-touch-icon-512x512.png +0 -0
  112. package/public/example-contract-icon-original.svg +5 -0
  113. package/public/example-contract-icon.svg +5 -0
  114. package/public/favicon.ico +0 -0
  115. package/public/icon.svg +8 -0
  116. package/public/icons/check.svg +3 -0
  117. package/public/icons/opepen.svg +264 -0
  118. package/public/icons/wallets/coinbase.svg +4 -0
  119. package/public/icons/wallets/metamask.svg +1 -0
  120. package/public/icons/wallets/rainbow.svg +59 -0
  121. package/public/icons/wallets/walletconnect.svg +1 -0
  122. package/public/maskable-icon-512x512.png +0 -0
  123. package/public/pwa-192x192.png +0 -0
  124. package/public/pwa-512x512.png +0 -0
  125. package/public/pwa-64x64.png +0 -0
  126. package/server/middleware/log.ts +3 -0
  127. package/server/middleware/subdomain.ts +12 -0
  128. package/server/tsconfig.json +3 -0
  129. package/tsconfig.json +4 -0
package/.env.example ADDED
@@ -0,0 +1,26 @@
1
+ # =========================
2
+ # BASE
3
+ # =========================
4
+ NITRO_PRESET=node_cluster
5
+ NUXT_SSR=false
6
+ NUXT_DEVTOOLS=true
7
+ NUXT_PUBLIC_DOMAIN=localhost
8
+ NUXT_PUBLIC_TITLE=Mint.VV
9
+ NUXT_PUBLIC_DESCRIPTION=To mint is a human right.
10
+
11
+ # =========================
12
+ # ARTIST SCOPE
13
+ # =========================
14
+ NUXT_PUBLIC_CREATOR_ADDRESS=0xc8f8e2F59Dd95fF67c3d39109ecA2e2A017D4c8a
15
+
16
+ # =========================
17
+ # SERVICES
18
+ # =========================
19
+ NUXT_PUBLIC_BLOCK_EXPLORER=https://etherscan.io
20
+ NUXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=
21
+
22
+ # =========================
23
+ # ONCHAIN
24
+ # =========================
25
+ NUXT_PUBLIC_FACTORY_ADDRESS=0xfd0edC665A0566EF44f9BD7aB4E45DF7A7601a2b
26
+ NUXT_PUBLIC_CHAIN_ID=11155111
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Mint App
2
+
3
+ This application is built with VueJS and Nuxt; two beautiful frameworks for building web based interfaces. Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
4
+
5
+ ## Setup
6
+
7
+ Make sure to install the dependencies:
8
+
9
+ ```bash
10
+ yarn install
11
+ ```
12
+
13
+ ## Development Server
14
+
15
+ Start the development server on `http://mint.test:1618`:
16
+
17
+ ```bash
18
+ yarn dev
19
+ ```
20
+
21
+ ## To-Do's
22
+
23
+ - [ ] Refactor AppHeader titles (breadcrumb). This is quite hacky right now.
24
+
package/app/app.vue ADDED
@@ -0,0 +1,7 @@
1
+ <template>
2
+ <div>
3
+ <NuxtLayout>
4
+ <NuxtPage />
5
+ </NuxtLayout>
6
+ </div>
7
+ </template>
@@ -0,0 +1,50 @@
1
+ .v-enter-active,
2
+ .v-leave-active {
3
+ transition: opacity var(--speed) ease;
4
+ }
5
+
6
+ .v-enter-from,
7
+ .v-leave-to {
8
+ opacity: 0;
9
+ }
10
+
11
+ .fade-enter-active,
12
+ .fade-leave-active {
13
+ transition: all var(--speed) ease;
14
+ max-height: 100%;
15
+ }
16
+
17
+ .fade-enter-from,
18
+ .fade-leave-to {
19
+ opacity: 0;
20
+ max-height: 0;
21
+ }
22
+
23
+ @keyframes appear {
24
+ 0% {
25
+ opacity: 0;
26
+ }
27
+ 100% {
28
+ opacity: 1;
29
+ }
30
+ }
31
+
32
+ @keyframes fade-in {
33
+ 0% {
34
+ opacity: 0;
35
+ transform: translateY(var(--spacer));
36
+ }
37
+ 100% {
38
+ opacity: 1;
39
+ transform: translateY(0);
40
+ }
41
+ }
42
+
43
+ @keyframes spin {
44
+ 0% {
45
+ transform: rotate(0deg);
46
+ }
47
+ 100% {
48
+ transform: rotate(360deg);
49
+ }
50
+ }
@@ -0,0 +1,34 @@
1
+ :root {
2
+ font-family: var(--font-family-main);
3
+ line-height: var(--line-height-base);
4
+ font-weight: var(--font-weight);
5
+ font-size: var(--rem);
6
+ font-style: normal;
7
+ font-feature-settings: 'liga' 1, 'calt' 1; /* fix for Chrome */
8
+
9
+ @supports (font-variation-settings: normal) {
10
+ font-optical-sizing: auto;
11
+ }
12
+
13
+ background-color: var(--background);
14
+ color: var(--color);
15
+ color-scheme: dark;
16
+
17
+ text-transform: var(--text-transform);
18
+ font-synthesis: none;
19
+ text-rendering: optimizeLegibility;
20
+ -webkit-font-smoothing: antialiased;
21
+ -moz-osx-font-smoothing: grayscale;
22
+ -webkit-text-size-adjust: 100%;
23
+ letter-spacing: var(--letter-spacing);
24
+
25
+ * {
26
+ font-size: var(--font-base);
27
+ }
28
+ }
29
+
30
+ html,
31
+ body {
32
+ overflow-x: hidden;
33
+ }
34
+
@@ -0,0 +1,20 @@
1
+ .card {
2
+ display: grid;
3
+ gap: var(--spacer);
4
+ border: var(--border);
5
+ height: 100%;
6
+ padding: var(--spacer);
7
+
8
+ &.borderless {
9
+ padding: 0;
10
+ border: 0;
11
+ }
12
+
13
+ > * {
14
+ width: 100%;
15
+
16
+ place-self: center;
17
+ &:first-child { place-self: flex-start; }
18
+ &:last-child { place-self: flex-end; }
19
+ }
20
+ }
@@ -0,0 +1,4 @@
1
+ @custom-media --xs (min-width: 24rem);
2
+ @custom-media --sm (min-width: 27rem);
3
+ @custom-media --md (min-width: 45rem);
4
+ @custom-media --lg (min-width: 64rem);
@@ -0,0 +1 @@
1
+ @custom-selector :--highlight :hover, :active, :focus, .active;
@@ -0,0 +1,183 @@
1
+ .form-item,
2
+ .button,
3
+ button,
4
+ input,
5
+ textarea,
6
+ select {
7
+ --padding-y: var(--size-3);
8
+ --padding-x: var(--size-5);
9
+ --background: var(--background);
10
+ --background-light: var(--gray-z-1);
11
+
12
+ width: 100%;
13
+ font-family: var(--font-family-ui);
14
+ font-weight: var(--font-weight);
15
+ transition: all var(--speed);
16
+ text-transform: var(--text-transform-ui);
17
+ user-select: none;
18
+ border-radius: 0;
19
+ background: var(--background);
20
+
21
+ &::placeholder {
22
+ text-transform: var(--text-transform-ui);
23
+ }
24
+
25
+ &:-internal-autofill-selected {
26
+ background: inherit;
27
+ background-image: none !important;
28
+ }
29
+
30
+ &:--highlight {
31
+ outline: none;
32
+ }
33
+ }
34
+
35
+ .button,
36
+ .input,
37
+ .textarea,
38
+ .select {
39
+ min-height: calc(var(--size-7) + var(--size-2));
40
+ line-height: 1;
41
+ }
42
+
43
+ .input,
44
+ .textarea,
45
+ .select {
46
+ position: relative;
47
+ line-height: 0;
48
+ width: 100%;
49
+ background: var(--background);
50
+ padding: var(--padding-y) var(--padding-x);
51
+ text-transform: none;
52
+
53
+ border: var(--border);
54
+
55
+ font-weight: var(--font-weight);
56
+ letter-spacing: var(--letter-spacing-md);
57
+
58
+ transition: background var(--speed),
59
+ padding var(--speed),
60
+ border var(--speed),
61
+ color var(--speed);
62
+
63
+ &:--highlight {
64
+ background: var(--background-light);
65
+ border-color: var(--border-color-light);
66
+ }
67
+
68
+ &::placeholder {
69
+ color: var(--border-color-light);
70
+ opacity: 1;
71
+ }
72
+ &::-ms-input-placeholder {
73
+ color: var(--border-color-light);
74
+ }
75
+
76
+ &.small {
77
+ min-height: 0;
78
+ font-size: var(--font-sm);
79
+ padding: calc(var(--size-1) + var(--size-0)) var(--size-3);
80
+ }
81
+ }
82
+
83
+ .form-item {
84
+ border: var(--border);
85
+ display: flex;
86
+ align-items: center;
87
+ background: var(--background);
88
+ width: 100%;
89
+ max-width: -webkit-fill-available;
90
+
91
+ .input,
92
+ .textarea,
93
+ .select {
94
+ border: none;
95
+ }
96
+
97
+ &:has(.input:hover),
98
+ &:has(.input:focus) {
99
+ background: var(--background-light);
100
+ }
101
+ &:has(.input:focus) {
102
+ border-color: var(--border-color-light);
103
+ }
104
+
105
+ .prefix,
106
+ .suffix {
107
+ padding: 0 var(--padding-x);
108
+ color: var(--muted);
109
+ height: 100%;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ }
114
+
115
+ .prefix {
116
+ border-right: var(--border);
117
+ }
118
+ .suffix {
119
+ border-left: var(--border);
120
+ }
121
+
122
+ /* If the prefix/suffix should look as if it's part of the content */
123
+ &.fluent {
124
+ .prefix,
125
+ .suffix {
126
+ border: none;
127
+ }
128
+ .prefix {
129
+ padding-right: var(--size-0);
130
+ }
131
+ .suffix {
132
+ padding-left: var(--size-0);
133
+ }
134
+
135
+ &:has(.prefix) {
136
+ .input,
137
+ .select,
138
+ .textarea {
139
+ padding-left: 0;
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ select.select,
146
+ select.select:--highlight {
147
+ appearance: none;
148
+ line-height: 1;
149
+ background:
150
+ url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tZG93biI+PHBvbHlsaW5lIHBvaW50cz0iNiA5IDEyIDE1IDE4IDkiPjwvcG9seWxpbmU+PC9zdmc+),
151
+ var(--gray-z-0);
152
+ background-repeat: no-repeat, no-repeat;
153
+ background-position: calc(100% - var(--size-4)) 50%, 0% 0%;
154
+ background-size: var(--size-4), 100% 100%;
155
+ padding-right: var(--size-7) !important;
156
+
157
+ &.small {
158
+ background-position: calc(100% - var(--size-2)) 50%, 0% 0%;
159
+ }
160
+ }
161
+
162
+ form {
163
+ display: grid;
164
+ gap: var(--spacer);
165
+
166
+ label {
167
+ display: block;
168
+ font-family: var(--font-family-ui);
169
+ text-transform: var(--text-transform-ui);
170
+ margin: var(--size-2) 0;
171
+ color: var(--gray-z-7);
172
+ transition: all var(--speed);
173
+
174
+ > span:first-child {
175
+ display: block;
176
+ margin: 0 0 var(--size-2) 0
177
+ }
178
+
179
+ &:hover {
180
+ color: var(--color);
181
+ }
182
+ }
183
+ }
@@ -0,0 +1,11 @@
1
+ @import "./variables.css";
2
+ @import "./normalize.css";
3
+ @import "./base.css";
4
+ @import "./text.css";
5
+ @import "./utils.css";
6
+ @import "./cards.css";
7
+ @import "./forms.css";
8
+ @import "./scroll.css";
9
+ @import "./animation.css";
10
+ @import "./prose.css";
11
+ @import "./web3-modals.css";