Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .hintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"extends": [
"development"
],
"hints": {
"axe/forms": [
"default",
{
"select-name": "off"
}
]
}
}
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).

Figma file
[https://www.figma.com/file/4AnazUQXHdoJK1zEt4JQSx/Fluently?type=design&node-id=236-850&t=pKDK4WK3kfPbA3zZ-0](https://www.figma.com/file/4AnazUQXHdoJK1zEt4JQSx/Fluently?type=design&node-id=236-850&t=pKDK4WK3kfPbA3zZ-0)
## Getting Started

First, run the development server:
Expand All @@ -10,6 +12,7 @@ npm run dev
yarn dev
# or
pnpm dev

```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
Expand Down
35 changes: 30 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"@types/node": "18.15.11",
"@types/react": "18.0.37",
"@types/react-dom": "18.0.11",
"axios": "^1.4.0",
"eslint": "8.38.0",
"eslint-config-next": "13.3.0",
"ethers": "^5.7.2",
Expand Down
271 changes: 78 additions & 193 deletions src/components/Dashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,208 +12,93 @@ import {
Text,
Flex,
useDisclosure,
Link,
} from "@chakra-ui/react";
import { useAddress } from "@thirdweb-dev/react";
import Setup from "./modal/Setup";
import { motion } from "framer-motion";
import truncateEthAddress from "truncate-eth-address";

type Props = {
item: any[]; // I assumed this prop is an array of objects with the structure that the `getAllMeeting` function returns
};

const containerVariants = {
hidden: {
opacity: 0,
x: '100vw'
},
visible: {
opacity: 1,
x: 0,
transition: {
type: 'spring',
delay: 0.5,
stiffness: 28
}
},
}

const Dashboard = () => {
const Dashboard = ({ item }: Props) => {
console.log(item);
const address = useAddress();
const { isOpen, onOpen, onClose } = useDisclosure();

const userMeetings = item.filter((meeting) => meeting.user === address && meeting.matched === true);

function truncateEthAddress(address: any) {
throw new Error("Function not implemented.");
}
return (
<>
<Setup isOpen={isOpen} onClose={onClose} />

return (
<>
<Setup isOpen={isOpen} onClose={onClose} />
<Box>
<Text color="#F0C400" fontWeight={500}>
Hey {address && `${truncateEthAddress(address)}`}
</Text>
<Text my=".5em" fontWeight={700}>
Your language partner is waiting for you.
</Text>
<Button
mt='1em'
px='1.5em'
bg='#FDD835'
fontSize='.9em'
fontWeight={700}
_hover={{ bg: "#fbdb4f" }}
onClick={onOpen}
>
Start Matching Now
</Button>

<motion.div
variants={containerVariants}
initial='hidden'
animate='visible'
>
<Box mt='3em' bg='#FFFDF6' borderRadius={12} p='1em'>
<Text fontSize='1.5em' fontWeight={700} mb='1em'>Upcoming session</Text>
<TableContainer borderRadius={12}>
<Table>
<Thead bg='#FFF7D1'>
<Tr>
<Th>Date & Time scheduled</Th>
<Th>Spoken language</Th>
<Th>Language to learn </Th>
<Th></Th>
</Tr>
</Thead>
<Tbody fontSize='.9em'>
<Tr>
<Td>Thurs, 27th April, 4:00 PM</Td>
<Td>Irish</Td>
<Td>Pakistan</Td>
<Td>
<Flex gap={4}>
<Button fontSize='.9em' bg='#FDD835' _hover={{ bg: "#fbdb4f" }}>Join Session</Button>
<Button
fontSize='.9em'
color='#FDD835'
border='1px solid #FDD835'
bg='transparent'
_hover={{ bg: "transparent" }}
>
Reschedule
</Button>
</Flex>
</Td>
</Tr>
<Tr>
<Td>Thurs, 27th April, 4:00 PM</Td>
<Td>Irish</Td>
<Td>Pakistan</Td>
<Td>
<Flex gap={4}>
<Button fontSize='.9em' bg='#FDD835' _hover={{ bg: "#fbdb4f" }}>Join Session</Button>
<Button
fontSize='.9em'
color='#FDD835'
border='1px solid #FDD835'
bg='transparent'
_hover={{ bg: "transparent" }}
>
Reschedule
</Button>
</Flex>
</Td>
</Tr>
</Tbody>
</Table>
</TableContainer>
</Box>
</motion.div>
</Box>
</>
)
}
// return (
// <>
// <Setup isOpen={isOpen} onClose={onClose} />
// <Box>
// {/* <Text color="#F0C400" fontWeight={500}>
// Hey {address && `${truncateEthAddress(address)}`}
// </Text>
// <Text my=".5em" fontWeight={700}>
// Your language partner is waiting for you.
// </Text> */}
<Box>
<Text color="#F0C400" fontWeight={500}>
Hey {address ? truncateEthAddress(address) : ""}
</Text>
<Text my=".5em" fontWeight={700}>
Your language partner is waiting for you.
</Text>

// <Button
// mt="1em"
// px="1.5em"
// bg="#FDD835"
// fontSize=".9em"
// fontWeight={700}
// _hover={{ bg: "#fbdb4f" }}
// onClick={onOpen}
// >
// Start Matching Now
// </Button>
<Button
mt="1em"
px="1.5em"
bg="#FDD835"
fontSize=".9em"
fontWeight={700}
_hover={{ bg: "#fbdb4f" }}
onClick={onOpen}
>
Start Matching Now
</Button>

// <Box mt="3em" bg="#FFFDF6" borderRadius={12} p="1em">
// <Text fontSize="1.5em" fontWeight={700} mb="1em">
// Upcoming session
// </Text>
// <TableContainer borderRadius={12}>
// <Table>
// <Thead bg="#FFF7D1">
// <Tr>
// <Th>Date & Time scheduled</Th>
// <Th>Spoken language</Th>
// <Th>Language to learn </Th>
// <Th></Th>
// </Tr>
// </Thead>
// <Tbody fontSize=".9em">
// <Tr>
// <Td>Thurs, 27th April, 4:00 PM</Td>
// <Td>Irish</Td>
// <Td>Pakistan</Td>
// <Td>
// <Flex gap={4}>
// <Button fontSize=".9em" bg="#FDD835">
// Join Session
// </Button>
// <Button
// fontSize=".9em"
// color="#FDD835"
// border="1px solid #FDD835"
// bg="transparent"
// >
// Reschedule
// </Button>
// </Flex>
// </Td>
// </Tr>
// <Tr>
// <Td>Thurs, 27th April, 4:00 PM</Td>
// <Td>Irish</Td>
// <Td>Pakistan</Td>
// <Td>
// <Flex gap={4}>
// <Button fontSize=".9em" bg="#FDD835">
// Join Session
// </Button>
// <Button
// fontSize=".9em"
// color="#FDD835"
// border="1px solid #FDD835"
// bg="transparent"
// >
// Reschedule
// </Button>
// </Flex>
// </Td>
// </Tr>
// </Tbody>
// </Table>
// </TableContainer>
// </Box>
// </Box>
// </>
// );
// };
<Box mt="3em" bg="#FFFDF6" borderRadius={12} p="1em">
<Text fontSize="1.5em" fontWeight={700} mb="1em">
Upcoming session
</Text>
<TableContainer borderRadius={12}>
<Table>
<Thead bg="#FFF7D1">
<Tr>
<Th>Date & Time scheduled</Th>
<Th>Spoken language</Th>
<Th>Language to learn </Th>
<Th></Th>
</Tr>
</Thead>
<Tbody fontSize=".9em">
{userMeetings.map((detail, i) => (
<Tr key={i}>
<Td>Thurs, 27th April, 4:00 PM</Td> {/* TODO: Use `detail.time` to render the actual date */}
<Td>{detail.language}</Td>
<Td>{detail.native}</Td>
<Td>
<Flex gap={4}>
<Link href={detail.meeting}>
<Button fontSize=".9em" bg="#FDD835">
Join Session
</Button>
</Link>
<Button
fontSize=".9em"
color="#FDD835"
border="1px solid #FDD835"
bg="transparent"
>
Reschedule
</Button>
</Flex>
</Td>
</Tr>
))}
</Tbody>
</Table>
</TableContainer>
</Box>
</Box>
</>
);
};

export default Dashboard;
export default Dashboard;
Loading