mirror of
https://github.com/web3privacy/explorer-app.git
synced 2024-10-15 16:46:26 +02:00
feat(project-detail): redesign detail
This commit is contained in:
parent
441bff9017
commit
b6e1984046
17 changed files with 843 additions and 687 deletions
|
@ -20,9 +20,6 @@ defineProps<{
|
||||||
gap-8px
|
gap-8px
|
||||||
text-16px
|
text-16px
|
||||||
font-700
|
font-700
|
||||||
lg:max-w-320px
|
|
||||||
lg:w-full
|
|
||||||
lg:justify-end
|
|
||||||
>
|
>
|
||||||
<slot />
|
<slot />
|
||||||
{{ title }}
|
{{ title }}
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
<div
|
<div
|
||||||
hidden
|
hidden
|
||||||
w-full
|
w-full
|
||||||
max-w-320px
|
|
||||||
lg:block
|
|
||||||
/>
|
/>
|
||||||
<div w-full>
|
<div w-full>
|
||||||
<slot />
|
<slot />
|
||||||
|
|
|
@ -75,26 +75,36 @@ const logo = props.project?.logos?.at(0)?.url
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
lg:flex
|
flex
|
||||||
|
flex-col
|
||||||
|
gap-y-16px
|
||||||
|
lg:flex-row
|
||||||
|
items-center
|
||||||
lg:gap-32px
|
lg:gap-32px
|
||||||
>
|
>
|
||||||
<NuxtImg
|
<NuxtImg
|
||||||
lg:max-w-320px
|
max-w-200px
|
||||||
lg:max-h-320px
|
max-h-200px
|
||||||
shrink
|
shrink
|
||||||
|
border="1px app-text-grey"
|
||||||
:src="logo ?? '/no-image-1-1.svg'"
|
:src="logo ?? '/no-image-1-1.svg'"
|
||||||
class="bg-app-bg-grey object-cover max-w-full h-full vertical-align[middle] block border-0 w-full h-[300px]"
|
class="bg-app-bg-grey object-cover h-full vertical-align[middle] block w-full h-[300px]"
|
||||||
/>
|
/>
|
||||||
<div grow>
|
<div
|
||||||
|
grow
|
||||||
|
w-full
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
flex-col
|
flex-col
|
||||||
|
items-center
|
||||||
|
lg:items-start
|
||||||
justify-between
|
justify-between
|
||||||
gap-32px
|
gap-y="lg:12px 24px"
|
||||||
lg:flex-row
|
text-app-text-grey
|
||||||
lg:items-center
|
w-full
|
||||||
>
|
>
|
||||||
<div mt-24px>
|
<div mt-4px>
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
:to="project.links?.web"
|
:to="project.links?.web"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -112,139 +122,175 @@ const logo = props.project?.logos?.at(0)?.url
|
||||||
{{ project.name }}
|
{{ project.name }}
|
||||||
</h1>
|
</h1>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-openinnew
|
i-ic-twotone-open-in-new
|
||||||
text-16px
|
text="22px app-white"
|
||||||
/>
|
/>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<h2
|
|
||||||
text="16px app-text-grey"
|
|
||||||
leading-24px
|
|
||||||
mt-8px
|
|
||||||
>
|
|
||||||
{{ project.project_type ?? '---' }}
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
border-2px
|
|
||||||
class="border-app-black bg-app-white text-app-black"
|
|
||||||
flex
|
flex
|
||||||
items-center
|
|
||||||
justify-center
|
justify-center
|
||||||
px-32px
|
lg:grid
|
||||||
py-16px
|
grid-cols-10
|
||||||
text-32px
|
w-full
|
||||||
font-700
|
items-center
|
||||||
leading-40px
|
mt-4px
|
||||||
cursor-pointer
|
|
||||||
>
|
>
|
||||||
{{ `${calculateScore}%` }}
|
<h2
|
||||||
|
hidden
|
||||||
|
lg:block
|
||||||
|
>
|
||||||
|
Usecases:
|
||||||
|
</h2>
|
||||||
|
<p
|
||||||
|
text-app-white
|
||||||
|
col-span-9
|
||||||
|
>
|
||||||
|
Swap, Mixer
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div
|
||||||
<div
|
grid
|
||||||
grid
|
grid-cols-2
|
||||||
grid-cols-2
|
gap-y-12px
|
||||||
gap-16px
|
lg:flex
|
||||||
my-32px
|
lg:flex-col
|
||||||
lg:grid-cols-4
|
order-3
|
||||||
>
|
lg:order-2
|
||||||
<ProjectInfoItem
|
w-full
|
||||||
:check-undefined="project.links?.github"
|
|
||||||
title="Github"
|
|
||||||
bold
|
|
||||||
text-size="18px"
|
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<div
|
||||||
<UnoIcon i-web-code />
|
flex
|
||||||
</template>
|
flex-col
|
||||||
{{ project.links?.github ? 'YES' : 'NO' }}
|
gap-4px
|
||||||
</ProjectInfoItem>
|
lg:grid
|
||||||
<ProjectInfoItem
|
lg:grid-cols-10
|
||||||
:check-undefined="project.project_status?.version"
|
lg:items-center
|
||||||
title="Product readyness"
|
w-full
|
||||||
bold
|
>
|
||||||
text-size="18px"
|
<h2>
|
||||||
|
Categories:
|
||||||
|
</h2>
|
||||||
|
<p
|
||||||
|
text-app-white
|
||||||
|
col-span-9
|
||||||
|
>
|
||||||
|
Dapp, Network
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
flex
|
||||||
|
flex-col
|
||||||
|
gap-4px
|
||||||
|
lg:grid
|
||||||
|
lg:grid-cols-10
|
||||||
|
lg:items-center
|
||||||
|
w-full
|
||||||
|
>
|
||||||
|
<h2>
|
||||||
|
Ecosystems:
|
||||||
|
</h2>
|
||||||
|
<p
|
||||||
|
text-app-white
|
||||||
|
col-span-9
|
||||||
|
>
|
||||||
|
Ethereum, Secret Network
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
grid
|
||||||
|
grid-cols-4
|
||||||
|
w-full
|
||||||
|
items-center
|
||||||
|
order-2
|
||||||
|
lg:order-3
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<div
|
||||||
<UnoIcon i-web-cube />
|
flex
|
||||||
</template>
|
items-center
|
||||||
{{ project.project_status?.version }}
|
justify-between
|
||||||
</ProjectInfoItem>
|
lg:justify-start
|
||||||
<ProjectInfoItem
|
lg:gap-24px
|
||||||
:check-undefined="project.team?.length"
|
col-span-3
|
||||||
title="Team"
|
>
|
||||||
bold
|
<div
|
||||||
text-size="18px"
|
flex
|
||||||
>
|
flex-col
|
||||||
<template #prefix>
|
lg:flex-row
|
||||||
<UnoIcon i-web-team />
|
items-center
|
||||||
</template>
|
>
|
||||||
{{ `${project.team?.length} members` }}
|
<p text="12px lg:16px" leading="16px lg:24px">Openess:</p>
|
||||||
</ProjectInfoItem>
|
<ProjectRating
|
||||||
<ProjectInfoItem
|
:rating="project.ratings.openess"
|
||||||
:check-undefined="project.links?.docs"
|
type="openess"
|
||||||
title="Docs"
|
:score="1"
|
||||||
bold
|
compact
|
||||||
text-size="18px"
|
/>
|
||||||
>
|
</div>
|
||||||
<template #prefix>
|
<div
|
||||||
<UnoIcon
|
flex
|
||||||
i-web-docs
|
flex-col
|
||||||
text-28px
|
lg:flex-row
|
||||||
/>
|
items-center
|
||||||
</template>
|
>
|
||||||
{{ project.links?.docs ? 'YES' : 'NO' }}
|
<p text="12px lg:16px" leading="16px lg:24px">Technology:</p>
|
||||||
</ProjectInfoItem>
|
<ProjectRating
|
||||||
<ProjectInfoItem
|
:rating="project.ratings.technology"
|
||||||
:check-undefined="project.audits"
|
type="technology"
|
||||||
title="Audit"
|
:score="2"
|
||||||
bold
|
compact
|
||||||
text-size="18px"
|
/>
|
||||||
>
|
</div>
|
||||||
<template #prefix>
|
<div
|
||||||
<UnoIcon
|
flex
|
||||||
i-web-audit
|
flex-col
|
||||||
text-28px
|
lg:flex-row
|
||||||
/>
|
items-center
|
||||||
</template>
|
>
|
||||||
{{ project.audits ? 'YES' : 'NO' }}
|
<p text="12px lg:16px" leading="16px lg:24px">Privacy:</p>
|
||||||
</ProjectInfoItem>
|
<ProjectRating
|
||||||
<ProjectInfoItem
|
:rating="project.ratings.privacy"
|
||||||
:check-undefined="project.links"
|
type="privacy"
|
||||||
title="Available support"
|
:score="3"
|
||||||
bold
|
compact
|
||||||
text-size="18px"
|
/>
|
||||||
>
|
</div>
|
||||||
<template #prefix>
|
</div>
|
||||||
<UnoIcon
|
<div
|
||||||
i-web-support
|
flex
|
||||||
text-28px
|
items-center
|
||||||
/>
|
justify-end
|
||||||
</template>
|
w-full
|
||||||
{{ `${availableSupport} channels` }}
|
gap-16px
|
||||||
</ProjectInfoItem>
|
mt--8px lg:mt-0
|
||||||
</div>
|
>
|
||||||
<div
|
<h2
|
||||||
grid
|
hidden
|
||||||
grid-cols-2
|
lg:block
|
||||||
gap-16px
|
>
|
||||||
my-32px
|
Total Score:
|
||||||
lg:grid-cols-4
|
</h2>
|
||||||
>
|
<div
|
||||||
<ProjectInfoItem
|
flex
|
||||||
:check-undefined="project.blockchain_features?.network"
|
items-center
|
||||||
tooltip-link="/"
|
justify-center
|
||||||
title="Ecosystem"
|
border="2px app-white"
|
||||||
bold
|
text="16px lg:24px app-white"
|
||||||
>
|
leading="24px md:32px"
|
||||||
{{ project.blockchain_features?.network }}
|
max-h-="32px md:40px"
|
||||||
</ProjectInfoItem>
|
max-w="84px"
|
||||||
<ProjectInfoItem
|
w-full
|
||||||
invisible
|
h-full
|
||||||
title="Last update"
|
font-700
|
||||||
bold
|
whitespace-nowrap
|
||||||
>
|
py="2px lg:8px"
|
||||||
17/11/2023 – 23:22
|
lg:py-4px
|
||||||
</ProjectInfoItem>
|
>
|
||||||
|
{{ calculateScore }} %
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
36
components/Project/ProjectHistory.vue
Normal file
36
components/Project/ProjectHistory.vue
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import type { Project } from '~/types'
|
||||||
|
|
||||||
|
defineProps<{
|
||||||
|
project: Project
|
||||||
|
}>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<ProjectDetailCategoryDivider
|
||||||
|
title="HISTORY"
|
||||||
|
badge-text="3/10"
|
||||||
|
>
|
||||||
|
<UnoIcon
|
||||||
|
i-material-symbols-calendar-month
|
||||||
|
text-24px
|
||||||
|
/>
|
||||||
|
</ProjectDetailCategoryDivider>
|
||||||
|
<ProjectDetailContainer>
|
||||||
|
<div
|
||||||
|
grid
|
||||||
|
grid-cols-2
|
||||||
|
items-start
|
||||||
|
mt-32px
|
||||||
|
gap-y-16px
|
||||||
|
lg:grid-cols-4
|
||||||
|
>
|
||||||
|
<ProjectInfoItem
|
||||||
|
:check-undefined="project.history?.time"
|
||||||
|
title="Date of creation"
|
||||||
|
>
|
||||||
|
{{ formatDate(project.history?.time) }}
|
||||||
|
</ProjectInfoItem>
|
||||||
|
</div>
|
||||||
|
</ProjectDetailContainer>
|
||||||
|
</template>
|
|
@ -32,13 +32,6 @@ const githubProjectUrl = computed(() => {
|
||||||
md:block
|
md:block
|
||||||
>{{ 'BACK TO LIST' }}</span>
|
>{{ 'BACK TO LIST' }}</span>
|
||||||
</NavigationButton>
|
</NavigationButton>
|
||||||
<hr
|
|
||||||
hidden
|
|
||||||
md:block
|
|
||||||
border-t-2px
|
|
||||||
border-white
|
|
||||||
w-full
|
|
||||||
>
|
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
gap-16px
|
gap-16px
|
||||||
|
|
|
@ -12,7 +12,7 @@ defineProps<{
|
||||||
badge-text="3/10"
|
badge-text="3/10"
|
||||||
>
|
>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-code_v2
|
i-bi-code-square
|
||||||
text-24px
|
text-24px
|
||||||
/>
|
/>
|
||||||
</ProjectDetailCategoryDivider>
|
</ProjectDetailCategoryDivider>
|
||||||
|
@ -23,25 +23,98 @@ defineProps<{
|
||||||
leading-24px
|
leading-24px
|
||||||
font-400
|
font-400
|
||||||
>
|
>
|
||||||
<h3 text-app-text-grey>
|
<h3
|
||||||
{{ 'Project Description' }}
|
text-app-text-grey
|
||||||
|
mb-8px
|
||||||
|
>
|
||||||
|
Project Description
|
||||||
</h3>
|
</h3>
|
||||||
<span
|
<p
|
||||||
text="14px sm:16px"
|
text="14px sm:16px"
|
||||||
leading-20px
|
leading-20px
|
||||||
>{{ project.description ?? '---' }}</span>
|
>
|
||||||
|
{{ project.description ?? '---' }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
grid
|
||||||
|
grid-cols="2 lg:4"
|
||||||
|
mt="24px lg:32px"
|
||||||
|
text="14px lg:16px"
|
||||||
|
gap-y-16px
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<h3
|
||||||
|
text-app-text-grey
|
||||||
|
leading-20px
|
||||||
|
mb="4px lg:8px"
|
||||||
|
>
|
||||||
|
Project Phase
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
flex
|
||||||
|
items-center
|
||||||
|
gap-8px
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
h-10px
|
||||||
|
w-10px
|
||||||
|
rounded-full
|
||||||
|
bg-green
|
||||||
|
/><p leading="20px lg:24px">
|
||||||
|
Mainnet
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3
|
||||||
|
text-app-text-grey
|
||||||
|
leading-20px
|
||||||
|
mb="4px lg:8px"
|
||||||
|
>
|
||||||
|
Assets used
|
||||||
|
</h3>
|
||||||
|
<p leading="20px lg:24px">
|
||||||
|
ETH, DAI, USDC, FRAX
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3
|
||||||
|
text-app-text-grey
|
||||||
|
leading-20px
|
||||||
|
mb="4px lg:8px"
|
||||||
|
>
|
||||||
|
Native token
|
||||||
|
</h3>
|
||||||
|
<p leading="20px lg:24px">
|
||||||
|
SCRT
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3
|
||||||
|
text-app-text-grey
|
||||||
|
leading-20px
|
||||||
|
mb="4px lg:8px"
|
||||||
|
>
|
||||||
|
Project launch day
|
||||||
|
</h3>
|
||||||
|
<p leading="20px lg:24px">
|
||||||
|
06/2017
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div mt-24px>
|
<div mt-24px>
|
||||||
<h3
|
<h3
|
||||||
text="14px sm:16px app-text-grey"
|
text="14px sm:16px app-text-grey"
|
||||||
leading-20px
|
leading-20px
|
||||||
>
|
>
|
||||||
{{ 'Infrastructure links' }}
|
Infrastructure links:
|
||||||
</h3>
|
</h3>
|
||||||
<div
|
<div
|
||||||
grid
|
grid
|
||||||
grid-cols-2
|
grid-cols-2
|
||||||
gap-16px
|
gap-x-16px
|
||||||
|
gap-y-12px
|
||||||
mt-8px
|
mt-8px
|
||||||
lg:grid-cols-4
|
lg:grid-cols-4
|
||||||
>
|
>
|
||||||
|
@ -50,18 +123,12 @@ defineProps<{
|
||||||
:to="project.links?.web"
|
:to="project.links?.web"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon i-web-website />
|
<UnoIcon
|
||||||
|
i-ic-baseline-language
|
||||||
|
text="24px app-text-grey"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Website' }}
|
Website
|
||||||
</ProjectOpenessLink>
|
|
||||||
<ProjectOpenessLink
|
|
||||||
v-if="project.links?.blog"
|
|
||||||
:to="project.links.blog"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<UnoIcon i-web-website />
|
|
||||||
</template>
|
|
||||||
{{ 'Blog' }}
|
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.github"
|
v-if="project.links?.github"
|
||||||
|
@ -69,12 +136,25 @@ defineProps<{
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-github
|
i-mdi-github
|
||||||
opacity-30
|
text="24px app-text-grey"
|
||||||
text-27px
|
text-27px
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Github' }}
|
Github
|
||||||
|
</ProjectOpenessLink>
|
||||||
|
<ProjectOpenessLink
|
||||||
|
v-if="project.links?.whitepaper"
|
||||||
|
:to="project.links?.whitepaper"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<UnoIcon
|
||||||
|
i-material-symbols-description
|
||||||
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
Whitepaper
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.docs"
|
v-if="project.links?.docs"
|
||||||
|
@ -82,11 +162,38 @@ defineProps<{
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-documents
|
i-material-symbols-contract
|
||||||
text-24px
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Docs' }}
|
Docs
|
||||||
|
</ProjectOpenessLink>
|
||||||
|
<ProjectOpenessLink
|
||||||
|
v-if="project.links?.blog"
|
||||||
|
:to="project.links.blog"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<UnoIcon
|
||||||
|
i-material-symbols-newsmode
|
||||||
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
Blog
|
||||||
|
</ProjectOpenessLink>
|
||||||
|
<ProjectOpenessLink
|
||||||
|
v-if="project.links?.forum"
|
||||||
|
:to="project.links.forum"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<UnoIcon
|
||||||
|
i-material-symbols-forum-outline
|
||||||
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
Forum
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.block_explorer"
|
v-if="project.links?.block_explorer"
|
||||||
|
@ -94,48 +201,25 @@ defineProps<{
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-explorer
|
i-material-symbols-explore-outline
|
||||||
opacity-30
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Explorer' }}
|
Explorer
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.snapshot"
|
v-if="project.links?.governance"
|
||||||
:to="project.links.snapshot"
|
:to="project.links.governance"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-snapshot
|
i-material-symbols-how-to-vote-outline
|
||||||
text-32px
|
text="24px app-text-grey"
|
||||||
|
text-27px
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Snapshot' }}
|
Governance
|
||||||
</ProjectOpenessLink>
|
|
||||||
<ProjectOpenessLink
|
|
||||||
v-if="project.links?.token"
|
|
||||||
:to="project.links.token"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<UnoIcon
|
|
||||||
i-web-token
|
|
||||||
text-28px
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
{{ 'Token' }}
|
|
||||||
</ProjectOpenessLink>
|
|
||||||
<ProjectOpenessLink
|
|
||||||
v-if="project.links?.coingecko"
|
|
||||||
:to="project.links.coingecko"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<UnoIcon
|
|
||||||
i-web-coingecko
|
|
||||||
opacity-30
|
|
||||||
text-24px
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
{{ 'Coingecko' }}
|
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -149,22 +233,22 @@ defineProps<{
|
||||||
<div
|
<div
|
||||||
grid
|
grid
|
||||||
grid-cols-2
|
grid-cols-2
|
||||||
gap-16px
|
gap-x-16px
|
||||||
|
gap-y-12px
|
||||||
mt-8px
|
mt-8px
|
||||||
lg:grid-cols-4
|
lg:grid-cols-4
|
||||||
>
|
>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.forum"
|
v-if="project.links?.twitter"
|
||||||
:to="project.links.forum"
|
:to="project.links.twitter"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-forum
|
i-bi-twitter-x
|
||||||
opacity-30
|
text="24px app-text-grey"
|
||||||
text-28px
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Forum' }}
|
Twitter
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.discord"
|
v-if="project.links?.discord"
|
||||||
|
@ -172,24 +256,23 @@ defineProps<{
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-discord
|
i-ic-baseline-discord
|
||||||
text-27px
|
text="24px app-text-grey"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Discord' }}
|
Discord
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.twitter"
|
v-if="project.links?.telegram"
|
||||||
:to="project.links.twitter"
|
:to="project.links.telegram"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-twitter_x
|
i-mdi-telegram
|
||||||
opacity-30
|
text="24px app-text-grey"
|
||||||
text-22px
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Twitter' }}
|
Telegram
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.lens"
|
v-if="project.links?.lens"
|
||||||
|
@ -198,10 +281,10 @@ defineProps<{
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-lens
|
i-web-lens
|
||||||
text-32px
|
text="24px app-text-grey"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Lens' }}
|
Lens
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
<ProjectOpenessLink
|
<ProjectOpenessLink
|
||||||
v-if="project.links?.farcaster"
|
v-if="project.links?.farcaster"
|
||||||
|
@ -210,89 +293,62 @@ defineProps<{
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-farcaster
|
i-web-farcaster
|
||||||
text-26px
|
text="24px app-text-grey"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
{{ 'Farcaster' }}
|
Farcaster
|
||||||
</ProjectOpenessLink>
|
|
||||||
<ProjectOpenessLink
|
|
||||||
v-if="project.links?.telegram"
|
|
||||||
:to="project.links.telegram"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<UnoIcon
|
|
||||||
i-web-telegram
|
|
||||||
opacity-30
|
|
||||||
text-22px
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
{{ 'Telegram' }}
|
|
||||||
</ProjectOpenessLink>
|
</ProjectOpenessLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div mt-24px>
|
<ProjectOpenessTeamMembers
|
||||||
<ProjectOpenessTeamMembers :members="project.team" />
|
v-if="projcet?.team"
|
||||||
</div>
|
:members="project.team.teammembers"
|
||||||
<div
|
mt-24px
|
||||||
grid
|
/>
|
||||||
grid-cols-2
|
<div mt-32px>
|
||||||
items-start
|
<h3
|
||||||
mt-32px
|
text="app-text-grey 14px lg:16px"
|
||||||
gap-y-26px
|
leading-24px
|
||||||
lg:grid-cols-4
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.product_launch_day"
|
|
||||||
title="Product launch day"
|
|
||||||
>
|
>
|
||||||
{{ project.product_launch_day }}
|
Funding
|
||||||
</ProjectInfoItem>
|
</h3>
|
||||||
<ProjectInfoItem
|
<div
|
||||||
title="Opensource"
|
v-if="project.funding"
|
||||||
bold
|
flex
|
||||||
:check-undefined="project.blockchain_features?.opensource"
|
items-center
|
||||||
:color=" project.blockchain_features?.opensource ? '#A8FF18' : '#FF0000'"
|
justify-between
|
||||||
>
|
rounded-full
|
||||||
{{ project.blockchain_features?.opensource ? 'Yes' : 'No' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
mt-32px
|
|
||||||
w-full
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.funding"
|
|
||||||
title="Funding"
|
|
||||||
bold
|
|
||||||
w-full
|
w-full
|
||||||
|
bg-app-bg-funding-card
|
||||||
|
px-24px
|
||||||
|
py-12px
|
||||||
|
mt-12px
|
||||||
>
|
>
|
||||||
<template
|
<h3
|
||||||
v-for="fund in project.funding"
|
text="14px lg:16px"
|
||||||
:key="fund.name"
|
leading="20px lg:24px"
|
||||||
|
font-700
|
||||||
>
|
>
|
||||||
<div
|
{{ project.funding.name }}
|
||||||
mt-16px
|
</h3>
|
||||||
grid
|
<NuxtLink
|
||||||
grid-cols-2
|
:to="project.funding.link"
|
||||||
sm:grid-cols-4
|
external
|
||||||
>
|
target="_blank"
|
||||||
<span v-if="fund.name">{{ fund.name }}</span>
|
>
|
||||||
<span
|
<UnoIcon
|
||||||
v-if="fund.time"
|
i-ic-twotone-open-in-new
|
||||||
font-400
|
text="22px app-text-grey"
|
||||||
>{{ fund.time }}</span>
|
/>
|
||||||
<span
|
</NuxtLink>
|
||||||
v-if="fund.time"
|
</div>
|
||||||
font-400
|
<h3
|
||||||
text-app-text-grey
|
v-else
|
||||||
>{{ fund.type }}</span>
|
text="app-text-grey 14px lg:16px"
|
||||||
<span
|
leading-24px
|
||||||
v-if="fund.time"
|
>
|
||||||
font-400
|
N/A
|
||||||
>{{ fund.value }}</span>
|
</h3>
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
</div>
|
||||||
</ProjectDetailContainer>
|
</ProjectDetailContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -32,58 +32,20 @@ const props = defineProps<{
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
|
items-center
|
||||||
gap-12px
|
gap-12px
|
||||||
>
|
>
|
||||||
<template v-if="member.link">
|
<!-- <template v-if="member.link">
|
||||||
<NuxtImg
|
<NuxtImg
|
||||||
:src="member.link"
|
:src="member.link"
|
||||||
width="48"
|
width="48"
|
||||||
height="48"
|
height="48"
|
||||||
:alt="member.name"
|
:alt="member.name"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template> -->
|
||||||
<template v-else>
|
<div flex items-center justify-center text-black w="40px lg:48px" h="40px lg:48px" rounded-full bg-app-bg-team-grey>
|
||||||
<svg
|
<div i-heroicons-solid-user text-24px></div>
|
||||||
width="48"
|
</div>
|
||||||
height="48"
|
|
||||||
viewBox="0 0 48 48"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<circle
|
|
||||||
opacity="0.2"
|
|
||||||
cx="24"
|
|
||||||
cy="24"
|
|
||||||
r="23.5"
|
|
||||||
stroke="white"
|
|
||||||
/>
|
|
||||||
<g opacity="0.2">
|
|
||||||
<mask
|
|
||||||
id="mask0_2200_7716"
|
|
||||||
style="mask-type:alpha"
|
|
||||||
maskUnits="userSpaceOnUse"
|
|
||||||
x="12"
|
|
||||||
y="12"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
>
|
|
||||||
<rect
|
|
||||||
x="12"
|
|
||||||
y="12"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
fill="#D9D9D9"
|
|
||||||
/>
|
|
||||||
</mask>
|
|
||||||
<g mask="url(#mask0_2200_7716)">
|
|
||||||
<path
|
|
||||||
d="M24 24C22.9 24 21.9583 23.6083 21.175 22.825C20.3917 22.0417 20 21.1 20 20C20 18.9 20.3917 17.9583 21.175 17.175C21.9583 16.3917 22.9 16 24 16C25.1 16 26.0417 16.3917 26.825 17.175C27.6083 17.9583 28 18.9 28 20C28 21.1 27.6083 22.0417 26.825 22.825C26.0417 23.6083 25.1 24 24 24ZM16 32V29.2C16 28.6333 16.1458 28.1125 16.4375 27.6375C16.7292 27.1625 17.1167 26.8 17.6 26.55C18.6333 26.0333 19.6833 25.6458 20.75 25.3875C21.8167 25.1292 22.9 25 24 25C25.1 25 26.1833 25.1292 27.25 25.3875C28.3167 25.6458 29.3667 26.0333 30.4 26.55C30.8833 26.8 31.2708 27.1625 31.5625 27.6375C31.8542 28.1125 32 28.6333 32 29.2V32H16Z"
|
|
||||||
fill="white"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</template>
|
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
flex-col
|
flex-col
|
||||||
|
@ -92,10 +54,6 @@ const props = defineProps<{
|
||||||
text="14px sm:16px"
|
text="14px sm:16px"
|
||||||
font-700
|
font-700
|
||||||
>{{ member.name }}</span>
|
>{{ member.name }}</span>
|
||||||
<span
|
|
||||||
text="14px sm:16px app-text-grey"
|
|
||||||
font-400
|
|
||||||
>{{ member.role ?? 'N/A' }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -12,7 +12,7 @@ defineProps<{
|
||||||
badge-text="3/10"
|
badge-text="3/10"
|
||||||
>
|
>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-code_v2
|
i-heroicons-solid-eye
|
||||||
text-24px
|
text-24px
|
||||||
/>
|
/>
|
||||||
</ProjectDetailCategoryDivider>
|
</ProjectDetailCategoryDivider>
|
||||||
|
@ -26,11 +26,11 @@ defineProps<{
|
||||||
lg:grid-cols-4
|
lg:grid-cols-4
|
||||||
>
|
>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.blockchain_features?.p2p"
|
:check-undefined="project.default_privacy"
|
||||||
bold
|
title="Default privacy"
|
||||||
title="Peer to Peer (P2P)"
|
:color="project.default_privacy ? '#18FF2F' : '#FF0000'"
|
||||||
>
|
>
|
||||||
{{ project.blockchain_features?.p2p ? 'YES' : 'NO' }}
|
{{ project.default_privacy ? 'YES' : 'NO' }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.tracebility?.kyc"
|
:check-undefined="project.tracebility?.kyc"
|
||||||
|
@ -40,109 +40,6 @@ defineProps<{
|
||||||
>
|
>
|
||||||
{{ project.tracebility?.kyc ? 'YES' : 'NO' }}
|
{{ project.tracebility?.kyc ? 'YES' : 'NO' }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.storage"
|
|
||||||
bold
|
|
||||||
title="Decentralized storage"
|
|
||||||
:color="project.storage?.decentralized ? '#18FF2F' : '#FF0000'"
|
|
||||||
>
|
|
||||||
{{ project.storage?.decentralized ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.default_privacy"
|
|
||||||
title="Default privacy"
|
|
||||||
:color="project.default_privacy ? '#18FF2F' : '#FF0000'"
|
|
||||||
>
|
|
||||||
{{ project.default_privacy ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-2
|
|
||||||
items-start
|
|
||||||
mt-32px
|
|
||||||
gap-y-16px
|
|
||||||
lg:grid-cols-4
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.revealed_recipient"
|
|
||||||
:color="project.blockchain_features?.revealed_recipient ? '#FF0000' : '#18FF2F'"
|
|
||||||
bold
|
|
||||||
title="Revealed recipient"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.revealed_recipient ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.revealed_sender"
|
|
||||||
:color="project.blockchain_features?.revealed_sender ? '#FF0000' : '#18FF2F'"
|
|
||||||
bold
|
|
||||||
title="Revealed sender"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.revealed_sender ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.revealed_ammount"
|
|
||||||
:color="project.blockchain_features?.revealed_ammount ? '#FF0000' : '#18FF2F'"
|
|
||||||
bold
|
|
||||||
title="Revealed amount"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.revealed_ammount ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.reversability_condition"
|
|
||||||
bold
|
|
||||||
title="Reversability"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.reversability_condition }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-2
|
|
||||||
items-start
|
|
||||||
mt-32px
|
|
||||||
gap-y-16px
|
|
||||||
lg:grid-cols-4
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.connected_tx"
|
|
||||||
:color="project.blockchain_features?.connected_tx ? '#FF0000' : '#18FF2F'"
|
|
||||||
bold
|
|
||||||
title="Connected Txs"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.connected_tx ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.data_masking"
|
|
||||||
bold
|
|
||||||
title="Data masking"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.data_masking }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.tx_history"
|
|
||||||
bold
|
|
||||||
title="Tx history"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.tx_history ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div my-24px>
|
|
||||||
<hr
|
|
||||||
border-t-2px
|
|
||||||
border-white
|
|
||||||
opacity-20
|
|
||||||
w-80px
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-2
|
|
||||||
items-start
|
|
||||||
mt-32px
|
|
||||||
gap-y-16px
|
|
||||||
lg:grid-cols-4
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.privacy_policy"
|
:check-undefined="project.privacy_policy"
|
||||||
:color="project.privacy_policy?.defined ? '#18FF2F' : '#FF0000'"
|
:color="project.privacy_policy?.defined ? '#18FF2F' : '#FF0000'"
|
||||||
|
@ -150,6 +47,31 @@ defineProps<{
|
||||||
title="Privacy Policy"
|
title="Privacy Policy"
|
||||||
>
|
>
|
||||||
{{ project.privacy_policy?.defined ? 'YES' : 'NO' }}
|
{{ project.privacy_policy?.defined ? 'YES' : 'NO' }}
|
||||||
|
<NuxtLink
|
||||||
|
:to="project.privacy_policy?.link"
|
||||||
|
external
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<UnoIcon
|
||||||
|
i-ic-twotone-open-in-new
|
||||||
|
text="22px app-text-grey"
|
||||||
|
/>
|
||||||
|
</NuxtLink>
|
||||||
|
</ProjectInfoItem>
|
||||||
|
<ProjectInfoItem
|
||||||
|
:check-undefined="project.compliance"
|
||||||
|
color="#FFB800"
|
||||||
|
bold
|
||||||
|
title="Compliance with"
|
||||||
|
>
|
||||||
|
{{ project.compliance ? 'YES' : 'NO' }}
|
||||||
|
</ProjectInfoItem>
|
||||||
|
<ProjectInfoItem
|
||||||
|
:check-undefined="project.tracebility?.sign_in_type_requirments"
|
||||||
|
bold
|
||||||
|
title="Sign-in requirements"
|
||||||
|
>
|
||||||
|
{{ project.tracebility?.sign_in_type_requirments }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.tracebility?.tracked_data"
|
:check-undefined="project.tracebility?.tracked_data"
|
||||||
|
@ -163,58 +85,6 @@ defineProps<{
|
||||||
>
|
>
|
||||||
{{ project.privacy_policy?.data_usage }}
|
{{ project.privacy_policy?.data_usage }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.frontend_anonymity"
|
|
||||||
bold
|
|
||||||
title="Frontend anonymity"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.frontend_anonymity }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div my-24px>
|
|
||||||
<hr
|
|
||||||
border-t-2px
|
|
||||||
border-white
|
|
||||||
opacity-20
|
|
||||||
w-80px
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-2
|
|
||||||
items-start
|
|
||||||
mt-32px
|
|
||||||
gap-y-16px
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.compliance"
|
|
||||||
:color="project.compliance ? '#FF0000' : '#18FF2F'"
|
|
||||||
bold
|
|
||||||
title="Compliance"
|
|
||||||
>
|
|
||||||
{{ project.compliance ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-2
|
|
||||||
items-start
|
|
||||||
mt-32px
|
|
||||||
gap-y-16px
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.tracebility?.sign_in_type_requirments"
|
|
||||||
bold
|
|
||||||
title="Sign-in requirements"
|
|
||||||
>
|
|
||||||
{{ project.tracebility?.sign_in_type_requirments }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.identity_integration"
|
|
||||||
title="Identity integrations"
|
|
||||||
>
|
|
||||||
{{ project.blockchain_features?.identity_integration }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
</div>
|
||||||
</ProjectDetailContainer>
|
</ProjectDetailContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
159
components/Project/ProjectRating.vue
Normal file
159
components/Project/ProjectRating.vue
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import type { OpenessRating, TechnologyRating, PrivacyRating } from '~/types'
|
||||||
|
|
||||||
|
// Define props for score
|
||||||
|
const props = defineProps<{
|
||||||
|
rating: TechnologyRating | OpenessRating | PrivacyRating
|
||||||
|
type: string
|
||||||
|
score: number
|
||||||
|
compact?: boolean
|
||||||
|
}>()
|
||||||
|
|
||||||
|
// Determine the color by score
|
||||||
|
const colorByScore = props.score <= 1
|
||||||
|
? 'bg-app-bg-rating-red'
|
||||||
|
: props.score === 2
|
||||||
|
? 'bg-app-bg-rating-orange'
|
||||||
|
: props.score === 3
|
||||||
|
? 'bg-app-bg-rating-yellow'
|
||||||
|
: 'bg-app-bg-rating-green'
|
||||||
|
|
||||||
|
const isPopoverVisible = ref(false)
|
||||||
|
|
||||||
|
let hideTimeout: ReturnType<typeof setTimeout> | null = null
|
||||||
|
const showPopover = () => {
|
||||||
|
if (hideTimeout) {
|
||||||
|
clearTimeout(hideTimeout)
|
||||||
|
hideTimeout = null
|
||||||
|
}
|
||||||
|
isPopoverVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const hidePopover = () => {
|
||||||
|
hideTimeout = setTimeout(() => {
|
||||||
|
isPopoverVisible.value = false
|
||||||
|
}, 100) // Delay of 200ms before hiding
|
||||||
|
}
|
||||||
|
|
||||||
|
function currentRating<T>(): T {
|
||||||
|
if (props.type === 'privacy')
|
||||||
|
return props.rating as T
|
||||||
|
if (props.type === 'technology')
|
||||||
|
return props.rating as T
|
||||||
|
return props.rating as T
|
||||||
|
}
|
||||||
|
|
||||||
|
function items(): { label: string, condition: boolean, positive: string, negative: string, link?: string }[] {
|
||||||
|
if (props.type === 'privacy')
|
||||||
|
return [
|
||||||
|
{ label: 'KYC', condition: !!currentRating<PrivacyRating>().no_kyc, positive: 'No', negative: 'Yes' },
|
||||||
|
{ label: 'Compliance', condition: !!currentRating<PrivacyRating>().no_compliance, positive: 'No', negative: 'OFAC' },
|
||||||
|
{ label: 'Privacy policy', condition: !!currentRating<PrivacyRating>().policy, positive: 'Link', negative: 'Not available', link: currentRating<PrivacyRating>().policy },
|
||||||
|
{ label: 'Default privacy', condition: !!currentRating<PrivacyRating>().default_privacy, positive: 'Yes', negative: 'No' },
|
||||||
|
]
|
||||||
|
if (props.type === 'technology')
|
||||||
|
return [
|
||||||
|
{ label: 'Mainnet', condition: !!currentRating<TechnologyRating>().mainnet, positive: 'Yes', negative: 'No' },
|
||||||
|
{ label: 'Opensource', condition: !!currentRating<TechnologyRating>().opensource, positive: 'Yes', negative: 'No' },
|
||||||
|
{ label: 'Asset custody', condition: !!currentRating<TechnologyRating>().assets, positive: 'None', negative: 'Custodial' },
|
||||||
|
{ label: 'Upgradability', condition: !!currentRating<TechnologyRating>().no_pgradability, positive: 'Disabled', negative: 'Enabled' },
|
||||||
|
{ label: 'Audits', condition: currentRating<TechnologyRating>().audits >= 1, positive: `${currentRating<TechnologyRating>().audits} ${currentRating<TechnologyRating>().audits > 1 ? 'Audits' : 'Audit'}`, negative: 'None' },
|
||||||
|
]
|
||||||
|
return [
|
||||||
|
{ label: 'Documentation', condition: !!currentRating<OpenessRating>().documentation, positive: 'Link', negative: 'Not available', link: currentRating<OpenessRating>().documentation },
|
||||||
|
{ label: 'Github', condition: !!currentRating<OpenessRating>().github, positive: 'Link', negative: 'Not available', link: currentRating<OpenessRating>().github },
|
||||||
|
{ label: 'Socials', condition: !!currentRating<OpenessRating>().socials, positive: 'Link', negative: 'Not available', link: currentRating<OpenessRating>().socials },
|
||||||
|
{ label: 'Whitepaper', condition: !!currentRating<OpenessRating>().whitepaper, positive: 'Link', negative: 'Not available', link: currentRating<OpenessRating>().whitepaper },
|
||||||
|
{ label: 'Team', condition: currentRating<OpenessRating>().team >= 1, positive: `${currentRating<OpenessRating>().team} ${currentRating<OpenessRating>().team > 1 ? 'Members' : 'Member'}`, negative: 'Anonymous' },
|
||||||
|
{ label: 'Funding', condition: currentRating<OpenessRating>().funding >= 1, positive: `${currentRating<OpenessRating>().funding} ${currentRating<OpenessRating>().team > 1 ? 'Investments' : 'Investment'}`, negative: 'Not available' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="relative">
|
||||||
|
<!-- Main div that shows rating and triggers the popover on hover -->
|
||||||
|
<div
|
||||||
|
flex
|
||||||
|
items-center
|
||||||
|
gap-4px
|
||||||
|
p-12px
|
||||||
|
hover:bg-app-bg-rating-hover
|
||||||
|
hover:rounded-8px
|
||||||
|
@mouseenter="showPopover"
|
||||||
|
@mouseleave="hidePopover"
|
||||||
|
>
|
||||||
|
<!-- Render the score points -->
|
||||||
|
<div
|
||||||
|
v-for="point of 5"
|
||||||
|
:key="point"
|
||||||
|
w="10px lg:12px"
|
||||||
|
h="10px lg:12px"
|
||||||
|
rounded-2px
|
||||||
|
:class="[point <= score ? colorByScore : 'bg-app-bg-rating-default', compact ? 'h-8px lg:h-10px w-8px lg:w-10px' : 'w-10px lg:w-12px h-10px lg:h-12px']"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Popover panel that appears on hover -->
|
||||||
|
<transition
|
||||||
|
enter-active-class="transition duration-300 ease-out"
|
||||||
|
enter-from-class="transform scale-95 opacity-0"
|
||||||
|
enter-to-class="transform scale-100 opacity-100"
|
||||||
|
leave-active-class="transition duration-200 ease-in"
|
||||||
|
leave-from-class="transform scale-100 opacity-100"
|
||||||
|
leave-to-class="transform scale-95 opacity-0"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="isPopoverVisible"
|
||||||
|
class="absolute mt-2 p-2 bg-app-bg-rating-hover w-240px shadow-lg rounded"
|
||||||
|
z-100
|
||||||
|
style="left: 50%; transform: translateX(-50%);"
|
||||||
|
flex
|
||||||
|
flex-col
|
||||||
|
gap-14px
|
||||||
|
px-16px
|
||||||
|
py-10px
|
||||||
|
@mouseenter="showPopover"
|
||||||
|
@mouseleave="hidePopover"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="item in items()"
|
||||||
|
:key="item.label"
|
||||||
|
flex
|
||||||
|
justify-between
|
||||||
|
items-center
|
||||||
|
text-12px
|
||||||
|
font-700
|
||||||
|
leading-20px
|
||||||
|
:class="{ 'text-app-text-rating-negative': !item.condition }"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
flex
|
||||||
|
items-center
|
||||||
|
gap-6px
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
:class="[item.condition ? 'i-ic-sharp-thumb-up' : 'i-ic-sharp-thumb-down']"
|
||||||
|
text-20px
|
||||||
|
mt--4px
|
||||||
|
/>
|
||||||
|
{{ item.label }}
|
||||||
|
</div>
|
||||||
|
<NuxtLink
|
||||||
|
v-if="item.link"
|
||||||
|
:to="item.link"
|
||||||
|
target="_blank"
|
||||||
|
external
|
||||||
|
underline
|
||||||
|
@click.stop
|
||||||
|
>
|
||||||
|
Link
|
||||||
|
</NuxtLink>
|
||||||
|
<div v-else>
|
||||||
|
{{ item.condition ? item.positive : item.negative }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -12,11 +12,32 @@ defineProps<{
|
||||||
badge-text="3/10"
|
badge-text="3/10"
|
||||||
>
|
>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-code_v2
|
i-material-symbols-lock-outline
|
||||||
text-24px
|
text-24px
|
||||||
/>
|
/>
|
||||||
</ProjectDetailCategoryDivider>
|
</ProjectDetailCategoryDivider>
|
||||||
<ProjectDetailContainer>
|
<ProjectDetailContainer>
|
||||||
|
<div v-if="project.audits">
|
||||||
|
<h2
|
||||||
|
text-18px
|
||||||
|
text-app-text-grey
|
||||||
|
my-24px
|
||||||
|
>
|
||||||
|
Audits
|
||||||
|
</h2>
|
||||||
|
<div flex flex-col gap="12px lg:16px">
|
||||||
|
<template
|
||||||
|
v-for="audit in project.audits"
|
||||||
|
:key="audit.name"
|
||||||
|
>
|
||||||
|
<ProjectSecurityAudit
|
||||||
|
:audit-name="audit.name"
|
||||||
|
:audit-url="audit.link"
|
||||||
|
:date="audit.time"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
grid
|
grid
|
||||||
grid-cols-2
|
grid-cols-2
|
||||||
|
@ -26,20 +47,11 @@ defineProps<{
|
||||||
lg:grid-cols-4
|
lg:grid-cols-4
|
||||||
>
|
>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.blockchain_features?.asset_custody_type"
|
:check-undefined="project.technical_spof"
|
||||||
bold
|
:color="project.technical_spof ? '#FF0000' : '#18FF2F'"
|
||||||
title="Asset custody"
|
title="Technical dependency"
|
||||||
>
|
>
|
||||||
{{ project.blockchain_features?.asset_custody_type }}
|
{{ project.technical_spof }}
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.blockchain_features?.upgradability"
|
|
||||||
title="Upgradability"
|
|
||||||
>
|
|
||||||
<b :color="project.blockchain_features?.upgradability?.enabled ? '#FF0000' : '#18FF2F'">
|
|
||||||
{{ project.blockchain_features?.upgradability?.enabled ? 'YES' : 'NO' }}
|
|
||||||
</b>
|
|
||||||
{{ ` – ${project.blockchain_features?.upgradability?.type}` }}
|
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.social_trust"
|
:check-undefined="project.social_trust"
|
||||||
|
@ -55,47 +67,6 @@ defineProps<{
|
||||||
>
|
>
|
||||||
{{ project.third_party_dependency ? 'YES' : 'NO' }}
|
{{ project.third_party_dependency ? 'YES' : 'NO' }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.technical_spof"
|
|
||||||
:color="project.technical_spof ? '#FF0000' : '#18FF2F'"
|
|
||||||
title="Technical dependency"
|
|
||||||
>
|
|
||||||
{{ project.technical_spof }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div my-24px>
|
|
||||||
<hr
|
|
||||||
border-t-2px
|
|
||||||
border-white
|
|
||||||
opacity-20
|
|
||||||
w-80px
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div v-if="project.audits">
|
|
||||||
<h2
|
|
||||||
text-18px
|
|
||||||
text-app-text-grey
|
|
||||||
my-24px
|
|
||||||
>
|
|
||||||
Audits
|
|
||||||
</h2>
|
|
||||||
<template
|
|
||||||
v-for="audit in project.audits"
|
|
||||||
:key="audit.name"
|
|
||||||
>
|
|
||||||
<ProjectSecurityAudit
|
|
||||||
:audit-name="audit.name"
|
|
||||||
:audit-url="audit.link"
|
|
||||||
:date="audit.time"
|
|
||||||
>
|
|
||||||
<NuxtImg
|
|
||||||
:src="audit.logo ?? '/no-image-1-1.svg'"
|
|
||||||
w-64px
|
|
||||||
h-64px
|
|
||||||
object-cover
|
|
||||||
/>
|
|
||||||
</ProjectSecurityAudit>
|
|
||||||
</template>
|
|
||||||
</div>
|
</div>
|
||||||
</ProjectDetailContainer>
|
</ProjectDetailContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -9,36 +9,67 @@ defineProps<{
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
items-center
|
justify-between
|
||||||
gap-16px
|
lg:grid
|
||||||
|
lg:grid-cols-2
|
||||||
|
rounded-full
|
||||||
|
py-12px px-16px
|
||||||
|
bg-app-bg-audits-card
|
||||||
>
|
>
|
||||||
<slot />
|
|
||||||
<div
|
<div
|
||||||
flex
|
grid grid-cols-3
|
||||||
flex-col
|
w-full
|
||||||
text-14px
|
|
||||||
font-700
|
|
||||||
leading-24px
|
|
||||||
>
|
>
|
||||||
<NuxtLink
|
<h2
|
||||||
hover:underline
|
text="14px lg:16px"
|
||||||
flex
|
leading-20px
|
||||||
items-center
|
font-700
|
||||||
gap-8px
|
col-span="3 lg:2"
|
||||||
:to="auditUrl"
|
|
||||||
>
|
>
|
||||||
{{ auditName }}
|
{{ auditName }}
|
||||||
<UnoIcon
|
</h2>
|
||||||
v-if="auditUrl"
|
<h2
|
||||||
i-web-openinnew
|
|
||||||
text-16px
|
|
||||||
/>
|
|
||||||
</NuxtLink>
|
|
||||||
<span
|
|
||||||
text-14px
|
text-14px
|
||||||
font-400
|
leading-20px
|
||||||
leading-24px
|
hidden
|
||||||
>{{ date }}</span>
|
lg:block
|
||||||
|
>
|
||||||
|
Overview of smart contracts
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
flex
|
||||||
|
items-center
|
||||||
|
justify-end
|
||||||
|
gap="16px lg:80px"
|
||||||
|
whitespace-nowrap
|
||||||
|
>
|
||||||
|
<h2
|
||||||
|
text-14px
|
||||||
|
leading-20px
|
||||||
|
>
|
||||||
|
{{ formatDate(date) }}
|
||||||
|
</h2>
|
||||||
|
<NuxtLink
|
||||||
|
flex
|
||||||
|
items-center
|
||||||
|
gap-4px
|
||||||
|
:to="auditUrl"
|
||||||
|
external
|
||||||
|
target="_blank"
|
||||||
|
text-14px
|
||||||
|
text-app-text-grey
|
||||||
|
leading-20px
|
||||||
|
hover:underline
|
||||||
|
><p
|
||||||
|
hidden
|
||||||
|
lg:block
|
||||||
|
>
|
||||||
|
More info
|
||||||
|
</p> <UnoIcon
|
||||||
|
i-ic-twotone-open-in-new
|
||||||
|
text-22px
|
||||||
|
/></NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -12,7 +12,7 @@ defineProps<{
|
||||||
badge-text="3/10"
|
badge-text="3/10"
|
||||||
>
|
>
|
||||||
<UnoIcon
|
<UnoIcon
|
||||||
i-web-code_v2
|
i-material-symbols-deployed-code-outline
|
||||||
text-24px
|
text-24px
|
||||||
/>
|
/>
|
||||||
</ProjectDetailCategoryDivider>
|
</ProjectDetailCategoryDivider>
|
||||||
|
@ -21,100 +21,54 @@ defineProps<{
|
||||||
grid
|
grid
|
||||||
grid-cols-2
|
grid-cols-2
|
||||||
items-start
|
items-start
|
||||||
mt-32px
|
mt-24px
|
||||||
gap-y-16px
|
gap-y-16px
|
||||||
lg:grid-cols-4
|
lg:grid-cols-4
|
||||||
>
|
>
|
||||||
|
<ProjectInfoItem
|
||||||
|
:check-undefined="project.blockchain_features?.opensource"
|
||||||
|
title="Opensource"
|
||||||
|
bold
|
||||||
|
:color="project.blockchain_features?.opensource ? '#18FF2F' : '#FF0000'"
|
||||||
|
>
|
||||||
|
{{ project.blockchain_features?.opensource ? 'YES' : 'NO' }}
|
||||||
|
</ProjectInfoItem>
|
||||||
|
<ProjectInfoItem
|
||||||
|
:check-undefined="project.blockchain_features?.asset_custody_type"
|
||||||
|
title="Asset custody"
|
||||||
|
:color="project.blockchain_features?.asset_custody_type === 'non-custody' ? '#18FF2F' : project.blockchain_features?.asset_custody_type === 'multisig' ? '#FFB800' : '#FF0000'"
|
||||||
|
bold
|
||||||
|
>
|
||||||
|
{{ project.blockchain_features?.asset_custody_type.toUpperCase() }}
|
||||||
|
</ProjectInfoItem>
|
||||||
|
<ProjectInfoItem
|
||||||
|
title="Upgradability"
|
||||||
|
bold
|
||||||
|
:check-undefined="project.blockchain_features?.upgradability"
|
||||||
|
:color="project.blockchain_features?.upgradability ? '#FF0000' : '#18FF2F' "
|
||||||
|
>
|
||||||
|
{{ project.blockchain_features?.upgradability ? 'YES' : 'NO' }}
|
||||||
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.technology?.type"
|
:check-undefined="project.technology?.type"
|
||||||
title="Technology type"
|
title="Technology type"
|
||||||
bold
|
bold
|
||||||
>
|
>
|
||||||
{{ project.technology?.type }}
|
{{ project.technology.type.toUpperCase() }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
:check-undefined="project.blockchain_features?.encryption"
|
:check-undefined="project.blockchain_features?.p2p"
|
||||||
title="Encryption"
|
title="Peer to Peer (P2P)"
|
||||||
bold
|
bold
|
||||||
>
|
>
|
||||||
{{ project.blockchain_features?.encryption }}
|
{{ project.blockchain_features?.p2p ? 'YES' : 'NO' }}
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
<ProjectInfoItem
|
<ProjectInfoItem
|
||||||
title="License"
|
:check-undefined="project.storage?.decentralized"
|
||||||
bold
|
title="Decentralized storage"
|
||||||
:check-undefined="project.licences"
|
|
||||||
>
|
|
||||||
{{ project.licences }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.links?.whitepaper"
|
|
||||||
title="Whitepaper"
|
|
||||||
bold
|
|
||||||
:link="project.links?.whitepaper"
|
|
||||||
>
|
|
||||||
{{ project.links?.whitepaper ? 'YES' : 'NO' }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
grid
|
|
||||||
grid-cols-1
|
|
||||||
items-start
|
|
||||||
mt-16px
|
|
||||||
gap-y-16px
|
|
||||||
lg:grid-cols-4
|
|
||||||
>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.project_status"
|
|
||||||
title="Version"
|
|
||||||
bold
|
bold
|
||||||
>
|
>
|
||||||
<div
|
{{ project.storage?.decentralized ? 'YES' : 'NO' }}
|
||||||
v-if="project.project_status?.live_status"
|
|
||||||
flex
|
|
||||||
items-center
|
|
||||||
gap-12px
|
|
||||||
>
|
|
||||||
<UnoIcon
|
|
||||||
i-web-live
|
|
||||||
text-10px
|
|
||||||
class="color-#B5E26B"
|
|
||||||
/>
|
|
||||||
<span>{{ `Live on ${project.project_status.version}` }}</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-else
|
|
||||||
flex
|
|
||||||
items-center
|
|
||||||
gap-12px
|
|
||||||
>
|
|
||||||
<UnoIcon
|
|
||||||
i-web-live
|
|
||||||
text-10px
|
|
||||||
class="color-#e26b6b"
|
|
||||||
/>
|
|
||||||
<span>{{ 'Offline' }}</span>
|
|
||||||
</div>
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.technology?.features"
|
|
||||||
title="Features"
|
|
||||||
bold
|
|
||||||
>
|
|
||||||
{{ project.technology?.features.join(', ') }}
|
|
||||||
</ProjectInfoItem>
|
|
||||||
<ProjectInfoItem
|
|
||||||
:check-undefined="project.client_diversability"
|
|
||||||
title="Client diversability"
|
|
||||||
bold
|
|
||||||
>
|
|
||||||
<template
|
|
||||||
v-for="item in project.client_diversability"
|
|
||||||
:key="item.name"
|
|
||||||
>
|
|
||||||
<NuxtLink :to="item.link">
|
|
||||||
{{ item.name }}
|
|
||||||
</NuxtLink><br>
|
|
||||||
</template>
|
|
||||||
</ProjectInfoItem>
|
</ProjectInfoItem>
|
||||||
</div>
|
</div>
|
||||||
</ProjectDetailContainer>
|
</ProjectDetailContainer>
|
||||||
|
|
11
package.json
11
package.json
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "develitesse-nuxt",
|
"name": "develitesse-nuxt",
|
||||||
"private": true,
|
"private": true,
|
||||||
"packageManager": "pnpm@9.9.0",
|
"packageManager": "pnpm@9.10.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nuxt build",
|
"build": "nuxt build",
|
||||||
"cleanup": "nuxt cleanup",
|
"cleanup": "nuxt cleanup",
|
||||||
|
@ -17,8 +17,14 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@formkit/auto-animate": "^0.8.2",
|
"@formkit/auto-animate": "^0.8.2",
|
||||||
|
"@iconify-json/bi": "^1.2.0",
|
||||||
"@iconify-json/heroicons-outline": "^1.2.0",
|
"@iconify-json/heroicons-outline": "^1.2.0",
|
||||||
"@iconify-json/heroicons-solid": "^1.2.0",
|
"@iconify-json/heroicons-solid": "^1.2.0",
|
||||||
|
"@iconify-json/ic": "^1.2.0",
|
||||||
|
"@iconify-json/iconoir": "^1.2.0",
|
||||||
|
"@iconify-json/material-symbols": "^1.2.1",
|
||||||
|
"@iconify-json/mdi": "^1.2.0",
|
||||||
|
"@iconify-json/simple-icons": "^1.2.2",
|
||||||
"@nuxt/devtools": "^1.4.1",
|
"@nuxt/devtools": "^1.4.1",
|
||||||
"@nuxt/eslint": "0.5.5",
|
"@nuxt/eslint": "0.5.5",
|
||||||
"@nuxt/image": "^1.8.0",
|
"@nuxt/image": "^1.8.0",
|
||||||
|
@ -46,5 +52,8 @@
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*": "eslint --fix"
|
"*": "eslint --fix"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"moment": "^2.30.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ useSeoMeta({
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-if="project">
|
<div v-if="project">
|
||||||
<div app-container>
|
<div app-container px-16px>
|
||||||
<div
|
<div
|
||||||
flex
|
flex
|
||||||
flex-col
|
flex-col
|
||||||
|
@ -46,6 +46,7 @@ useSeoMeta({
|
||||||
<ProjectTechnology :project="project" />
|
<ProjectTechnology :project="project" />
|
||||||
<ProjectPrivacy :project="project" />
|
<ProjectPrivacy :project="project" />
|
||||||
<ProjectSecurity :project="project" />
|
<ProjectSecurity :project="project" />
|
||||||
|
<ProjectHistory :project="project" />
|
||||||
<!-- <ProjectActivity :project="project" />
|
<!-- <ProjectActivity :project="project" />
|
||||||
<ProjectMarket /> -->
|
<ProjectMarket /> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
104
pnpm-lock.yaml
104
pnpm-lock.yaml
|
@ -7,16 +7,38 @@ settings:
|
||||||
importers:
|
importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
|
dependencies:
|
||||||
|
moment:
|
||||||
|
specifier: ^2.30.1
|
||||||
|
version: 2.30.1
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@formkit/auto-animate':
|
'@formkit/auto-animate':
|
||||||
specifier: ^0.8.2
|
specifier: ^0.8.2
|
||||||
version: 0.8.2
|
version: 0.8.2
|
||||||
|
'@iconify-json/bi':
|
||||||
|
specifier: ^1.2.0
|
||||||
|
version: 1.2.0
|
||||||
'@iconify-json/heroicons-outline':
|
'@iconify-json/heroicons-outline':
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
'@iconify-json/heroicons-solid':
|
'@iconify-json/heroicons-solid':
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
|
'@iconify-json/ic':
|
||||||
|
specifier: ^1.2.0
|
||||||
|
version: 1.2.0
|
||||||
|
'@iconify-json/iconoir':
|
||||||
|
specifier: ^1.2.0
|
||||||
|
version: 1.2.0
|
||||||
|
'@iconify-json/material-symbols':
|
||||||
|
specifier: ^1.2.1
|
||||||
|
version: 1.2.1
|
||||||
|
'@iconify-json/mdi':
|
||||||
|
specifier: ^1.2.0
|
||||||
|
version: 1.2.0
|
||||||
|
'@iconify-json/simple-icons':
|
||||||
|
specifier: ^1.2.2
|
||||||
|
version: 1.2.2
|
||||||
'@nuxt/devtools':
|
'@nuxt/devtools':
|
||||||
specifier: ^1.4.1
|
specifier: ^1.4.1
|
||||||
version: 1.4.1(rollup@4.21.2)(vite@5.4.2(@types/node@20.8.7)(terser@5.22.0))
|
version: 1.4.1(rollup@4.21.2)(vite@5.4.2(@types/node@20.8.7)(terser@5.22.0))
|
||||||
|
@ -1088,12 +1110,30 @@ packages:
|
||||||
resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
|
resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
|
||||||
engines: {node: '>=18.18'}
|
engines: {node: '>=18.18'}
|
||||||
|
|
||||||
|
'@iconify-json/bi@1.2.0':
|
||||||
|
resolution: {integrity: sha512-kaBV87cQlyeMkBBiMqsf3b43Nsxdk/rYKvR29dnktht57WUyHCnBAuH+ca/bscX856CzRpVX+sYs7arjrJD0qA==}
|
||||||
|
|
||||||
'@iconify-json/heroicons-outline@1.2.0':
|
'@iconify-json/heroicons-outline@1.2.0':
|
||||||
resolution: {integrity: sha512-Qy1sRmQYqih6xRxwCtnX0hXJ4252t83C0CnNWAP3gF0fH0Qmp9RY66LMB0moYGxQxUhsTFIl2nNceSVSBUo8Tg==}
|
resolution: {integrity: sha512-Qy1sRmQYqih6xRxwCtnX0hXJ4252t83C0CnNWAP3gF0fH0Qmp9RY66LMB0moYGxQxUhsTFIl2nNceSVSBUo8Tg==}
|
||||||
|
|
||||||
'@iconify-json/heroicons-solid@1.2.0':
|
'@iconify-json/heroicons-solid@1.2.0':
|
||||||
resolution: {integrity: sha512-o+PjtMXPr4wk0veDS7Eh6H1BnTJT1vD7HcKl+I7ixdYQC8i1P2zdtk0C2v7C9OjJBMsiwJSCxT4qQ3OzONgyjw==}
|
resolution: {integrity: sha512-o+PjtMXPr4wk0veDS7Eh6H1BnTJT1vD7HcKl+I7ixdYQC8i1P2zdtk0C2v7C9OjJBMsiwJSCxT4qQ3OzONgyjw==}
|
||||||
|
|
||||||
|
'@iconify-json/ic@1.2.0':
|
||||||
|
resolution: {integrity: sha512-L4+m77xTQB08X3I+3xs1+IrvK+aNcuN/7ODu5aUPznHKLU+/8UYcsjUgNHze6vPOGPQ0AG+kCwvy91EYPXSRxw==}
|
||||||
|
|
||||||
|
'@iconify-json/iconoir@1.2.0':
|
||||||
|
resolution: {integrity: sha512-GbYAERFy9c1laIo1QZon9sBjRkX9rksirehmLIvvohn+W++fpPlvQnzVl0VpY/v2GCvs1pZ42spTKDj0AcofvA==}
|
||||||
|
|
||||||
|
'@iconify-json/material-symbols@1.2.1':
|
||||||
|
resolution: {integrity: sha512-r9yaBzlUmN87aCTSoCNtDCd7R9F0iVDjNPL9QHHhm1WglFJvTUKx9iBC5xcZpP0qN0bg9R5FkM90CndWxEBAnw==}
|
||||||
|
|
||||||
|
'@iconify-json/mdi@1.2.0':
|
||||||
|
resolution: {integrity: sha512-E9/3l5Syg3wfuarorFodhn4s8YorxhH3U3U20LaNBNiqw1kFNIDWhF6HymuzAD35k7RH0OBasJ+ZUyFtVVV6eg==}
|
||||||
|
|
||||||
|
'@iconify-json/simple-icons@1.2.2':
|
||||||
|
resolution: {integrity: sha512-VMgCoMnpvcCJ5b3rTOGPzW5j6959nIdRCk+8FGzK/vAaDd6f9sx65OcKOqP3C75llpybH/iQhk5yrJ/TOdQKeg==}
|
||||||
|
|
||||||
'@iconify/types@2.0.0':
|
'@iconify/types@2.0.0':
|
||||||
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
|
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
|
||||||
|
|
||||||
|
@ -1671,9 +1711,6 @@ packages:
|
||||||
'@types/eslint-scope@3.7.6':
|
'@types/eslint-scope@3.7.6':
|
||||||
resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==}
|
resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==}
|
||||||
|
|
||||||
'@types/eslint@8.44.6':
|
|
||||||
resolution: {integrity: sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==}
|
|
||||||
|
|
||||||
'@types/eslint@9.6.1':
|
'@types/eslint@9.6.1':
|
||||||
resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
|
resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
|
||||||
|
|
||||||
|
@ -2821,9 +2858,6 @@ packages:
|
||||||
errx@0.1.0:
|
errx@0.1.0:
|
||||||
resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==}
|
resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==}
|
||||||
|
|
||||||
es-module-lexer@1.3.1:
|
|
||||||
resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==}
|
|
||||||
|
|
||||||
es-module-lexer@1.5.4:
|
es-module-lexer@1.5.4:
|
||||||
resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
|
resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
|
||||||
|
|
||||||
|
@ -3827,6 +3861,9 @@ packages:
|
||||||
mlly@1.7.1:
|
mlly@1.7.1:
|
||||||
resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
|
resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
|
||||||
|
|
||||||
|
moment@2.30.1:
|
||||||
|
resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
|
||||||
|
|
||||||
mri@1.2.0:
|
mri@1.2.0:
|
||||||
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
|
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -6425,6 +6462,10 @@ snapshots:
|
||||||
|
|
||||||
'@humanwhocodes/retry@0.3.0': {}
|
'@humanwhocodes/retry@0.3.0': {}
|
||||||
|
|
||||||
|
'@iconify-json/bi@1.2.0':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
'@iconify-json/heroicons-outline@1.2.0':
|
'@iconify-json/heroicons-outline@1.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
@ -6433,6 +6474,26 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/ic@1.2.0':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/iconoir@1.2.0':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/material-symbols@1.2.1':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/mdi@1.2.0':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/simple-icons@1.2.2':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
'@iconify/types@2.0.0': {}
|
'@iconify/types@2.0.0': {}
|
||||||
|
|
||||||
'@iconify/utils@2.1.32':
|
'@iconify/utils@2.1.32':
|
||||||
|
@ -7223,13 +7284,8 @@ snapshots:
|
||||||
|
|
||||||
'@types/eslint-scope@3.7.6':
|
'@types/eslint-scope@3.7.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/eslint': 8.44.6
|
'@types/eslint': 9.6.1
|
||||||
'@types/estree': 1.0.3
|
'@types/estree': 1.0.5
|
||||||
|
|
||||||
'@types/eslint@8.44.6':
|
|
||||||
dependencies:
|
|
||||||
'@types/estree': 1.0.3
|
|
||||||
'@types/json-schema': 7.0.14
|
|
||||||
|
|
||||||
'@types/eslint@9.6.1':
|
'@types/eslint@9.6.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -7947,9 +8003,9 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
event-target-shim: 5.0.1
|
event-target-shim: 5.0.1
|
||||||
|
|
||||||
acorn-import-assertions@1.9.0(acorn@8.11.2):
|
acorn-import-assertions@1.9.0(acorn@8.12.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.11.2
|
acorn: 8.12.1
|
||||||
|
|
||||||
acorn-import-attributes@1.9.5(acorn@8.12.1):
|
acorn-import-attributes@1.9.5(acorn@8.12.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8662,8 +8718,6 @@ snapshots:
|
||||||
|
|
||||||
errx@0.1.0: {}
|
errx@0.1.0: {}
|
||||||
|
|
||||||
es-module-lexer@1.3.1: {}
|
|
||||||
|
|
||||||
es-module-lexer@1.5.4: {}
|
es-module-lexer@1.5.4: {}
|
||||||
|
|
||||||
esbuild@0.19.10:
|
esbuild@0.19.10:
|
||||||
|
@ -9865,6 +9919,8 @@ snapshots:
|
||||||
pkg-types: 1.2.0
|
pkg-types: 1.2.0
|
||||||
ufo: 1.5.4
|
ufo: 1.5.4
|
||||||
|
|
||||||
|
moment@2.30.1: {}
|
||||||
|
|
||||||
mri@1.2.0: {}
|
mri@1.2.0: {}
|
||||||
|
|
||||||
mrmime@2.0.0: {}
|
mrmime@2.0.0: {}
|
||||||
|
@ -10793,7 +10849,7 @@ snapshots:
|
||||||
|
|
||||||
schema-utils@3.3.0:
|
schema-utils@3.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/json-schema': 7.0.14
|
'@types/json-schema': 7.0.15
|
||||||
ajv: 6.12.6
|
ajv: 6.12.6
|
||||||
ajv-keywords: 3.5.2(ajv@6.12.6)
|
ajv-keywords: 3.5.2(ajv@6.12.6)
|
||||||
|
|
||||||
|
@ -11141,7 +11197,7 @@ snapshots:
|
||||||
|
|
||||||
terser-webpack-plugin@5.3.9(esbuild@0.23.1)(webpack@5.89.0(esbuild@0.23.1)):
|
terser-webpack-plugin@5.3.9(esbuild@0.23.1)(webpack@5.89.0(esbuild@0.23.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.20
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
jest-worker: 27.5.1
|
jest-worker: 27.5.1
|
||||||
schema-utils: 3.3.0
|
schema-utils: 3.3.0
|
||||||
serialize-javascript: 6.0.1
|
serialize-javascript: 6.0.1
|
||||||
|
@ -11724,16 +11780,16 @@ snapshots:
|
||||||
webpack@5.89.0(esbuild@0.23.1):
|
webpack@5.89.0(esbuild@0.23.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/eslint-scope': 3.7.6
|
'@types/eslint-scope': 3.7.6
|
||||||
'@types/estree': 1.0.3
|
'@types/estree': 1.0.5
|
||||||
'@webassemblyjs/ast': 1.11.6
|
'@webassemblyjs/ast': 1.11.6
|
||||||
'@webassemblyjs/wasm-edit': 1.11.6
|
'@webassemblyjs/wasm-edit': 1.11.6
|
||||||
'@webassemblyjs/wasm-parser': 1.11.6
|
'@webassemblyjs/wasm-parser': 1.11.6
|
||||||
acorn: 8.11.2
|
acorn: 8.12.1
|
||||||
acorn-import-assertions: 1.9.0(acorn@8.11.2)
|
acorn-import-assertions: 1.9.0(acorn@8.12.1)
|
||||||
browserslist: 4.22.2
|
browserslist: 4.23.3
|
||||||
chrome-trace-event: 1.0.3
|
chrome-trace-event: 1.0.3
|
||||||
enhanced-resolve: 5.15.0
|
enhanced-resolve: 5.15.0
|
||||||
es-module-lexer: 1.3.1
|
es-module-lexer: 1.5.4
|
||||||
eslint-scope: 5.1.1
|
eslint-scope: 5.1.1
|
||||||
events: 3.3.0
|
events: 3.3.0
|
||||||
glob-to-regexp: 0.4.1
|
glob-to-regexp: 0.4.1
|
||||||
|
|
|
@ -35,7 +35,8 @@ export const collections = {
|
||||||
open1: '<svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="gray" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg>',
|
open1: '<svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="gray" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg>',
|
||||||
matrix: '<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none"><path d="M1.266 1.10241V46.8989H4.5615V48.0014H0V0.00141309H4.5615V1.10391L1.266 1.10241ZM15.3525 15.6179V17.9384H15.414C16.032 17.0459 16.782 16.3679 17.6475 15.8819C18.516 15.3974 19.524 15.1559 20.6475 15.1559C21.726 15.1559 22.7175 15.3674 23.61 15.7814C24.5085 16.2029 25.1805 16.9454 25.6485 17.9999C26.157 17.2499 26.853 16.5854 27.7185 16.0154C28.587 15.4454 29.619 15.1559 30.813 15.1559C31.719 15.1559 32.5545 15.2654 33.3285 15.4919C34.11 15.7094 34.767 16.0619 35.3205 16.5464C35.868 17.0399 36.297 17.6729 36.6105 18.4544C36.915 19.2344 37.071 20.1809 37.071 21.2909V32.7434H32.3775V23.0414C32.3775 22.4699 32.3535 21.9239 32.3055 21.4154C32.2755 20.9549 32.157 20.5094 31.947 20.0954C31.7505 19.7189 31.4475 19.4069 31.071 19.2059C30.6885 18.9779 30.1575 18.8699 29.5005 18.8699C28.836 18.8699 28.305 18.9944 27.8985 19.2434C27.501 19.4939 27.165 19.8374 26.9385 20.2439C26.697 20.6744 26.541 21.1499 26.4765 21.6344C26.3985 22.1579 26.361 22.6829 26.352 23.2064V32.7449H21.6555V23.1434C21.6555 22.6349 21.648 22.1354 21.618 21.6434C21.6015 21.1679 21.5085 20.7074 21.3285 20.2694C21.1725 19.8479 20.877 19.4954 20.5005 19.2614C20.118 19.0109 19.5465 18.8789 18.7965 18.8789C18.57 18.8789 18.2745 18.9254 17.9145 19.0274C17.5545 19.1279 17.196 19.3154 16.86 19.5899C16.5165 19.8719 16.218 20.2694 15.9765 20.7854C15.735 21.2999 15.618 21.9794 15.618 22.8239V32.7539H10.9215V15.6224L15.3525 15.6179ZM46.734 46.8974V1.10091H43.4385V-0.00158691H48V47.9984H43.4385V46.8959L46.734 46.8974Z" fill="white"/></svg>',
|
matrix: '<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none"><path d="M1.266 1.10241V46.8989H4.5615V48.0014H0V0.00141309H4.5615V1.10391L1.266 1.10241ZM15.3525 15.6179V17.9384H15.414C16.032 17.0459 16.782 16.3679 17.6475 15.8819C18.516 15.3974 19.524 15.1559 20.6475 15.1559C21.726 15.1559 22.7175 15.3674 23.61 15.7814C24.5085 16.2029 25.1805 16.9454 25.6485 17.9999C26.157 17.2499 26.853 16.5854 27.7185 16.0154C28.587 15.4454 29.619 15.1559 30.813 15.1559C31.719 15.1559 32.5545 15.2654 33.3285 15.4919C34.11 15.7094 34.767 16.0619 35.3205 16.5464C35.868 17.0399 36.297 17.6729 36.6105 18.4544C36.915 19.2344 37.071 20.1809 37.071 21.2909V32.7434H32.3775V23.0414C32.3775 22.4699 32.3535 21.9239 32.3055 21.4154C32.2755 20.9549 32.157 20.5094 31.947 20.0954C31.7505 19.7189 31.4475 19.4069 31.071 19.2059C30.6885 18.9779 30.1575 18.8699 29.5005 18.8699C28.836 18.8699 28.305 18.9944 27.8985 19.2434C27.501 19.4939 27.165 19.8374 26.9385 20.2439C26.697 20.6744 26.541 21.1499 26.4765 21.6344C26.3985 22.1579 26.361 22.6829 26.352 23.2064V32.7449H21.6555V23.1434C21.6555 22.6349 21.648 22.1354 21.618 21.6434C21.6015 21.1679 21.5085 20.7074 21.3285 20.2694C21.1725 19.8479 20.877 19.4954 20.5005 19.2614C20.118 19.0109 19.5465 18.8789 18.7965 18.8789C18.57 18.8789 18.2745 18.9254 17.9145 19.0274C17.5545 19.1279 17.196 19.3154 16.86 19.5899C16.5165 19.8719 16.218 20.2694 15.9765 20.7854C15.735 21.2999 15.618 21.9794 15.618 22.8239V32.7539H10.9215V15.6224L15.3525 15.6179ZM46.734 46.8974V1.10091H43.4385V-0.00158691H48V47.9984H43.4385V46.8959L46.734 46.8974Z" fill="white"/></svg>',
|
||||||
news: '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"><g opacity="1"><mask id="mask0_2258_10849" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="28"><rect width="28" height="28" fill="#D9D9D9"/></mask><g mask="url(#mask0_2258_10849)"><path d="M4.66146 24.5C4.01979 24.5 3.47049 24.2715 3.01354 23.8146C2.5566 23.3576 2.32812 22.8083 2.32812 22.1667V5.83333C2.32812 5.19167 2.5566 4.64236 3.01354 4.18542C3.47049 3.72847 4.01979 3.5 4.66146 3.5H23.3281C23.9698 3.5 24.5191 3.72847 24.976 4.18542C25.433 4.64236 25.6615 5.19167 25.6615 5.83333V22.1667C25.6615 22.8083 25.433 23.3576 24.976 23.8146C24.5191 24.2715 23.9698 24.5 23.3281 24.5H4.66146ZM4.66146 22.1667H23.3281V5.83333H4.66146V22.1667ZM6.99479 19.8333H20.9948V17.5H6.99479V19.8333ZM6.99479 15.1667H11.6615V8.16667H6.99479V15.1667ZM13.9948 15.1667H20.9948V12.8333H13.9948V15.1667ZM13.9948 10.5H20.9948V8.16667H13.9948V10.5Z" fill="white"/></g></g></svg>',
|
news: '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"><g opacity="1"><mask id="mask0_2258_10849" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="28"><rect width="28" height="28" fill="#D9D9D9"/></mask><g mask="url(#mask0_2258_10849)"><path d="M4.66146 24.5C4.01979 24.5 3.47049 24.2715 3.01354 23.8146C2.5566 23.3576 2.32812 22.8083 2.32812 22.1667V5.83333C2.32812 5.19167 2.5566 4.64236 3.01354 4.18542C3.47049 3.72847 4.01979 3.5 4.66146 3.5H23.3281C23.9698 3.5 24.5191 3.72847 24.976 4.18542C25.433 4.64236 25.6615 5.19167 25.6615 5.83333V22.1667C25.6615 22.8083 25.433 23.3576 24.976 23.8146C24.5191 24.2715 23.9698 24.5 23.3281 24.5H4.66146ZM4.66146 22.1667H23.3281V5.83333H4.66146V22.1667ZM6.99479 19.8333H20.9948V17.5H6.99479V19.8333ZM6.99479 15.1667H11.6615V8.16667H6.99479V15.1667ZM13.9948 15.1667H20.9948V12.8333H13.9948V15.1667ZM13.9948 10.5H20.9948V8.16667H13.9948V10.5Z" fill="white"/></g></g></svg>',
|
||||||
solid_arrow_down: '<svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 5L0 0H10L5 5Z" fill="black"/></svg>',
|
arrow_down: '<svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 5L0 0H10L5 5Z" fill="black"/></svg>',
|
||||||
solid_arrow_up: '<svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 -4.37114e-07L10 5L0 5L5 -4.37114e-07Z" fill="white"/></svg>',
|
arrow_up: '<svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 -4.37114e-07L10 5L0 5L5 -4.37114e-07Z" fill="white"/></svg>',
|
||||||
|
thumb_up: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="mask0_308_7787" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="16" height="16"><rect width="16" height="16" fill="#D9D9D9"/></mask><g mask="url(#mask0_308_7787)"><path d="M11.9987 14.0013H5.33203V5.33464L9.9987 0.667969L10.832 1.5013C10.9098 1.57908 10.9737 1.68464 11.0237 1.81797C11.0737 1.9513 11.0987 2.07908 11.0987 2.2013V2.43464L10.3654 5.33464H13.9987C14.3543 5.33464 14.6654 5.46797 14.932 5.73463C15.1987 6.0013 15.332 6.31241 15.332 6.66797V8.0013C15.332 8.07908 15.3237 8.16241 15.307 8.2513C15.2904 8.34019 15.2654 8.42352 15.232 8.5013L13.232 13.2013C13.132 13.4235 12.9654 13.6124 12.732 13.768C12.4987 13.9235 12.2543 14.0013 11.9987 14.0013ZM3.9987 5.33464V14.0013H1.33203V5.33464H3.9987Z" fill="white"/></g></svg>',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,9 +50,29 @@ export default defineConfig({
|
||||||
bg: {
|
bg: {
|
||||||
grey: '#ffffff33',
|
grey: '#ffffff33',
|
||||||
dark_grey: '#161616',
|
dark_grey: '#161616',
|
||||||
|
rating: {
|
||||||
|
default: '#494949',
|
||||||
|
red: '#FF4218',
|
||||||
|
orange: '#FF9900',
|
||||||
|
yellow: '#FFE600',
|
||||||
|
green: '#42FF00',
|
||||||
|
hover: '#202020',
|
||||||
|
},
|
||||||
|
team: {
|
||||||
|
grey: '#404040',
|
||||||
|
},
|
||||||
|
funding: {
|
||||||
|
card: '#101010',
|
||||||
|
},
|
||||||
|
audits: {
|
||||||
|
card: '#191919',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
grey: '#909090',
|
grey: '#909090',
|
||||||
|
rating: {
|
||||||
|
negative: '#FFB800',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue