mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-04-24 03:00:09 -04:00
* beginning ESM transition: Ceramic libraries, Next.js, & TypeScript configuration 🇭🇰 * updating Chakra, React, & Next image `import`s 👔 * upgrading `@types/react`, import extensions for Node, & b64 SVG to PNG ⛹🏿♀️ * fixing relative import names & upddating @types packages 📻 * removoing WYSIWYG editor, draft-js, & updating express ⛹🏿♀️ * updating OpenSea 🚲 * ¡@metafam/utils is building! 📰 * ¡Discord bot is building! 👘 * ¡backend is building! 🛩 * fixed everything but Ceramic DID update 🏍 * switching to DID:PKH 📦 * fixing "only one child allowed" error 🙇🏿♀️ * importing `React` as required by tsc's `isolatedModules` 🇲🇰 * disabling testing rather than taking the time to fix jest ⚜ * removing set `types` from `tsconfig` to fix compilation error 🥦 * printing tests disabled warning, hopefully 🙀 * setting file to be copied to the new resolver 👁️🗨️ * "paths-resolver" not "paths-resolve" 🦴 * switching back to relative paths rather than trying to fix `paths` ⏳ * `yarn backend:dev` not working, testing GitHub build 🎺 * removing design system build & fixing some images ✊🏿 * fixed "expected function got string" error & trying to address undefined HTMLElement 🐡 * fixing @emotion/react tree shaking by making external 🏏 * including eslint config in Dockerfile 🌾 * fixing more images 🎯 * updating DIDs & switching back to an updated DID:3 ❇ * switching to w3s.link gateway & fixing early termination of storage endpoint 🔭 * switching back to ipfs.io gateway b/c w3s.link serves SVGs as application/xml which are CORB blocked 🥾 * fixing node config name in eslint ignore & shortening some paths 🧰 * fixing ts-node not handling project references 🥁
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { Box, useBreakpointValue } from '@metafam/ds';
|
|
import { graphql } from '@quest-chains/sdk';
|
|
import { Carousel } from 'components/Carousel';
|
|
import { UserStatusType } from 'lib/hooks/questChains';
|
|
import React from 'react';
|
|
|
|
import { QuestTile } from './QuestTile';
|
|
|
|
type PlayerStatsProps = {
|
|
questChain: graphql.QuestChainInfoFragment;
|
|
userStatus: UserStatusType;
|
|
refresh: () => void;
|
|
};
|
|
|
|
export const Chain: React.FC<PlayerStatsProps> = ({
|
|
questChain,
|
|
userStatus,
|
|
refresh,
|
|
}) => {
|
|
const quests = questChain.quests.filter((q) => !q.paused);
|
|
|
|
const gap = useBreakpointValue({ base: 8, md: 16, lg: 32 }) || 8;
|
|
|
|
return (
|
|
<Box
|
|
w={{
|
|
base: '90%',
|
|
md: '80%',
|
|
lg: '90%',
|
|
xl: '80%',
|
|
}}
|
|
overflow="visible"
|
|
pb="10rem"
|
|
alignSelf="flex-start"
|
|
>
|
|
<Carousel gap={gap}>
|
|
{quests.map(({ name, description, questId }, index) => (
|
|
<QuestTile
|
|
key={questId + index}
|
|
index={index}
|
|
name={name ?? ''}
|
|
description={description ?? ''}
|
|
questId={questId}
|
|
questChain={questChain}
|
|
questStatus={userStatus[questId]?.status ?? null}
|
|
refresh={refresh}
|
|
/>
|
|
))}
|
|
</Carousel>
|
|
</Box>
|
|
);
|
|
};
|