Tutorial #62

Merged
LucidKobold merged 32 commits from tutorial into main 2022-06-24 15:51:02 -04:00
26 changed files with 1025 additions and 208 deletions
Showing only changes of commit f5eb0acddc - Show all commits

View File

@@ -1,6 +1,5 @@
import React /*, { useEffect, useRef, useState }*/ from "react"; import React from "react";
import { Box, Link, Button, BoxProps } from "@chakra-ui/react"; import { Box, Link, Button, BoxProps } from "@chakra-ui/react";
import { Icon } from "@iconify/react";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
interface CustomButtonProps { interface CustomButtonProps {

View File

@@ -1,4 +1,4 @@
import React /*, { useEffect, useRef, useState }*/ from "react"; import React from "react";
import { Box, Link, Button, BoxProps } from "@chakra-ui/react"; import { Box, Link, Button, BoxProps } from "@chakra-ui/react";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import { motion } from "framer-motion"; import { motion } from "framer-motion";

View File

@@ -1,4 +1,4 @@
import React /*, { useEffect, useRef, useState }*/ from "react"; import React from "react";
import { Box, Link, Button, BoxProps } from "@chakra-ui/react"; import { Box, Link, Button, BoxProps } from "@chakra-ui/react";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import { motion } from "framer-motion"; import { motion } from "framer-motion";

View File

@@ -1,11 +1,11 @@
import React from "react"; import React from "react";
import { useAppSelector } from "../../app/hooks";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { HStack, IconButton } from "@chakra-ui/react"; import { HStack, IconButton } from "@chakra-ui/react";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import { format, isSameMonth, addMonths, subMonths } from "date-fns"; import { format, isSameMonth, addMonths, subMonths } from "date-fns";
import findValidDateRange from "../../../lib/findValidDateRange"; import findValidDateRange from "../../../lib/findValidDateRange";
import DatePicker from "./DatePicker"; import DatePicker from "./DatePicker";
import { useAppSelector } from "../../app/hooks";
interface CalenderNavProps { interface CalenderNavProps {
isLoading: boolean; isLoading: boolean;

View File

@@ -1,3 +1,6 @@
import React, { useState } from "react";
import { Provider } from "react-redux";
import { store } from "../../app/store";
import { Box, Skeleton, Text, VStack } from "@chakra-ui/react"; import { Box, Skeleton, Text, VStack } from "@chakra-ui/react";
import { import {
add, add,
@@ -10,11 +13,8 @@ import {
isToday as isTodayFun isToday as isTodayFun
} from "date-fns"; } from "date-fns";
import router from "next/router"; import router from "next/router";
import React, { useState } from "react";
import AddUpdateSticker from "./modals/AddUpdateSticker"; import AddUpdateSticker from "./modals/AddUpdateSticker";
import DemoStickers from "./stickers/DemoStickers"; import DemoStickers from "./stickers/DemoStickers";
import { Provider } from "react-redux";
import { store } from "../../app/store";
interface DayProps { interface DayProps {
isLoading: boolean; isLoading: boolean;

View File

@@ -1,8 +1,8 @@
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { Box, HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
import { isSameDay, format } from "date-fns";
import { useAppDispatch, useAppSelector } from "../../app/hooks"; import { useAppDispatch, useAppSelector } from "../../app/hooks";
import { updateCurrDate, updateMonth } from "../../features/calender"; import { updateCurrDate, updateMonth } from "../../features/calender";
import { Box, HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
import { isSameDay, format } from "date-fns";
import CalenderNav from "./CalenderNav"; import CalenderNav from "./CalenderNav";
import Day from "./Day"; import Day from "./Day";

View File

@@ -1,3 +1,6 @@
import React, { useState, useRef } from "react";
import { useAppDispatch } from "../../../app/hooks";
import { addEditSticker } from "../../../features/calender/stickers";
import { import {
Button, Button,
Modal, Modal,
@@ -13,13 +16,10 @@ import {
SimpleGrid, SimpleGrid,
Box Box
} from "@chakra-ui/react"; } from "@chakra-ui/react";
import React, { useState, useRef } from "react";
import { format, isSameDay } from "date-fns"; import { format, isSameDay } from "date-fns";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import StickerSelector from "./StickerSelector"; import StickerSelector from "./StickerSelector";
import DemoStickers from "../stickers/DemoStickers"; import DemoStickers from "../stickers/DemoStickers";
import { useAppDispatch } from "../../../app/hooks";
import { addEditSticker } from "../../../features/calender/stickers";
interface AddStickerProps { interface AddStickerProps {
isOpen: boolean; isOpen: boolean;

View File

@@ -1,3 +1,4 @@
import React from "react";
import { import {
Box, Box,
Modal, Modal,
@@ -5,7 +6,6 @@ import {
ModalContent, ModalContent,
ModalOverlay ModalOverlay
} from "@chakra-ui/react"; } from "@chakra-ui/react";
import React from "react";
import LoadingSpinner from "./LoadingSpinner"; import LoadingSpinner from "./LoadingSpinner";
const LoadingOverlay = (): JSX.Element => { const LoadingOverlay = (): JSX.Element => {

View File

@@ -1,5 +1,5 @@
import { Spinner } from "@chakra-ui/react";
import React from "react"; import React from "react";
import { Spinner } from "@chakra-ui/react";
const LoadingSpinner = (): JSX.Element => { const LoadingSpinner = (): JSX.Element => {
return ( return (

View File

@@ -1,8 +1,8 @@
import { Box, HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
import { format, isSameDay, isToday } from "date-fns";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { useAppDispatch, useAppSelector } from "../../app/hooks"; import { useAppDispatch, useAppSelector } from "../../app/hooks";
import { updateMonth } from "../../features/calender"; import { updateMonth } from "../../features/calender";
import { Box, HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
import { format, isSameDay, isToday } from "date-fns";
import Day from "../calender/Day"; import Day from "../calender/Day";
interface CalenderExampleProps { interface CalenderExampleProps {
@@ -148,7 +148,7 @@ const CalenderExample = ({ type }: CalenderExampleProps): JSX.Element => {
id.length id.length
? id ? id
: format(toDateObj, "yyyyddLL") + : format(toDateObj, "yyyyddLL") +
`/${sticker === null ? 0 : sticker}` `/${sticker === null ? 0 : sticker}`
} }
/> />
); );

View File

@@ -36,11 +36,13 @@ const clearStorage = (): void => {
interface TutorialSlice { interface TutorialSlice {
completedTutorial: boolean | null; completedTutorial: boolean | null;
storageState: StorageState | null; storageState: StorageState | null;
rememberCompleted: boolean;
} }
const initialState: TutorialSlice = { const initialState: TutorialSlice = {
completedTutorial: null, completedTutorial: null,
storageState: null storageState: null,
rememberCompleted: false
}; };
const tutorialSlice = createSlice({ const tutorialSlice = createSlice({
@@ -96,6 +98,12 @@ const tutorialSlice = createSlice({
if (temp === null && local === null) { if (temp === null && local === null) {
state.completedTutorial = false; state.completedTutorial = false;
} }
},
// Toggle remember completed
toggleRememberCompleted(state: TutorialSlice) {
const { rememberCompleted } = state;
state.rememberCompleted = !rememberCompleted;
} }
} }
}); });
@@ -104,6 +112,7 @@ export const {
setTempTutorialComplete, setTempTutorialComplete,
setTutorialCompleted, setTutorialCompleted,
clearTutorialCompleted, clearTutorialCompleted,
getAndSetTutorial getAndSetTutorial,
toggleRememberCompleted
} = tutorialSlice.actions; } = tutorialSlice.actions;
export default tutorialSlice.reducer; export default tutorialSlice.reducer;

View File

@@ -2,10 +2,10 @@ import type { AppProps } from "next/app";
import React from "react"; import React from "react";
import { ChakraProvider } from "@chakra-ui/react"; import { ChakraProvider } from "@chakra-ui/react";
import AppTheme from "../theme/AppTheme"; import AppTheme from "../theme/AppTheme";
import Layout from "../theme/layout/Layout";
import Head from "next/head";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { store } from "../app/store"; import { store } from "../app/store";
import Layout from "../theme/layout/Layout";
import Head from "next/head";
function LCMPottyChart({ Component, pageProps }: AppProps): JSX.Element { function LCMPottyChart({ Component, pageProps }: AppProps): JSX.Element {
return ( return (

View File

@@ -1,5 +1,5 @@
import React from "react";
import NextDocument, { Html, Head, Main, NextScript } from "next/document"; import NextDocument, { Html, Head, Main, NextScript } from "next/document";
import React from "react";
import { ColorModeScript } from "@chakra-ui/react"; import { ColorModeScript } from "@chakra-ui/react";
import AppTheme from "../theme/AppTheme"; import AppTheme from "../theme/AppTheme";

View File

@@ -1,4 +1,6 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Provider } from "react-redux";
import { store } from "../../app/store";
import { Box } from "@chakra-ui/react"; import { Box } from "@chakra-ui/react";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { import {
@@ -13,8 +15,6 @@ import {
// import findValidDateRange from "../../lib/findValidDateRange"; // import findValidDateRange from "../../lib/findValidDateRange";
import ErrorPage from "next/error"; import ErrorPage from "next/error";
import Calender from "../../components/calender"; import Calender from "../../components/calender";
import { Provider } from "react-redux";
import { store } from "../../app/store";
const DateRoute: React.FC<unknown> = () => { const DateRoute: React.FC<unknown> = () => {
const router = useRouter(); const router = useRouter();

View File

@@ -1,9 +1,4 @@
import React, { Fragment, useEffect, useRef } from "react"; import React, { Fragment, useEffect, useRef } from "react";
import { Box } from "@chakra-ui/react";
import { format } from "date-fns";
import Calender from "../components/calender";
import Tutorial from "../components/tutorial";
import LoadingOverlay from "../components/loading/LoadingOverlay";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { store } from "../app/store"; import { store } from "../app/store";
import { useAppDispatch, useAppSelector } from "../app/hooks"; import { useAppDispatch, useAppSelector } from "../app/hooks";
@@ -13,6 +8,11 @@ import {
setTempTutorialComplete, setTempTutorialComplete,
setTutorialCompleted setTutorialCompleted
} from "../features/tutorial"; } from "../features/tutorial";
import { Box } from "@chakra-ui/react";
import { format } from "date-fns";
import Calender from "../components/calender";
import Tutorial from "../components/tutorial";
import LoadingOverlay from "../components/loading/LoadingOverlay";
const IndexPage = (): JSX.Element => { const IndexPage = (): JSX.Element => {
const isLoading = useAppSelector((state) => state.calender.isLoading); const isLoading = useAppSelector((state) => state.calender.isLoading);

View File

@@ -1,5 +1,4 @@
import React, { FC, ReactNode } from "react"; import React, { FC, ReactNode } from "react";
import type { AppProps } from "next/app"; import type { AppProps } from "next/app";
import Header from "../layout/Header"; import Header from "../layout/Header";
import { Box } from "@chakra-ui/layout"; import { Box } from "@chakra-ui/layout";