@visualizevalue/mint-app-base 0.1.60 → 0.1.62
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/.env.example +1 -1
- package/components/Artist/Detail.client.vue +1 -1
- package/components/Button/AddCollection.vue +1 -1
- package/components/Button/EditProfile.vue +1 -1
- package/components/Collection/Actions.vue +1 -1
- package/components/Collection/Detail.client.vue +1 -1
- package/components/Collection/Intro.vue +4 -4
- package/components/Collection/OverviewCard.vue +1 -1
- package/components/Collection/Withdraw.client.vue +1 -1
- package/components/CollectionsOverview.client.vue +4 -4
- package/components/Connect.client.vue +1 -1
- package/components/Form/SelectFile.vue +1 -1
- package/components/Mint/Action.client.vue +1 -1
- package/components/Mint/Preview.client.vue +8 -5
- package/components/Mint/Renderer/Base.client.vue +5 -4
- package/components/Mint/Renderer/P5.client.vue +2 -2
- package/components/Mint/SelectRenderer.client.vue +1 -1
- package/components/MintGasPricePopover.client.vue +13 -19
- package/components/Profile/Header.client.vue +1 -1
- package/components/Renderer/InstallButton.vue +1 -1
- package/components/Renderer/InstallCustom.client.vue +1 -1
- package/components/Renderer/Overview.client.vue +3 -3
- package/components/Token/Detail.client.vue +11 -5
- package/components/Token/MintTimeline.client.vue +4 -4
- package/components/Token/OverviewCard.vue +8 -4
- package/components/TransactionFlow.vue +3 -3
- package/i18n.config.ts +10 -0
- package/locales/en.json +107 -0
- package/nuxt.config.ts +1 -0
- package/package.json +2 -1
- package/pages/[id]/create.vue +8 -8
- package/pages/index.vue +1 -1
package/.env.example
CHANGED
|
@@ -16,7 +16,7 @@ NUXT_PUBLIC_CREATOR_ADDRESS=0xc8f8e2F59Dd95fF67c3d39109ecA2e2A017D4c8a
|
|
|
16
16
|
# =========================
|
|
17
17
|
# SERVICES
|
|
18
18
|
# =========================
|
|
19
|
-
NUXT_PUBLIC_BLOCK_EXPLORER=https://etherscan.io
|
|
19
|
+
NUXT_PUBLIC_BLOCK_EXPLORER=https://sepolia.etherscan.io
|
|
20
20
|
NUXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=
|
|
21
21
|
NUXT_PUBLIC_RPC1=
|
|
22
22
|
NUXT_PUBLIC_RPC2=
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<CollectionsOverview :id="id" :key="`${isMe}-${id}`">
|
|
7
7
|
<template #before="{ collections }">
|
|
8
8
|
<HeaderSection v-if="isMe && collections.length">
|
|
9
|
-
<h1>
|
|
9
|
+
<h1>{{ $t('profile.your_collections') }}</h1>
|
|
10
10
|
<Actions>
|
|
11
11
|
<ButtonAddCollection :id="id" />
|
|
12
12
|
</Actions>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</figure>
|
|
7
7
|
<div class="text">
|
|
8
8
|
<div>
|
|
9
|
-
<h1>{{ collection.name || '
|
|
9
|
+
<h1>{{ collection.name || $t('collection.unnamed') }} <small v-if="collection.symbol">({{ collection.symbol }})</small></h1>
|
|
10
10
|
<p v-if="collection.description">
|
|
11
11
|
<ExpandableText :text="collection.description" />
|
|
12
12
|
</p>
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
<div v-if="id">
|
|
16
16
|
<p>
|
|
17
17
|
<span>
|
|
18
|
-
|
|
18
|
+
{{ $t('collection.by') }} <NuxtLink :to="{ name: 'id', params: { id } }">{{ store.displayName(id) }}</NuxtLink>
|
|
19
19
|
</span>
|
|
20
20
|
<span>
|
|
21
|
-
{{ collection.latestTokenId }} {{
|
|
21
|
+
{{ collection.latestTokenId }} {{ $t('tokens', Number(collection.latestTokenId)) }}
|
|
22
22
|
</span>
|
|
23
23
|
<span>
|
|
24
|
-
|
|
24
|
+
{{ $t('collection.created_at_block')}} {{ collection.initBlock }}
|
|
25
25
|
</span>
|
|
26
26
|
</p>
|
|
27
27
|
</div>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
<div class="details">
|
|
16
|
-
<p>{{ collection.latestTokenId }} {{
|
|
16
|
+
<p>{{ collection.latestTokenId }} {{ $t('tokens', Number(collection.latestTokenId)) }} · {{ $t('collection.created_at_block')}} {{ collection.initBlock }}</p>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<template #start="{ start }">
|
|
22
22
|
<Button @click="start">
|
|
23
23
|
<Icon type="withdraw" />
|
|
24
|
-
<span>
|
|
24
|
+
<span>{{ $t('collection.withdraw')}} ({{ balance.value }} {{ balance.format }})</span>
|
|
25
25
|
</Button>
|
|
26
26
|
</template>
|
|
27
27
|
</TransactionFlow>
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
</section>
|
|
11
11
|
<section v-else-if="! loading" class="collections-overview-empty">
|
|
12
12
|
<template v-if="isMe">
|
|
13
|
-
<p>
|
|
13
|
+
<p>{{ $t('collections_overview.no_collections') }}</p>
|
|
14
14
|
<div>
|
|
15
15
|
<Button :to="{ name: `id-create`, params: { id } }">
|
|
16
16
|
<Icon type="plus" />
|
|
17
|
-
<span>
|
|
17
|
+
<span>{{ $t('collections_overview.create_first') }}</span>
|
|
18
18
|
</Button>
|
|
19
19
|
</div>
|
|
20
20
|
</template>
|
|
21
21
|
<template v-else>
|
|
22
|
-
<p>
|
|
22
|
+
<p>{{ $t('collections_overview.no_collections_other') }}</p>
|
|
23
23
|
</template>
|
|
24
24
|
</section>
|
|
25
|
-
<Loading v-if="loading" txt="
|
|
25
|
+
<Loading v-if="loading" :txt="$t('collections_overview.querying_blockchain')" />
|
|
26
26
|
</template>
|
|
27
27
|
|
|
28
28
|
<script setup>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<Embed v-if="animationUrl" :src="animationUrl" />
|
|
4
4
|
|
|
5
5
|
<div class="static">
|
|
6
|
-
<Image v-if="image" :src="image" alt="
|
|
6
|
+
<Image v-if="image" :src="image" :alt="$t('mint.preview.title')" />
|
|
7
7
|
<ImagePreview v-else />
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
10
|
<div class="text">
|
|
11
|
-
<h1 :class="{ '': !name }">{{ name || '
|
|
11
|
+
<h1 :class="{ '': !name }">{{ name || $t('tokens') }}</h1>
|
|
12
12
|
<p :class="{ '': !description }">
|
|
13
|
-
{{ description || '
|
|
13
|
+
{{ description || $t('mint.preview.no_description') }}
|
|
14
14
|
</p>
|
|
15
15
|
</div>
|
|
16
16
|
</article>
|
|
@@ -22,8 +22,6 @@ const { image, animationUrl, name, description } = useCreateMintData()
|
|
|
22
22
|
|
|
23
23
|
<style scoped>
|
|
24
24
|
.mint-preview {
|
|
25
|
-
position: sticky;
|
|
26
|
-
top: var(--spacer);
|
|
27
25
|
height: min-content;
|
|
28
26
|
place-content: start center;
|
|
29
27
|
border-radius: var(--card-border-radius);
|
|
@@ -31,6 +29,11 @@ const { image, animationUrl, name, description } = useCreateMintData()
|
|
|
31
29
|
grid-template-columns: 20% 1fr;
|
|
32
30
|
gap: var(--spacer);
|
|
33
31
|
|
|
32
|
+
@media (--md) {
|
|
33
|
+
position: sticky;
|
|
34
|
+
top: var(--spacer);
|
|
35
|
+
}
|
|
36
|
+
|
|
34
37
|
> * {
|
|
35
38
|
grid-column: span 2;
|
|
36
39
|
}
|
|
@@ -13,16 +13,17 @@
|
|
|
13
13
|
<FormSelectFile ref="select" @change="setArtifact" />
|
|
14
14
|
<p v-if="! isSmall" class="muted">
|
|
15
15
|
<small>
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
{{ $t('mint.base.note.start') }}
|
|
17
|
+
<a href="https://presence.art/tokens/perspective.svg" target="_blank">{{ $t('mint.base.note.link_text') }}</a>.
|
|
18
|
+
{{ $t('mint.base.note.end') }}
|
|
18
19
|
</small>
|
|
19
20
|
</p>
|
|
20
21
|
</div>
|
|
21
22
|
<FormInput v-else-if="mode === 'ipfs'" v-model="ipfsCid" placeholder="CID (qmx...)" prefix="ipfs://" required />
|
|
22
23
|
<FormInput v-else-if="mode === 'ar'" v-model="arTxId" placeholder="TX ID (frV...)" prefix="ar://" required />
|
|
23
24
|
|
|
24
|
-
<FormInput v-model="name" placeholder="
|
|
25
|
-
<FormInput v-model="description" placeholder="
|
|
25
|
+
<FormInput v-model="name" :placeholder="$t('mint.base.title_placeholder')" required />
|
|
26
|
+
<FormInput v-model="description" :placeholder="$t('mint.base.description_placeholder')" />
|
|
26
27
|
</div>
|
|
27
28
|
</div>
|
|
28
29
|
</template>
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<Button
|
|
7
7
|
@click="select('base')"
|
|
8
8
|
:class="{ active: active === 'base' }"
|
|
9
|
-
>
|
|
9
|
+
>{{ $t('mint.p5.static') }}</Button>
|
|
10
10
|
<Button
|
|
11
11
|
@click="select('script')"
|
|
12
12
|
:class="{ active: active === 'script' }"
|
|
13
|
-
>
|
|
13
|
+
>{{ $t('mint.p5.p5_script') }}</Button>
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<template #content="{ active }">
|
|
@@ -3,21 +3,18 @@
|
|
|
3
3
|
<template #trigger><MintGasPrice :mint-count="2" /></template>
|
|
4
4
|
<template #content>
|
|
5
5
|
<div class="prose">
|
|
6
|
-
<h1>
|
|
7
|
-
<p>
|
|
8
|
-
<p>
|
|
9
|
-
<p>
|
|
10
|
-
The cost to store and secure the object on the network is mirrored as compensation to the artist,
|
|
11
|
-
creating a direct link between network value and creator reward.
|
|
12
|
-
</p>
|
|
6
|
+
<h1>{{ $t('popover.mint_pricing')}}</h1>
|
|
7
|
+
<p>{{ $t('popover.pricing_info')}}</p>
|
|
8
|
+
<p>{{ $t('popover.network_fees')}}</p>
|
|
9
|
+
<p>{{ $t('popover.artist_reward') }}</p>
|
|
13
10
|
<table>
|
|
14
11
|
<tbody>
|
|
15
12
|
<tr>
|
|
16
|
-
<td>
|
|
13
|
+
<td>{{ $t('popover.gas_price') }}</td>
|
|
17
14
|
<td><GasPrice /></td>
|
|
18
15
|
</tr>
|
|
19
16
|
<tr>
|
|
20
|
-
<td>
|
|
17
|
+
<td>{{ $t('popover.cost_to_mint') }}</td>
|
|
21
18
|
<td>
|
|
22
19
|
<span>
|
|
23
20
|
60.000 gas * <GasPrice />
|
|
@@ -25,29 +22,26 @@
|
|
|
25
22
|
</td>
|
|
26
23
|
</tr>
|
|
27
24
|
<tr>
|
|
28
|
-
<td>
|
|
25
|
+
<td>{{ $t('popover.ethereum_fee') }}</td>
|
|
29
26
|
<td><MintGasPrice /></td>
|
|
30
27
|
</tr>
|
|
31
28
|
<tr>
|
|
32
|
-
<td>
|
|
29
|
+
<td>{{ $t('popover.artist_comp') }} (50%)</td>
|
|
33
30
|
<td><MintGasPrice /></td>
|
|
34
31
|
</tr>
|
|
35
32
|
<tr>
|
|
36
|
-
<td>
|
|
33
|
+
<td>{{ $t('popover.mint_price') }}</td>
|
|
37
34
|
<td><MintGasPrice :mint-count="2" /></td>
|
|
38
35
|
</tr>
|
|
39
36
|
</tbody>
|
|
40
37
|
</table>
|
|
41
|
-
<p>
|
|
42
|
-
Mints of more than one don't increase the Ethereum fee, resulting in higher
|
|
43
|
-
artist compensation.
|
|
44
|
-
</p>
|
|
38
|
+
<p>{{ $t('popover.mint_more_info') }}</p>
|
|
45
39
|
<table>
|
|
46
40
|
<thead>
|
|
47
41
|
<tr>
|
|
48
|
-
<th>
|
|
49
|
-
<th>
|
|
50
|
-
<th>
|
|
42
|
+
<th>{{ $t('popover.amount') }}</th>
|
|
43
|
+
<th>{{ $t('popover.eth_fee')}}</th>
|
|
44
|
+
<th>{{ $t('popover.artist_comp') }}</th>
|
|
51
45
|
</tr>
|
|
52
46
|
</thead>
|
|
53
47
|
<tbody>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<img :src="artist.avatar || avatar" :alt="name" />
|
|
6
6
|
<h1 @click="() => ! hideAddress && copy(address)">
|
|
7
7
|
<span>{{ name }}</span>
|
|
8
|
-
<small v-if="copied">
|
|
8
|
+
<small v-if="copied">{{ $t('profile.address_copied') }}</small>
|
|
9
9
|
<small v-else-if="! hideAddress">{{ shortAddress(address) }}</small>
|
|
10
10
|
</h1>
|
|
11
11
|
<p v-if="description">{{ description }}</p>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="renderers" id="installed-renderers">
|
|
3
|
-
<h1>
|
|
3
|
+
<h1>{{ $t('renderer.installed') }}</h1>
|
|
4
4
|
|
|
5
5
|
<div>
|
|
6
6
|
<RendererOverviewCard
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</section>
|
|
12
12
|
|
|
13
13
|
<section class="renderers" id="available-renderers">
|
|
14
|
-
<h1>
|
|
14
|
+
<h1>{{ $t('renderer.available') }}</h1>
|
|
15
15
|
|
|
16
16
|
<div v-if="availableRenderers.length">
|
|
17
17
|
<RendererOverviewCard
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
32
|
<div v-if="! availableRenderers.length" class="empty">
|
|
33
|
-
<p>
|
|
33
|
+
<p>{{ $t('renderer.all_installed') }}</p>
|
|
34
34
|
</div>
|
|
35
35
|
|
|
36
36
|
<RendererInstallCustom :collection="collection" />
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
<header class="title">
|
|
33
33
|
<h1>{{ token.name }} <small>#{{ token.tokenId }}</small></h1>
|
|
34
34
|
<p v-if="token.description">
|
|
35
|
-
<ExpandableText :text="token.description" :length="95" expand-text="
|
|
35
|
+
<ExpandableText :text="token.description" :length="95" :expand-text="$t('read_more')" :collapse-text="$t('collapse')" />
|
|
36
36
|
</p>
|
|
37
37
|
<p v-if="collection" class="artist">
|
|
38
|
-
|
|
38
|
+
{{ $t('token.by') }} <NuxtLink :to="{ name: 'id', params: { id: collection.owner } }">{{ store.displayName(collection.owner) }}</NuxtLink>
|
|
39
39
|
</p>
|
|
40
40
|
</header>
|
|
41
41
|
|
|
@@ -54,9 +54,15 @@
|
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<div class="mint-status">
|
|
57
|
-
<p v-if="mintOpen">{{ blocksRemaining }}
|
|
58
|
-
<p v-else-if="currentBlock">
|
|
59
|
-
|
|
57
|
+
<p v-if="mintOpen">{{ $t('token.blocks_remaining', { blocksRemaining }) }}</p>
|
|
58
|
+
<p v-else-if="currentBlock">
|
|
59
|
+
{{ $t('token.closed_at_block')}}
|
|
60
|
+
{{ token.mintedBlock + BLOCKS_PER_DAY }}
|
|
61
|
+
</p>
|
|
62
|
+
<p v-if="ownedBalance">
|
|
63
|
+
{{ $t('token.you_own', { ownedBalance }) }}
|
|
64
|
+
{{ $t('tokens', Number(ownedBalance)) }}
|
|
65
|
+
</p>
|
|
60
66
|
</div>
|
|
61
67
|
|
|
62
68
|
<TokenMintTimeline :token="token" :collection="collection" class="network-mints" />
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="token-mint-timeline">
|
|
3
3
|
<slot :mints="mints" :loading="loading">
|
|
4
|
-
<h1>
|
|
4
|
+
<h1>{{ $t('token.mint_timeline') }}</h1>
|
|
5
5
|
|
|
6
6
|
<template v-if="currentBlock">
|
|
7
7
|
<TokenMintTimelineVirtualScroller
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<Account :address="collection.owner" class="account" />
|
|
14
14
|
|
|
15
15
|
<span class="amount">1<span>×</span></span>
|
|
16
|
-
<span class="price">
|
|
16
|
+
<span class="price">{{ $t('token.artist_mint')}}</span>
|
|
17
17
|
|
|
18
18
|
<span class="time-ago"><BlocksTimeAgo v-if="currentBlock" :blocks="currentBlock - token.mintedBlock" /></span>
|
|
19
19
|
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
</template>
|
|
29
29
|
|
|
30
30
|
<div v-if="! backfillComplete" v-show="! loading" ref="loadMore" class="load-more">
|
|
31
|
-
<Button @click="backfill">
|
|
31
|
+
<Button @click="backfill">{{ $t('token.load_more')}}</Button>
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
|
-
<Loading v-if="loading || ! currentBlock" txt="
|
|
34
|
+
<Loading v-if="loading || ! currentBlock" :txt="$t('token.loading_mint_history')" />
|
|
35
35
|
</slot>
|
|
36
36
|
</section>
|
|
37
37
|
</template>
|
|
@@ -29,8 +29,10 @@
|
|
|
29
29
|
<span>{{ token.name }} <span class="token-id">#{{ token.tokenId }}</span></span>
|
|
30
30
|
<span v-if="token.description" class="description">{{ shortString(token.description, 60, 30) }}</span>
|
|
31
31
|
</h1>
|
|
32
|
-
<p v-if="mintOpen" class="closes-in">
|
|
33
|
-
|
|
32
|
+
<p v-if="mintOpen" class="closes-in">
|
|
33
|
+
{{ $t('token.closes_in') }} {{ blocksRemaining }} {{ $t('blocks', Number(blocksRemaining)) }}
|
|
34
|
+
</p>
|
|
35
|
+
<p v-else class="closed-at">{{ $t('token.closed_at_block') }} {{ token.mintedBlock + BLOCKS_PER_DAY }}</p>
|
|
34
36
|
</header>
|
|
35
37
|
<Embed v-if="token.animationUrl" :src="token.animationUrl" />
|
|
36
38
|
<Image v-else-if="token.image" :src="token.image" :alt="token.name" />
|
|
@@ -38,7 +40,7 @@
|
|
|
38
40
|
<CardLink :to="{
|
|
39
41
|
name: 'id-collection-tokenId',
|
|
40
42
|
params: { id: collection.owner, collection: token.collection, tokenId: `${token.tokenId}` }
|
|
41
|
-
}">
|
|
43
|
+
}">{{ $t('token.view')}} {{ token.name }}</CardLink>
|
|
42
44
|
</div>
|
|
43
45
|
<footer>
|
|
44
46
|
<MintTokenBar
|
|
@@ -53,7 +55,9 @@
|
|
|
53
55
|
minted,
|
|
54
56
|
}"
|
|
55
57
|
/>
|
|
56
|
-
<p class="muted" v-if="ownedBalance">
|
|
58
|
+
<p class="muted" v-if="ownedBalance">
|
|
59
|
+
{{ $t('token.you_own', { ownedBalance: ownedBalance, token: token.name }) }} {{ $t('tokens', Number(ownedBalance)) }}
|
|
60
|
+
</p>
|
|
57
61
|
</footer>
|
|
58
62
|
</slot>
|
|
59
63
|
</article>
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
|
|
20
20
|
<Button v-if="step === 'waiting'" :to="txLink" target="_blank" class="block-explorer">
|
|
21
21
|
<Icon type="loader" class="spin" />
|
|
22
|
-
<span>
|
|
22
|
+
<span>{{ $t('transaction_flow.view_on_etherscan') }}</span>
|
|
23
23
|
</Button>
|
|
24
24
|
|
|
25
25
|
<Actions v-if="step === 'chain'">
|
|
26
|
-
<Button @click="cancel" class="secondary">
|
|
26
|
+
<Button @click="cancel" class="secondary">{{ $t('transaction_flow.cancel') }}</Button>
|
|
27
27
|
</Actions>
|
|
28
28
|
|
|
29
29
|
<Actions v-if="step === 'confirm' || step === 'error'">
|
|
30
|
-
<Button @click="cancel" class="secondary">
|
|
30
|
+
<Button @click="cancel" class="secondary">{{ $t('transaction_flow.cancel') }}</Button>
|
|
31
31
|
<Button @click="() => initializeRequest()">{{ text.action[step] || 'Execute' }}</Button>
|
|
32
32
|
</Actions>
|
|
33
33
|
</Modal>
|
package/i18n.config.ts
ADDED
package/locales/en.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"connect_button": "Connect",
|
|
3
|
+
"mint_button": "Mint",
|
|
4
|
+
"read_more": "Read More",
|
|
5
|
+
"collapse": "Collapse",
|
|
6
|
+
"tokens": "token | tokens",
|
|
7
|
+
"blocks": "block | blocks",
|
|
8
|
+
"choose_file": "Choose File",
|
|
9
|
+
"popover": {
|
|
10
|
+
"mint_pricing": "Mint Pricing",
|
|
11
|
+
"pricing_info": "Artifacts are priced based on the Ethereum network fees at the time of collecting.",
|
|
12
|
+
"network_fees": "Network fees (Gas fees) are an essential component of securing and running decentralized blockchains.",
|
|
13
|
+
"artist_reward": "The cost to store and secure the object on the network is mirrored as compensation to the artist, creating a direct link between network value and creator reward.",
|
|
14
|
+
"gas_price": "Gas price",
|
|
15
|
+
"cost_to_mint": "Cost to mint",
|
|
16
|
+
"ethereum_fee": "Ethereum fee (50%)",
|
|
17
|
+
"artist_compensation": "Artist comp. (50%)",
|
|
18
|
+
"mint_price": "Mint price",
|
|
19
|
+
"mint_more_info": "Mints of more than one don't increase the Ethereum fee, resulting in higher artist compensation.",
|
|
20
|
+
"amount": "Amount",
|
|
21
|
+
"eth_fee": "Ethereum fee",
|
|
22
|
+
"artist_comp": "Artist comp."
|
|
23
|
+
},
|
|
24
|
+
"profile": {
|
|
25
|
+
"address_copied": "copied...",
|
|
26
|
+
"edit_button": "Edit Profile",
|
|
27
|
+
"add_collection_button": "Collection",
|
|
28
|
+
"your_collections": "Your Collections"
|
|
29
|
+
},
|
|
30
|
+
"collections_overview": {
|
|
31
|
+
"no_collections": "It looks like you haven't deployed any collections.",
|
|
32
|
+
"create_first": "Create Your First",
|
|
33
|
+
"no_collections_other": "It looks like this account hasn't deployed any collections.",
|
|
34
|
+
"querying_blockchain": "Querying the blockchain..."
|
|
35
|
+
},
|
|
36
|
+
"collection": {
|
|
37
|
+
"unnamed": "Unnamed Collection",
|
|
38
|
+
"created_at_block": "Created at Block",
|
|
39
|
+
"by": "By",
|
|
40
|
+
"no_tokens": "No tokens yet.",
|
|
41
|
+
"withdraw": "Withdraw"
|
|
42
|
+
},
|
|
43
|
+
"mint": {
|
|
44
|
+
"base": {
|
|
45
|
+
"note": {
|
|
46
|
+
"start": "Note: This should be a small file, preferably an SVG like",
|
|
47
|
+
"link_text": "this one (810 bytes)",
|
|
48
|
+
"end": "If it is larger than what we can store within one transaction, the token creation will be split up into multiple transactions."
|
|
49
|
+
},
|
|
50
|
+
"title_placeholder": "Title",
|
|
51
|
+
"description_placeholder": "Description"
|
|
52
|
+
},
|
|
53
|
+
"p5": {
|
|
54
|
+
"static": "Static",
|
|
55
|
+
"p5_script": "P5 Script"
|
|
56
|
+
},
|
|
57
|
+
"preview": {
|
|
58
|
+
"title": "Preview",
|
|
59
|
+
"no_description": "No description"
|
|
60
|
+
},
|
|
61
|
+
"select": {
|
|
62
|
+
"install_new": "Install New"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"renderer": {
|
|
66
|
+
"install_button": "Install",
|
|
67
|
+
"add_custom": "Add Custom Renderer",
|
|
68
|
+
"installed": "Installed Renderers",
|
|
69
|
+
"available": "Available Renderers",
|
|
70
|
+
"all_installed": "All known Renderers installed"
|
|
71
|
+
},
|
|
72
|
+
"token": {
|
|
73
|
+
"by": "By",
|
|
74
|
+
"closes_in": "Closes in",
|
|
75
|
+
"blocks_remaining": "{blocksRemaining} blocks remaining",
|
|
76
|
+
"closed_at_block": "Closed at block",
|
|
77
|
+
"you_own": "You own {ownedBalance} {tokens}",
|
|
78
|
+
"mint_timeline": "Mint Timeline",
|
|
79
|
+
"artist_mint": "Artist Mint",
|
|
80
|
+
"load_more": "Load more",
|
|
81
|
+
"blocks_ago": "{blocks} blocks ago",
|
|
82
|
+
"loading_mint_history": "Loading Mint History...",
|
|
83
|
+
"view": "View"
|
|
84
|
+
},
|
|
85
|
+
"transaction_flow": {
|
|
86
|
+
"view_on_etherscan": "View on Etherscan",
|
|
87
|
+
"cancel": "Cancel"
|
|
88
|
+
},
|
|
89
|
+
"create": {
|
|
90
|
+
"title": "Create New",
|
|
91
|
+
"note": {
|
|
92
|
+
"start": "Note: This should be a small file, preferably a simple SVG like",
|
|
93
|
+
"link_text": "this one (273 bytes)",
|
|
94
|
+
"end": "Try to make it less than 10kb."
|
|
95
|
+
},
|
|
96
|
+
"preview": {
|
|
97
|
+
"token": "Token",
|
|
98
|
+
"no_description": "No description"
|
|
99
|
+
},
|
|
100
|
+
"form": {
|
|
101
|
+
"title_placeholder": "Title",
|
|
102
|
+
"symbol_placeholder": "Symbol",
|
|
103
|
+
"description_placeholder": "Description",
|
|
104
|
+
"deploy_button": "Deploy"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
package/nuxt.config.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visualizevalue/mint-app-base",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.62",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"@visualizevalue/mint-utils": "^0.0.4"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
+
"@nuxtjs/i18n": "^8.5.5",
|
|
30
31
|
"@types/codemirror": "^5.60.15",
|
|
31
32
|
"nuxt": "^3.13.2",
|
|
32
33
|
"typescript": "^5.5.4"
|
package/pages/[id]/create.vue
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<PageFrame
|
|
4
4
|
:title="[
|
|
5
5
|
{
|
|
6
|
-
text:
|
|
6
|
+
text: $t('create.title')
|
|
7
7
|
}
|
|
8
8
|
]"
|
|
9
9
|
class="inset"
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
<ImagePreview v-else />
|
|
16
16
|
</div>
|
|
17
17
|
<h1>
|
|
18
|
-
<span :class="{ '': !title }">{{ title || '
|
|
18
|
+
<span :class="{ '': !title }">{{ title || $t('create.preview.token') }}</span>
|
|
19
19
|
<small :class="{ '': !symbol }">{{ symbol || '$T' }}</small>
|
|
20
20
|
</h1>
|
|
21
21
|
<p :class="{ '': !description }">
|
|
22
|
-
{{ description || '
|
|
22
|
+
{{ description || $t('create.preview.no_description') }}
|
|
23
23
|
</p>
|
|
24
24
|
</article>
|
|
25
25
|
|
|
@@ -54,19 +54,19 @@
|
|
|
54
54
|
<div>
|
|
55
55
|
<FormSelectFile @change="setImage" />
|
|
56
56
|
<p v-if="! isSmall" class="muted">
|
|
57
|
-
<small>
|
|
57
|
+
<small> {{ $t('create.note.start') }} <a :href="`${base}example-contract-icon.svg`" target="_blank">{{ $t('create.note.link_text') }}</a>. {{ $t('create.note.end') }}</small>
|
|
58
58
|
</p>
|
|
59
59
|
</div>
|
|
60
60
|
<FormGroup>
|
|
61
|
-
<FormInput v-model="title" placeholder="
|
|
62
|
-
<FormInput v-model="symbol" placeholder="
|
|
61
|
+
<FormInput v-model="title" :placeholder="$t('create.form.title_placeholder')" required class="title" />
|
|
62
|
+
<FormInput v-model="symbol" :placeholder="$t('create.form.symbol_placeholder')" required />
|
|
63
63
|
</FormGroup>
|
|
64
|
-
<FormInput v-model="description" placeholder="
|
|
64
|
+
<FormInput v-model="description" :placeholder="$t('create.form.description_placeholder')" />
|
|
65
65
|
</div>
|
|
66
66
|
|
|
67
67
|
<Actions>
|
|
68
68
|
<Button type="submit">
|
|
69
|
-
|
|
69
|
+
{{ $t('create.form.deploy_button') }}
|
|
70
70
|
</Button>
|
|
71
71
|
</Actions>
|
|
72
72
|
</form>
|