Files
TheGame/packages/web/components/Quest/QuestTile.tsx
Pacien Boisson dfff04ebaa [Quests] Frontend (#437)
* squash frontend changes

* Style quest explorer

* Style quest page

* Dates

* Dates

* Typecheck

* Prettier

* Fix create page layout

* Update only OPEN quests

* Repetition info

* Fix create quest errors

* Quest form Textarea

* Quest form Textarea

* Truncate texts

* Redirect if user not logged in

* Tooltips

* Factorize skills tags

* fix username in completions

* Metafam as default guild on creation

* Layouts

* Remove todo

* cooldown

* Rename to "claim quest"

* squash frontend changes

* Style quest explorer

* Style quest page

* Dates

* Dates

* Typecheck

* Prettier

* Fix create page layout

* Update only OPEN quests

* Repetition info

* Fix create quest errors

* Quest form Textarea

* Quest form Textarea

* Truncate texts

* Redirect if user not logged in

* Tooltips

* Factorize skills tags

* fix username in completions

* Metafam as default guild on creation

* Layouts

* Remove todo

* cooldown

* Rename to "claim quest"

* Move ConfirmModal in ds

* Extract pSeed balance

* Fix "created by me" switch

* Reword complete quest

* Style quest form

* prettier

* lint
2021-04-08 15:32:27 +04:00

79 lines
1.9 KiB
TypeScript

import {
Avatar,
Box,
Flex,
Heading,
HStack,
MetaTile,
MetaTileBody,
MetaTileHeader,
Text,
VStack,
} from '@metafam/ds';
import BackgroundImage from 'assets/main-background.jpg';
import { MetaLink } from 'components/Link';
import { QuestFragmentFragment, Skill } from 'graphql/autogen/types';
import moment from 'moment';
import React from 'react';
import { SkillsTags } from '../Skills';
import { RepetitionTag, StatusTag } from './QuestTags';
type Props = {
quest: QuestFragmentFragment;
};
export const QuestTile: React.FC<Props> = ({ quest }) => (
<MetaTile>
<Box
bgImage={`url(${BackgroundImage})`}
bgSize="cover"
bgPosition="center"
position="absolute"
top="0"
left="0"
w="100%"
h="3.5rem"
/>
<Flex justify="center" mb={4}>
<Avatar
size="lg"
src={quest.guild.logo || undefined}
name={quest.guild.name}
/>
</Flex>
<MetaTileHeader>
<VStack>
<MetaLink as={`/quest/${quest.id}`} href="/quest/[id]">
<Heading size="sm" color="white" align="center">
{quest.title}
</Heading>
</MetaLink>
<HStack mt={2}>
<RepetitionTag
repetition={quest.repetition}
cooldown={quest.cooldown}
/>
<StatusTag status={quest.status} />
<Text>
<i>{moment(quest.created_at).fromNow()}</i>
</Text>
</HStack>
</VStack>
</MetaTileHeader>
<MetaTileBody flex={1}>
<VStack spacing={2} align="stretch">
<Text textStyle="caption">DESCRIPTION</Text>
<Text noOfLines={4}>{quest.description}</Text>
<Text textStyle="caption">SKILLS</Text>
<SkillsTags
skills={quest.quest_skills.map((s) => s.skill) as Skill[]}
maxSkills={4}
/>
</VStack>
</MetaTileBody>
</MetaTile>
);