From 0b8c6e17328572f3cd6e1fd1777cf834bd5a19b5 Mon Sep 17 00:00:00 2001 From: liushuxiang <276900785@qq.com> Date: Sun, 23 Apr 2023 01:58:40 +0800 Subject: [PATCH] refactor: refactor the global css --- CHANGE_LOG.md | 9 + components/ChatSection/ChatFooter/index.tsx | 5 +- components/Drawer/drawer.tsx | 108 ----- components/Drawer/index.ts | 4 - components/Drawer/types.ts | 9 - components/Drawer/wrapper.tsx | 26 -- components/Menu/Mobile/index.tsx | 80 ++-- components/Menu/index.tsx | 95 +++-- components/Modal/confirm.tsx | 81 ---- components/Modal/index.tsx | 96 ----- components/Navbar/changeTitle.tsx | 2 +- components/Navbar/index.tsx | 34 +- components/Navbar/setting.tsx | 40 +- components/index.ts | 4 +- components/ui/Button/index.tsx | 82 ++++ components/ui/Confirm/index.tsx | 110 +++++ components/ui/Drawer/index.tsx | 99 +++++ components/ui/Modal/index.tsx | 131 ++++++ components/ui/index.ts | 10 + package.json | 23 +- pages/_app.tsx | 8 +- pages/index.tsx | 10 +- pnpm-lock.yaml | 451 ++++++++++---------- tailwind.config.js | 14 +- 24 files changed, 874 insertions(+), 657 deletions(-) delete mode 100644 components/Drawer/drawer.tsx delete mode 100644 components/Drawer/index.ts delete mode 100644 components/Drawer/types.ts delete mode 100644 components/Drawer/wrapper.tsx delete mode 100644 components/Modal/confirm.tsx delete mode 100644 components/Modal/index.tsx create mode 100644 components/ui/Button/index.tsx create mode 100644 components/ui/Confirm/index.tsx create mode 100644 components/ui/Drawer/index.tsx create mode 100644 components/ui/Modal/index.tsx create mode 100644 components/ui/index.ts diff --git a/CHANGE_LOG.md b/CHANGE_LOG.md index 30d04c3..44ffa9e 100644 --- a/CHANGE_LOG.md +++ b/CHANGE_LOG.md @@ -1,5 +1,14 @@ # L-GPT Change Log +## v0.1.0 + +> 2023-04-23 + +### Changed + +- Adjust global CSS and use as many tailwind built-in CSS values as possible to optimize some color matching effects. +- Replace React.PropsWithChildren with React.HTMLAttributes + ## v0.0.5 > 2023-04-20 diff --git a/components/ChatSection/ChatFooter/index.tsx b/components/ChatSection/ChatFooter/index.tsx index 4b4a724..a07e6de 100644 --- a/components/ChatSection/ChatFooter/index.tsx +++ b/components/ChatSection/ChatFooter/index.tsx @@ -232,8 +232,9 @@ const ChatFooter: React.FC = () => { return (
{!!findChannel?.chat_list?.length && ( diff --git a/components/Drawer/drawer.tsx b/components/Drawer/drawer.tsx deleted file mode 100644 index fc1f09c..0000000 --- a/components/Drawer/drawer.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import * as React from "react"; -import classNames from "classnames"; -import { AiOutlineClose } from "react-icons/ai"; -import type { IDrawerPropTypes } from "./types"; - -const Drawer: React.FC = React.memo((props) => { - const { - children, - className, - keyboard = true, - maskClosable = true, - open, - title = "Title", - width = 378, - onClose, - } = props; - - const [isEnter, setIsEnter] = React.useState(true); - const [isLeave, setIsLeave] = React.useState(false); - - const stopHideDrawer = (e: any) => e.stopPropagation(); - - const hideDrawer = () => onClose?.(); - - const onClickMask = () => { - if (maskClosable) onClose?.(); - }; - - React.useEffect(() => { - let openTimer: NodeJS.Timer; - let leaveTimer: NodeJS.Timer; - if (open) { - openTimer = setTimeout(() => { - setIsEnter(false); - }, 200); - } else { - setIsLeave(true); - leaveTimer = setTimeout(() => { - setIsLeave(false); - }, 200); - } - - const handleEscKey = (event: any) => { - if (event.keyCode === 27) { - onClose?.(); - } - }; - - if (keyboard) document.addEventListener("keydown", handleEscKey); - - return () => { - if (!open) { - openTimer && clearTimeout(openTimer); - leaveTimer && clearTimeout(leaveTimer); - } - - if (keyboard) document.removeEventListener("keydown", handleEscKey); - }; - }, [open]); - - return ( -
-
-
-
-
-
- {title} -
- -
-
-
{children}
-
-
-
-
- ); -}); - -Drawer.displayName = "Drawer"; - -export default Drawer; diff --git a/components/Drawer/index.ts b/components/Drawer/index.ts deleted file mode 100644 index 9102014..0000000 --- a/components/Drawer/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import DrawerWrapper from "./wrapper"; - -export type { IDrawerPropTypes } from "./types"; -export default DrawerWrapper; diff --git a/components/Drawer/types.ts b/components/Drawer/types.ts deleted file mode 100644 index a75e140..0000000 --- a/components/Drawer/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface IDrawerPropTypes extends React.PropsWithChildren { - className?: string; - keyboard?: boolean; - maskClosable?: boolean; - onClose?: () => void; - open?: boolean; - title?: React.ReactNode; - width?: number | string; -} diff --git a/components/Drawer/wrapper.tsx b/components/Drawer/wrapper.tsx deleted file mode 100644 index 3f49de3..0000000 --- a/components/Drawer/wrapper.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from "react"; -import { createPortal } from "react-dom"; -import Drawer from "./drawer"; -import type { IDrawerPropTypes } from "./types"; - -const DrawerWrapper: React.FC = (props) => { - const { children, open } = props; - - const [animationVisible, setAnimationVisible] = React.useState(false); - - React.useEffect(() => { - if (open) { - setAnimationVisible(true); - } else { - setTimeout(() => { - setAnimationVisible(false); - }, 190); - } - }, [open]); - - if (!animationVisible) return null; - - return createPortal({children}, document.body); -}; - -export default DrawerWrapper; diff --git a/components/Menu/Mobile/index.tsx b/components/Menu/Mobile/index.tsx index a66e3e9..383c1b2 100644 --- a/components/Menu/Mobile/index.tsx +++ b/components/Menu/Mobile/index.tsx @@ -1,11 +1,12 @@ import * as React from "react"; import classNames from "classnames"; +import { twMerge } from "tailwind-merge"; import { useTranslation } from "next-i18next"; import { useDateFormat } from "l-hooks"; import { AiOutlineDelete, AiFillGithub } from "react-icons/ai"; import { BsChatSquareText } from "react-icons/bs"; import { v4 as uuidv4 } from "uuid"; -import { Drawer, Confirm } from "@/components"; +import { Drawer, Confirm, NewButton } from "@/components"; import { useChannel, initChannelList } from "@/hooks"; import { useMobileMenuOpen } from "@/state"; @@ -73,44 +74,54 @@ const MobileMenu: React.FC = () => { return (
-
{t("new-chat")} -
-
+ +
{channel.list.map((item) => (
onChangeChannel(item.channel_id)} - className={classNames( - "rounded-lg mt-1 overflow-hidden relative flex flex-col h-16 text-xs text-base-color px-[0.5rem] gap-1 justify-center", - { - "!bg-menu-active dark:!bg-slate-700": - item.channel_id === channel.activeId, - } + className={twMerge( + classNames( + "rounded-lg mb-1 cursor-pointer transition-colors overflow-hidden relative flex flex-col h-16 text-xs px-[0.5rem] gap-1 justify-center", + "hover:bg-gray-200/60 dark:hover:bg-slate-700/70", + { + "bg-menu-active hover:bg-menu-active dark:bg-slate-600 dark:hover:bg-slate-600": + item.channel_id === channel.activeId, + } + ) )} > -
-
+
+
{item.channel_name || t("new-conversation")}
{
{item.chat_list.length} {t("messages")}
@@ -138,7 +152,11 @@ const MobileMenu: React.FC = () => { content={t("delete-conversation")} trigger={
@@ -154,7 +172,13 @@ const MobileMenu: React.FC = () => { title={t("clear-all-conversation")} content={t("clear-conversation")} trigger={ -
+
{t("clear-all-conversation")}
} @@ -164,7 +188,11 @@ const MobileMenu: React.FC = () => { Github diff --git a/components/Menu/index.tsx b/components/Menu/index.tsx index 98a4406..98f5811 100644 --- a/components/Menu/index.tsx +++ b/components/Menu/index.tsx @@ -1,12 +1,13 @@ import * as React from "react"; import classNames from "classnames"; +import { twMerge } from "tailwind-merge"; import { useTranslation } from "next-i18next"; import { AiOutlineDelete, AiFillGithub } from "react-icons/ai"; import { BsChatSquareText } from "react-icons/bs"; import { useDateFormat } from "l-hooks"; import { v4 as uuidv4 } from "uuid"; import { useChannel, initChannelList } from "@/hooks"; -import { Confirm } from "@/components"; +import { NewButton, Confirm } from "@/components"; const Menu: React.FC = () => { const { t } = useTranslation("menu"); @@ -64,50 +65,66 @@ const Menu: React.FC = () => { }; return ( -
- +
{channel.list.map((item) => (
onChangeChannel(item.channel_id)} - className={classNames( - "rounded-lg cursor-pointer mb-1 overflow-hidden relative flex flex-col h-16 text-xs text-base-color px-[0.5rem] transition-colors gap-1 group justify-center", - "hover:bg-menu-hover dark:hover:bg-color-fill-1", - { - "!bg-menu-active dark:!bg-slate-700": - item.channel_id === channel.activeId, - } + className={twMerge( + classNames( + "rounded-lg cursor-pointer mb-1 overflow-hidden relative flex flex-col h-16 text-xs px-[0.5rem] transition-colors gap-1 group justify-center", + "hover:bg-gray-200/60 dark:hover:bg-slate-700/70", + { + "bg-menu-active hover:bg-menu-active dark:bg-slate-600 dark:hover:bg-slate-600": + item.channel_id === channel.activeId, + } + ) )} > -
-
+
+
- {item.channel_name || t("new-conversation")} + + {item.channel_name || t("new-conversation")} +
-
- {item.chat_list.length} {t("messages")} -
-
+ {item.chat_list.length} {t("messages")} +
{item.chat_list.length ? item.chat_list.at(-1)?.time ? format( @@ -124,7 +141,11 @@ const Menu: React.FC = () => { trigger={
@@ -134,12 +155,17 @@ const Menu: React.FC = () => {
))}
-
+
+
{t("clear-all-conversation")}
} @@ -148,7 +174,10 @@ const Menu: React.FC = () => { Github diff --git a/components/Modal/confirm.tsx b/components/Modal/confirm.tsx deleted file mode 100644 index a2da23d..0000000 --- a/components/Modal/confirm.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import * as React from "react"; -import classNames from "classnames"; -import * as AlertDialog from "@radix-ui/react-alert-dialog"; -import { useTranslation } from "next-i18next"; -import { AiFillExclamationCircle } from "react-icons/ai"; -import Button from "../Button"; - -export interface ConfirmProps { - content?: React.ReactNode; - onOk?: () => void; - title?: React.ReactNode; - trigger: React.ReactNode; -} - -const Confirm: React.FC = ({ content, onOk, title, trigger }) => { - const { t } = useTranslation("common"); - - const stopPropagation = (e: any) => e.stopPropagation(); - - const onClickOk = (e: any) => { - e.stopPropagation(); - onOk?.(); - }; - - return ( - - {trigger} - - -
- -
-
-
- - - {title || "Title"} - -
-
-
- - {content} - -
-
-
- - - - - - -
-
-
-
-
- ); -}; - -export default Confirm; diff --git a/components/Modal/index.tsx b/components/Modal/index.tsx deleted file mode 100644 index b14b244..0000000 --- a/components/Modal/index.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import * as React from "react"; -import * as Dialog from "@radix-ui/react-dialog"; -import { useTranslation } from "next-i18next"; -import classNames from "classnames"; -import { AiOutlineClose } from "react-icons/ai"; -import Button from "../Button"; - -export interface ModalProps extends React.PropsWithChildren { - autoFocus?: boolean; - footer?: React.ReactNode; - maskClosable?: boolean; - onClose?: () => void; - onOk?: () => void; - open: boolean; - title?: React.ReactNode; - width?: string | number; -} - -const Modal: React.FC = ({ - autoFocus = false, - children, - footer, - maskClosable = true, - onClose, - onOk, - open = false, - title, - width = "32.5rem", -}) => { - const { t } = useTranslation("common"); - - const onClickOverlay = () => { - if (maskClosable) onClose?.(); - }; - - const onOpenAutoFocus = (event: Event) => { - if (!autoFocus) event.preventDefault(); - }; - - return ( - - - -
- - - {title || "Title"} - -
{children}
- {footer !== undefined ? ( - footer - ) : ( -
- - -
- )} - - - -
-
-
-
- ); -}; - -export default Modal; diff --git a/components/Navbar/changeTitle.tsx b/components/Navbar/changeTitle.tsx index 8dc39e1..1408365 100644 --- a/components/Navbar/changeTitle.tsx +++ b/components/Navbar/changeTitle.tsx @@ -42,7 +42,7 @@ const ChangeTitle = React.forwardRef((_, forwardedRef) => { onClose={onClose} onOk={submit} > -
+
{t("title")}
{ <>
- +
{openAIKey || envOpenAIKey ? activeChannel?.channel_name || tMenu("new-conversation") : tNav("set-openai-key")} {!!(openAIKey || envOpenAIKey) && ( )}
- +
diff --git a/components/Navbar/setting.tsx b/components/Navbar/setting.tsx index a9b492b..30dc113 100644 --- a/components/Navbar/setting.tsx +++ b/components/Navbar/setting.tsx @@ -1,7 +1,8 @@ import * as React from "react"; +import classNames from "classnames"; import { useTranslation } from "next-i18next"; import { useTheme } from "next-themes"; -import { Modal, Select, Input } from "@/components"; +import { Select, Input, Modal } from "@/components"; import { useOpenAIKey, useProxy } from "@/hooks"; const moduleOptions = [ @@ -40,7 +41,6 @@ const Setting = React.forwardRef((_, forwardedRef) => { React.useImperativeHandle(forwardedRef, () => ({ init() { setOpen(true); - console.log(theme, "theme"); }, })); @@ -52,8 +52,13 @@ const Setting = React.forwardRef((_, forwardedRef) => { open={open} onClose={onClose} > -
-
+
+
API key
@@ -66,8 +71,13 @@ const Setting = React.forwardRef((_, forwardedRef) => { />
-
-
+
+
{t("proxy-url")}
@@ -79,8 +89,13 @@ const Setting = React.forwardRef((_, forwardedRef) => { />
-
-
+
+
{t("model")}
@@ -92,8 +107,13 @@ const Setting = React.forwardRef((_, forwardedRef) => { />
-
-
+
+
{t("theme")}
diff --git a/components/index.ts b/components/index.ts index 79a7dc8..baea1b1 100644 --- a/components/index.ts +++ b/components/index.ts @@ -1,7 +1,6 @@ export { default as Menu } from "./Menu"; export { default as MobileMenu } from "./Menu/Mobile"; export { default as Navbar } from "./Navbar"; -export { default as Drawer } from "./Drawer"; export { default as Welcome } from "./Welcome"; export { default as ChatSection } from "./ChatSection"; export { default as ChatContent } from "./ChatContent"; @@ -12,7 +11,6 @@ export { } from "./ScrollToBottoms"; export { default as Input } from "./Input"; export { default as Button } from "./Button"; -export { default as Modal } from "./Modal"; -export { default as Confirm } from "./Modal/confirm"; export { default as Select } from "./Select"; export { default as Prompt } from "./Prompt"; +export { Button as NewButton, Confirm, Drawer, Modal } from "./ui"; diff --git a/components/ui/Button/index.tsx b/components/ui/Button/index.tsx new file mode 100644 index 0000000..cd59ccc --- /dev/null +++ b/components/ui/Button/index.tsx @@ -0,0 +1,82 @@ +import * as React from "react"; +import classNames from "classnames"; + +type ButtonType = "default" | "primary" | "danger"; + +type ButtonSize = "xs" | "sm" | "base" | "lg"; + +interface ButtonProps extends React.HTMLAttributes { + block?: boolean; + leftIcon?: React.ReactNode; + rightIcon?: React.ReactNode; + size?: ButtonSize; + type?: ButtonType; +} + +const Button = React.forwardRef( + ( + { + children, + block, + className, + leftIcon, + onClick, + rightIcon, + size = "sm", + type = "default", + }, + forwardedRef + ) => { + return ( + + ); + } +); + +Button.displayName = "Button"; + +export default Button; diff --git a/components/ui/Confirm/index.tsx b/components/ui/Confirm/index.tsx new file mode 100644 index 0000000..e860a82 --- /dev/null +++ b/components/ui/Confirm/index.tsx @@ -0,0 +1,110 @@ +import * as React from "react"; +import * as AlertDialog from "@radix-ui/react-alert-dialog"; +import classNames from "classnames"; +import { useTranslation } from "next-i18next"; +import { AiFillExclamationCircle } from "react-icons/ai"; +import { NewButton } from "@/components"; + +interface ConfirmProps { + /** The AlertDialog's title */ + title?: React.ReactNode; + + /** Custom icon */ + icon?: React.ReactNode; + + /** The AlertDialog's content */ + content?: React.ReactNode; + + /** Whether to close the Alert dialog when the Overlay is clicked. default is true */ + maskClosable?: boolean; + + /** Specify a function that will be called when a user clicks the OK button */ + onOk?: () => void; + + /** A ReactNode that open the AlertDialog */ + trigger: React.ReactNode; +} + +const Confirm = React.forwardRef( + ( + { title, icon, content, maskClosable = true, onOk, trigger }, + forwardedRef + ) => { + const { t } = useTranslation("common"); + const [open, setOpen] = React.useState(false); + + const onClickOverlay = (event: any) => { + event.stopPropagation(); + if (maskClosable) setOpen(false); + }; + + const onClickOk = (event: any) => { + event.stopPropagation(); + onOk?.(); + }; + + return ( + + {trigger} + + +
+ + + {icon || } + {title || "Title"} + + + {content} + +
+ + event.stopPropagation()} + > + {t("cancel")} + + + + + {t("ok")} + + +
+
+
+
+
+ ); + } +); + +Confirm.displayName = "Confirm"; + +export default Confirm; diff --git a/components/ui/Drawer/index.tsx b/components/ui/Drawer/index.tsx new file mode 100644 index 0000000..b05cafc --- /dev/null +++ b/components/ui/Drawer/index.tsx @@ -0,0 +1,99 @@ +import * as React from "react"; +import * as Dialog from "@radix-ui/react-dialog"; +import classNames from "classnames"; +import { AiOutlineClose } from "react-icons/ai"; + +interface DrawerProps extends Omit, "title"> { + /** The Drawer is open or not */ + open?: boolean; + + /** Dialog.Overlay custom className */ + overlayClassName?: string | undefined; + + /** The Drawer's Title */ + title?: React.ReactNode; + + /** Width of the Drawer, default is 378px */ + width?: number | string; + + /** Need autofocus or noe */ + autoFocus?: boolean; + + /** Specify a function that will be called when the drawer close */ + onClose?: () => void; +} + +const Drawer = React.forwardRef( + ( + { + children, + className, + open, + overlayClassName, + title, + width = 378, + autoFocus = false, + onClose, + }, + forwardedRef + ) => { + const onOpenChange = (open: boolean) => { + if (!open) onClose?.(); + }; + + const onOpenAutoFocus = (event: Event) => { + if (!autoFocus) event.preventDefault(); + }; + + return ( + + + + + + {title || "Title"} + + {children} + + + + + + + ); + } +); + +Drawer.displayName = "Drawer"; + +export default Drawer; diff --git a/components/ui/Modal/index.tsx b/components/ui/Modal/index.tsx new file mode 100644 index 0000000..4771a05 --- /dev/null +++ b/components/ui/Modal/index.tsx @@ -0,0 +1,131 @@ +import * as React from "react"; +import * as Dialog from "@radix-ui/react-dialog"; +import classNames from "classnames"; +import { AiOutlineClose } from "react-icons/ai"; +import { useTranslation } from "next-i18next"; +import { NewButton } from "@/components"; + +interface ModalProps extends Omit, "title"> { + /** The Drawer is open or not */ + open?: boolean; + + /** Width of the Drawer, default is 520px */ + width?: number | string; + + /** Need autofocus or noe */ + autoFocus?: boolean; + + /** Whether to close the Alert dialog when the Overlay is clicked. default is true */ + maskClosable?: boolean; + + /** The Drawer's Title */ + title?: React.ReactNode; + + /** The Drawer's Footer */ + footer?: React.ReactNode | null; + + /** Specify a function that will be called when a user clicks mask, close button on top right or Cancel button */ + onClose?: () => void; + + /** Specify a function that will be called when a user clicks the OK button */ + onOk?: () => void; +} + +const Modal = React.forwardRef( + ( + { + children, + className, + open, + width = "32.5rem", + autoFocus = false, + maskClosable = true, + title, + footer, + onClose, + onOk, + }, + forwardedRef + ) => { + const { t } = useTranslation("common"); + + const onOpenChange = (open: boolean) => { + if (!open) onClose?.(); + }; + + const onOpenAutoFocus = (event: Event) => { + if (!autoFocus) event.preventDefault(); + }; + + const onInteractOutside = (event: any) => { + if (maskClosable) { + onClose?.(); + } else { + event.preventDefault(); + } + }; + + return ( + + + +
+ + + {title || "Title"} + +
{children}
+ {footer !== undefined ? ( + footer + ) : ( +
+ {t("cancel")} + + {t("ok")} + +
+ )} + + + +
+
+
+
+ ); + } +); + +Modal.displayName = "Modal"; + +export default Modal; diff --git a/components/ui/index.ts b/components/ui/index.ts new file mode 100644 index 0000000..a8cbd58 --- /dev/null +++ b/components/ui/index.ts @@ -0,0 +1,10 @@ +/** + * Modal, Confirm z-index 1500 + */ + +import Button from "./Button"; +import Confirm from "./Confirm"; +import Drawer from "./Drawer"; +import Modal from "./Modal"; + +export { Button, Confirm, Drawer, Modal }; diff --git a/package.json b/package.json index 0bf0461..aed8014 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lgpt", - "version": "0.0.5", + "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", @@ -12,25 +12,25 @@ "@emotion/css": "11.10.6", "@radix-ui/react-alert-dialog": "1.0.3", "@radix-ui/react-dialog": "1.0.3", - "@radix-ui/react-select": "^1.2.1", - "@sentry/nextjs": "7.48.0", + "@radix-ui/react-select": "1.2.1", + "@sentry/nextjs": "7.49.0", "@svgr/webpack": "7.0.0", - "@types/node": "18.15.11", - "@types/react": "18.0.37", + "@types/node": "18.15.13", + "@types/react": "18.0.38", "@types/react-dom": "18.0.11", - "@vercel/analytics": "^1.0.0", + "@vercel/analytics": "1.0.0", "ahooks": "3.7.6", "autoprefixer": "10.4.14", "classnames": "2.3.2", - "eslint": "8.38.0", - "eslint-config-next": "13.3.0", - "i18next": "22.4.14", + "eslint": "8.39.0", + "eslint-config-next": "13.3.1", + "i18next": "22.4.15", "l-hooks": "0.4.4", "math-random": "2.0.1", - "next": "13.3.0", + "next": "13.3.1", "next-i18next": "13.2.2", "next-themes": "0.2.1", - "postcss": "8.4.22", + "postcss": "8.4.23", "react": "18.2.0", "react-dom": "18.2.0", "react-hot-toast": "2.4.0", @@ -41,6 +41,7 @@ "rehype-mathjax": "4.0.2", "remark-gfm": "3.0.1", "remark-math": "5.1.1", + "tailwind-merge": "1.12.0", "tailwindcss": "3.3.1", "typescript": "5.0.4", "uuid": "9.0.0", diff --git a/pages/_app.tsx b/pages/_app.tsx index ff9ccf4..cf74120 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -27,13 +27,7 @@ const App = ({ Component, pageProps }: AppProps) => {
- + diff --git a/pages/index.tsx b/pages/index.tsx index a88f8e5..e7d6e2c 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,4 +1,5 @@ import * as React from "react"; +import classNames from "classnames"; import { GetServerSideProps } from "next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; import { Menu, MobileMenu, Navbar, Welcome, ChatSection } from "@/components"; @@ -8,7 +9,13 @@ export default function Home() {
-
+
@@ -28,7 +35,6 @@ export const getServerSideProps: GetServerSideProps = async ({ locale }) => { "nav", "welcome", ])), - // Will be passed to the page component as props }, }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d1be90..09141ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,49 +6,49 @@ dependencies: version: 11.10.6 '@radix-ui/react-alert-dialog': specifier: 1.0.3 - version: 1.0.3(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: 1.0.3 - version: 1.0.3(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-select': - specifier: ^1.2.1 - version: 1.2.1(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + specifier: 1.2.1 + version: 1.2.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@sentry/nextjs': - specifier: 7.48.0 - version: 7.48.0(next@13.3.0)(react@18.2.0) + specifier: 7.49.0 + version: 7.49.0(next@13.3.1)(react@18.2.0) '@svgr/webpack': specifier: 7.0.0 version: 7.0.0 '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.15.13 + version: 18.15.13 '@types/react': - specifier: 18.0.37 - version: 18.0.37 + specifier: 18.0.38 + version: 18.0.38 '@types/react-dom': specifier: 18.0.11 version: 18.0.11 '@vercel/analytics': - specifier: ^1.0.0 + specifier: 1.0.0 version: 1.0.0(react@18.2.0) ahooks: specifier: 3.7.6 version: 3.7.6(react@18.2.0) autoprefixer: specifier: 10.4.14 - version: 10.4.14(postcss@8.4.22) + version: 10.4.14(postcss@8.4.23) classnames: specifier: 2.3.2 version: 2.3.2 eslint: - specifier: 8.38.0 - version: 8.38.0 + specifier: 8.39.0 + version: 8.39.0 eslint-config-next: - specifier: 13.3.0 - version: 13.3.0(eslint@8.38.0)(typescript@5.0.4) + specifier: 13.3.1 + version: 13.3.1(eslint@8.39.0)(typescript@5.0.4) i18next: - specifier: 22.4.14 - version: 22.4.14 + specifier: 22.4.15 + version: 22.4.15 l-hooks: specifier: 0.4.4 version: 0.4.4(@types/qs@6.9.7)(qs@6.11.1)(react-dom@18.2.0)(react@18.2.0) @@ -56,17 +56,17 @@ dependencies: specifier: 2.0.1 version: 2.0.1 next: - specifier: 13.3.0 - version: 13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) + specifier: 13.3.1 + version: 13.3.1(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) next-i18next: specifier: 13.2.2 - version: 13.2.2(i18next@22.4.14)(next@13.3.0)(react-i18next@12.2.0)(react@18.2.0) + version: 13.2.2(i18next@22.4.15)(next@13.3.1)(react-i18next@12.2.0)(react@18.2.0) next-themes: specifier: 0.2.1 - version: 0.2.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.1(next@13.3.1)(react-dom@18.2.0)(react@18.2.0) postcss: - specifier: 8.4.22 - version: 8.4.22 + specifier: 8.4.23 + version: 8.4.23 react: specifier: 18.2.0 version: 18.2.0 @@ -78,13 +78,13 @@ dependencies: version: 2.4.0(csstype@3.1.2)(react-dom@18.2.0)(react@18.2.0) react-i18next: specifier: 12.2.0 - version: 12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0) + version: 12.2.0(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) react-icons: specifier: 4.8.0 version: 4.8.0(react@18.2.0) react-markdown: specifier: 8.0.7 - version: 8.0.7(@types/react@18.0.37)(react@18.2.0) + version: 8.0.7(@types/react@18.0.38)(react@18.2.0) react-syntax-highlighter: specifier: 15.5.0 version: 15.5.0(react@18.2.0) @@ -97,9 +97,12 @@ dependencies: remark-math: specifier: 5.1.1 version: 5.1.1 + tailwind-merge: + specifier: 1.12.0 + version: 1.12.0 tailwindcss: specifier: 3.3.1 - version: 3.3.1(postcss@8.4.22) + version: 3.3.1(postcss@8.4.23) typescript: specifier: 5.0.4 version: 5.0.4 @@ -1471,13 +1474,13 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.38.0 + eslint: 8.39.0 eslint-visitor-keys: 3.4.0 dev: false @@ -1503,8 +1506,8 @@ packages: - supports-color dev: false - /@eslint/js@8.38.0: - resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} + /@eslint/js@8.39.0: + resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -1518,7 +1521,7 @@ packages: '@floating-ui/core': 0.7.3 dev: false - /@floating-ui/react-dom@0.7.2(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@floating-ui/react-dom@0.7.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==} peerDependencies: react: '>=16.8.0' @@ -1527,7 +1530,7 @@ packages: '@floating-ui/dom': 0.5.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.37)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.38)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -1580,18 +1583,18 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@next/env@13.3.0: - resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==} + /@next/env@13.3.1: + resolution: {integrity: sha512-EDtCoedIZC7JlUQ3uaQpSc4aVmyhbLHmQVALg7pFfQgOTjgSnn7mKtA0DiCMkYvvsx6aFb5octGMtWrOtGXW9A==} dev: false - /@next/eslint-plugin-next@13.3.0: - resolution: {integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==} + /@next/eslint-plugin-next@13.3.1: + resolution: {integrity: sha512-Hpd74UrYGF+bq9bBSRDXRsRfaWkPpcwjhvachy3sr/R/5fY6feC0T0s047pUthyqcaeNsqKOY1nUGQQJNm4WyA==} dependencies: glob: 7.1.7 dev: false - /@next/swc-darwin-arm64@13.3.0: - resolution: {integrity: sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==} + /@next/swc-darwin-arm64@13.3.1: + resolution: {integrity: sha512-UXPtriEc/pBP8luSLSCZBcbzPeVv+SSjs9cH/KygTbhmACye8/OOXRZO13Z2Wq1G0gLmEAIHQAOuF+vafPd2lw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1599,8 +1602,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.3.0: - resolution: {integrity: sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==} + /@next/swc-darwin-x64@13.3.1: + resolution: {integrity: sha512-lT36yYxosCfLtplFzJWgo0hrPu6/do8+msgM7oQkPeohDNdhjtjFUgOOwdSnPublLR6Mo2Ym4P/wl5OANuD2bw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1608,8 +1611,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.3.0: - resolution: {integrity: sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==} + /@next/swc-linux-arm64-gnu@13.3.1: + resolution: {integrity: sha512-wRb76nLWJhonH8s3kxC/1tFguEkeOPayIwe9mkaz1G/yeS3OrjeyKMJsb4+Kdg0zbTo53bNCOl59NNtDM7yyyw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1617,8 +1620,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.3.0: - resolution: {integrity: sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==} + /@next/swc-linux-arm64-musl@13.3.1: + resolution: {integrity: sha512-qz3BzjJRZ16Iq/jrp+pjiYOc0jTjHlfmxQmZk9x/+5uhRP6/eWQSTAPVJ33BMo6oK5O5N4644OgTAbzXzorecg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1626,8 +1629,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.3.0: - resolution: {integrity: sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==} + /@next/swc-linux-x64-gnu@13.3.1: + resolution: {integrity: sha512-6mgkLmwlyWlomQmpl21I3hxgqE5INoW4owTlcLpNsd1V4wP+J46BlI/5zV5KWWbzjfncIqzXoeGs5Eg+1GHODA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1635,8 +1638,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.3.0: - resolution: {integrity: sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==} + /@next/swc-linux-x64-musl@13.3.1: + resolution: {integrity: sha512-uqm5sielhQmKJM+qayIhgZv1KlS5pqTdQ99b+Z7hMWryXS96qE0DftTmMZowBcUL6x7s2vSXyH5wPtO1ON7LBg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1644,8 +1647,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.3.0: - resolution: {integrity: sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==} + /@next/swc-win32-arm64-msvc@13.3.1: + resolution: {integrity: sha512-WomIiTj/v3LevltlibNQKmvrOymNRYL+a0dp5R73IwPWN5FvXWwSELN/kiNALig/+T3luc4qHNTyvMCp9L6U5Q==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1653,8 +1656,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.3.0: - resolution: {integrity: sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==} + /@next/swc-win32-ia32-msvc@13.3.1: + resolution: {integrity: sha512-M+PoH+0+q658wRUbs285RIaSTYnGBSTdweH/0CdzDgA6Q4rBM0sQs4DHmO3BPP0ltCO/vViIoyG7ks66XmCA5g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1662,8 +1665,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.3.0: - resolution: {integrity: sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==} + /@next/swc-win32-x64-msvc@13.3.1: + resolution: {integrity: sha512-Sl1F4Vp5Z1rNXWZYqJwMuWRRol4bqOB6+/d7KqkgQ4AcafKPN1PZmpkCoxv4UFHtFNIB7EotnuIhtXu3zScicQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1713,7 +1716,7 @@ packages: '@babel/runtime': 7.21.0 dev: false - /@radix-ui/react-alert-dialog@1.0.3(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-alert-dialog@1.0.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-QXFy7+bhGi0u+paF2QbJeSCHZs4gLMJIPm6sajUamyW0fro6g1CaSGc5zmc4QmK2NlSGUrq8m+UsUqJYtzvXow==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -1723,7 +1726,7 @@ packages: '@radix-ui/primitive': 1.0.0 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-context': 1.0.0(react@18.2.0) - '@radix-ui/react-dialog': 1.0.3(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.1(react@18.2.0) react: 18.2.0 @@ -1777,7 +1780,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.3(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-owNhq36kNPqC2/a+zJRioPg6HHnTn5B/sh/NjTY8r4W9g1L5VJlrzZIVcBr7R9Mg8iLjVmh6MGgMlfoVf/WO/A==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -1799,7 +1802,7 @@ packages: aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.37)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -1862,14 +1865,14 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-popper@1.1.1(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-keYDcdMPNMjSC8zTsZ8wezUMiWM9Yj14wtF3s0PTIs9srnEPC9Kt2Gny1T3T81mmSeyDjZxsD9N5WCwNNb712w==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 - '@floating-ui/react-dom': 0.7.2(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-dom': 0.7.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-arrow': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-context': 1.0.0(react@18.2.0) @@ -1922,7 +1925,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-select@1.2.1(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GULRMITaOHNj79BZvQs3iZO0+f2IgI8g5HDhMi7Bnc13t7IlG86NFtOCfTLme4PNZdEtU+no+oGgcl6IFiphpQ==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -1939,7 +1942,7 @@ packages: '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) '@radix-ui/react-focus-scope': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.0(react@18.2.0) - '@radix-ui/react-popper': 1.1.1(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-portal': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.1(react@18.2.0) @@ -1951,7 +1954,7 @@ packages: aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.37)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -2088,25 +2091,25 @@ packages: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@sentry-internal/tracing@7.48.0: - resolution: {integrity: sha512-MFAPDTrvCtfSm0/Zbmx7HA0Q5uCfRadOUpN8Y8rP1ndz+329h2kA3mZRCuC+3/aXL11zs2CHUhcAkGjwH2vogg==} + /@sentry-internal/tracing@7.49.0: + resolution: {integrity: sha512-ESh3+ZneQk/3HESTUmIPNrW5GVPu/HrRJU+eAJJto74vm+6vP7zDn2YV2gJ1w18O/37nc7W/bVCgZJlhZ3cwew==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.48.0 - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/core': 7.49.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 tslib: 1.14.1 dev: false - /@sentry/browser@7.48.0: - resolution: {integrity: sha512-tdx/2nhuiykncmXFlV4Dpp+Hxgt/v31LiyXE79IcM560wc+QmWKtzoW9azBWQ0xt5KOO3ERMib9qPE4/ql1/EQ==} + /@sentry/browser@7.49.0: + resolution: {integrity: sha512-x2DekKkQoY7/dhBzE4J25mdQ978NtPBTVQb+uZqlF/t5mp4K44TAszmPqy8lC/CmVHkp7qcpRGSCIzeboUL4KA==} engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.48.0 - '@sentry/core': 7.48.0 - '@sentry/replay': 7.48.0 - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry-internal/tracing': 7.49.0 + '@sentry/core': 7.49.0 + '@sentry/replay': 7.49.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 tslib: 1.14.1 dev: false @@ -2127,27 +2130,27 @@ packages: - supports-color dev: false - /@sentry/core@7.48.0: - resolution: {integrity: sha512-8FYuJTMpyuxRZvlen3gQ3rpOtVInSDmSyXqWEhCLuG/w34AtWoTiW7G516rsAAh6Hy1TP91GooMWbonP3XQNTQ==} + /@sentry/core@7.49.0: + resolution: {integrity: sha512-AlSnCYgfEbvK8pkNluUkmdW/cD9UpvOVCa+ERQswXNRkAv5aDGCL6Ihv6fnIajE++BYuwZh0+HwZUBVKTFzoZg==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 tslib: 1.14.1 dev: false - /@sentry/integrations@7.48.0: - resolution: {integrity: sha512-yzbJopVu1UHFXRDv236o5hSEUtqeP45T9uSVbAhKnH5meKWunK7MKvhFvQjhcfvlUVibYrewoVztQP2hrpxgfw==} + /@sentry/integrations@7.49.0: + resolution: {integrity: sha512-qsEVkcZjw+toFGnzsVo+Cozz+hMK9LugzkfJyOFL+CyiEx9MfkEmsvRpZe1ETEWKe/VZylYU27NQzl6UNuAUjw==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 localforage: 1.10.0 tslib: 1.14.1 dev: false - /@sentry/nextjs@7.48.0(next@13.3.0)(react@18.2.0): - resolution: {integrity: sha512-SLWkd1ZB27uK21QkUiIBEUgvhaMFMx8V5MO2+IlGluJKUdd06IgYAOsS0kjwQc34Ow6D0qowy8iScmtHebgQew==} + /@sentry/nextjs@7.49.0(next@13.3.1)(react@18.2.0): + resolution: {integrity: sha512-MXcaIe1qgSDlRYIlq4XzjFNIBNmSRb4MnaQg7JKmoSzEh+AXvnRDNG5gYhsKJBKdBZGRsKyevNrbb9Yh9YpsNg==} engines: {node: '>=8'} peerDependencies: next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 @@ -2158,15 +2161,15 @@ packages: optional: true dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) - '@sentry/core': 7.48.0 - '@sentry/integrations': 7.48.0 - '@sentry/node': 7.48.0 - '@sentry/react': 7.48.0(react@18.2.0) - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/core': 7.49.0 + '@sentry/integrations': 7.49.0 + '@sentry/node': 7.49.0 + '@sentry/react': 7.49.0(react@18.2.0) + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 '@sentry/webpack-plugin': 1.20.0 chalk: 3.0.0 - next: 13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) + next: 13.3.1(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 rollup: 2.78.0 stacktrace-parser: 0.1.10 @@ -2176,14 +2179,14 @@ packages: - supports-color dev: false - /@sentry/node@7.48.0: - resolution: {integrity: sha512-DJyyZaVhv/pUzJPof7es6zYDHeWbNqE0T3tQfLCkShdyfR+Ew8In8W/x2s7S8vq0cfRq0rqv1E6B2/HpVdYO7g==} + /@sentry/node@7.49.0: + resolution: {integrity: sha512-KLIrqcbKk4yR3g8fjl87Eyv4M9j4YI6b7sqVAZYj3FrX3mC6JQyGdlDfUpSKy604n1iAdr6OuUp5f9x7jPJaeQ==} engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.48.0 - '@sentry/core': 7.48.0 - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry-internal/tracing': 7.49.0 + '@sentry/core': 7.49.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 cookie: 0.4.2 https-proxy-agent: 5.0.1 lru_map: 0.3.3 @@ -2192,39 +2195,39 @@ packages: - supports-color dev: false - /@sentry/react@7.48.0(react@18.2.0): - resolution: {integrity: sha512-E2HF0njufOI/BWktXfIiPNIh0dh7la9uQmDlYiFAK8MnlW4OOjw4rRJV2qkxKQCYdO9WB+T460DVw102Z/MyUA==} + /@sentry/react@7.49.0(react@18.2.0): + resolution: {integrity: sha512-s+ROJr1tP9zVBmoOn94JM+fu2TuoJKxkSXTEUOKoQ9P6P5ROzpDqTzHRGk6u4OjZTy5tftRyEqBGM2Iaf9Y+UA==} engines: {node: '>=8'} peerDependencies: react: 15.x || 16.x || 17.x || 18.x dependencies: - '@sentry/browser': 7.48.0 - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/browser': 7.49.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 tslib: 1.14.1 dev: false - /@sentry/replay@7.48.0: - resolution: {integrity: sha512-8fRHMGJ0NJeIZi6UucxUTvfDPaBa7+jU1kCTLjCcuH3X/UVz5PtGLMtFSO5U8HP+mUDlPs97MP1uoDvMa4S2Ng==} + /@sentry/replay@7.49.0: + resolution: {integrity: sha512-UY3bHoBDPOu4Dpq3m3oxNjLrq09NiFVYUfrTN4QOq1Am2SA04XbuCj/YZ+jNVy/NrFtoz9cTovK6oQbNw53jog==} engines: {node: '>=12'} dependencies: - '@sentry/core': 7.48.0 - '@sentry/types': 7.48.0 - '@sentry/utils': 7.48.0 + '@sentry/core': 7.49.0 + '@sentry/types': 7.49.0 + '@sentry/utils': 7.49.0 dev: false - /@sentry/types@7.48.0: - resolution: {integrity: sha512-kkAszZwQ5/v4n7Yyw/DPNRWx7h724mVNRGZIJa9ggUMvTgMe7UKCZZ5wfQmYiKVlGbwd9pxXAcP8Oq15EbByFQ==} + /@sentry/types@7.49.0: + resolution: {integrity: sha512-9yXXh7iv76+O6h2ONUVx0wsL1auqJFWez62mTjWk4350SgMmWp/zUkBxnVXhmcYqscz/CepC+Loz9vITLXtgxg==} engines: {node: '>=8'} dev: false - /@sentry/utils@7.48.0: - resolution: {integrity: sha512-d977sghkFVMfld0LrEyyY2gYrfayLPdDEpUDT+hg5y79r7zZDCFyHtdB86699E5K89MwDZahW7Erk+a1nk4x5w==} + /@sentry/utils@7.49.0: + resolution: {integrity: sha512-JdC9yGnOgev4ISJVwmIoFsk8Zx0psDZJAj2DV7x4wMZsO6QK+YjC7G3mUED/S5D5lsrkBZ/3uvQQhr8DQI4UcQ==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.48.0 + '@sentry/types': 7.49.0 tslib: 1.14.1 dev: false @@ -2388,8 +2391,8 @@ packages: - supports-color dev: false - /@swc/helpers@0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + /@swc/helpers@0.5.0: + resolution: {integrity: sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==} dependencies: tslib: 2.5.0 dev: false @@ -2403,7 +2406,7 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.3.1(postcss@8.4.22) + tailwindcss: 3.3.1(postcss@8.4.23) dev: true /@tootallnate/once@2.0.0: @@ -2435,7 +2438,7 @@ packages: /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 hoist-non-react-statics: 3.3.2 dev: false @@ -2469,8 +2472,8 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} dev: false /@types/parse-json@4.0.0: @@ -2487,17 +2490,17 @@ packages: /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 dev: false /@types/react-syntax-highlighter@15.5.6: resolution: {integrity: sha512-i7wFuLbIAFlabTeD2I1cLjEOrG/xdMa/rpx2zwzAoGHuXJDhSqp9BSfDlMHSh9JSuNfxHk9eEmMX6D55GiyjGg==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 dev: true - /@types/react@18.0.37: - resolution: {integrity: sha512-4yaZZtkRN3ZIQD3KSEwkfcik8s0SWV+82dlJot1AbGYHCzJkWP3ENBY6wYeDRmKZ6HkrgoGAmR2HqdwYGp6OEw==} + /@types/react@18.0.38: + resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -2518,7 +2521,7 @@ packages: resolution: {integrity: sha512-ki0OmbjSdAEfvmy5AYWFpMkRsPW+6h4ibQ4tzk8SJsS9dkrrD3B/U1eVvdNNWxAzntjq6o2sjSia6UBCoPH+Yg==} dev: false - /@typescript-eslint/parser@5.58.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/parser@5.58.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2532,7 +2535,7 @@ packages: '@typescript-eslint/types': 5.58.0 '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) debug: 4.3.4 - eslint: 8.38.0 + eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -2775,7 +2778,7 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /autoprefixer@10.4.14(postcss@8.4.22): + /autoprefixer@10.4.14(postcss@8.4.23): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -2787,7 +2790,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.22 + postcss: 8.4.23 postcss-value-parser: 4.2.0 dev: false @@ -3483,8 +3486,8 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-next@13.3.0(eslint@8.38.0)(typescript@5.0.4): - resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} + /eslint-config-next@13.3.1(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-DieA5djybeE3Q0IqnDXihmhgRSp44x1ywWBBpVRA9pSx+m5Icj8hFclx7ffXlAvb9MMLN6cgj/hqJ4lka/QmvA==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -3492,16 +3495,16 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 13.3.0 + '@next/eslint-plugin-next': 13.3.1 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) - eslint: 8.38.0 + '@typescript-eslint/parser': 5.58.0(eslint@8.39.0)(typescript@5.0.4) + eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.38.0) - eslint-plugin-react: 7.32.2(eslint@8.38.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.38.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) + eslint-plugin-react: 7.32.2(eslint@8.39.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -3518,7 +3521,7 @@ packages: - supports-color dev: false - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3527,9 +3530,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.12.0 - eslint: 8.38.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint: 8.39.0 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) get-tsconfig: 4.5.0 globby: 13.1.4 is-core-module: 2.12.0 @@ -3542,7 +3545,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -3563,16 +3566,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.58.0(eslint@8.39.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.38.0 + eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0) transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -3582,15 +3585,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.58.0(eslint@8.39.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.38.0 + eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -3605,7 +3608,7 @@ packages: - supports-color dev: false - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.38.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.39.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -3620,7 +3623,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.38.0 + eslint: 8.39.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -3630,16 +3633,16 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.38.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.39.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.38.0 + eslint: 8.39.0 dev: false - /eslint-plugin-react@7.32.2(eslint@8.38.0): + /eslint-plugin-react@7.32.2(eslint@8.39.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -3649,7 +3652,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.38.0 + eslint: 8.39.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -3663,8 +3666,8 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -3676,15 +3679,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint@8.38.0: - resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} + /eslint@8.39.0: + resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@eslint-community/regexpp': 4.5.0 '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.38.0 + '@eslint/js': 8.39.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3694,7 +3697,7 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 + eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 espree: 9.5.1 esquery: 1.5.0 @@ -4203,8 +4206,8 @@ packages: resolution: {integrity: sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==} dev: false - /i18next@22.4.14: - resolution: {integrity: sha512-VtLPtbdwGn0+DAeE00YkiKKXadkwg+rBUV+0v8v0ikEjwdiJ0gmYChVE4GIa9HXymY6wKapkL93vGT7xpq6aTw==} + /i18next@22.4.15: + resolution: {integrity: sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==} dependencies: '@babel/runtime': 7.21.0 dev: false @@ -5239,7 +5242,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false - /next-i18next@13.2.2(i18next@22.4.14)(next@13.3.0)(react-i18next@12.2.0)(react@18.2.0): + /next-i18next@13.2.2(i18next@22.4.15)(next@13.3.1)(react-i18next@12.2.0)(react@18.2.0): resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} engines: {node: '>=14'} peerDependencies: @@ -5252,28 +5255,28 @@ packages: '@types/hoist-non-react-statics': 3.3.1 core-js: 3.30.1 hoist-non-react-statics: 3.3.2 - i18next: 22.4.14 + i18next: 22.4.15 i18next-fs-backend: 2.1.1 - next: 13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) + next: 13.3.1(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-i18next: 12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0) + react-i18next: 12.2.0(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) dev: false - /next-themes@0.2.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@13.3.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) + next: 13.3.1(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} - engines: {node: '>=14.6.0'} + /next@13.3.1(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eByWRxPzKHs2oQz1yE41LX35umhz86ZSZ+mYyXBqn2IBi2hyUqxBA88avywdr4uyH+hCJczegGsDGWbzQA5Rqw==} + engines: {node: '>=14.18.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -5292,8 +5295,8 @@ packages: sass: optional: true dependencies: - '@next/env': 13.3.0 - '@swc/helpers': 0.4.14 + '@next/env': 13.3.1 + '@swc/helpers': 0.5.0 busboy: 1.6.0 caniuse-lite: 1.0.30001478 postcss: 8.4.14 @@ -5301,15 +5304,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.21.4)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 13.3.0 - '@next/swc-darwin-x64': 13.3.0 - '@next/swc-linux-arm64-gnu': 13.3.0 - '@next/swc-linux-arm64-musl': 13.3.0 - '@next/swc-linux-x64-gnu': 13.3.0 - '@next/swc-linux-x64-musl': 13.3.0 - '@next/swc-win32-arm64-msvc': 13.3.0 - '@next/swc-win32-ia32-msvc': 13.3.0 - '@next/swc-win32-x64-msvc': 13.3.0 + '@next/swc-darwin-arm64': 13.3.1 + '@next/swc-darwin-x64': 13.3.1 + '@next/swc-linux-arm64-gnu': 13.3.1 + '@next/swc-linux-arm64-musl': 13.3.1 + '@next/swc-linux-x64-gnu': 13.3.1 + '@next/swc-linux-x64-musl': 13.3.1 + '@next/swc-win32-arm64-msvc': 13.3.1 + '@next/swc-win32-ia32-msvc': 13.3.1 + '@next/swc-win32-x64-msvc': 13.3.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -5540,27 +5543,27 @@ packages: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - /postcss-import@14.1.0(postcss@8.4.22): + /postcss-import@14.1.0(postcss@8.4.23): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.22 + postcss: 8.4.23 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 - /postcss-js@4.0.1(postcss@8.4.22): + /postcss-js@4.0.1(postcss@8.4.23): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.22 + postcss: 8.4.23 - /postcss-load-config@3.1.4(postcss@8.4.22): + /postcss-load-config@3.1.4(postcss@8.4.23): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5573,16 +5576,16 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.22 + postcss: 8.4.23 yaml: 1.10.2 - /postcss-nested@6.0.0(postcss@8.4.22): + /postcss-nested@6.0.0(postcss@8.4.23): resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.22 + postcss: 8.4.23 postcss-selector-parser: 6.0.11 /postcss-selector-parser@6.0.10: @@ -5612,8 +5615,8 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.22: - resolution: {integrity: sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==} + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -5718,7 +5721,7 @@ packages: - csstype dev: false - /react-i18next@12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0): + /react-i18next@12.2.0(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -5733,7 +5736,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 html-parse-stringify: 3.0.1 - i18next: 22.4.14 + i18next: 22.4.15 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -5754,7 +5757,7 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: false - /react-markdown@8.0.7(@types/react@18.0.37)(react@18.2.0): + /react-markdown@8.0.7(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} peerDependencies: '@types/react': '>=16' @@ -5762,7 +5765,7 @@ packages: dependencies: '@types/hast': 2.3.4 '@types/prop-types': 15.7.5 - '@types/react': 18.0.37 + '@types/react': 18.0.38 '@types/unist': 2.0.6 comma-separated-tokens: 2.0.3 hast-util-whitespace: 2.0.1 @@ -5781,7 +5784,7 @@ packages: - supports-color dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.0.37)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -5791,13 +5794,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.0.37)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.0.38)(react@18.2.0) tslib: 2.5.0 dev: false - /react-remove-scroll@2.5.5(@types/react@18.0.37)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -5807,16 +5810,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.0.37)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.0.37)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.0.38)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.0.38)(react@18.2.0) tslib: 2.5.0 - use-callback-ref: 1.3.0(@types/react@18.0.37)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.0.37)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.0.38)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.0.38)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.0.37)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -5826,7 +5829,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -6308,7 +6311,11 @@ packages: tslib: 2.5.0 dev: false - /tailwindcss@3.3.1(postcss@8.4.22): + /tailwind-merge@1.12.0: + resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} + dev: false + + /tailwindcss@3.3.1(postcss@8.4.23): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} hasBin: true @@ -6329,11 +6336,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.22 - postcss-import: 14.1.0(postcss@8.4.22) - postcss-js: 4.0.1(postcss@8.4.22) - postcss-load-config: 3.1.4(postcss@8.4.22) - postcss-nested: 6.0.0(postcss@8.4.22) + postcss: 8.4.23 + postcss-import: 14.1.0(postcss@8.4.23) + postcss-js: 4.0.1(postcss@8.4.23) + postcss-load-config: 3.1.4(postcss@8.4.23) + postcss-nested: 6.0.0(postcss@8.4.23) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -6594,7 +6601,7 @@ packages: requires-port: 1.0.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.0.37)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -6604,12 +6611,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 react: 18.2.0 tslib: 2.5.0 dev: false - /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.37)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -6618,11 +6625,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 react: 18.2.0 dev: false - /use-sidecar@1.1.2(@types/react@18.0.37)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -6632,7 +6639,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.5.0 diff --git a/tailwind.config.js b/tailwind.config.js index 7d09a64..6e41f4c 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -40,7 +40,7 @@ module.exports = { "magic-size": "200% 100%", }, backgroundPosition: { - "magic-position": "100% 0", + "magic-position": "50% 0", }, backgroundImage: { "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", @@ -77,20 +77,20 @@ module.exports = { "100%": { opacity: 0, transform: "translate3d(0,2rem,0)" }, }, showLeft: { - "0%": { transform: "translate3d(-100%,0,0)" }, - "100%": { transform: "translateZ(0)" }, + "0%": { transform: "translate3d(-100%,0,0)", opacity: 0.8 }, + "100%": { transform: "translateZ(0)", opacity: 1 }, }, hideLeft: { - "0%": { transform: "translateZ(0)" }, - "100%": { transform: "translate3d(-100%,0,0)" }, + "0%": { transform: "translateZ(0)", opacity: 1 }, + "100%": { transform: "translate3d(-100%,0,0)", opacity: 0.8 }, }, }, animation: { fadeIn: "fadeIn 0.2s ease-in-out", fadeOut: "fadeOut 0.2s ease-in-out", fadeUp: "fadeUp 0.2s cubic-bezier(.08,.82,.17,1)", - showLeft: "showLeft 0.2s ease-in-out", - hideLeft: "hideLeft 0.2s ease-in-out", + showLeft: "showLeft 0.3s ease-in-out", + hideLeft: "hideLeft 0.3s ease-in-out", }, }, },