diff --git a/.storybook/main.ts b/.storybook/main.ts
index 61fd3aa2..ed01c96e 100644
--- a/.storybook/main.ts
+++ b/.storybook/main.ts
@@ -15,6 +15,11 @@ const config: StorybookConfig = {
docs: {
autodocs: 'tag',
},
+ refs: {
+ '@chakra-ui/react': {
+ disable: true,
+ },
+ },
webpackFinal: async config => {
const imageRule = config.module?.rules?.find(rule => {
const test = (rule as { test: RegExp }).test;
diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx
index 1ee64805..8542c386 100644
--- a/.storybook/preview.tsx
+++ b/.storybook/preview.tsx
@@ -4,6 +4,7 @@ import { initialize, mswLoader } from 'msw-storybook-addon';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import type { Preview } from '@storybook/react';
+import Layout from '../src/v1/layout/Layout';
import ToastProvider from '../src/v1/base/Toast/ToastProvider';
import '@/styles/global.css';
diff --git a/package.json b/package.json
index afe1915e..7ad013b0 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,10 @@
},
"dependencies": {
"@actions/core": "^1.10.1",
+ "@chakra-ui/icons": "^2.0.17",
+ "@chakra-ui/react": "^2.4.9",
+ "@emotion/react": "^11.10.5",
+ "@emotion/styled": "^11.10.5",
"@headlessui/react": "^1.7.15",
"@tanstack/react-query": "^4.24.4",
"@tanstack/react-query-devtools": "^4.24.12",
@@ -26,12 +30,14 @@
"@types/react-dom": "18.0.10",
"axios": "^1.3.4",
"colorthief": "^2.4.0",
+ "framer-motion": "^9.0.2",
"next": "13.4.7",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-error-boundary": "^3.1.4",
"react-hook-form": "^7.43.2",
- "react-intersection-observer": "^9.4.3"
+ "react-intersection-observer": "^9.4.3",
+ "recoil": "^0.7.7"
},
"devDependencies": {
"@babel/core": "^7.22.8",
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 384b699f..ce432f46 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -49,6 +49,7 @@ export const metadata: Metadata = {
const RootLayout = ({ children }: { children: React.ReactNode }) => {
return (
+ {/* @todo Chakra 제거시 app-layout 프로퍼티 제거. */}
diff --git a/src/components/ChakraThemeProvider.tsx b/src/components/ChakraThemeProvider.tsx
new file mode 100644
index 00000000..f6455931
--- /dev/null
+++ b/src/components/ChakraThemeProvider.tsx
@@ -0,0 +1,13 @@
+import theme from '@/styles/theme';
+import { ChakraProvider } from '@chakra-ui/react';
+import { NextPage } from 'next/types';
+
+interface PropTypes {
+ children: React.ReactNode;
+}
+
+const ChakraThemeProvider: NextPage = ({ children }) => {
+ return {children};
+};
+
+export default ChakraThemeProvider;
diff --git a/src/components/ContextProvider.tsx b/src/components/ContextProvider.tsx
index 2527082b..749d52f1 100644
--- a/src/components/ContextProvider.tsx
+++ b/src/components/ContextProvider.tsx
@@ -1,8 +1,10 @@
'use client';
import { ReactNode } from 'react';
+import { RecoilRoot } from 'recoil';
import PWAServiceWorkerProvider from '@/components/PWAServiceWorkerProvider';
+import ChakraThemeProvider from '@/components/ChakraThemeProvider';
import ReactQueryProvider from '@/components/ReactQueryProvider';
import ToastProvider from '@/v1/base/Toast/ToastProvider';
@@ -10,9 +12,13 @@ import ToastProvider from '@/v1/base/Toast/ToastProvider';
const ContextProvider = ({ children }: { children: ReactNode }) => {
return (
-
- {children}
-
+
+
+
+ {children}
+
+
+
);
};
diff --git a/src/styles/global.css b/src/styles/global.css
index 6b1607b4..9e3cd4b6 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -21,14 +21,6 @@
html {
@apply w-full bg-background font-[LineSeedKR] text-[62.5%] text-black-700;
-webkit-tap-highlight-color: #ffffff50;
-
- /** from charka */
- -webkit-text-size-adjust: 100%;
- font-family: system-ui, sans-serif;
- -webkit-font-smoothing: antialiased;
- text-rendering: optimizeLegibility;
- -moz-osx-font-smoothing: grayscale;
- touch-action: manipulation;
}
body {
@@ -36,9 +28,9 @@
}
.app-layout {
+ /* TODO: Chakra UI 걷어내면 제거 */
max-width: 43rem;
margin: 0 auto;
- @apply bg-white;
}
.sticky {
diff --git a/src/styles/theme.tsx b/src/styles/theme.tsx
new file mode 100644
index 00000000..1dd5222d
--- /dev/null
+++ b/src/styles/theme.tsx
@@ -0,0 +1,115 @@
+import {
+ ChakraStyledOptions,
+ extendTheme,
+ ThemeOverride,
+} from '@chakra-ui/react';
+
+const fontSizes = {
+ xs: '1.2rem',
+ sm: '1.4rem',
+ md: '1.6rem',
+ lg: '1.8rem',
+ xl: '2rem',
+ '2xl': '2.2rem',
+} as const;
+
+const buttonSizes = {
+ md: {
+ padding: '1.3rem 1rem',
+ height: '3.5rem',
+ },
+ lg: {
+ padding: '2.5rem 1.8rem',
+ height: '4.5rem',
+ },
+} as const;
+
+const colors = {
+ main: '#F6AD55', // Main Theme
+ red: {
+ 800: '#F56565', // button (NoticeTheme)
+ 900: '#FF0000', // validation (NoticeTheme)
+ },
+ yellow: {
+ 200: '#FFD4802E',
+ 900: '#FFA436',
+ },
+ black: {
+ 400: '#C1C0C0', // subHeader (Slider)
+ 500: '#AFAFAF', // placeHolder (BookSearch)
+ 600: '#ACACAC', // placeHolder (MeetingEdit)
+ 700: '#727272', // subHeader (MeetingDetail)
+ 800: '#3D3D3D', // meetingPeriod (MeetingDetail)
+ 900: '#000000', // black
+ },
+ white: {
+ 400: '#CFCFCF', // placeHolder (MyPage)
+ 500: '#D9D9D9', // addBook (MeetingCreate)
+ 600: '#E3E3E3', // bookBorder (Bookaive)
+ 700: '#E2E8F0', // inputBorder (Common)
+ 800: '#FAFAFA', // backGround
+ 900: '#FFFFFF', // white
+ },
+ kakao: {
+ brown: '#191600',
+ yellow: '#fee102',
+ },
+} as const;
+
+interface SchemeTypings {
+ component: 'button';
+ colorScheme: 'orange' | 'kakao' | 'orange-fill' | 'grey' | 'grey-fill';
+ cssProps: ChakraStyledOptions;
+}
+
+const scheme: Record<
+ SchemeTypings['component'],
+ Record>
+> = {
+ button: {
+ orange: {
+ color: colors.main,
+ border: `${colors.main} 0.1rem solid`,
+ },
+ 'orange-fill': {
+ color: colors.white[900],
+ backgroundColor: colors.main,
+ _hover: {
+ opacity: 0.8,
+ },
+ },
+ grey: {
+ color: colors.black[900],
+ border: `${colors.white[400]} 0.1rem solid`,
+ backgroundColor: colors.white[900],
+ _hover: {
+ color: colors.black['800'],
+ backgroundColor: colors.white[400],
+ },
+ },
+ 'grey-fill': {
+ color: colors.black[600],
+ backgroundColor: colors.white[400],
+ },
+ kakao: {
+ color: colors.kakao.brown,
+ backgroundColor: colors.kakao.yellow,
+ },
+ },
+};
+
+const shadows = {
+ default: '0px 0px 7px -5px #000000', // BoxShadow (MeetingList Box)
+};
+
+const theme: ThemeOverride = extendTheme({
+ fontSizes,
+ buttonSizes,
+ colors,
+ scheme,
+ shadows,
+});
+
+export default theme;
+
+export type ChakraTheme = typeof theme;
diff --git a/src/ui/BookDetail/BookInfo.tsx b/src/ui/BookDetail/BookInfo.tsx
new file mode 100644
index 00000000..0bf9530c
--- /dev/null
+++ b/src/ui/BookDetail/BookInfo.tsx
@@ -0,0 +1,148 @@
+import {
+ Avatar,
+ AvatarGroup,
+ Box,
+ Flex,
+ Text,
+ useDisclosure,
+ useTheme,
+ VStack,
+} from '@chakra-ui/react';
+import Image from 'next/image';
+
+import IconButton from '@/ui/common/IconButton';
+
+import type { APIBookDetail, APIBookmarkedUserList } from '@/types/book';
+import Link from 'next/link';
+
+import { checkAuthentication } from '@/utils/helpers';
+import { useState } from 'react';
+import LoginBottomSheet from '../LoginBottomSheet';
+
+type Props = Pick<
+ APIBookDetail,
+ 'title' | 'author' | 'contents' | 'imageUrl' | 'url'
+> &
+ Omit & {
+ onBookmarkClick: (isBookMarked: boolean) => void;
+ };
+
+const BookInfo = ({
+ title,
+ author,
+ contents,
+ imageUrl,
+ url: contentsUrl,
+ onBookmarkClick,
+ ...bookmarkInfo
+}: Props) => {
+ const isAuthenticated = checkAuthentication();
+ const theme = useTheme();
+ const [bookmark, setBookmark] = useState(bookmarkInfo.isInMyBookshelf);
+
+ const {
+ isOpen: isLoginBottomSheetOpen,
+ onOpen: onLoginBottomSheetOpen,
+ onClose: onLoginBottomSheetsClose,
+ } = useDisclosure();
+
+ const handleBookmarkClick = () => {
+ if (!isAuthenticated) {
+ onLoginBottomSheetOpen();
+ return;
+ }
+
+ setBookmark(prev => {
+ const next = !prev;
+ onBookmarkClick(next);
+ return next;
+ });
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+ {title}
+
+ {author}
+
+
+
+ {contents} ...
+ {contentsUrl && (
+
+ 더보기
+
+ )}
+
+
+ {!isAuthenticated && (
+
+ )}
+
+
+
+ {bookmarkInfo.users.map(({ userId, profileImage }) => (
+
+ ))}
+
+
+ {getUserInfoText(bookmarkInfo.totalCount, bookmarkInfo.users.length)}
+
+
+ >
+ );
+};
+
+const getUserInfoText = (totalCount: number, avatarCount: number) => {
+ const otherCount = totalCount - avatarCount;
+
+ if (otherCount === 0 && totalCount === 0) {
+ return '아직 이 책을 책장에 꽂은 사람이 없어요.';
+ } else if (otherCount === 0) {
+ return '님이 이 책을 책장에 꽂았어요.';
+ }
+
+ return `외 ${otherCount}명이 이 책을 책장에 꽂았어요.`;
+};
+
+export default BookInfo;
diff --git a/src/ui/BookDetail/CommentDrawer.tsx b/src/ui/BookDetail/CommentDrawer.tsx
new file mode 100644
index 00000000..2ef5612a
--- /dev/null
+++ b/src/ui/BookDetail/CommentDrawer.tsx
@@ -0,0 +1,77 @@
+import { RefObject } from 'react';
+import { Drawer, DrawerContent, Flex, Text, Textarea } from '@chakra-ui/react';
+
+import IconButton from '@/ui/common/IconButton';
+
+interface Props {
+ title?: string;
+ placeholder?: string;
+ defaultComment?: string;
+ isOpen: boolean;
+ onClose: () => void;
+ onComplete: () => void;
+ textareaRef?: RefObject;
+}
+
+const CommentDrawer = ({
+ title,
+ placeholder,
+ defaultComment,
+ isOpen,
+ onClose,
+ onComplete,
+ textareaRef,
+}: Props) => {
+ // TODO : ref로 textarea 포커싱
+ return (
+
+ {isOpen && (
+
+
+
+
+ {title}
+
+
+ 완료
+
+
+
+
+ )}
+
+ );
+};
+
+export default CommentDrawer;
diff --git a/src/ui/BookDetail/index.tsx b/src/ui/BookDetail/index.tsx
new file mode 100644
index 00000000..8f1eb6a8
--- /dev/null
+++ b/src/ui/BookDetail/index.tsx
@@ -0,0 +1 @@
+export { default as BookInfo } from './BookInfo';
diff --git a/src/ui/BookSearch/RecentSearches.tsx b/src/ui/BookSearch/RecentSearches.tsx
new file mode 100644
index 00000000..fb01fe89
--- /dev/null
+++ b/src/ui/BookSearch/RecentSearches.tsx
@@ -0,0 +1,49 @@
+import { Flex, Text, VStack } from '@chakra-ui/react';
+
+interface searchedWordsProps {
+ keyword: string;
+ modifiedAt: string;
+}
+interface RecentSearchesProps {
+ searchedWords?: searchedWordsProps[];
+ setKeyword: (searchedWord: string) => void;
+}
+
+const RecentSearches = ({ searchedWords, setKeyword }: RecentSearchesProps) => {
+ return (
+
+
+ 최근 검색어
+
+ {searchedWords ? (
+
+ {searchedWords.map(({ keyword, modifiedAt }) => {
+ return (
+ {
+ setKeyword(keyword);
+ }}
+ cursor="pointer"
+ >
+ {keyword}
+
+ );
+ })}
+
+ ) : (
+
+ 검색 기록이 없어요.
+
+ )}
+
+ );
+};
+
+export default RecentSearches;
diff --git a/src/ui/BookSearch/SearchedBook.tsx b/src/ui/BookSearch/SearchedBook.tsx
new file mode 100644
index 00000000..b94906f6
--- /dev/null
+++ b/src/ui/BookSearch/SearchedBook.tsx
@@ -0,0 +1,67 @@
+import bookAPI from '@/apis/book';
+import { APISearchedBook, APIBook } from '@/types/book';
+import { Center, Image, Text, VStack } from '@chakra-ui/react';
+
+import LogoSmallIcon from '@public/icons/logo.svg';
+import { useRouter } from 'next/navigation';
+
+const SearchedBook = ({
+ book,
+ onBookClick,
+}: {
+ book: APISearchedBook;
+ onBookClick?: (book: APIBook) => void;
+}) => {
+ const router = useRouter();
+
+ const handleClickBook = async (book: APISearchedBook) => {
+ try {
+ const {
+ data: { bookId },
+ } = await bookAPI.createBook({ book });
+ if (onBookClick) {
+ onBookClick({ ...book, bookId });
+ } else {
+ router.push(`/book/${bookId}`);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+ };
+
+ return (
+ handleClickBook(book)}
+ >
+ {book.imageUrl ? (
+
+ ) : (
+
+
+
+ )}
+
+ {book.title}
+
+
+ );
+};
+
+export default SearchedBook;
diff --git a/src/ui/BookSearch/index.tsx b/src/ui/BookSearch/index.tsx
new file mode 100644
index 00000000..02295e55
--- /dev/null
+++ b/src/ui/BookSearch/index.tsx
@@ -0,0 +1,126 @@
+import {
+ Box,
+ Flex,
+ Input,
+ InputGroup,
+ InputLeftElement,
+ SimpleGrid,
+ Skeleton,
+ VStack,
+} from '@chakra-ui/react';
+import { useEffect, useState } from 'react';
+import { useInView } from 'react-intersection-observer';
+
+import type { APIBook } from '@/types/book';
+import useBookSearchQuery from '@/queries/book/useBookSearchQuery';
+import useRecentSearchesQuery from '@/queries/book/useRecentSearchesQuery';
+import useDebounceValue from '@/hooks/useDebounce';
+import SearchedBook from './SearchedBook';
+import RecentSearches from './RecentSearches';
+import SearchIcon from '@public/icons/legacy/search-legacy.svg';
+import { checkAuthentication } from '@/utils/helpers';
+
+interface BookSearchProps {
+ onBookClick?: (bookId: APIBook) => void;
+}
+
+const BookSearch = ({ onBookClick }: BookSearchProps) => {
+ const isAuthenticated = checkAuthentication();
+ const [inputValue, setInputValue] = useState('');
+ const queryKeyword = useDebounceValue(inputValue, 1000);
+
+ const { ref, inView } = useInView();
+
+ const bookSearchInfo = useBookSearchQuery({
+ query: queryKeyword,
+ page: 1,
+ pageSize: 12,
+ });
+
+ const recentSearchesInfo = useRecentSearchesQuery({
+ enabled: isAuthenticated,
+ });
+
+ const searchedBooks = bookSearchInfo.isSuccess
+ ? bookSearchInfo.data.pages.flatMap(page => page.searchBookResponseList)
+ : [];
+
+ const recentSearches = recentSearchesInfo.isSuccess
+ ? recentSearchesInfo.data.bookRecentSearchResponses
+ : undefined;
+
+ const onInputChange = (event: React.ChangeEvent) => {
+ if (!event.target) return;
+ const input = event.target.value;
+ setInputValue(input.trim());
+ };
+
+ useEffect(() => {
+ if (inView && bookSearchInfo.hasNextPage) {
+ bookSearchInfo.fetchNextPage();
+ }
+ isAuthenticated && recentSearchesInfo.refetch();
+ }, [
+ bookSearchInfo.fetchNextPage,
+ inView,
+ bookSearchInfo.hasNextPage,
+ queryKeyword,
+ bookSearchInfo,
+ recentSearchesInfo,
+ isAuthenticated,
+ ]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {!inputValue && (
+
+ )}
+
+ {inputValue && (
+
+ {searchedBooks.map((book, index) => (
+
+ ))}
+
+ )}
+
+ {inputValue && bookSearchInfo.isFetching && (
+
+
+
+
+
+ )}
+
+
+
+ );
+};
+
+export default BookSearch;
diff --git a/src/ui/BottomNavigation/NavigationItem/index.tsx b/src/ui/BottomNavigation/NavigationItem/index.tsx
new file mode 100644
index 00000000..6cded842
--- /dev/null
+++ b/src/ui/BottomNavigation/NavigationItem/index.tsx
@@ -0,0 +1,52 @@
+import { Box, Flex, Text, useTheme } from '@chakra-ui/react';
+import dynamic from 'next/dynamic';
+import Link from 'next/link';
+import { MouseEvent, SVGProps, useMemo } from 'react';
+
+interface NavigationItemPorps {
+ iconName: string;
+ label: string;
+ href: string;
+ isActive: boolean;
+ onClick?: (event: MouseEvent) => void;
+}
+
+const NavigationItem = ({
+ iconName,
+ label,
+ href,
+ isActive,
+ onClick,
+}: NavigationItemPorps) => {
+ const theme = useTheme();
+ const color = isActive ? theme.colors.main : theme.colors.black['900'];
+
+ const Icon = useMemo(
+ () =>
+ dynamic>(
+ () => import(`@/../public/icons/legacy/${iconName}.svg`)
+ ),
+ [iconName]
+ );
+
+ return (
+
+
+
+
+
+
+ {label}
+
+
+
+ );
+};
+
+export default NavigationItem;
diff --git a/src/ui/BottomNavigation/index.tsx b/src/ui/BottomNavigation/index.tsx
new file mode 100644
index 00000000..09551bc4
--- /dev/null
+++ b/src/ui/BottomNavigation/index.tsx
@@ -0,0 +1,73 @@
+import { checkAuthentication } from '@/utils/helpers';
+import { Flex, useDisclosure } from '@chakra-ui/react';
+import { usePathname } from 'next/navigation';
+import { MouseEvent } from 'react';
+import LoginBottomSheet from '../LoginBottomSheet';
+import NavigationItem from './NavigationItem';
+
+const BottomNavigation = () => {
+ const isAuthenticated = checkAuthentication();
+ const { isOpen, onOpen, onClose } = useDisclosure();
+
+ const pathname = usePathname();
+
+ const navigationItems = [
+ {
+ iconName: 'bookshelf',
+ label: '북카이브',
+ href: '/bookarchive',
+ },
+ {
+ iconName: 'book',
+ label: '도서 검색',
+ href: '/book/search',
+ },
+ {
+ iconName: 'hashtag',
+ label: '독서 모임',
+ href: '/group',
+ },
+ {
+ iconName: 'user',
+ label: '내 프로필',
+ href: '/profile/me',
+ onClick: (event: MouseEvent) => {
+ if (isAuthenticated) return;
+ onOpen();
+ event.preventDefault();
+ },
+ },
+ ];
+
+ return (
+ <>
+
+ {navigationItems.map(({ iconName, label, href, onClick }) => (
+
+ ))}
+
+
+ >
+ );
+};
+
+export default BottomNavigation;
diff --git a/src/ui/FormRadio/index.tsx b/src/ui/FormRadio/index.tsx
new file mode 100644
index 00000000..1dc0af30
--- /dev/null
+++ b/src/ui/FormRadio/index.tsx
@@ -0,0 +1,71 @@
+import {
+ FormControl,
+ FormLabel,
+ RadioGroup,
+ Radio,
+ Stack,
+ Flex,
+} from '@chakra-ui/react';
+import { useFormContext } from 'react-hook-form';
+
+interface radioValues {
+ value: string;
+ text: string;
+}
+
+interface FormRadioProps {
+ label: string;
+ name: string;
+ radioValues: radioValues[];
+ value?: string;
+ onChange?: (value: string) => void;
+}
+
+const FormRadio = ({
+ label,
+ name,
+ radioValues,
+ value,
+ onChange,
+}: FormRadioProps) => {
+ const { register } = useFormContext();
+
+ return (
+
+ {label}
+
+
+
+ {radioValues.map(radioValue => {
+ const { value, text } = radioValue;
+ return (
+
+ {' '}
+ {text}
+
+ );
+ })}
+
+
+
+
+ );
+};
+
+export default FormRadio;
diff --git a/src/ui/Group/GroupComment/CommentDeleteModal.tsx b/src/ui/Group/GroupComment/CommentDeleteModal.tsx
new file mode 100644
index 00000000..3ddd76c2
--- /dev/null
+++ b/src/ui/Group/GroupComment/CommentDeleteModal.tsx
@@ -0,0 +1,108 @@
+import {
+ Box,
+ Flex,
+ Button,
+ AlertDialog,
+ AlertDialogBody,
+ AlertDialogFooter,
+ AlertDialogContent,
+ AlertDialogOverlay,
+ useDisclosure,
+} from '@chakra-ui/react';
+
+import { useTheme } from '@chakra-ui/react';
+import { MutableRefObject, useRef } from 'react';
+
+interface CommentDeleteModalProps {
+ commentId: number;
+ handleDeleteCommentBtnClick: (commentId: number) => void;
+}
+
+const CommentDeleteModal = ({
+ commentId,
+ handleDeleteCommentBtnClick,
+}: CommentDeleteModalProps) => {
+ const {
+ isOpen: isDeleteModalOpen,
+ onClose: onDeleteModalClose,
+ onOpen: onDeleteModalOpen,
+ } = useDisclosure();
+
+ const cancelRef = useRef(null);
+
+ const onDeleteCommentClick = () => {
+ handleDeleteCommentBtnClick(commentId);
+ onDeleteModalClose();
+ };
+
+ return (
+ <>
+
+ 삭제
+
+
+ >
+ );
+};
+
+export default CommentDeleteModal;
+
+const DeleteComfirmDialog = ({
+ cancelRef,
+ isOpen,
+ onClose,
+ onDelete,
+}: {
+ isOpen: boolean;
+ onClose: () => void;
+ onDelete: () => void;
+ cancelRef: MutableRefObject;
+}) => {
+ const theme = useTheme();
+
+ return (
+
+
+
+
+ 댓글을 정말 삭제할까요?
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/ui/Group/GroupComment/CommentInputBox.tsx b/src/ui/Group/GroupComment/CommentInputBox.tsx
new file mode 100644
index 00000000..720c7d06
--- /dev/null
+++ b/src/ui/Group/GroupComment/CommentInputBox.tsx
@@ -0,0 +1,73 @@
+import { Box, Flex } from '@chakra-ui/react';
+import { useRef } from 'react';
+import CommentDrawer from '@/ui/BookDetail/CommentDrawer';
+import { useDisclosure } from '@chakra-ui/react';
+interface CommentInputBoxProps {
+ isPartInUser: boolean;
+ handleCreateCommentBtnClick: (comment: string) => void;
+ userNickname?: string | null;
+ userAvatar?: string;
+}
+
+const CommentInputBox = ({
+ isPartInUser,
+ handleCreateCommentBtnClick,
+}: CommentInputBoxProps) => {
+ const {
+ isOpen: isCommentDrawer,
+ onOpen: onCommentDrawerOpen,
+ onClose: onCommentDrawerClose,
+ } = useDisclosure();
+ const commentTextAreaRef = useRef(null);
+
+ const onCompleteClick = () => {
+ const comment = commentTextAreaRef.current?.value;
+ if (comment) {
+ handleCreateCommentBtnClick(comment);
+ }
+ onCommentDrawerClose();
+ };
+
+ return (
+
+
+ 댓글 작성
+
+
+
+ {
+ if (isPartInUser) {
+ onCommentDrawerOpen();
+ }
+ }}
+ >
+ {isPartInUser
+ ? '댓글을 입력해 주세요'
+ : '모임에 참여해야 글을 작성할 수 있습니다'}
+
+
+
+
+
+ );
+};
+
+export default CommentInputBox;
diff --git a/src/ui/Group/GroupComment/CommentModifyModal.tsx b/src/ui/Group/GroupComment/CommentModifyModal.tsx
new file mode 100644
index 00000000..4507d524
--- /dev/null
+++ b/src/ui/Group/GroupComment/CommentModifyModal.tsx
@@ -0,0 +1,58 @@
+import { useRef } from 'react';
+import { useDisclosure, Box } from '@chakra-ui/react';
+
+import CommentDrawer from '@/ui/BookDetail/CommentDrawer';
+
+interface CommentModifyModalProps {
+ commentId: number;
+ comment: string;
+ handleModifyCommentBtnClick: (
+ modifiedComment: string,
+ commentId: number
+ ) => void;
+}
+
+const CommentModifyModal = ({
+ commentId,
+ comment,
+ handleModifyCommentBtnClick,
+}: CommentModifyModalProps) => {
+ const commentTextAreaRef = useRef(null);
+ const {
+ onOpen: onModifyModalOpen,
+ onClose: onModifyModalClose,
+ isOpen: isModifyModalOpen,
+ } = useDisclosure();
+
+ const onCompleteClick = () => {
+ const comment = commentTextAreaRef.current?.value;
+ if (comment) {
+ handleModifyCommentBtnClick(comment, commentId);
+ }
+ onModifyModalClose();
+ };
+
+ return (
+
+
+ 수정
+
+
+
+ );
+};
+
+export default CommentModifyModal;
diff --git a/src/ui/Group/GroupComment/GuideMessage.tsx b/src/ui/Group/GroupComment/GuideMessage.tsx
new file mode 100644
index 00000000..7ee7285d
--- /dev/null
+++ b/src/ui/Group/GroupComment/GuideMessage.tsx
@@ -0,0 +1,74 @@
+import { VStack, Text, Highlight, Link, Image, Box } from '@chakra-ui/react';
+
+import Button from '@/ui/common/Button';
+
+interface GuideMessageProps {
+ isAuthed: boolean;
+ isPublic: boolean;
+ isGroupMember: boolean;
+}
+
+const GuideMessage = ({
+ isAuthed,
+ isPublic,
+ isGroupMember,
+}: GuideMessageProps) => {
+ const kakaoUrl = `${process.env.NEXT_PUBLIC_API_URL}/oauth2/authorize/kakao?redirect_uri=${process.env.NEXT_PUBLIC_CLIENT_REDIRECT_URI}`;
+
+ return (
+
+
+ {!isAuthed && !isPublic ? (
+
+
+
+ 로그인 후 이용해 주세요
+
+
+
+
+
+
+ ) : (
+ ''
+ )}
+
+
+ {isAuthed && !isPublic && !isGroupMember ? (
+
+
+ 이 모임은 모임에 참여한 사람만
+
+
+ 글을 볼 수 있어요
+
+ ) : (
+ ''
+ )}
+
+
+ );
+};
+
+export default GuideMessage;
diff --git a/src/ui/Group/GroupHeader.tsx b/src/ui/Group/GroupHeader.tsx
new file mode 100644
index 00000000..3aa89f33
--- /dev/null
+++ b/src/ui/Group/GroupHeader.tsx
@@ -0,0 +1,58 @@
+import LoginBottomSheet from '@/ui/LoginBottomSheet';
+import { Box, Button, Flex, Text, useDisclosure } from '@chakra-ui/react';
+import Link from 'next/link';
+
+import { checkAuthentication } from '@/utils/helpers';
+import { MouseEvent } from 'react';
+
+const GroupHeader = () => {
+ const isAuthenticated = checkAuthentication();
+ const { isOpen, onOpen, onClose } = useDisclosure();
+
+ const onClick = (event: MouseEvent) => {
+ if (isAuthenticated) return;
+ onOpen();
+ event.preventDefault();
+ };
+
+ return (
+
+
+
+ Group
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default GroupHeader;
diff --git a/src/ui/Group/GroupList/GroupListItem.tsx b/src/ui/Group/GroupList/GroupListItem.tsx
new file mode 100644
index 00000000..3df7ecca
--- /dev/null
+++ b/src/ui/Group/GroupList/GroupListItem.tsx
@@ -0,0 +1,138 @@
+import { APIGroup } from '@/types/group';
+import { Avatar, Box, Flex, Image, Text } from '@chakra-ui/react';
+import Link from 'next/link';
+
+const GroupListItem = ({
+ bookGroupId,
+ title,
+ isPublic,
+ introduce,
+ hasJoinPasswd: _hasJoinPasswd,
+ startDate,
+ endDate,
+ maxMemberCount,
+ owner,
+ currentMemberCount,
+ commentCount,
+ book,
+}: APIGroup) => {
+ return (
+
+
+
+
+
+ {startDate} ~ {endDate}
+
+
+ {!isPublic ? (
+
+ ) : (
+
+ )}
+
+
+
+ {title}
+
+
+
+
+ {introduce}
+
+
+
+
+
+
+
+
+
+ {owner.nickname}
+
+
+
+
+
+
+
+ {currentMemberCount}
+ {maxMemberCount ? ` / ${maxMemberCount}` : ''}
+
+
+
+
+
+
+
+ {commentCount}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default GroupListItem;
diff --git a/src/ui/Group/GroupList/index.tsx b/src/ui/Group/GroupList/index.tsx
new file mode 100644
index 00000000..b66b5a17
--- /dev/null
+++ b/src/ui/Group/GroupList/index.tsx
@@ -0,0 +1,18 @@
+import { Box, List } from '@chakra-ui/react';
+
+import { APIGroup } from '@/types/group';
+import GroupListItem from './GroupListItem';
+
+const GroupList = ({ bookGroups }: { bookGroups: APIGroup[] }) => {
+ return (
+
+
+ {bookGroups.map(bookGroup => (
+
+ ))}
+
+
+ );
+};
+
+export default GroupList;
diff --git a/src/ui/Group/GroupSearch.tsx b/src/ui/Group/GroupSearch.tsx
new file mode 100644
index 00000000..628693d4
--- /dev/null
+++ b/src/ui/Group/GroupSearch.tsx
@@ -0,0 +1,83 @@
+import { SearchIcon } from '@chakra-ui/icons';
+import {
+ Input,
+ Select,
+ Flex,
+ InputRightElement,
+ IconButton,
+ InputGroup,
+} from '@chakra-ui/react';
+
+interface SearchValue {
+ input: string;
+ select: string;
+}
+interface GroupSearchProps {
+ searchValue: SearchValue;
+ handleChange: (name: string, value: string) => void;
+ handleSumbit: () => void;
+}
+
+const GroupSearch = ({
+ searchValue,
+ handleChange,
+ handleSumbit,
+}: GroupSearchProps) => {
+ const { input, select } = searchValue;
+
+ const handleSubmit = (event: React.FormEvent) => {
+ event && event.preventDefault();
+ handleSumbit();
+ };
+
+ return (
+
+
+
+ handleChange('input', event.target.value)}
+ value={input}
+ />
+
+ }
+ type="submit"
+ size="lg"
+ />
+
+
+
+ );
+};
+
+export default GroupSearch;
diff --git a/src/ui/InteractiveBook/index.tsx b/src/ui/InteractiveBook/index.tsx
new file mode 100644
index 00000000..59ac340f
--- /dev/null
+++ b/src/ui/InteractiveBook/index.tsx
@@ -0,0 +1,86 @@
+import { APIBook } from '@/types/book';
+import { Box, Flex } from '@chakra-ui/react';
+import Image from 'next/image';
+import { useRouter } from 'next/navigation';
+import ColorThief from 'colorthief';
+
+import { useState } from 'react';
+
+interface InteractiveBookProps {
+ imageUrl: APIBook['imageUrl'];
+ bookId: APIBook['bookId'] | null;
+}
+
+const InteractiveBook = ({ imageUrl, bookId }: InteractiveBookProps) => {
+ const router = useRouter();
+ const [bookSpineColor, setBookSpineColor] = useState();
+
+ const handleOnLoadImage = (image: HTMLImageElement) => {
+ const colorThief = new ColorThief();
+ const colorHex =
+ '#' +
+ colorThief
+ .getPalette(image, 2)[0]
+ .map(x => {
+ const hex = x.toString(16);
+ return hex.length === 1 ? '0' + hex : hex;
+ })
+ .join('');
+ setBookSpineColor(colorHex);
+ };
+
+ const handleClickBook = () => {
+ if (!bookId) return;
+ router.push(`/book/${bookId}`);
+ };
+
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+export default InteractiveBook;
diff --git a/src/ui/InteractiveBookShelf/InitialBookShelfData.tsx b/src/ui/InteractiveBookShelf/InitialBookShelfData.tsx
new file mode 100644
index 00000000..43b8452c
--- /dev/null
+++ b/src/ui/InteractiveBookShelf/InitialBookShelfData.tsx
@@ -0,0 +1,47 @@
+import { Box, Flex, SimpleGrid } from '@chakra-ui/react';
+import InteractiveBook from '../InteractiveBook';
+
+const initialBookImageUrl = [
+ '/images/book-cover/book1.jpeg',
+ '/images/book-cover/book2.jpeg',
+ '/images/book-cover/book3.jpeg',
+ '/images/book-cover/book4.jpeg',
+] as const;
+
+const InitialBookShelfData = () => {
+ return (
+
+
+
+ {initialBookImageUrl.map((imageUrl, idx) => (
+
+ ))}
+
+
+ );
+};
+
+export default InitialBookShelfData;
diff --git a/src/ui/InteractiveBookShelf/index.tsx b/src/ui/InteractiveBookShelf/index.tsx
new file mode 100644
index 00000000..0e274112
--- /dev/null
+++ b/src/ui/InteractiveBookShelf/index.tsx
@@ -0,0 +1,81 @@
+import { APIBook } from '@/types/book';
+import InteractiveBook from '@/ui//InteractiveBook';
+import { checkAuthentication } from '@/utils/helpers';
+import { Box, Flex, SimpleGrid } from '@chakra-ui/react';
+import { useCallback, useEffect, useState } from 'react';
+
+const BOOKSHELF_BOOK_LIMIT = 4;
+
+const InteractiveBookShelf = ({
+ books,
+}: {
+ books: Pick[];
+}) => {
+ const isAuthenticated = checkAuthentication();
+ const [slicedBooks, setSlicedBooks] = useState<
+ Pick[][]
+ >([[]]);
+
+ const sliceBooks = useCallback(() => {
+ const response = [];
+
+ for (let i = 0; i < books.length; i += BOOKSHELF_BOOK_LIMIT) {
+ response.push(books.slice(i, i + BOOKSHELF_BOOK_LIMIT));
+ }
+
+ return response;
+ }, [books]);
+
+ useEffect(() => {
+ setSlicedBooks(sliceBooks());
+ }, [sliceBooks]);
+
+ return (
+ <>
+ {slicedBooks.map((books, idx) => (
+
+
+
+ {books.map(({ bookId, imageUrl }, index) => (
+
+ ))}
+
+
+ ))}
+ >
+ );
+};
+
+export default InteractiveBookShelf;
diff --git a/src/ui/LoginBottomSheet/CloseButton/index.tsx b/src/ui/LoginBottomSheet/CloseButton/index.tsx
new file mode 100644
index 00000000..80ccd00d
--- /dev/null
+++ b/src/ui/LoginBottomSheet/CloseButton/index.tsx
@@ -0,0 +1,23 @@
+import Image from 'next/image';
+import { Box } from '@chakra-ui/react';
+import { ComponentPropsWithoutRef } from 'react';
+
+interface Props extends ComponentPropsWithoutRef {
+ onCancel?: () => void;
+}
+
+const CloseButton = ({ width = 24, onCancel, ...props }: Props) => {
+ const height = width;
+ return (
+
+
+
+ );
+};
+
+export default CloseButton;
diff --git a/src/ui/LoginBottomSheet/index.tsx b/src/ui/LoginBottomSheet/index.tsx
new file mode 100644
index 00000000..7fb1e973
--- /dev/null
+++ b/src/ui/LoginBottomSheet/index.tsx
@@ -0,0 +1,53 @@
+import Image from 'next/image';
+import { Flex, Text, Highlight } from '@chakra-ui/react';
+
+import BottomSheet from '@/ui/common/BottomSheet';
+import Button from '@/ui/common/Button';
+import Logo from '@/ui/common/Logo';
+import Link from 'next/link';
+
+interface Props {
+ isOpen: boolean;
+ onClose: () => void;
+}
+
+const LoginBottomSheet = ({ isOpen, onClose }: Props) => {
+ const kakaoUrl = `${process.env.NEXT_PUBLIC_API_URL}/oauth2/authorize/kakao?redirect_uri=${process.env.NEXT_PUBLIC_CLIENT_REDIRECT_URI}`;
+
+ return (
+
+
+
+
+ 로그인이 필요한 서비스예요!
+
+
+ 3초만에 카카오로 로그인을 하고,
+
+
+ 다독다독의 다양한 서비스를 이용해보세요!
+
+
+
+
+
+
+
+ );
+};
+
+export default LoginBottomSheet;
diff --git a/src/ui/Recommended/RecommendedBooks.tsx b/src/ui/Recommended/RecommendedBooks.tsx
new file mode 100644
index 00000000..08512121
--- /dev/null
+++ b/src/ui/Recommended/RecommendedBooks.tsx
@@ -0,0 +1,66 @@
+import { APIBook } from '@/types/book';
+import { APIJobGroup } from '@/types/job';
+import { Flex, Highlight, HStack, Image, Text, VStack } from '@chakra-ui/react';
+import Link from 'next/link';
+
+interface RecommendedBooksTypes {
+ jobGroup: APIJobGroup['koreanName'];
+ books: APIBook[];
+}
+
+const RecommendedBooks = ({ jobGroup, books }: RecommendedBooksTypes) => {
+ return (
+
+
+
+ {`${jobGroup} 직군에서 많이 꽂은 책들이에요`}
+
+
+
+ {books.map(({ bookId, imageUrl, title }) => (
+
+
+
+ {title}
+
+
+ ))}
+
+
+ );
+};
+
+export default RecommendedBooks;
diff --git a/src/ui/Recommended/RecommendedBookshelf.tsx b/src/ui/Recommended/RecommendedBookshelf.tsx
new file mode 100644
index 00000000..f3c86613
--- /dev/null
+++ b/src/ui/Recommended/RecommendedBookshelf.tsx
@@ -0,0 +1,41 @@
+import { APIBookshelf } from '@/types/bookshelf';
+import IconButton from '@/ui/common/IconButton';
+import { LikeCount } from '@/ui/common/BookshelfLike/';
+import InteractiveBookShelf from '@/ui/InteractiveBookShelf';
+import { Flex, Text, VStack } from '@chakra-ui/react';
+import Link from 'next/link';
+
+const RecommendedBookshelf = ({
+ bookshelfId,
+ bookshelfName,
+ books,
+ likeCount,
+}: APIBookshelf) => {
+ return (
+
+
+
+ {`${bookshelfName}`}
+
+
+
+
+
+
+
+
+ );
+};
+
+export default RecommendedBookshelf;
diff --git a/src/ui/Recommended/index.tsx b/src/ui/Recommended/index.tsx
new file mode 100644
index 00000000..7380a775
--- /dev/null
+++ b/src/ui/Recommended/index.tsx
@@ -0,0 +1,2 @@
+export { default as RecommendedBooks } from './RecommendedBooks';
+export { default as RecommendedBookshelf } from './RecommendedBookshelf';
diff --git a/src/ui/UserJobInfoTag/index.tsx b/src/ui/UserJobInfoTag/index.tsx
new file mode 100644
index 00000000..ecb04dc9
--- /dev/null
+++ b/src/ui/UserJobInfoTag/index.tsx
@@ -0,0 +1,23 @@
+import { Flex } from '@chakra-ui/react';
+
+type UserTagType = {
+ tag: string;
+};
+
+const UserJobInfoTag = ({ tag }: UserTagType) => {
+ return (
+
+ {tag}
+
+ );
+};
+
+export default UserJobInfoTag;
diff --git a/src/ui/common/BookshelfLike/LikeButton.tsx b/src/ui/common/BookshelfLike/LikeButton.tsx
new file mode 100644
index 00000000..a3d3cde1
--- /dev/null
+++ b/src/ui/common/BookshelfLike/LikeButton.tsx
@@ -0,0 +1,48 @@
+import { APIBookshelfInfo } from '@/types/bookshelf';
+import IconButton from '@/ui/common/IconButton';
+import { Button, Flex, Text, useTheme } from '@chakra-ui/react';
+
+type LikeButtonTypes = {
+ handleBookshelfLikeButton: () => void;
+ isLiked: APIBookshelfInfo['isLiked'];
+ likeCount: APIBookshelfInfo['likeCount'];
+};
+
+const LikeButton = ({
+ handleBookshelfLikeButton,
+ isLiked,
+ likeCount,
+}: LikeButtonTypes) => {
+ const theme = useTheme();
+
+ return (
+
+ );
+};
+
+export default LikeButton;
diff --git a/src/ui/common/BookshelfLike/LikeCount.tsx b/src/ui/common/BookshelfLike/LikeCount.tsx
new file mode 100644
index 00000000..8b3cdc93
--- /dev/null
+++ b/src/ui/common/BookshelfLike/LikeCount.tsx
@@ -0,0 +1,37 @@
+import { APIBookshelfInfo } from '@/types/bookshelf';
+import { Flex, Text, useTheme } from '@chakra-ui/react';
+import IconButton from '@/ui/common/IconButton';
+
+type LikeCountType = {
+ likeCount: APIBookshelfInfo['likeCount'];
+};
+
+const LikeCount = ({ likeCount }: LikeCountType) => {
+ const theme = useTheme();
+
+ return (
+
+
+
+ {likeCount ? likeCount : 0}
+
+
+ );
+};
+
+export default LikeCount;
diff --git a/src/ui/common/BookshelfLike/index.tsx b/src/ui/common/BookshelfLike/index.tsx
new file mode 100644
index 00000000..3e45870c
--- /dev/null
+++ b/src/ui/common/BookshelfLike/index.tsx
@@ -0,0 +1,2 @@
+export { default as LikeButton } from './LikeButton';
+export { default as LikeCount } from './LikeCount';
diff --git a/src/ui/common/BottomSheet.tsx b/src/ui/common/BottomSheet.tsx
new file mode 100644
index 00000000..edbb608f
--- /dev/null
+++ b/src/ui/common/BottomSheet.tsx
@@ -0,0 +1,81 @@
+import { Box, Center, Flex } from '@chakra-ui/react';
+import { AnimatePresence, motion } from 'framer-motion';
+import { useEffect } from 'react';
+import IconButton from '@/ui/common/IconButton';
+import type { PropsWithChildren } from 'react';
+
+interface DrawerProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onCancel?: () => void;
+}
+
+const Drawer = ({
+ isOpen,
+ onClose,
+ onCancel,
+ children,
+}: PropsWithChildren) => {
+ const handleClickOverlay = () => {
+ onCancel && onCancel();
+ onClose();
+ };
+
+ useEffect(() => {
+ document.body.style.overflow = isOpen ? 'hidden' : 'overlay';
+ }, [isOpen]);
+
+ return (
+
+ {isOpen && (
+
+
+
+
+ {children}
+
+
+ )}
+
+ );
+};
+
+export default Drawer;
diff --git a/src/ui/common/Button/index.tsx b/src/ui/common/Button/index.tsx
new file mode 100644
index 00000000..6f3dcb25
--- /dev/null
+++ b/src/ui/common/Button/index.tsx
@@ -0,0 +1,40 @@
+import { PropsWithChildren, ComponentProps } from 'react';
+import { useTheme, Flex } from '@chakra-ui/react';
+
+import type { ChakraTheme } from '@/styles/theme';
+
+type Props = ComponentProps & {
+ size?: keyof ChakraTheme['buttonSizes'];
+ scheme?: keyof ChakraTheme['scheme']['button'];
+ fullWidth?: boolean;
+};
+
+const Button = ({
+ size = 'lg',
+ scheme = 'orange',
+ fullWidth = false,
+ children,
+ ...props
+}: PropsWithChildren) => {
+ const theme = useTheme();
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default Button;
diff --git a/src/ui/common/IconButton/index.tsx b/src/ui/common/IconButton/index.tsx
new file mode 100644
index 00000000..8b603a8b
--- /dev/null
+++ b/src/ui/common/IconButton/index.tsx
@@ -0,0 +1,58 @@
+import dynamic from 'next/dynamic';
+import { ComponentPropsWithoutRef, SVGProps } from 'react';
+import { Center } from '@chakra-ui/react';
+
+interface Props extends ComponentPropsWithoutRef {
+ name: IconNameType;
+ size?: number | string;
+ strokeWidth?: string;
+ color?: string /** hex */;
+ fill?: boolean;
+}
+
+const IconButton = ({
+ name,
+ size = '2.4rem',
+ strokeWidth = '0',
+ color = '#000',
+ fill = false,
+ ...props
+}: Props) => {
+ const Icon = dynamic>(
+ () => import(`@/../public/icons/legacy/${name}.svg`)
+ );
+
+ return (
+
+
+
+ );
+};
+
+type IconNameType =
+ | 'close-legacy'
+ | 'back'
+ | 'book'
+ | 'search-legacy'
+ | 'bookmark-legacy'
+ | 'more'
+ | 'more-circle'
+ | 'job-card'
+ | 'plus-circle'
+ | 'share'
+ | 'like';
+
+export default IconButton;
diff --git a/src/ui/common/Logo/index.tsx b/src/ui/common/Logo/index.tsx
new file mode 100644
index 00000000..ab59ca16
--- /dev/null
+++ b/src/ui/common/Logo/index.tsx
@@ -0,0 +1,16 @@
+import Image from 'next/image';
+
+const Logo = ({ width = 61 }: { width?: number }) => {
+ const height = width * (60 / 61);
+ return (
+
+ );
+};
+
+export default Logo;
diff --git a/src/ui/common/Menu/Menu.tsx b/src/ui/common/Menu/Menu.tsx
new file mode 100644
index 00000000..07f37e39
--- /dev/null
+++ b/src/ui/common/Menu/Menu.tsx
@@ -0,0 +1,26 @@
+import {
+ Menu as ChakraMenu,
+ MenuButton,
+ MenuList,
+ IconButton,
+} from '@chakra-ui/react';
+import { ReactNode } from 'react';
+
+import MoreIcon from '@public/icons/legacy/more.svg';
+
+const Menu = ({ children }: { children: ReactNode }) => {
+ return (
+
+ }
+ background="inherit"
+ border="none"
+ />
+ {children}
+
+ );
+};
+
+export default Menu;
diff --git a/src/ui/common/Menu/MenuItem.tsx b/src/ui/common/Menu/MenuItem.tsx
new file mode 100644
index 00000000..79161ddb
--- /dev/null
+++ b/src/ui/common/Menu/MenuItem.tsx
@@ -0,0 +1,20 @@
+import {
+ forwardRef,
+ MenuItem as ChakraMenuItem,
+ MenuItemProps,
+} from '@chakra-ui/react';
+import { ReactNode } from 'react';
+
+const MenuItem = forwardRef<
+ MenuItemProps & { text?: string; children?: ReactNode },
+ 'button'
+>(({ text, children, ...props }, ref) => {
+ return (
+
+ {text}
+ {children}
+
+ );
+});
+
+export default MenuItem;
diff --git a/src/ui/common/Menu/index.ts b/src/ui/common/Menu/index.ts
new file mode 100644
index 00000000..0c15fc3e
--- /dev/null
+++ b/src/ui/common/Menu/index.ts
@@ -0,0 +1,2 @@
+export { default as Menu } from './Menu';
+export { default as MenuItem } from './MenuItem';
diff --git a/src/ui/common/TopNavigation/index.tsx b/src/ui/common/TopNavigation/index.tsx
new file mode 100644
index 00000000..203287a5
--- /dev/null
+++ b/src/ui/common/TopNavigation/index.tsx
@@ -0,0 +1,33 @@
+import { Box, Flex, Text } from '@chakra-ui/react';
+import { useRouter } from 'next/navigation';
+import IconButton from '../IconButton';
+
+type PageTitleType = {
+ pageTitle: string;
+};
+
+const TopNavigation = ({ pageTitle }: PageTitleType) => {
+ const router = useRouter();
+
+ return (
+
+ router.back()}
+ cursor="pointer"
+ />
+
+ {pageTitle}
+
+
+
+ );
+};
+
+export default TopNavigation;
diff --git a/yarn.lock b/yarn.lock
index a13d17bd..7fa1e964 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -270,7 +270,7 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5":
+"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5":
version "7.22.15"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
@@ -1864,7 +1864,7 @@
resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4":
version "7.21.0"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz"
integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
@@ -1947,6 +1947,802 @@
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+"@chakra-ui/accordion@2.1.9":
+ version "2.1.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.9.tgz"
+ integrity sha512-a9CKIAUHezc0f5FR/SQ4GVxnWuIb2HbDTxTEKTp58w/J9pecIbJaNrJ5TUZ0MVbDU9jkgO9RsZ29jkja8PomAw==
+ dependencies:
+ "@chakra-ui/descendant" "3.0.13"
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.0.15"
+
+"@chakra-ui/alert@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.0.17.tgz"
+ integrity sha512-0Y5vw+HkeXpwbL1roVpSSNM6luMRmUbwduUSHEA4OnX1ismvsDb1ZBfpi4Vxp6w8euJ2Uj6df3krbd5tbCP6tg==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/spinner" "2.0.13"
+
+"@chakra-ui/anatomy@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz"
+ integrity sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==
+
+"@chakra-ui/avatar@2.2.5":
+ version "2.2.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.5.tgz"
+ integrity sha512-TEHXuGE79+fEn61qJ7J/A0Ec+WjyNwobrDTATcLg9Zx2/WEMmZNfrWIAlI5ANQAwVbdSWeGVbyoLAK5mbcrE0A==
+ dependencies:
+ "@chakra-ui/image" "2.0.15"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/breadcrumb@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.4.tgz"
+ integrity sha512-vyBx5TAxPnHhb0b8nyRGfqyjleD//9mySFhk96c9GL+T6YDO4swHw5y/kvDv3Ngc/iRwJ9hdI49PZKwPxLqsEg==
+ dependencies:
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/breakpoint-utils@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz"
+ integrity sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/button@2.0.16":
+ version "2.0.16"
+ resolved "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.16.tgz"
+ integrity sha512-NjuTKa7gNhnGSUutKuTc8HoAOe9WWIigpciBG7yj3ok67kg8bXtSzPyQFZlgTY6XGdAckWTT+Do4tvhwa5LA+g==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/spinner" "2.0.13"
+
+"@chakra-ui/card@2.1.6":
+ version "2.1.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/card/-/card-2.1.6.tgz"
+ integrity sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/checkbox@2.2.10":
+ version "2.2.10"
+ resolved "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.10.tgz"
+ integrity sha512-vzxEjw99qj7loxAdP1WuHNt4EAvj/t6cc8oxyOB2mEvkAzhxI34rLR+3zWDuHWsmhyUO+XEDh4FiWdR+DK5Siw==
+ dependencies:
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/visually-hidden" "2.0.15"
+ "@zag-js/focus-visible" "0.2.1"
+
+"@chakra-ui/clickable@2.0.14":
+ version "2.0.14"
+ resolved "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.14.tgz"
+ integrity sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==
+ dependencies:
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/close-button@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.17.tgz"
+ integrity sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+
+"@chakra-ui/color-mode@2.1.12":
+ version "2.1.12"
+ resolved "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz"
+ integrity sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+
+"@chakra-ui/control-box@2.0.13":
+ version "2.0.13"
+ resolved "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.13.tgz"
+ integrity sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==
+
+"@chakra-ui/counter@2.0.14":
+ version "2.0.14"
+ resolved "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.14.tgz"
+ integrity sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==
+ dependencies:
+ "@chakra-ui/number-utils" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/css-reset@2.0.12":
+ version "2.0.12"
+ resolved "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.0.12.tgz"
+ integrity sha512-Q5OYIMvqTl2vZ947kIYxcS5DhQXeStB84BzzBd6C10wOx1gFUu9pL+jLpOnHR3hhpWRMdX5o7eT+gMJWIYUZ0Q==
+
+"@chakra-ui/descendant@3.0.13":
+ version "3.0.13"
+ resolved "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.13.tgz"
+ integrity sha512-9nzxZVxUSMc4xPL5fSaRkEOQjDQWUGjGvrZI7VzWk9eq63cojOtIxtWMSW383G9148PzWJjJYt30Eud5tdZzlg==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+
+"@chakra-ui/dom-utils@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.6.tgz"
+ integrity sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA==
+
+"@chakra-ui/editable@2.0.19":
+ version "2.0.19"
+ resolved "https://registry.npmjs.org/@chakra-ui/editable/-/editable-2.0.19.tgz"
+ integrity sha512-YxRJsJ2JQd42zfPBgTKzIhg1HugT+gfQz1ZosmUN+IZT9YZXL2yodHTUz6Lee04Vc/CdEqgBFLuREXEUNBfGtA==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/event-utils@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz"
+ integrity sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==
+
+"@chakra-ui/focus-lock@2.0.16":
+ version "2.0.16"
+ resolved "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.16.tgz"
+ integrity sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.0.6"
+ react-focus-lock "^2.9.2"
+
+"@chakra-ui/form-control@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.17.tgz"
+ integrity sha512-34ptCaJ2LNvQNOlB6MAKsmH1AkT1xo7E+3Vw10Urr81yTOjDTM/iU6vG3JKPfRDMyXeowPjXmutlnuk72SSjRg==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/hooks@2.1.6":
+ version "2.1.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.1.6.tgz"
+ integrity sha512-oMSOeoOF6/UpwTVlDFHSROAA4hPY8WgJ0erdHs1ZkuwAwHv7UzjDkvrb6xYzAAH9qHoFzc5RIBm6jVoh3LCc+Q==
+ dependencies:
+ "@chakra-ui/react-utils" "2.0.12"
+ "@chakra-ui/utils" "2.0.15"
+ compute-scroll-into-view "1.0.20"
+ copy-to-clipboard "3.3.3"
+
+"@chakra-ui/icon@3.0.16":
+ version "3.0.16"
+ resolved "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.16.tgz"
+ integrity sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/icons@^2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.0.17.tgz"
+ integrity sha512-HMJP0WrJgAmFR9+Xh/CBH0nVnGMsJ4ZC8MK6tMgxPKd9/muvn0I4hsicHqdPlLpmB0TlxlhkBAKaVMtOdz6F0w==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+
+"@chakra-ui/image@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.15.tgz"
+ integrity sha512-w2rElXtI3FHXuGpMCsSklus+pO1Pl2LWDwsCGdpBQUvGFbnHfl7MftQgTlaGHeD5OS95Pxva39hKrA2VklKHiQ==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/input@2.0.20":
+ version "2.0.20"
+ resolved "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.20.tgz"
+ integrity sha512-ypmsy4n4uNBVgn6Gd24Zrpi+qRf/T9WEzWkysuYC9Qfxo+i7yuf3snp7XmBy8KSGVSiXE11eO8ZN5oCg6Xg0jg==
+ dependencies:
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/object-utils" "2.0.8"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/layout@2.1.16":
+ version "2.1.16"
+ resolved "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.16.tgz"
+ integrity sha512-QFS3feozIGsvB0H74lUocev55aRF26eNrdmhfJifwikZAiq+zzZAMdBdNU9UJhHClnMOU8/iGZ0MF7ti4zQS1A==
+ dependencies:
+ "@chakra-ui/breakpoint-utils" "2.0.8"
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/object-utils" "2.0.8"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/lazy-utils@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz"
+ integrity sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==
+
+"@chakra-ui/live-region@2.0.13":
+ version "2.0.13"
+ resolved "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.13.tgz"
+ integrity sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==
+
+"@chakra-ui/media-query@3.2.12":
+ version "3.2.12"
+ resolved "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.12.tgz"
+ integrity sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==
+ dependencies:
+ "@chakra-ui/breakpoint-utils" "2.0.8"
+ "@chakra-ui/react-env" "3.0.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/menu@2.1.9":
+ version "2.1.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.9.tgz"
+ integrity sha512-ue5nD4QJcl3H3UwN0zZNJmH89XUebnvEdW6THAUL41hDjJ0J/Fjpg9Sgzwug2aBbBXBNbVMsUuhcCj6x91d+IQ==
+ dependencies:
+ "@chakra-ui/clickable" "2.0.14"
+ "@chakra-ui/descendant" "3.0.13"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/popper" "3.0.13"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-animation-state" "2.0.8"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-disclosure" "2.0.8"
+ "@chakra-ui/react-use-focus-effect" "2.0.9"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-outside-click" "2.0.7"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.0.15"
+
+"@chakra-ui/modal@2.2.9":
+ version "2.2.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.9.tgz"
+ integrity sha512-nTfNp7XsVwn5+xJOtstoFA8j0kq/9sJj7KesyYzjEDaMKvCZvIOntRYowoydho43jb4+YC7ebKhp0KOIINS0gg==
+ dependencies:
+ "@chakra-ui/close-button" "2.0.17"
+ "@chakra-ui/focus-lock" "2.0.16"
+ "@chakra-ui/portal" "2.0.15"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.0.15"
+ aria-hidden "^1.2.2"
+ react-remove-scroll "^2.5.5"
+
+"@chakra-ui/number-input@2.0.18":
+ version "2.0.18"
+ resolved "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.18.tgz"
+ integrity sha512-cPkyAFFHHzeFBselrT1BtjlzMkJ6TKrTDUnHFlzqXy6aqeXuhrjFhMfXucjedSpOqedsP9ZbKFTdIAhu9DdL/A==
+ dependencies:
+ "@chakra-ui/counter" "2.0.14"
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+ "@chakra-ui/react-use-event-listener" "2.0.7"
+ "@chakra-ui/react-use-interval" "2.0.5"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/number-utils@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz"
+ integrity sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg==
+
+"@chakra-ui/object-utils@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.0.8.tgz"
+ integrity sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q==
+
+"@chakra-ui/pin-input@2.0.19":
+ version "2.0.19"
+ resolved "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.19.tgz"
+ integrity sha512-6O7s4vWz4cqQ6zvMov9sYj6ZqWAsTxR/MNGe3DNgu1zWQg8veNCYtj1rNGhNS3eZNUMAa8uM2dXIphGTP53Xow==
+ dependencies:
+ "@chakra-ui/descendant" "3.0.13"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/popover@2.1.8":
+ version "2.1.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.8.tgz"
+ integrity sha512-ob7fAz+WWmXIq7iGHVB3wDKzZTj+T+noYBT/U1Q+jIf+jMr2WOpJLTfb0HTZcfhvn4EBFlfBg7Wk5qbXNaOn7g==
+ dependencies:
+ "@chakra-ui/close-button" "2.0.17"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/popper" "3.0.13"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-animation-state" "2.0.8"
+ "@chakra-ui/react-use-disclosure" "2.0.8"
+ "@chakra-ui/react-use-focus-effect" "2.0.9"
+ "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/popper@3.0.13":
+ version "3.0.13"
+ resolved "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.13.tgz"
+ integrity sha512-FwtmYz80Ju8oK3Z1HQfisUE7JIMmDsCQsRBu6XuJ3TFQnBHit73yjZmxKjuRJ4JgyT4WBnZoTF3ATbRKSagBeg==
+ dependencies:
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@popperjs/core" "^2.9.3"
+
+"@chakra-ui/portal@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.15.tgz"
+ integrity sha512-z8v7K3j1/nMuBzp2+wRIIw7s/eipVtnXLdjK5yqbMxMRa44E8Mu5VNJLz3aQFLHXEUST+ifqrjImQeli9do6LQ==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+
+"@chakra-ui/progress@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.1.5.tgz"
+ integrity sha512-jj5Vp4lxUchuwp4RPCepM0yAyKi344bgsOd3Apd+ldxclDcewPc82fbwDu7g/Xv27LqJkT+7E/SlQy04wGrk0g==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+
+"@chakra-ui/provider@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.1.2.tgz"
+ integrity sha512-4lLlz8QuJv00BhfyKzWpzfoti9MDOdJ/MqXixJV/EZ02RMBOdE9qy9bSz/WckPC2MVhtRUuwMkxH+0QY21PXuw==
+ dependencies:
+ "@chakra-ui/css-reset" "2.0.12"
+ "@chakra-ui/portal" "2.0.15"
+ "@chakra-ui/react-env" "3.0.0"
+ "@chakra-ui/system" "2.5.1"
+ "@chakra-ui/utils" "2.0.15"
+
+"@chakra-ui/radio@2.0.19":
+ version "2.0.19"
+ resolved "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.19.tgz"
+ integrity sha512-PlJiV59eGSmeKP4v/4+ccQUWGRd0cjPKkj/p3L+UbOf8pl9dWm8y9kIeL5TYbghQSDv0nzkrH4+yMnnDTZjdMQ==
+ dependencies:
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@zag-js/focus-visible" "0.2.1"
+
+"@chakra-ui/react-children-utils@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz"
+ integrity sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==
+
+"@chakra-ui/react-context@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.7.tgz"
+ integrity sha512-i7EGmSU+h2GB30cwrKB4t1R5BMHyGoJM5L2Zz7b+ZUX4aAqyPcfe97wPiQB6Rgr1ImGXrUeov4CDVrRZ2FPgLQ==
+
+"@chakra-ui/react-env@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-3.0.0.tgz"
+ integrity sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+
+"@chakra-ui/react-types@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.7.tgz"
+ integrity sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==
+
+"@chakra-ui/react-use-animation-state@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.8.tgz"
+ integrity sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.0.6"
+ "@chakra-ui/react-use-event-listener" "2.0.7"
+
+"@chakra-ui/react-use-callback-ref@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz"
+ integrity sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==
+
+"@chakra-ui/react-use-controllable-state@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz"
+ integrity sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-disclosure@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz"
+ integrity sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-event-listener@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz"
+ integrity sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-focus-effect@2.0.9":
+ version "2.0.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.9.tgz"
+ integrity sha512-20nfNkpbVwyb41q9wxp8c4jmVp6TUGAPE3uFTDpiGcIOyPW5aecQtPmTXPMJH+2aa8Nu1wyoT1btxO+UYiQM3g==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.0.6"
+ "@chakra-ui/react-use-event-listener" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+
+"@chakra-ui/react-use-focus-on-pointer-down@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz"
+ integrity sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==
+ dependencies:
+ "@chakra-ui/react-use-event-listener" "2.0.7"
+
+"@chakra-ui/react-use-interval@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz"
+ integrity sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-latest-ref@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz"
+ integrity sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==
+
+"@chakra-ui/react-use-merge-refs@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz"
+ integrity sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==
+
+"@chakra-ui/react-use-outside-click@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.7.tgz"
+ integrity sha512-MsAuGLkwYNxNJ5rb8lYNvXApXxYMnJ3MzqBpQj1kh5qP/+JSla9XMjE/P94ub4fSEttmNSqs43SmPPrmPuihsQ==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-pan-event@2.0.9":
+ version "2.0.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz"
+ integrity sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==
+ dependencies:
+ "@chakra-ui/event-utils" "2.0.8"
+ "@chakra-ui/react-use-latest-ref" "2.0.5"
+ framesync "6.1.2"
+
+"@chakra-ui/react-use-previous@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz"
+ integrity sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==
+
+"@chakra-ui/react-use-safe-layout-effect@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz"
+ integrity sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==
+
+"@chakra-ui/react-use-size@2.0.9":
+ version "2.0.9"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.9.tgz"
+ integrity sha512-Jce7QmO1jlQZq+Y77VKckWzroRnajChzUQ8xhLQZO6VbYvrpg3cu+X2QCz3G+MZzB+1/hnvvAqmZ+uJLd8rEJg==
+ dependencies:
+ "@zag-js/element-size" "0.3.1"
+
+"@chakra-ui/react-use-timeout@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz"
+ integrity sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+
+"@chakra-ui/react-use-update-effect@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz"
+ integrity sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==
+
+"@chakra-ui/react-utils@2.0.12":
+ version "2.0.12"
+ resolved "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz"
+ integrity sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==
+ dependencies:
+ "@chakra-ui/utils" "2.0.15"
+
+"@chakra-ui/react@^2.4.9":
+ version "2.5.1"
+ resolved "https://registry.npmjs.org/@chakra-ui/react/-/react-2.5.1.tgz"
+ integrity sha512-ugkaqfcNMb9L4TkalWiF3rnqfr0TlUUD46JZaDIZiORVisaSwXTZTQrVfG40VghhaJT28rnC5WtiE8kd567ZBQ==
+ dependencies:
+ "@chakra-ui/accordion" "2.1.9"
+ "@chakra-ui/alert" "2.0.17"
+ "@chakra-ui/avatar" "2.2.5"
+ "@chakra-ui/breadcrumb" "2.1.4"
+ "@chakra-ui/button" "2.0.16"
+ "@chakra-ui/card" "2.1.6"
+ "@chakra-ui/checkbox" "2.2.10"
+ "@chakra-ui/close-button" "2.0.17"
+ "@chakra-ui/control-box" "2.0.13"
+ "@chakra-ui/counter" "2.0.14"
+ "@chakra-ui/css-reset" "2.0.12"
+ "@chakra-ui/editable" "2.0.19"
+ "@chakra-ui/focus-lock" "2.0.16"
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/hooks" "2.1.6"
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/image" "2.0.15"
+ "@chakra-ui/input" "2.0.20"
+ "@chakra-ui/layout" "2.1.16"
+ "@chakra-ui/live-region" "2.0.13"
+ "@chakra-ui/media-query" "3.2.12"
+ "@chakra-ui/menu" "2.1.9"
+ "@chakra-ui/modal" "2.2.9"
+ "@chakra-ui/number-input" "2.0.18"
+ "@chakra-ui/pin-input" "2.0.19"
+ "@chakra-ui/popover" "2.1.8"
+ "@chakra-ui/popper" "3.0.13"
+ "@chakra-ui/portal" "2.0.15"
+ "@chakra-ui/progress" "2.1.5"
+ "@chakra-ui/provider" "2.1.2"
+ "@chakra-ui/radio" "2.0.19"
+ "@chakra-ui/react-env" "3.0.0"
+ "@chakra-ui/select" "2.0.18"
+ "@chakra-ui/skeleton" "2.0.24"
+ "@chakra-ui/slider" "2.0.21"
+ "@chakra-ui/spinner" "2.0.13"
+ "@chakra-ui/stat" "2.0.17"
+ "@chakra-ui/styled-system" "2.6.1"
+ "@chakra-ui/switch" "2.0.22"
+ "@chakra-ui/system" "2.5.1"
+ "@chakra-ui/table" "2.0.16"
+ "@chakra-ui/tabs" "2.1.8"
+ "@chakra-ui/tag" "2.0.17"
+ "@chakra-ui/textarea" "2.0.18"
+ "@chakra-ui/theme" "2.2.5"
+ "@chakra-ui/theme-utils" "2.0.11"
+ "@chakra-ui/toast" "6.0.1"
+ "@chakra-ui/tooltip" "2.2.6"
+ "@chakra-ui/transition" "2.0.15"
+ "@chakra-ui/utils" "2.0.15"
+ "@chakra-ui/visually-hidden" "2.0.15"
+
+"@chakra-ui/select@2.0.18":
+ version "2.0.18"
+ resolved "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.18.tgz"
+ integrity sha512-1d2lUT5LM6oOs5x4lzBh4GFDuXX62+lr+sgV7099g951/5UNbb0CS2hSZHsO7yZThLNbr7QTWZvAOAayVcGzdw==
+ dependencies:
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/shared-utils@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz"
+ integrity sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==
+
+"@chakra-ui/skeleton@2.0.24":
+ version "2.0.24"
+ resolved "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz"
+ integrity sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==
+ dependencies:
+ "@chakra-ui/media-query" "3.2.12"
+ "@chakra-ui/react-use-previous" "2.0.5"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/slider@2.0.21":
+ version "2.0.21"
+ resolved "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.21.tgz"
+ integrity sha512-Mm76yJxEqJl21+3waEcKg3tM8Y4elJ7mcViN6Brj35PTfzUJfSJxeBGo1nLPJ+X5jLj7o/L4kfBmUk3lY4QYEQ==
+ dependencies:
+ "@chakra-ui/number-utils" "2.0.7"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-latest-ref" "2.0.5"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-pan-event" "2.0.9"
+ "@chakra-ui/react-use-size" "2.0.9"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+
+"@chakra-ui/spinner@2.0.13":
+ version "2.0.13"
+ resolved "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.13.tgz"
+ integrity sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/stat@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.17.tgz"
+ integrity sha512-PhD+5oVLWjQmGLfeZSmexp3AtLcaggWBwoMZ4z8QMZIQzf/fJJWMk0bMqxlpTv8ORDkfY/4ImuFB/RJHvcqlcA==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/styled-system@2.6.1":
+ version "2.6.1"
+ resolved "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.6.1.tgz"
+ integrity sha512-jy/1dVi1LxjoRCm+Eo5mqBgvPy5SCWMlIcz6GbIZBDpkGeKZwtqrZLjekxxLBCy8ORY+kJlUB0FT6AzVR/1tjw==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+ csstype "^3.0.11"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/switch@2.0.22":
+ version "2.0.22"
+ resolved "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.22.tgz"
+ integrity sha512-+/Yy6y7VFD91uSPruF8ZvePi3tl5D8UNVATtWEQ+QBI92DLSM+PtgJ2F0Y9GMZ9NzMxpZ80DqwY7/kqcPCfLvw==
+ dependencies:
+ "@chakra-ui/checkbox" "2.2.10"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/system@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmjs.org/@chakra-ui/system/-/system-2.5.1.tgz"
+ integrity sha512-4+86OrcSoq7lGkm5fh+sJ3IWXSTzjz+HOllRbCW2Rtnmcg7ritiXVNV2VygEg2DrCcx5+tNqRHDM764zW+AEug==
+ dependencies:
+ "@chakra-ui/color-mode" "2.1.12"
+ "@chakra-ui/object-utils" "2.0.8"
+ "@chakra-ui/react-utils" "2.0.12"
+ "@chakra-ui/styled-system" "2.6.1"
+ "@chakra-ui/theme-utils" "2.0.11"
+ "@chakra-ui/utils" "2.0.15"
+ react-fast-compare "3.2.0"
+
+"@chakra-ui/table@2.0.16":
+ version "2.0.16"
+ resolved "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.16.tgz"
+ integrity sha512-vWDXZ6Ad3Aj66curp1tZBHvCfQHX2FJ4ijLiqGgQszWFIchfhJ5vMgEBJaFMZ+BN1draAjuRTZqaQefOApzvRg==
+ dependencies:
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/tabs@2.1.8":
+ version "2.1.8"
+ resolved "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.8.tgz"
+ integrity sha512-B7LeFN04Ny2jsSy5TFOQxnbZ6ITxGxLxsB2PE0vvQjMSblBrUryOxdjw80HZhfiw6od0ikK9CeKQOIt9QCguSw==
+ dependencies:
+ "@chakra-ui/clickable" "2.0.14"
+ "@chakra-ui/descendant" "3.0.13"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-controllable-state" "2.0.8"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/react-use-safe-layout-effect" "2.0.5"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/tag@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/tag/-/tag-2.0.17.tgz"
+ integrity sha512-A47zE9Ft9qxOJ+5r1cUseKRCoEdqCRzFm0pOtZgRcckqavglk75Xjgz8HbBpUO2zqqd49MlqdOwR8o87fXS1vg==
+ dependencies:
+ "@chakra-ui/icon" "3.0.16"
+ "@chakra-ui/react-context" "2.0.7"
+
+"@chakra-ui/textarea@2.0.18":
+ version "2.0.18"
+ resolved "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.18.tgz"
+ integrity sha512-aGHHb29vVifO0OtcK/k8cMykzjOKo/coDTU0NJqz7OOLAWIMNV2eGenvmO1n9tTZbmbqHiX+Sa1nPRX+pd14lg==
+ dependencies:
+ "@chakra-ui/form-control" "2.0.17"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/theme-tools@2.0.17":
+ version "2.0.17"
+ resolved "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.17.tgz"
+ integrity sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==
+ dependencies:
+ "@chakra-ui/anatomy" "2.1.2"
+ "@chakra-ui/shared-utils" "2.0.5"
+ color2k "^2.0.0"
+
+"@chakra-ui/theme-utils@2.0.11":
+ version "2.0.11"
+ resolved "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.11.tgz"
+ integrity sha512-lBAay6Sq3/fl7exd3mFxWAbzgdQowytor0fnlHrpNStn1HgFjXukwsf6356XQOie2Vd8qaMM7qZtMh4AiC0dcg==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/styled-system" "2.6.1"
+ "@chakra-ui/theme" "2.2.5"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/theme@2.2.5":
+ version "2.2.5"
+ resolved "https://registry.npmjs.org/@chakra-ui/theme/-/theme-2.2.5.tgz"
+ integrity sha512-hYASZMwu0NqEv6PPydu+F3I+kMNd44yR4TwjR/lXBz/LEh64L6UPY6kQjebCfgdVtsGdl3HKg+eLlfa7SvfRgw==
+ dependencies:
+ "@chakra-ui/anatomy" "2.1.2"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/theme-tools" "2.0.17"
+
+"@chakra-ui/toast@6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/@chakra-ui/toast/-/toast-6.0.1.tgz"
+ integrity sha512-ej2kJXvu/d2h6qnXU5D8XTyw0qpsfmbiU7hUffo/sPxkz89AUOQ08RUuUmB1ssW/FZcQvNMJ5WgzCTKHGBxtxw==
+ dependencies:
+ "@chakra-ui/alert" "2.0.17"
+ "@chakra-ui/close-button" "2.0.17"
+ "@chakra-ui/portal" "2.0.15"
+ "@chakra-ui/react-context" "2.0.7"
+ "@chakra-ui/react-use-timeout" "2.0.5"
+ "@chakra-ui/react-use-update-effect" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/styled-system" "2.6.1"
+ "@chakra-ui/theme" "2.2.5"
+
+"@chakra-ui/tooltip@2.2.6":
+ version "2.2.6"
+ resolved "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.6.tgz"
+ integrity sha512-4cbneidZ5+HCWge3OZzewRQieIvhDjSsl+scrl4Scx7E0z3OmqlTIESU5nGIZDBLYqKn/UirEZhqaQ33FOS2fw==
+ dependencies:
+ "@chakra-ui/popper" "3.0.13"
+ "@chakra-ui/portal" "2.0.15"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-disclosure" "2.0.8"
+ "@chakra-ui/react-use-event-listener" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.0.7"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/transition@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.15.tgz"
+ integrity sha512-o9LBK/llQfUDHF/Ty3cQ6nShpekKTqHUoJlUOzNKhoTsNpoRerr9v0jwojrX1YI02KtVjfhFU6PiqXlDfREoNw==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/utils@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz"
+ integrity sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==
+ dependencies:
+ "@types/lodash.mergewith" "4.6.7"
+ css-box-model "1.2.1"
+ framesync "6.1.2"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/visually-hidden@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz"
+ integrity sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==
+
"@colors/colors@1.5.0":
version "1.5.0"
resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz"
@@ -1957,11 +2753,125 @@
resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
+"@emotion/babel-plugin@^11.10.6":
+ version "11.10.6"
+ resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz"
+ integrity sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/serialize" "^1.1.1"
+ babel-plugin-macros "^3.1.0"
+ convert-source-map "^1.5.0"
+ escape-string-regexp "^4.0.0"
+ find-root "^1.1.0"
+ source-map "^0.5.7"
+ stylis "4.1.3"
+
+"@emotion/cache@^11.10.5":
+ version "11.10.5"
+ resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz"
+ integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==
+ dependencies:
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/sheet" "^1.2.1"
+ "@emotion/utils" "^1.2.0"
+ "@emotion/weak-memoize" "^0.3.0"
+ stylis "4.1.3"
+
+"@emotion/hash@^0.9.0":
+ version "0.9.0"
+ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz"
+ integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
+
+"@emotion/is-prop-valid@^0.8.2":
+ version "0.8.8"
+ resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz"
+ integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
+ dependencies:
+ "@emotion/memoize" "0.7.4"
+
+"@emotion/is-prop-valid@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz"
+ integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==
+ dependencies:
+ "@emotion/memoize" "^0.8.0"
+
+"@emotion/memoize@0.7.4":
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz"
+ integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
+
+"@emotion/memoize@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz"
+ integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
+
+"@emotion/react@^11.10.5":
+ version "11.10.6"
+ resolved "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz"
+ integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.10.6"
+ "@emotion/cache" "^11.10.5"
+ "@emotion/serialize" "^1.1.1"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
+ "@emotion/utils" "^1.2.0"
+ "@emotion/weak-memoize" "^0.3.0"
+ hoist-non-react-statics "^3.3.1"
+
+"@emotion/serialize@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz"
+ integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==
+ dependencies:
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/unitless" "^0.8.0"
+ "@emotion/utils" "^1.2.0"
+ csstype "^3.0.2"
+
+"@emotion/sheet@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz"
+ integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==
+
+"@emotion/styled@^11.10.5":
+ version "11.10.6"
+ resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.6.tgz"
+ integrity sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.10.6"
+ "@emotion/is-prop-valid" "^1.2.0"
+ "@emotion/serialize" "^1.1.1"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
+ "@emotion/utils" "^1.2.0"
+
+"@emotion/unitless@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz"
+ integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==
+
"@emotion/use-insertion-effect-with-fallbacks@^1.0.0":
version "1.0.0"
resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz"
integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==
+"@emotion/utils@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz"
+ integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
+
+"@emotion/weak-memoize@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz"
+ integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==
+
"@esbuild/android-arm64@0.17.19":
version "0.17.19"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
@@ -2431,6 +3341,11 @@
schema-utils "^3.0.0"
source-map "^0.7.3"
+"@popperjs/core@^2.9.3":
+ version "2.11.6"
+ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz"
+ integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
+
"@rushstack/eslint-patch@^1.1.3":
version "1.2.0"
resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz"
@@ -3680,6 +4595,18 @@
resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+"@types/lodash.mergewith@4.6.7":
+ version "4.6.7"
+ resolved "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz"
+ integrity sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*":
+ version "4.14.191"
+ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz"
+ integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+
"@types/lodash@^4.14.167":
version "4.14.195"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz"
@@ -4151,6 +5078,16 @@
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+"@zag-js/element-size@0.3.1":
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.3.1.tgz"
+ integrity sha512-jR5j4G//bRzcxwAACWi9EfITnwjNmn10LxF4NmALrdZU7/PNWP3uUCdhCxd/0SCyeiJXUl0yvD57rWAbKPs1nw==
+
+"@zag-js/focus-visible@0.2.1":
+ version "0.2.1"
+ resolved "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.1.tgz"
+ integrity sha512-19uTjoZGP4/Ax7kSNhhay9JA83BirKzpqLkeEAilrpdI1hE5xuq6q+tzJOsrMOOqJrm7LkmZp5lbsTQzvK2pYg==
+
"@zxing/text-encoding@0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b"
@@ -4362,6 +5299,13 @@ argparse@^2.0.1:
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+aria-hidden@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz"
+ integrity sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==
+ dependencies:
+ tslib "^2.0.0"
+
aria-query@5.1.3, aria-query@^5.1.3:
version "5.1.3"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz"
@@ -4581,6 +5525,15 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
babel-plugin-named-exports-order@^0.0.2:
version "0.0.2"
resolved "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz"
@@ -5191,6 +6144,11 @@ color-support@^1.1.2:
resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+color2k@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz"
+ integrity sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==
+
colorette@^2.0.10:
version "2.0.20"
resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
@@ -5276,6 +6234,11 @@ compression@^1.7.4:
safe-buffer "5.1.2"
vary "~1.1.2"
+compute-scroll-into-view@1.0.20:
+ version "1.0.20"
+ resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz"
+ integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
@@ -5318,7 +6281,7 @@ content-type@~1.0.4:
resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
-convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
@@ -5357,6 +6320,13 @@ copy-anything@^3.0.2:
dependencies:
is-what "^4.1.8"
+copy-to-clipboard@3.3.3:
+ version "3.3.3"
+ resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz"
+ integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==
+ dependencies:
+ toggle-selection "^1.0.6"
+
core-js-compat@^3.25.1:
version "3.28.0"
resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz"
@@ -5386,7 +6356,7 @@ core-util-is@~1.0.0:
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
-cosmiconfig@^7.0.1:
+cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
version "7.1.0"
resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
@@ -5469,6 +6439,13 @@ crypto-random-string@^2.0.0:
resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+css-box-model@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz"
+ integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==
+ dependencies:
+ tiny-invariant "^1.0.6"
+
css-loader@^6.7.1, css-loader@^6.7.3:
version "6.8.1"
resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz"
@@ -5519,7 +6496,7 @@ csso@^4.2.0:
dependencies:
css-tree "^1.1.2"
-csstype@^3.0.2:
+csstype@^3.0.11, csstype@^3.0.2:
version "3.1.1"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
@@ -5701,6 +6678,11 @@ detect-indent@^6.1.0:
resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz"
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
+detect-node-es@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz"
+ integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
+
detect-package-manager@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz"
@@ -6665,6 +7647,11 @@ find-cache-dir@^4.0.0:
common-path-prefix "^3.0.0"
pkg-dir "^7.0.0"
+find-root@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
find-up@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
@@ -6721,6 +7708,13 @@ flow-parser@0.*:
resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.211.1.tgz"
integrity sha512-TjUjPTe22yM1DYKDqsmnUblJ0Vs5WJWP3FeaXU8L1gGKGrAQBdxRvs0CRj6NXYF8gugej4JyRWGBbaiVunC9uw==
+focus-lock@^0.11.6:
+ version "0.11.6"
+ resolved "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz"
+ integrity sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==
+ dependencies:
+ tslib "^2.0.3"
+
follow-redirects@^1.15.0:
version "1.15.2"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
@@ -6801,6 +7795,22 @@ fraction.js@^4.2.0:
resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz"
integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+framer-motion@^9.0.2:
+ version "9.1.7"
+ resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-9.1.7.tgz"
+ integrity sha512-nKxBkIO4IPkMEqcBbbATxsVjwPYShKl051yhBv9628iAH6JLeHD0siBHxkL62oQzMC1+GNX73XtPjgP753ufuw==
+ dependencies:
+ tslib "^2.4.0"
+ optionalDependencies:
+ "@emotion/is-prop-valid" "^0.8.2"
+
+framesync@6.1.2:
+ version "6.1.2"
+ resolved "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz"
+ integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==
+ dependencies:
+ tslib "2.4.0"
+
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
@@ -6931,6 +7941,11 @@ get-intrinsic@^1.2.4:
has-symbols "^1.0.3"
hasown "^2.0.0"
+get-nonce@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz"
+ integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+
get-npm-tarball-url@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz"
@@ -7170,6 +8185,11 @@ gunzip-maybe@^1.4.2:
pumpify "^1.3.3"
through2 "^2.0.3"
+hamt_plus@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz"
+ integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==
+
handlebars@^4.7.7:
version "4.7.7"
resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz"
@@ -7296,6 +8316,13 @@ hmac-drbg@^1.0.1:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
+hoist-non-react-statics@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
@@ -7513,6 +8540,13 @@ interpret@^1.0.0:
resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
iota-array@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz"
@@ -8296,6 +9330,11 @@ lodash.merge@^4.6.2:
resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.mergewith@4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz"
+ integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
+
lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
@@ -8319,7 +9358,7 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -9521,7 +10560,7 @@ prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.7.2, prop-types@^15.8.1:
+prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -9687,6 +10726,13 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
+react-clientside-effect@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz"
+ integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==
+ dependencies:
+ "@babel/runtime" "^7.12.13"
+
react-colorful@^5.1.2:
version "5.6.1"
resolved "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz"
@@ -9737,6 +10783,23 @@ react-error-boundary@^3.1.4:
dependencies:
"@babel/runtime" "^7.12.5"
+react-fast-compare@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz"
+ integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+
+react-focus-lock@^2.9.2:
+ version "2.9.4"
+ resolved "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz"
+ integrity sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ focus-lock "^0.11.6"
+ prop-types "^15.6.2"
+ react-clientside-effect "^1.2.6"
+ use-callback-ref "^1.3.0"
+ use-sidecar "^1.1.2"
+
react-hook-form@^7.43.2:
version "7.43.2"
resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.43.2.tgz"
@@ -9757,7 +10820,7 @@ react-is@18.1.0:
resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz"
integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==
-react-is@^16.13.1:
+react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -9772,6 +10835,34 @@ react-refresh@^0.11.0:
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz"
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
+react-remove-scroll-bar@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz"
+ integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
+ dependencies:
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@^2.5.5:
+ version "2.5.5"
+ resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz"
+ integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==
+ dependencies:
+ react-remove-scroll-bar "^2.3.3"
+ react-style-singleton "^2.2.1"
+ tslib "^2.1.0"
+ use-callback-ref "^1.3.0"
+ use-sidecar "^1.1.2"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz"
+ integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
+
react@18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
@@ -9873,6 +10964,13 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
+recoil@^0.7.7:
+ version "0.7.7"
+ resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz"
+ integrity sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==
+ dependencies:
+ hamt_plus "1.0.2"
+
regenerate-unicode-properties@^10.1.0:
version "10.1.0"
resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz"
@@ -10047,7 +11145,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.2:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^1.14.2, resolve@^1.22.1:
+resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -10449,6 +11547,11 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
source-map@^0.7.3:
version "0.7.4"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
@@ -10701,6 +11804,11 @@ styled-jsx@5.1.1:
dependencies:
client-only "0.0.1"
+stylis@4.1.3:
+ version "4.1.3"
+ resolved "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz"
+ integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
+
sucrase@^3.32.0:
version "3.32.0"
resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz"
@@ -10952,6 +12060,11 @@ tiny-glob@^0.2.9:
globalyzer "0.1.0"
globrex "^0.1.2"
+tiny-invariant@^1.0.6:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz"
+ integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -10976,6 +12089,11 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+toggle-selection@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz"
+ integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
+
toidentifier@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
@@ -11037,6 +12155,11 @@ tsconfig-paths@^4.0.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tslib@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"
+ integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
@@ -11285,6 +12408,13 @@ url@^0.11.0:
punycode "^1.4.1"
qs "^6.11.0"
+use-callback-ref@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz"
+ integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==
+ dependencies:
+ tslib "^2.0.0"
+
use-resize-observer@^9.1.0:
version "9.1.0"
resolved "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz"
@@ -11292,6 +12422,14 @@ use-resize-observer@^9.1.0:
dependencies:
"@juggle/resize-observer" "^3.3.1"
+use-sidecar@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz"
+ integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
+
use-sync-external-store@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz"