Merge pull request #8 from LucidKobold/calender-nav

Non-Functional Calender Nav and Days of The Week
This commit is contained in:
Lucid Kobold
2021-11-25 18:40:04 -06:00
committed by GitHub
5 changed files with 138 additions and 51 deletions

View File

@@ -1,41 +0,0 @@
import React from "react";
import { Box, SimpleGrid } from "@chakra-ui/react";
import { endOfMonth, getDate } from "date-fns";
const Calender = (): JSX.Element => {
const today = new Date();
const endOfCurrMonth = endOfMonth(today);
const lastDay = getDate(endOfCurrMonth);
// console.info(`This month has ${lastDay} days.`);
const daysArr = [];
for (let i = daysArr.length; i < lastDay; i++) {
daysArr.push(daysArr.length + 1);
}
return (
<SimpleGrid
px={6}
spacing={2}
// bg="brand.main"
w="100%"
h="100vh"
columns={7}
>
{daysArr.map((day) => {
return (
<Box
bg="transparent"
border="2px solid #0068ff"
w="100%"
h="100%"
key={day}
>{`Day ${day}`}</Box>
);
})}
</SimpleGrid>
);
};
export default Calender;

View File

@@ -0,0 +1,106 @@
import React from "react";
import { Box, HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
import { endOfMonth, getDate } from "date-fns";
import CalenderNav from "./CalenderNav";
const Calender = (): JSX.Element => {
const today = new Date();
const endOfCurrMonth = endOfMonth(today);
const lastDay = getDate(endOfCurrMonth);
// console.info(`This month has ${lastDay} days.`);
const daysOfMonth = [];
for (let i = daysOfMonth.length; i < lastDay; i++) {
daysOfMonth.push(daysOfMonth.length + 1);
}
const daysOfWeek = {
Sunday: [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
],
Monday: [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
],
};
const userSettings = {
theme: "default",
startOfWeek: "Sunday",
};
return (
<VStack h="100vh" w="100%">
<CalenderNav />
<HStack
px={6}
spacing={2}
// bg="brand.main"
w="100%"
h="auto"
alignContent="center"
alignItems="center"
>
{daysOfWeek[userSettings.startOfWeek].map((weekDay) => {
return (
<Box
d="flex"
alignContent="center"
alignItems="center"
bg="transparent"
border="2px solid #0068ff"
w="100%"
h={10}
key={weekDay}
>
<Text w="100%" h="auto">
{weekDay}
</Text>
</Box>
);
})}
</HStack>
<SimpleGrid
px={6}
spacing={2}
// bg="brand.main"
w="100%"
h="100%"
columns={7}
// alignContent="center"
alignItems="center"
>
{daysOfMonth.map((monthDay) => {
return (
<Box
bg="transparent"
border="2px solid #0068ff"
w="100%"
h="100%"
key={monthDay}
>
<Text w="100%" h="100%">
{`Day ${monthDay}`}
</Text>
</Box>
);
})}
</SimpleGrid>
</VStack>
);
};
export default Calender;

View File

@@ -0,0 +1,28 @@
import React from "react";
import { Heading, HStack, IconButton } from "@chakra-ui/react";
import { Icon } from "@iconify/react";
import { format } from "date-fns";
const CalenderNav = (): JSX.Element => {
const today = new Date();
const currentMonth = format(today, "LLLL uuuu");
return (
<HStack spacing={10} as="nav" w="auto" h="10vh" textAlign="center">
<IconButton
aria-label="Previous Month"
icon={<Icon icon="akar-icons:chevron-left" />}
/>
<Heading w="100%" h="auto">
{currentMonth}
</Heading>
<IconButton
aria-label="Next Month"
icon={<Icon icon="akar-icons:chevron-right" />}
/>
</HStack>
);
};
export default CalenderNav;

View File

@@ -19,7 +19,6 @@
"@chakra-ui/react": "^1.7.2", "@chakra-ui/react": "^1.7.2",
"@emotion/react": "^11.6.0", "@emotion/react": "^11.6.0",
"@emotion/styled": "^11.6.0", "@emotion/styled": "^11.6.0",
"@iconify/react": "^3.1.0",
"@types/react": "^17.0.37", "@types/react": "^17.0.37",
"date-fns": "^2.26.0", "date-fns": "^2.26.0",
"framer-motion": "^5.3.3", "framer-motion": "^5.3.3",
@@ -29,6 +28,7 @@
"sharp": "^0.29.3" "sharp": "^0.29.3"
}, },
"devDependencies": { "devDependencies": {
"@iconify/react": "^3.1.0",
"@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/eslint-plugin": "^5.4.0",
"eslint": "<8.0.0", "eslint": "<8.0.0",
"eslint-config-next": "12.0.3", "eslint-config-next": "12.0.3",

View File

@@ -1,17 +1,11 @@
import React from "react"; import React from "react";
import { Box, Heading } from "@chakra-ui/react"; import { Box } from "@chakra-ui/react";
import Calender from "../component/calender"; import Calender from "../components/calender/Calender";
const IndexPage = (): JSX.Element => { const IndexPage = (): JSX.Element => {
return ( return (
<Box textAlign="center" w="100%" h="auto" pt="50px" pb="10vh"> <Box textAlign="center" w="100%" h="auto" pt="50px" pb="10vh">
{Calender ? ( <Calender />
<Calender />
) : (
<Heading as="h1" size="2xl">
Hello World
</Heading>
)}
</Box> </Box>
); );
}; };