From 1834153b1fa583c8203eacb3a950842721b89ade Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Sun, 30 Apr 2023 02:52:36 +0300 Subject: [PATCH 1/6] feat(home): add session card and home design --- .eslintrc.json | 1 + App.tsx | 24 +- app/assets/colors.json | 12 + .../Containers/Private/Container.styled.ts | 5 +- app/components/CustomHandle.tsx | 148 +++ app/components/Header/Header.styled.tsx | 16 +- app/components/SessionCard/SessionCard.tsx | 61 ++ app/constants/oxvo.ts | 9 +- .../PrivateScreens/Home/Home.skeleton.tsx | 31 + app/screens/PrivateScreens/Home/Home.tsx | 153 ++- i18n.tsx | 149 +++ package.json | 5 + yarn.lock | 934 +++++++++++++++++- 13 files changed, 1478 insertions(+), 70 deletions(-) create mode 100644 app/components/CustomHandle.tsx create mode 100644 app/components/SessionCard/SessionCard.tsx create mode 100644 app/screens/PrivateScreens/Home/Home.skeleton.tsx create mode 100644 i18n.tsx diff --git a/.eslintrc.json b/.eslintrc.json index 95c22af..74fb97f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -44,6 +44,7 @@ "react/require-default-props": "off", "react/function-component-definition": ["error", { "namedComponents": "arrow-function" }], "no-promise-executor-return": "off", + "react/style-prop-object": "off", "react/no-unstable-nested-components": ["warn", { "allowAsProps": true }], "eol-last": "off", "@typescript-eslint/comma-dangle": "off", diff --git a/App.tsx b/App.tsx index f5a19ac..b762df7 100644 --- a/App.tsx +++ b/App.tsx @@ -1,6 +1,7 @@ import 'react-native-gesture-handler'; import React, { useCallback, useEffect, useState } from 'react'; +import { I18nextProvider } from 'react-i18next'; import { SafeAreaProvider } from 'react-native-safe-area-context'; import Toast from 'react-native-toast-message'; import { Colors, Spacings, Typography } from 'react-native-ui-lib'; @@ -16,6 +17,7 @@ import * as SplashScreen from 'expo-splash-screen'; import { StatusBar } from 'expo-status-bar'; import { GestureHandlerRootView } from './App.styled'; +import i18n from './i18n'; SplashScreen.preventAutoHideAsync(); @@ -63,17 +65,17 @@ const App = () => { } return ( - - - {/* eslint-disable react/style-prop-object */} - - {/* eslint-enable react/style-prop-object */} - - - - - - + + + + + + + + + + + ); }; diff --git a/app/assets/colors.json b/app/assets/colors.json index 036dc86..606693d 100644 --- a/app/assets/colors.json +++ b/app/assets/colors.json @@ -1,4 +1,16 @@ { + "base": { + "white": "#fff", + "beige": "#FFF1DC", + "blue": "#3A98B9", + "lightBeige": "#E8D5C4", + "lightGray": "#EEEEEE" + }, + "supports": { + "green": "#A4D0A4", + "yellow": "#F7D060", + "red": "#CE5959" + }, "grays": { "gray": "#A0A1B4", "gray02": "#FAFAFA", diff --git a/app/components/Containers/Private/Container.styled.ts b/app/components/Containers/Private/Container.styled.ts index b6f6c48..e50c29e 100644 --- a/app/components/Containers/Private/Container.styled.ts +++ b/app/components/Containers/Private/Container.styled.ts @@ -1,10 +1,13 @@ +import colors from '@oxvo-mobile/assets/colors.json'; + import styled from 'styled-components/native'; const Container = styled.View` flex: 1; position: relative; padding: 16px; - background-color: #fdfdfd; + color: 'red'; + background-color: #fff; `; export default Container; diff --git a/app/components/CustomHandle.tsx b/app/components/CustomHandle.tsx new file mode 100644 index 0000000..a58cc8c --- /dev/null +++ b/app/components/CustomHandle.tsx @@ -0,0 +1,148 @@ +import React, { useMemo } from 'react'; +import { StyleProp, StyleSheet, Text, ViewStyle } from 'react-native'; +import Animated, { + Extrapolate, + interpolate, + useAnimatedStyle, + useDerivedValue, +} from 'react-native-reanimated'; +import { toRad } from 'react-native-redash'; + +import colors from '@oxvo-mobile/assets/colors.json'; + +import { BottomSheetHandleProps } from '@gorhom/bottom-sheet'; + +// @ts-ignore +export const transformOrigin = ({ x, y }, ...transformations) => { + 'worklet'; + + return [ + { translateX: x }, + { translateY: y }, + ...transformations, + { translateX: x * -1 }, + { translateY: y * -1 }, + ]; +}; + +interface HandleProps extends BottomSheetHandleProps { + style?: StyleProp; +} + +const Handle: React.FC = ({ style, title, animatedIndex }) => { + // #region animations + const indicatorTransformOriginY = useDerivedValue(() => + interpolate(animatedIndex.value, [0, 1, 2], [-1, 0, 1], Extrapolate.CLAMP) + ); + // #endregion + + // #region styles + const containerStyle = useMemo(() => [styles.header, style], [style]); + const containerAnimatedStyle = useAnimatedStyle(() => { + const borderTopRadius = interpolate(animatedIndex.value, [1, 2], [20, 0], Extrapolate.CLAMP); + return { + borderTopLeftRadius: borderTopRadius, + borderTopRightRadius: borderTopRadius, + }; + }); + const leftIndicatorStyle = useMemo( + () => ({ + ...styles.indicator, + ...styles.leftIndicator, + }), + [] + ); + const leftIndicatorAnimatedStyle = useAnimatedStyle(() => { + const leftIndicatorRotate = interpolate( + animatedIndex.value, + [0, 1, 2], + [toRad(-30), 0, toRad(30)], + Extrapolate.CLAMP + ); + return { + transform: transformOrigin( + { x: 0, y: indicatorTransformOriginY.value }, + { + rotate: `${leftIndicatorRotate}rad`, + }, + { + translateX: -5, + } + ), + }; + }); + const rightIndicatorStyle = useMemo( + () => ({ + ...styles.indicator, + ...styles.rightIndicator, + }), + [] + ); + const rightIndicatorAnimatedStyle = useAnimatedStyle(() => { + const rightIndicatorRotate = interpolate( + animatedIndex.value, + [0, 1, 2], + [toRad(30), 0, toRad(-30)], + Extrapolate.CLAMP + ); + return { + transform: transformOrigin( + { x: 0, y: indicatorTransformOriginY.value }, + { + rotate: `${rightIndicatorRotate}rad`, + }, + { + translateX: 5, + } + ), + }; + }); + // #endregion + + // render + return ( + + + + {title} + + ); +}; + +export default Handle; + +const styles = StyleSheet.create({ + header: { + alignContent: 'center', + alignItems: 'center', + + backgroundColor: '#fff', + paddingVertical: 14, + borderBottomWidth: 1, + borderBottomColor: '#fff', + }, + title: { + alignSelf: 'flex-start', + paddingLeft: 4, + marginTop: 26, + fontSize: 20, + lineHeight: 20, + textAlign: 'center', + fontWeight: 'bold', + }, + indicator: { + position: 'absolute', + width: 10, + top: 20, + height: 4, + backgroundColor: 'gray', + }, + leftIndicator: { + borderTopStartRadius: 2, + borderBottomStartRadius: 2, + }, + rightIndicator: { + borderTopEndRadius: 2, + borderBottomEndRadius: 2, + }, +}); diff --git a/app/components/Header/Header.styled.tsx b/app/components/Header/Header.styled.tsx index c07ee6b..034b0a9 100644 --- a/app/components/Header/Header.styled.tsx +++ b/app/components/Header/Header.styled.tsx @@ -1,12 +1,9 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ - -/* eslint-disable @typescript-eslint/no-unused-vars */ -// @ts-nocheck @ts-ignore -// FIXME: @ts-ignore import React from 'react'; -import { Dimensions, Image, Text, View } from 'react-native'; +import { Dimensions, View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import colors from '@oxvo-mobile/assets/colors.json'; + import { SAFE_AREA_TOP_MARGIN } from '@oxvo-mobile/constants/ui'; import styled from 'styled-components/native'; @@ -43,18 +40,15 @@ const HeaderContainer = styled((props) => { ); })` padding: 24px; - padding-bottom: 8px; display: flex; flex-direction: row; align-items: center; - justify-content: space-between; - z-index: 3; - background-color: #fdfdfd; + background-color: ${colors.base.white}; border-bottom-width: 1px; - border-bottom-color: #eeeeee; + border-bottom-color: ${colors.base.lightGray}; `; export { HeaderContainer, RightElement, LeftElement, MiddleElement }; diff --git a/app/components/SessionCard/SessionCard.tsx b/app/components/SessionCard/SessionCard.tsx new file mode 100644 index 0000000..624fa3e --- /dev/null +++ b/app/components/SessionCard/SessionCard.tsx @@ -0,0 +1,61 @@ +import React, { memo } from 'react'; +import { Text, View } from 'react-native'; + +import colors from '@oxvo-mobile/assets/colors.json'; + +import { AntDesign } from '@expo/vector-icons'; +import styled from 'styled-components/native'; + +const Container = styled.View` + padding: 4px; + border-radius: 8px; + width: 100%; + height: 64px; + background-color: #f7f5eb; + border: 1px solid #e5e5e5; +`; + +const Top = styled.View` + flex-direction: row; + justify-content: space-between; + align-items: center; +`; + +const Content = styled.View` + flex-direction: row; + justify-content: space-between; + align-items: center; +`; + +const CompanyServiceText = styled.Text` + font-size: 12px; + font-weight: 600; +`; + +const DateText = styled.Text` + font-size: 8px; + font-weight: 300; +`; + +// before session +// join (left green), awaiting (left yellow), canceled (left red) +// after session +// completed (all green), not attended (all gray) + +const SessionCard = () => { + return ( + + + Pilates + 16:30 - 17:30 + + + Peter Stan + 16.01.2023 + + Hello + + ); +}; + +export default memo(SessionCard); diff --git a/app/constants/oxvo.ts b/app/constants/oxvo.ts index d555270..f669a79 100644 --- a/app/constants/oxvo.ts +++ b/app/constants/oxvo.ts @@ -17,17 +17,10 @@ enum CompanyType { EDUCATION = 'EDUCATION', } -enum Currency { - USD = 'USD', - EUR = 'EUR', - GBP = 'GBP', - TRY = 'TRY', -} - enum CompanyServiceType { WORKOUT = 'WORKOUT', MEETING = 'MEETING', ONLINE = 'ONLINE', } -export { Currency, CompanyType, UserRoles, SessionStatusType, CompanyServiceType }; +export { CompanyType, UserRoles, SessionStatusType, CompanyServiceType }; diff --git a/app/screens/PrivateScreens/Home/Home.skeleton.tsx b/app/screens/PrivateScreens/Home/Home.skeleton.tsx new file mode 100644 index 0000000..fc8f1ba --- /dev/null +++ b/app/screens/PrivateScreens/Home/Home.skeleton.tsx @@ -0,0 +1,31 @@ +import React, { memo } from 'react'; +import { View } from 'react-native'; + +import useCurrentUserRole from '@oxvo-mobile/domains/Me/hooks/useCurrentUserRole'; + +import Shimmer from '@oxvo-mobile/components/Shimmer/Shimmer'; + +import { UserRoles } from '@oxvo-mobile/constants/oxvo'; + +const HomeSkeleton = () => { + const currentUserRole = useCurrentUserRole(); + + return ( + + + + + + {UserRoles.CLIENT === currentUserRole && ( + + + + + + + )} + + ); +}; + +export default memo(HomeSkeleton); diff --git a/app/screens/PrivateScreens/Home/Home.tsx b/app/screens/PrivateScreens/Home/Home.tsx index 9d98526..8ae9e76 100644 --- a/app/screens/PrivateScreens/Home/Home.tsx +++ b/app/screens/PrivateScreens/Home/Home.tsx @@ -1,5 +1,7 @@ -import React from 'react'; -import { Button, SkeletonView, Text, View } from 'react-native-ui-lib'; +import React, { useCallback, useMemo, useRef } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Button, ScrollView, StyleSheet } from 'react-native'; +import { Text, View } from 'react-native-ui-lib'; import useAuthStore from '@oxvo-mobile/domains/Auth/store/useAuthStore'; @@ -8,19 +10,64 @@ import useHome from '@oxvo-mobile/domains/Home/queries/useHome'; import useCurrentUserRole from '@oxvo-mobile/domains/Me/hooks/useCurrentUserRole'; import useMe from '@oxvo-mobile/domains/Me/queries/useMe'; +import HomeSkeleton from '@oxvo-mobile/screens/PrivateScreens/Home/Home.skeleton'; + import Container from '@oxvo-mobile/components/Containers/Private/Container.styled'; -import Shimmer from '@oxvo-mobile/components/Shimmer/Shimmer'; +import CustomHandle from '@oxvo-mobile/components/CustomHandle'; +import SessionCard from '@oxvo-mobile/components/SessionCard/SessionCard'; import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; -import { UserRoles } from '@oxvo-mobile/constants/oxvo'; +import colors from '@oxvo-mobile/assets/colors.json'; + import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; import { useNavigation } from '@react-navigation/native'; +import BottomSheet, { BottomSheetFlatList } from '@gorhom/bottom-sheet'; + const HomeScreen = () => { + const navigateSessionsHomeScreen = () => { + navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { + screen: PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME, + }); + }; + + const purgeCompanySettingsInStorage = () => { + onLogout({ purgeCompanySettingsInStorage: true }); + }; + const sheetRef = useRef(null); + + // variables + const data = useMemo( + () => + Array(50) + .fill(0) + .map((_, index) => `index-${index}`), + [] + ); + const snapPoints = useMemo(() => ['15%', '50%', '90%'], []); + + // callbacks + const handleSheetChange = useCallback((index) => { + console.log('handleSheetChange', index); + }, []); + const handleSnapPress = useCallback((index) => { + sheetRef.current?.snapToIndex(index); + }, []); + const handleClosePress = useCallback(() => { + sheetRef.current?.close(); + }, []); + + // render + const renderItem = useCallback(({ item }) => , []); + const renderCustomHandle = useCallback( + (props) => , + [] + ); const { data: homeData, isLoading, isError } = useHome(); const { data: meData, isLoading: isLoadingMe } = useMe(); + const { t } = useTranslation(); const { navigate } = useNavigation(); @@ -32,39 +79,51 @@ const HomeScreen = () => { if (isLogoutProcessing) return Logging out...; // if (isLoadingMe) return ; - if (isLoading) - return ( - - - - - - {UserRoles.CLIENT === currentUserRole && ( - - - - - - - )} - - ); + if (isLoading) { + return ; + } if (isError) return Home Data has Error; - const navigateSessionsHomeScreen = () => { - navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { - screen: PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME, - }); - }; - - const purgeCompanySettingsInStorage = () => { - onLogout({ purgeCompanySettingsInStorage: true }); - }; - return ( - <> - Last Counts + + Today's Sessions + + + + + + + + + + + + + + + {/* + - + */} + ); }; - +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + + contentContainer: { + rowGap: 12, + backgroundColor: '#fff', + }, + itemContainer: { + backgroundColor: 'red', + padding: 6, + margin: 6, + }, + title: { + alignSelf: 'flex-start', + fontSize: 20, + marginBottom: 12, + lineHeight: 20, + textAlign: 'center', + fontWeight: 'bold', + }, +}); export default HomeScreen; diff --git a/i18n.tsx b/i18n.tsx new file mode 100644 index 0000000..a233070 --- /dev/null +++ b/i18n.tsx @@ -0,0 +1,149 @@ +import { initReactI18next } from 'react-i18next'; + +import i18n from 'i18next'; + +const resources = { + en: { + translation: { + welcome: 'Welcome to React', + partials: { + header: { + profile: 'Profile', + createSession: 'Create Session', + addService: 'Add Service', + }, + bottomTabBar: { + home: 'Home', + calendar: 'Calendar', + notification: 'Notification', + overview: 'Overview', + }, + }, + screens: { + privateScreens: { + addService: {}, + calendar: {}, + home: { + lastCounts: 'Last Counts', + todaysSessions: "Today's Sessions", + }, + notifications: {}, + overview: { + tabView: { + myNetwork: { + myClients: {}, + myStaffs: {}, + }, + myUpdates: { + myPackages: {}, + myServices: {}, + }, + }, + }, + profile: { + accountSettings: {}, + changePassword: {}, + profileHome: {}, + }, + sessions: { + createSession: {}, + sessionDetail: {}, + sessionHome: {}, + }, + }, + publicScreens: { + partials: { + header: {}, + bottom: {}, + }, + screens: { + auth: { + forgotPassword: {}, + inviteCode: {}, + signIn: {}, + signUp: {}, + }, + }, + }, + }, + }, + }, + tr: { + translation: { + welcome: 'Welcome to React', + partials: { + header: { + profile: 'Profil', + createSession: 'Seans Oluştur', + addService: 'Hizmet Ekle', + }, + bottomTabBar: { + home: 'Ana Sayfa', + calendar: 'Takvim', + notification: 'Bildirimler', + overview: 'Genel Bakış', + }, + }, + screens: { + privateScreens: { + addService: {}, + calendar: {}, + home: { + lastCounts: 'Güncel Paketler', + todaysSessions: 'Bugunkü Oturumlar', + }, + notifications: {}, + overview: { + tabView: { + myNetwork: { + myClients: {}, + myStaffs: {}, + }, + myUpdates: { + myPackages: {}, + myServices: {}, + }, + }, + }, + profile: { + accountSettings: {}, + changePassword: {}, + profileHome: {}, + }, + sessions: { + createSession: {}, + sessionDetail: {}, + sessionHome: {}, + }, + }, + publicScreens: { + partials: { + header: {}, + bottom: {}, + }, + screens: { + auth: { + forgotPassword: {}, + inviteCode: {}, + signIn: {}, + signUp: {}, + }, + }, + }, + }, + }, + }, +}; + +i18n.use(initReactI18next).init({ + compatibilityJSON: 'v3', + resources, + lng: 'tr', + fallbackLng: 'en', + + interpolation: { + escapeValue: false, + }, +}); + +export default i18n; diff --git a/package.json b/package.json index 7412d6b..9948f6b 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dependencies": { "@expo-google-fonts/poppins": "0.2.3", "@expo/vector-icons": "^13.0.0", + "@gorhom/bottom-sheet": "^4", "@hookform/resolvers": "3.0.0", "@react-native-async-storage/async-storage": "1.18.1", "@react-navigation/bottom-tabs": "6.5.7", @@ -23,12 +24,15 @@ "expo-secure-store": "12.1.1", "expo-splash-screen": "~0.18.2", "expo-status-bar": "1.4.4", + "i18next": "^22.4.15", "react": "18.2.0", "react-hook-form": "7.43.9", + "react-i18next": "^12.2.2", "react-native": "0.71.7", "react-native-gesture-handler": "2.9.0", "react-native-linear-gradient": "^2.6.2", "react-native-reanimated": "2.14.4", + "react-native-redash": "^18.1.0", "react-native-safe-area-context": "4.5.1", "react-native-screens": "3.20.0", "react-native-shimmer-placeholder": "^2.0.9", @@ -36,6 +40,7 @@ "react-native-toast-message": "2.1.6", "react-native-ui-lib": "7.3.2", "styled-components": "5.3.9", + "tamagui": "^1.20.7", "zod": "3.21.4", "zustand": "4.3.7" }, diff --git a/yarn.lock b/yarn.lock index 465b645..8238d36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1059,6 +1059,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.13.10", "@babel/runtime@^7.20.6": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -1497,11 +1504,61 @@ find-up "^5.0.0" js-yaml "^4.1.0" +"@floating-ui/core@^1.1.0", "@floating-ui/core@^1.2.6": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0" + integrity sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg== + +"@floating-ui/dom@^1.2.1": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.7.tgz#c123e4db014b07b97e996cd459245fa217049c6b" + integrity sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg== + dependencies: + "@floating-ui/core" "^1.2.6" + +"@floating-ui/react-dom@^1.2.2", "@floating-ui/react-dom@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-1.3.0.tgz#4d35d416eb19811c2b0e9271100a6aa18c1579b3" + integrity sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g== + dependencies: + "@floating-ui/dom" "^1.2.1" + +"@floating-ui/react-native@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@floating-ui/react-native/-/react-native-0.9.0.tgz#91c14cc3aa7dc9d8ad539cdd91df8a47a74eb329" + integrity sha512-0Q73XJZabyJEOhee2PdBunD6eDkXyEF1OzxVrzAWC3RJcymSLv5L4nrZtZ7j5Wy4bCt1BYweEJMNwEkgopEyGw== + dependencies: + "@floating-ui/core" "^1.1.0" + +"@floating-ui/react@^0.19.1": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.19.2.tgz#c6e4d2097ed0dca665a7c042ddf9cdecc95e9412" + integrity sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w== + dependencies: + "@floating-ui/react-dom" "^1.3.0" + aria-hidden "^1.1.3" + tabbable "^6.0.1" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@gorhom/bottom-sheet@^4": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@gorhom/bottom-sheet/-/bottom-sheet-4.4.5.tgz#b9041b01ce1af9a936e7c0fc1d78f026d759eebe" + integrity sha512-Z5Z20wshLUB8lIdtMKoJaRnjd64wBR/q8EeVPThrg+skrcBwBPHfUwZJ2srB0rEszA/01ejSJy/ixyd7Ra7vUA== + dependencies: + "@gorhom/portal" "1.0.14" + invariant "^2.2.4" + +"@gorhom/portal@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@gorhom/portal/-/portal-1.0.14.tgz#1953edb76aaba80fb24021dc774550194a18e111" + integrity sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A== + dependencies: + nanoid "^3.3.1" + "@graphql-typed-document-node/core@^3.1.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" @@ -1697,6 +1754,28 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@radix-ui/react-use-callback-ref@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz#934b6e123330f5b3a6b116460e6662cbc663493f" + integrity sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-escape-keydown@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz#dc80cb3753e9d1bd992adbad9a149fb6ea941874" + integrity sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "0.1.0" + +"@radix-ui/react-use-previous@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-0.1.1.tgz#0226017f72267200f6e832a7103760e96a6db5d0" + integrity sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg== + dependencies: + "@babel/runtime" "^7.13.10" + "@react-native-async-storage/async-storage@1.18.1": version "1.18.1" resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.18.1.tgz#b1aea4f07fb1dba3325b857b770671517ddab221" @@ -1976,6 +2055,680 @@ dependencies: "@sinonjs/commons" "^2.0.0" +"@tamagui/adapt@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/adapt/-/adapt-1.20.7.tgz#4bb6a850983fcc9b9fb0d3337d13841d4b1fa03d" + integrity sha512-fWV/Bwgq7hHH6pdd1iSDhD4nG/KmfnVObc0I0ZoNFpvjCI90f2NOjyzUwlYdajzvDcQbRFh3PIU1lkMQ4uSOVQ== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/alert-dialog@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/alert-dialog/-/alert-dialog-1.20.7.tgz#34ce23e8ea1ad4e4ff319051ff38ccee0000f13e" + integrity sha512-fRTcqhFYMX/opCkciZMYWToZK2rw71Z1ombENRsHeejD3z0yXMcjuGSuEGp6hjgvCIFmsgXpBq7blZ1sRx5qAg== + dependencies: + "@tamagui/animate-presence" "1.20.7" + "@tamagui/aria-hidden" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/dialog" "1.20.7" + "@tamagui/dismissable" "1.20.7" + "@tamagui/focus-scope" "1.20.7" + "@tamagui/polyfill-dev" "1.20.7" + "@tamagui/popper" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/remove-scroll" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/animate-presence@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/animate-presence/-/animate-presence-1.20.7.tgz#9d8d58b5c4bf7d61008678895af27fd596d519f1" + integrity sha512-Lo2mM1FKQIbESh+EBKQN+vC8G/uoc8aj9PkwZ2UskBkbGeSAplU249H7+vCckKDXb7706GanmsyRFYKKnI5ZlQ== + dependencies: + "@tamagui/use-presence" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/animations-react-native@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/animations-react-native/-/animations-react-native-1.20.7.tgz#97d0357266c65772f4f3584683204352e73d80d5" + integrity sha512-5HUPRLqJuInQITliBzDxQJXQtgOKIFsJDoXsPZDYE4RHSPB6p7JZCdcCvvpJio3s4zNX42ycvM0J3/6FJLNHMQ== + dependencies: + "@tamagui/use-presence" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/aria-hidden@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/aria-hidden/-/aria-hidden-1.20.7.tgz#568ea20fee38bd09b56733cb58055c88e8434f70" + integrity sha512-Fz+IXPjwiu4Qcg76brn1rPRd5Qbg5DeESoPL6BXe0HTdbKE0o0KnBGOd33FXeTqP7qhEr8S02harYJxK3e4EuQ== + dependencies: + aria-hidden "^1.1.3" + +"@tamagui/avatar@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/avatar/-/avatar-1.20.7.tgz#06714b56275e29269e1085171ec81ba6f4c4de03" + integrity sha512-dtlRAJ6F3bwEUXqB9cQ9ZwGWAx1DoJJaymjEwiogj12HYg3tP2yOK/ygc5zxjOT+LslnQPfxIFxaL1cZe2zpAw== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/image" "1.20.7" + "@tamagui/shapes" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/button@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/button/-/button-1.20.7.tgz#dba9f41dbf652d35b7c490a33429a6b11c974579" + integrity sha512-+bZAxbLnhNvoGyFooBuZwLgg6V8YXbYoy+zX5DYUdRKqDzITTfTigrS91pMETslMnYd4gYAm66brxZ93hIurpw== + dependencies: + "@tamagui/font-size" "1.20.7" + "@tamagui/get-button-sized" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/card@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/card/-/card-1.20.7.tgz#b4e6833f10a37895a35e313464f568e03964a9d9" + integrity sha512-Lvo4/YuCPP6XbMyrGmZKrzAl2O9i1tQzhCxntGAkBvU0hhqG6t/UtdXtuYnja/SqrviLovBDrxScApnXj3vSNA== + dependencies: + "@tamagui/create-context" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/checkbox@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/checkbox/-/checkbox-1.20.7.tgz#d741495e7012b3e3fb3e7f7993fb7b69dc26037c" + integrity sha512-7NidKeu8tiAIM28Dctf6RNckBsj8aD1P2m4Hhp6SmJdGycPW0kgLcoTeVuqsjlqpa/3kzi7GglNRcvw4k38N8Q== + dependencies: + "@radix-ui/react-use-previous" "^0.1.1" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/font-size" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/label" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/collection@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/collection/-/collection-1.20.7.tgz#026b37944f8527d8c69ddf8a989b957246b3aa65" + integrity sha512-TAUIAf449cuPrCVXwooswTHRfJrdEqBKamwyuzjYw9nc+QPojKfroHb46APWaWpjjrQF9JQa5LVHnEeAyKlc0A== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/polyfill-dev" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/compose-refs@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/compose-refs/-/compose-refs-1.20.7.tgz#fc8345bbd5a8efd6800b2028403b602bc99f7db1" + integrity sha512-JdNH5BdbO5kxgcoK/Bgroh/UlvSNJvmcj9ZC4V44uplQGYk/ZOnuBvcxFHYuy60HeSAPtLal0HwFMXB3Cs5mzQ== + +"@tamagui/constants@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/constants/-/constants-1.20.7.tgz#e2162ccbef76ea99a525fd14309222c71fd8f1af" + integrity sha512-3BAj0R+Xsy27ggdj6uahYRHjr1irfPJB3/ElDFoofRGWcdpzt8zST6S0kDTpzxpU2fBgoylsBbLTJA+0FrJ0IA== + +"@tamagui/core@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/core/-/core-1.20.7.tgz#0042f7555af2b97de871620858599998d4c55590" + integrity sha512-MuZWdx/qrSlGHCKQwsERGxp7j9RiZyKWU0nH9Ok+KQAw6KRTmn2UnFtmNGCXS02LTVXzRPlVHL6jd4ggJ3/G4A== + dependencies: + "@tamagui/react-native-use-pressable" "1.20.7" + "@tamagui/react-native-use-responder-events" "1.20.7" + "@tamagui/use-event" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/create-context@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/create-context/-/create-context-1.20.7.tgz#9a8693cd93d79b4f563ebbd0e582b22c00a9271b" + integrity sha512-tEfvEPF2jiKPJ7/MzFHrDypG+Yl/KtsC1iSZlnFAjhiueJtA0anm+BN4jR8ddwJmkiQYqH+NpTuCybfiqEjgTA== + +"@tamagui/dialog@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/dialog/-/dialog-1.20.7.tgz#7823031e7a1ae79b3bb651ac8bbed383562dc85f" + integrity sha512-aUWqE2SnZ7bac3ciUV9ft6F2ml4cXclZMcQ6eU5l2a9XbinreYhfLOTRpl8Y87ZQXXW15OPVB6Yny5hg+kMnTg== + dependencies: + "@tamagui/adapt" "1.20.7" + "@tamagui/animate-presence" "1.20.7" + "@tamagui/aria-hidden" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/dismissable" "1.20.7" + "@tamagui/focus-scope" "1.20.7" + "@tamagui/polyfill-dev" "1.20.7" + "@tamagui/popper" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/remove-scroll" "1.20.7" + "@tamagui/sheet" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/dismissable@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/dismissable/-/dismissable-1.20.7.tgz#f018d2c775f4eea82fca0ccbd70f35a3328182cb" + integrity sha512-e93Zky1nfGK6TqM829hDU6Fgilc5anXYp9oz9qXXPJcSa8b46EuRqBTGcXB9hOcXT1aLQ4n+ba9AdfVwAgnCUQ== + dependencies: + "@radix-ui/react-use-escape-keydown" "^0.1.0" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/fake-react-native@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/fake-react-native/-/fake-react-native-1.20.7.tgz#2d5bed5e31b2cd5f4936e84e0012f903b20e47b8" + integrity sha512-gFKOW0U/Zo8LTu25cOmq2oY0ih6PxgE51hzpwLk75fFUPdL8w5fUdpylQzc/CKltOgCJLAJsQiq8rGs6NiK3DQ== + +"@tamagui/floating@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/floating/-/floating-1.20.7.tgz#af0380ea818dc4538b15f35db0be078538d3bb2e" + integrity sha512-RWXBaJg2qlhiVbV+ajRg3U9X+LSq/ls8vRE1PMivrwQkzeu9bLD8zZs/b0HCSHhGeS58bbtpwGyAfrzkzjaIJA== + dependencies: + "@floating-ui/react-dom" "^1.2.2" + "@floating-ui/react-native" "^0.9.0" + +"@tamagui/focus-scope@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/focus-scope/-/focus-scope-1.20.7.tgz#0cdf99ed0e9d3267922ef5e336e944d21bbfea12" + integrity sha512-Oiwk19YBatcHABxFoqcJRAOkOHLhjG/sFqHVkvtqyJBMjfwxfkd6sCHn6GvoLV1dgVzR9sxMOptwJUV+Dnp+eQ== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/focusable@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/focusable/-/focusable-1.20.7.tgz#cc583264ef5812e9ae6087ddb989c461328d5752" + integrity sha512-JO5oFINBl8zSf067g7twTkQzgWnXuiY8TY89jEq34AHga5JRrmGXut8pKXwJaLbkjS6d3noChb7mnV0eWjHtdA== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/font-size@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/font-size/-/font-size-1.20.7.tgz#a96cc2f9971e8cf2a1feb81401385e103e59fe2d" + integrity sha512-RxihTYb4YpkZ0AwDjykTriCLqJ6zK37GhDIRdVEdjYwj8TBHUbt4KG+QMr7Ybx2Yz0eU/oyYTPHpN/dZRXIrPQ== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/form@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/form/-/form-1.20.7.tgz#353546a9420d62a0e591874fa2ac98a1a33716fa" + integrity sha512-v8K05koB7Hcsi0gotdjG7iLQ9Hy9HsyIIj0sDM65RilSsj94smcPmkaTDoKEId66TEG29UngBjP3JjBFlhOM6Q== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/get-button-sized" "1.20.7" + "@tamagui/get-font-sized" "1.20.7" + "@tamagui/text" "1.20.7" + +"@tamagui/get-button-sized@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/get-button-sized/-/get-button-sized-1.20.7.tgz#6514f0f39c90d14305cd9487ec5dbba7e0ca372e" + integrity sha512-5Vif0HNmOfmzuoy0jLTHovj3mll0/KpcXnbnbUG3jkTtXmKl9CQnYUkUxjHyxuUXQZyzpTwG1kMzmkl+PQUHuA== + dependencies: + "@tamagui/get-size" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/get-font-sized@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/get-font-sized/-/get-font-sized-1.20.7.tgz#9ba0568680e19bf19fb20a25a276d07dd5187197" + integrity sha512-s0Sw4Pws++SVNYMhr5V7GFSWgWUgAsR8GquUqTt45Kj7ZuBVODVf/PDASVnW82kgf/LQ4FI+JwkjzPLKkVzUqQ== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/get-size@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/get-size/-/get-size-1.20.7.tgz#3e01c35c623bdb872fe4f2d57ee776e11f6b1126" + integrity sha512-3he1Ly6S7SSe/cwo4lkE6NV1LkrwDEhY9y6lTNpq368AOP+ZQuifRvothmDqCANtye5bnAepiSAMg3hgZLrZ4Q== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/group@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/group/-/group-1.20.7.tgz#040a68c13b10dc4362df2cb2f0cde9caeb61f9a0" + integrity sha512-AX28zn62dJsfv+fFa006QzAJ2+xTuW0Okm0mxMwOLv/+RIXba8qGbXjPvjQaV/yTuySIcTcPqPWx3GzMkK4AaA== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + reforest "^0.12.1" + +"@tamagui/helpers-tamagui@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/helpers-tamagui/-/helpers-tamagui-1.20.7.tgz#d7182fa11d7752f3b8e01e342cde896339ab4615" + integrity sha512-tzIoTPnmhiqM1zN2ivZKLe5Psl0AysnWUSmOza/TMdPSuyfXyDi6RzDILdzE0QDPR/ramIceDSMN8P/aeOwZtg== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/helpers" "1.20.7" + +"@tamagui/helpers@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/helpers/-/helpers-1.20.7.tgz#7e6d9577dc1b688dfff323d60da738e23f638ff4" + integrity sha512-4IbfYaRIyrgUCCVRVK7bHK55jWca3gawTP3k6k+kSdFuua4fIrGMB3FGjGDdse0ZZexfM9VgXzmAVOzA7Oq1qA== + dependencies: + "@tamagui/simple-hash" "1.20.7" + +"@tamagui/image@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/image/-/image-1.20.7.tgz#1ebc8184cd910aec3ca531382be632a8b9baac7a" + integrity sha512-Be4WVYfK72y5lVsjql+4XJwT/GMVTVRmn9E1OHnG+0O10yMuya/Tr5kHewl+B2cvp6ouDuM8arwlJiKqF76utw== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/label@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/label/-/label-1.20.7.tgz#59da31009c421c6baff79cd2dba2d7ff1e006e94" + integrity sha512-NfQqrTROIuCQFhQQXc/kTGuKJgCCmaHc8kiKzcPyY7+DtKdkPS4n2NmDOjyco7x8Kadg7O8RgqIc1vFBwadEDg== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/get-button-sized" "1.20.7" + "@tamagui/get-font-sized" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/linear-gradient@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/linear-gradient/-/linear-gradient-1.20.7.tgz#66eeb9f1d6f53f2e6129877127fbeef3e1f43fd1" + integrity sha512-WqVHfxbUyKVo+7esNAd85bHdTmWKxQIs5I/07Vv6MfRi+zzsplH86ERSKC5v0KMgRRjZMOuHP9bOKviB9CyVyQ== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/stacks" "1.20.7" + +"@tamagui/list-item@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/list-item/-/list-item-1.20.7.tgz#9681167f64c50771968788c8dbd04631083b6390" + integrity sha512-YVjZ+YeTy9COOjlmhmwaff8SuWLKYU+VLD37mCIu2HeBbPtev2gQd7ILcOpGHwG5I1dimsfI2Lb2GHj8iASYQA== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/font-size" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/text" "1.20.7" + +"@tamagui/normalize-css-color@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/normalize-css-color/-/normalize-css-color-1.20.7.tgz#3e1380b1d79f76de2613050c74621d514b1939de" + integrity sha512-Evn0zZvvzeMwZehXjzho65bvjDvytfeKc7lL7VW2nmnFk+MiY4MqnmuDzOzEGQ6J5+QInHgU7pd+rQsd95pKjg== + +"@tamagui/polyfill-dev@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/polyfill-dev/-/polyfill-dev-1.20.7.tgz#3fe77b9b464a6a776d1f6baa790d7ae9f6f829db" + integrity sha512-jCY0bsXsrVIaqSPwKLIf5eKb1UW+uCA706LbRLOFoG+ojQsBFztBhbrd8jzjF1A9s9IRmrMm82XS+26wvqIi1A== + +"@tamagui/popover@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/popover/-/popover-1.20.7.tgz#22d54b3dd0de60ae1e3352e9a56145111a22f57f" + integrity sha512-9cKwMG7NW4UshmWATkmDZfrkkUOx+hiEEL5BcX0w+tnVWlQakY5dtH9zNcwTJlWRfUp/VfvRNVb3JS12Rah5jQ== + dependencies: + "@floating-ui/react" "^0.19.1" + "@tamagui/adapt" "1.20.7" + "@tamagui/animate-presence" "1.20.7" + "@tamagui/aria-hidden" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/dismissable" "1.20.7" + "@tamagui/floating" "1.20.7" + "@tamagui/focus-scope" "1.20.7" + "@tamagui/polyfill-dev" "1.20.7" + "@tamagui/popper" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/remove-scroll" "1.20.7" + "@tamagui/scroll-view" "1.20.7" + "@tamagui/sheet" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/popper@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/popper/-/popper-1.20.7.tgz#460dc32ec38f68b9067e891cece3ffc9b9feeb73" + integrity sha512-Tm0fdJ0lwCXc0VYEeIR+6aJ1hy2U2XRoWuGb5/2l/WVwCregXC+I3r7ux+R/Hue3ZNocI27hDczbGX5qdR92Kg== + dependencies: + "@floating-ui/react-dom" "^1.2.2" + "@floating-ui/react-native" "^0.9.0" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/floating" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/portal@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/portal/-/portal-1.20.7.tgz#d39a0c64c65f96d8c0526166ac3bf2e05c9d9aa0" + integrity sha512-pqM56arptL1C2zc5J/XQGrYM1urrWciwirtI5y012f7/3rmzE5g+ROlWidD3AnfuB4qtKJkrWnOSqT+I43GjhA== + dependencies: + "@tamagui/core" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/progress@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/progress/-/progress-1.20.7.tgz#7f3068356e01b00cbcb3b152f9d6b23949071367" + integrity sha512-7IkJvd3kqfTtbqcsHT7SMJcrQX7n3Qm5Y/B387l/uD7hc2x3bG4SCpvADhRtsNG75bxqamLQf8Vfq56pusotqg== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/stacks" "1.20.7" + +"@tamagui/radio-group@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/radio-group/-/radio-group-1.20.7.tgz#f1bc4b61a8a1b173f25abbc39f1ec9bc3489be07" + integrity sha512-pYJhY2MEew9Mm7hX8bIvihUluwx7gH+iouOx5mSYP56xqSOWpsabsLz21WqTbrVX7AUkY/oAJ1Lf7+Zs65Q3ZQ== + dependencies: + "@radix-ui/react-use-previous" "^0.1.1" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/label" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/react-native-media-driver@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/react-native-media-driver/-/react-native-media-driver-1.20.7.tgz#78692c88f7f7b7dcdf7da8b7585f87f3a1b63dff" + integrity sha512-62jmPLslFlhQ0rcLaGjbyBF5kyfjfUd8Fn32F/YRBWwPlscfb/YhkKB1qGBMRR2UufkB8WbbBRwufr68UpT+sw== + dependencies: + "@tamagui/web" "1.20.7" + css-mediaquery "^0.1.2" + +"@tamagui/react-native-use-pressable@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/react-native-use-pressable/-/react-native-use-pressable-1.20.7.tgz#42c9c1726738cb779ffd8643685130ef0efd8780" + integrity sha512-Es71Q7h+IW4CacKu/yfqU3283/Fh+i82U0vjZ7xN4zAKWhULjWwH5oFH6eJ6dwu4IbEP/oq5GPvqKmhLIPdIrA== + +"@tamagui/react-native-use-responder-events@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/react-native-use-responder-events/-/react-native-use-responder-events-1.20.7.tgz#85116680c461e07584a58aa1c5a7e5c22ad8446a" + integrity sha512-VeESP3RDL1kt6G9FHHH2EYPJ1go9jxbuHD8ipkN7p/nq4I6hbE+jkYuYZS4wCZqJv6qvskZ9SB5z02LSDWCQKA== + +"@tamagui/remove-scroll@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/remove-scroll/-/remove-scroll-1.20.7.tgz#7f159e930dc333c4d1387225f1b6587690f29e86" + integrity sha512-J5Y9lLf1lnjSpOOa18LCHS35FL/PJ+ifXalB5dV10yGcIOz3YMxsqE7kR4b250MW2uUWqq/mo9UQwYIdjqANUA== + dependencies: + react-remove-scroll "^2.5.5" + +"@tamagui/roving-focus@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/roving-focus/-/roving-focus-1.20.7.tgz#1698087a6edbedfeecac71996ee5d2bc661a1aef" + integrity sha512-in8f1qi41Kn7/iDwk038WCfWit/L9dzEu53zf3u32UpncManV+w/X6x/xZxs20VEe2HqtmRzfDaRcI9ZS0JNdQ== + dependencies: + "@tamagui/collection" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-direction" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/scroll-view@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/scroll-view/-/scroll-view-1.20.7.tgz#d8639f8a5a5f1e77a499ec5cbe5c838b66cc154f" + integrity sha512-QWgJFJUaBZ+cpzxkhKvZ7zprVtVPtpidS/MsXcwhtjdEnodg/ppxAWZEJTVUZXDTCypplZdbcWjZt3rPLx/9lQ== + dependencies: + "@tamagui/stacks" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/select@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/select/-/select-1.20.7.tgz#81c4386e998393efdec43b587e6ec44c2e5af8ad" + integrity sha512-38z3FLCvUapzD41ivNO3qntevSsG4cINRFLn0cqlIUgaAO058oHS2cQHMPgmNL/KTAaguX1++tAgg1QfDZDeSQ== + dependencies: + "@floating-ui/react" "^0.19.1" + "@floating-ui/react-dom" "^1.2.2" + "@floating-ui/react-native" "^0.9.0" + "@radix-ui/react-use-previous" "^0.1.1" + "@tamagui/adapt" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/dismissable" "1.20.7" + "@tamagui/focus-scope" "1.20.7" + "@tamagui/list-item" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/separator" "1.20.7" + "@tamagui/sheet" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-event" "1.20.7" + +"@tamagui/separator@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/separator/-/separator-1.20.7.tgz#af20775c871bace0684110416dc391055145919d" + integrity sha512-jIx02zSRfm0e05RAriE7P7tk00dg3elbvHTSXMjlSI3qZv9AryqCq5uOCFr516i1k+FJ2oIXQ68RL7hR5tu4lA== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/shapes@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/shapes/-/shapes-1.20.7.tgz#fede541289adff50ecd57136285f7b6e606d5afd" + integrity sha512-6eifiBzJSLqTIFZq+geXf62TKAegjByaKYWVENWbGX3G6TnB+S+a/m/N17Ov83n3crMac1GgnSykuN/pxNdprw== + dependencies: + "@tamagui/stacks" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/sheet@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/sheet/-/sheet-1.20.7.tgz#346a3802a47cb5deb2ff6a6fa6288409b5bf0b15" + integrity sha512-iCHRy0TFMQpuSQksx4LzI2vfkCBP4hTAxVWBCmAPG/1eKSHfOfbqgRy87vBldldQrrO6MimEOnqykxIpqDObGg== + dependencies: + "@tamagui/animations-react-native" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/remove-scroll" "1.20.7" + "@tamagui/scroll-view" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-constant" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-keyboard-visible" "1.20.7" + +"@tamagui/simple-hash@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/simple-hash/-/simple-hash-1.20.7.tgz#e24008134bf5386e0e68c948e17287c1c4fc0fbb" + integrity sha512-8z3RUJhsmPr6X9vVCWoAf0kWr1U/MmXyDRHrbxL3W2hdA4zYUyCcny/QB9jDPDoW/ZBhrTdIarL621NqqeUzSg== + +"@tamagui/slider@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/slider/-/slider-1.20.7.tgz#adb13da51750bcb8de56ccba9708f4d8632e18c1" + integrity sha512-8Um7NZjW07I+uxkgr+DCAMz9oXkGKzZ6I4D8MB3krIHFZDwkjgdocsFbu0DZyRv98c9a+CTbOxxHrPqXgRJ2wg== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/helpers" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-direction" "1.20.7" + +"@tamagui/stacks@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/stacks/-/stacks-1.20.7.tgz#230b89ff3d9380ae0f56ba1c6d33fcb4f9389974" + integrity sha512-ms4jYnv6q7i3OSRcV6luYQ6J2QX+zYJ9ramzqDGVAdMeLFOJGHs+QHahHEzumj2BIxtWZC/54U14Tik9zMW5zw== + dependencies: + "@tamagui/core" "1.20.7" + +"@tamagui/switch@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/switch/-/switch-1.20.7.tgz#9add7108e250b7d9a4381ee095035216000f6fe7" + integrity sha512-e8+JyytdVXN55YPy0QkYPYej5CZhXDKljDYZqHCUIOA6m/cmRCxDYtHaNdDvJYi+6OLxfD1V1CjYXI6ZH+O31g== + dependencies: + "@radix-ui/react-use-previous" "^0.1.1" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/label" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/tabs@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/tabs/-/tabs-1.20.7.tgz#ce215c271b6b44a60a85c778b82b4c5dd6dc5433" + integrity sha512-gqF3P5ut8uyjHH5mvi27KvAdFKojNCuTOXZx+jVXUnh0zsy/iWRu4JqESHPFCNhtvBSSOtY6Yph0BdXxkuzEAw== + dependencies: + "@tamagui/create-context" "1.20.7" + "@tamagui/get-button-sized" "1.20.7" + "@tamagui/group" "1.20.7" + "@tamagui/roving-focus" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-direction" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/text@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/text/-/text-1.20.7.tgz#80397782fb217eaf29dd29caa6badce36f4408cd" + integrity sha512-wkTfMFR8RPIzk54uO095r0HjYM//sypxeOYPilukdU6wrcEEIPKS2kbcMbCTUDhxa7rqHog5V4qf55OcxEsb/Q== + dependencies: + "@tamagui/get-font-sized" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/theme@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/theme/-/theme-1.20.7.tgz#143628e78f1854a16f7a00b5f9f8ad9dca9ba9ed" + integrity sha512-1k4OoGzjLVVw1PeOLmTlNQwmBhm9jsBn+Cr14IFrYjAj4RiWo7UM98OwP4LN18K0f9DGR1qsE7BWcDlRROFCzQ== + dependencies: + "@tamagui/constants" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/toggle-group@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/toggle-group/-/toggle-group-1.20.7.tgz#40970cdaa00b82493d06ece2de7bd6f677918712" + integrity sha512-ms/raNGj5S7UBjRWqgr6sVXlQ0vEyI8yM3fOlp6j/O4vV/LRiS9TfGaMv2FoU+xo2M+TFAhYAUQGu7SQnaZLEA== + dependencies: + "@tamagui/create-context" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/font-size" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/group" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/roving-focus" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-direction" "1.20.7" + "@tamagui/web" "1.20.7" + +"@tamagui/tooltip@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/tooltip/-/tooltip-1.20.7.tgz#3a9002995e6ad23d3ca18d7f52e115db51ed0dff" + integrity sha512-jXmPsuCaHJTw8yddmbu7PnPOGtq41pMeUnPl07Inh0CEu7VlrtdCPQfrgQsQcabZGSUqvN2qISChRFJ033zJLw== + dependencies: + "@floating-ui/react" "^0.19.1" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/floating" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/polyfill-dev" "1.20.7" + "@tamagui/popover" "1.20.7" + "@tamagui/popper" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + +"@tamagui/use-constant@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-constant/-/use-constant-1.20.7.tgz#6aaf311cf4ef3f8a19458928714b2135dd869835" + integrity sha512-4nMWFYT9zYmsnuE5MAt6j/NXiEPQzslrsr19QLzTtRTLa0VqmSRwXwANnJHcUNFxr4PFKq5sPsoYCwHlDCoU3A== + +"@tamagui/use-controllable-state@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-controllable-state/-/use-controllable-state-1.20.7.tgz#2d0e764f4ca46acf4065f6fc9f1a1873c6acfec0" + integrity sha512-gjjZS4A9YQ5s+gItf1HRdlaC1WN/ITw/6ZRD1kvuC1eaxIskgshPCgoWIIWY0Cnby7icLEJMbe7C1irhsRFQrA== + dependencies: + "@tamagui/use-event" "1.20.7" + +"@tamagui/use-debounce@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-debounce/-/use-debounce-1.20.7.tgz#99d044686c48793d5abc377c2a9820bb29f1dbcf" + integrity sha512-lPv0gYKdflU4DKr/cKQAuWOdxwHJp9dsqq0lkrq3SYJWuhDdiC7ekBP0hDO/IQro7MyW7u9b01c1edhQobGn9g== + +"@tamagui/use-did-finish-ssr@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-did-finish-ssr/-/use-did-finish-ssr-1.20.7.tgz#3d425e974cfcaed0d88f42972b8db87475e3e69d" + integrity sha512-U1aIpJChZ8/uDOn7+eC47SDbmKQeFWwe78BwGOAtPSdkrov1bKnSx7R8BVXRPd9wWBFlaLbmNpTh4zeVgOFu0w== + dependencies: + "@tamagui/constants" "1.20.7" + +"@tamagui/use-direction@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-direction/-/use-direction-1.20.7.tgz#495761f0a8826a820a0ca0d76cdfe542fa7e22e7" + integrity sha512-s+O1q2y2Tk2zSLGl9BvlL7cqHRndSvqfE1M5LLrw37jJoSIchE3D254HhHknCV0EEDd25UOS8yWMMBeAlOCPUA== + +"@tamagui/use-event@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-event/-/use-event-1.20.7.tgz#b864d49b92571ad3e8f55757a2751f1b873fe82f" + integrity sha512-dkmd4Ia343jLKRUipx1hCOackkrBFZTwfZbZc8ZAKIAwDcJbYyb2HPF3Zx3a5kIpUOTNMZZklBcSfFKiMgnjOg== + +"@tamagui/use-force-update@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-force-update/-/use-force-update-1.20.7.tgz#0c406e70ca1a302ad3091c7bc2453e1e0590c5d8" + integrity sha512-ZixkIcKfnJktVyze8tOtsvgvQWB5OMuX83Q/YFEVIh53KRDd0sRHOOC+hY2f6zDiyTAnQWauukEqGp2qT7vd2g== + +"@tamagui/use-keyboard-visible@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-keyboard-visible/-/use-keyboard-visible-1.20.7.tgz#052cd51c166debb628b2b087888444e96fff5958" + integrity sha512-MnkisztmIRrN9Jkm3/PaLwxuIMw5+fqW6Lhlk/DZbFX6mqqQYW7L1WjuQINEdShRk/OteXg9RZn8OkIJH/oi9Q== + +"@tamagui/use-presence@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-presence/-/use-presence-1.20.7.tgz#8af0384e894ae4b91475362830c8922a2cc7e3fb" + integrity sha512-0XLuVsyweE/8+1fVs8TwTwO78b1N+NZV8m3pk0jZjIevDD4pr5N6dsd1ZqC4/wdOgWDWaHuKMhEUjF4fDGMw/g== + dependencies: + "@tamagui/web" "1.20.7" + +"@tamagui/use-window-dimensions@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/use-window-dimensions/-/use-window-dimensions-1.20.7.tgz#fc1eb6e013ad452ecd5694dac5a868d58ad0c2e9" + integrity sha512-hck5En2u4mWv2byYpdA/sGqtHiYPU65jT9Rn5kxByFV+O399Jmjc3mZQ+OdY4m5rdzfxp4jg99BGhamlgvpLQw== + dependencies: + "@tamagui/constants" "1.20.7" + +"@tamagui/visually-hidden@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/visually-hidden/-/visually-hidden-1.20.7.tgz#66dbd6b57ed6fe5082ab61f4de5e936044fe36ec" + integrity sha512-/KcFKYUVYLDz+Ml42Qno1f/tvKodTNrHMUgsznDfM6RXG9wvjVhSf/qAPXiE9MwZzDmObBbxcYh+zWkF0QWz8g== + dependencies: + "@tamagui/web" "1.20.7" + +"@tamagui/web@1.20.7": + version "1.20.7" + resolved "https://registry.yarnpkg.com/@tamagui/web/-/web-1.20.7.tgz#ff513590cb8b916e105bb00e9a0ef07776c95b91" + integrity sha512-4qmtn8YVmPylLRTp+Pg3ncP0hpP5vMwqeRXrLCZEXUD3yS3dWFQDcSV3vulHDClh23OmuNLFTqT65YxzagrsLQ== + dependencies: + "@tamagui/compose-refs" "1.20.7" + "@tamagui/constants" "1.20.7" + "@tamagui/helpers" "1.20.7" + "@tamagui/normalize-css-color" "1.20.7" + "@tamagui/use-did-finish-ssr" "1.20.7" + "@tamagui/use-event" "1.20.7" + "@tamagui/use-force-update" "1.20.7" + "@tanstack/eslint-plugin-query@4.29.0": version "4.29.0" resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-4.29.0.tgz#2e50848945187ba4fde0aab033335fd4386934de" @@ -2547,6 +3300,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" + integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== + dependencies: + tslib "^2.0.0" + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -3503,6 +4263,11 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== +css-mediaquery@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0" + integrity sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q== + css-select@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" @@ -3709,6 +4474,11 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -4901,6 +5671,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has "^1.0.3" has-symbols "^1.0.3" +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -5157,6 +5932,13 @@ hosted-git-info@^3.0.2: dependencies: lru-cache "^6.0.0" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -5176,6 +5958,13 @@ https-proxy-agent@^5.0.1: agent-base "6" debug "4" +i18next@^22.4.15: + version "22.4.15" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.15.tgz#951882b751872994f8502b5a6ef6f796e6a7d7f8" + integrity sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg== + dependencies: + "@babel/runtime" "^7.20.6" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6601,7 +7390,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.1.23: +nanoid@^3.1.23, nanoid@^3.3.1: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -7095,6 +7884,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +performant-array-to-tree@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/performant-array-to-tree/-/performant-array-to-tree-1.11.0.tgz#cbb6c4a1a41a89b3a209dca7a8715cbe7d5a6a33" + integrity sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -7342,6 +8136,14 @@ react-hook-form@7.43.9: resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.43.9.tgz#84b56ac2f38f8e946c6032ccb760e13a1037c66d" integrity sha512-AUDN3Pz2NSeoxQ7Hs6OhQhDr6gtF9YRuutGDwPQqhSUAHJSgGl2VeY3qN19MG0SucpjgDiuMJ4iC5T5uB+eaNQ== +react-i18next@^12.2.2: + version "12.2.2" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-12.2.2.tgz#38a6fad11acf4f2abfc5611bdb6b1918d0f47578" + integrity sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg== + dependencies: + "@babel/runtime" "^7.20.6" + html-parse-stringify "^3.0.1" + "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -7411,6 +8213,15 @@ react-native-redash@^12.0.3: parse-svg-path "^0.1.2" use-memo-one "^1.1.1" +react-native-redash@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-native-redash/-/react-native-redash-18.1.0.tgz#ebebace19d0d2ed877cb6836b8c824b49354eb93" + integrity sha512-bdCFl/ZB7Rf2raIlU6SLV+Dc/rL6UXsQNjEVwTGBukHMeSKp1zs4zVtWaGimbN8P22N4qYvb9Jmw/K94ZWYG0Q== + dependencies: + abs-svg-path "^0.1.1" + normalize-svg-path "^1.0.1" + parse-svg-path "^0.1.2" + react-native-safe-area-context@4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.5.1.tgz#6651d216b86ce84a8e9399220a1010d3902d7a2e" @@ -7513,6 +8324,25 @@ react-refresh@^0.4.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== +react-remove-scroll-bar@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" + 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.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + 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-shallow-renderer@^16.15.0: version "16.15.0" resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" @@ -7521,6 +8351,15 @@ react-shallow-renderer@^16.15.0: object-assign "^4.1.1" react-is "^16.12.0 || ^17.0.0 || ^18.0.0" +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + 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.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -7565,6 +8404,14 @@ recast@^0.20.4: source-map "~0.6.1" tslib "^2.0.1" +reforest@^0.12.1: + version "0.12.3" + resolved "https://registry.yarnpkg.com/reforest/-/reforest-0.12.3.tgz#1c2d9fb5fb2d6870ce077c75eccddb59c3a6bd36" + integrity sha512-ztYqy3EGOhFObDF4EiNs0eOBYUN/plRrHjDO9vp3cEEuJtav6lPp1xbO/B8A0+NtKi43ysvhvhcsLCm13lJaZA== + dependencies: + performant-array-to-tree "^1.11.0" + zustand "^4.3.3" + regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -8369,6 +9216,67 @@ svg-arc-to-cubic-bezier@^3.0.0: resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6" integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g== +tabbable@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.1.1.tgz#40cfead5ed11be49043f04436ef924c8890186a0" + integrity sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg== + +tamagui@^1.20.7: + version "1.20.7" + resolved "https://registry.yarnpkg.com/tamagui/-/tamagui-1.20.7.tgz#b4e7f14b56d1264d16614f4ffa6d946080b85fd7" + integrity sha512-dIijEyR2q2MiGo6ZW66KsBa4xNhg9KMz28x3XqZp46OgO7EGgv/2aOWnSGY/SURVS1nM/1U825ThE+0nKwM9Ow== + dependencies: + "@tamagui/adapt" "1.20.7" + "@tamagui/alert-dialog" "1.20.7" + "@tamagui/animate-presence" "1.20.7" + "@tamagui/avatar" "1.20.7" + "@tamagui/button" "1.20.7" + "@tamagui/card" "1.20.7" + "@tamagui/checkbox" "1.20.7" + "@tamagui/compose-refs" "1.20.7" + "@tamagui/core" "1.20.7" + "@tamagui/create-context" "1.20.7" + "@tamagui/dialog" "1.20.7" + "@tamagui/fake-react-native" "1.20.7" + "@tamagui/focusable" "1.20.7" + "@tamagui/font-size" "1.20.7" + "@tamagui/form" "1.20.7" + "@tamagui/get-button-sized" "1.20.7" + "@tamagui/get-font-sized" "1.20.7" + "@tamagui/get-size" "1.20.7" + "@tamagui/helpers" "1.20.7" + "@tamagui/helpers-tamagui" "1.20.7" + "@tamagui/image" "1.20.7" + "@tamagui/label" "1.20.7" + "@tamagui/linear-gradient" "1.20.7" + "@tamagui/list-item" "1.20.7" + "@tamagui/popover" "1.20.7" + "@tamagui/popper" "1.20.7" + "@tamagui/portal" "1.20.7" + "@tamagui/progress" "1.20.7" + "@tamagui/radio-group" "1.20.7" + "@tamagui/react-native-media-driver" "1.20.7" + "@tamagui/scroll-view" "1.20.7" + "@tamagui/select" "1.20.7" + "@tamagui/separator" "1.20.7" + "@tamagui/shapes" "1.20.7" + "@tamagui/sheet" "1.20.7" + "@tamagui/slider" "1.20.7" + "@tamagui/stacks" "1.20.7" + "@tamagui/switch" "1.20.7" + "@tamagui/tabs" "1.20.7" + "@tamagui/text" "1.20.7" + "@tamagui/theme" "1.20.7" + "@tamagui/toggle-group" "1.20.7" + "@tamagui/tooltip" "1.20.7" + "@tamagui/use-controllable-state" "1.20.7" + "@tamagui/use-debounce" "1.20.7" + "@tamagui/use-event" "1.20.7" + "@tamagui/use-force-update" "1.20.7" + "@tamagui/use-window-dimensions" "1.20.7" + "@tamagui/visually-hidden" "1.20.7" + reforest "^0.12.1" + tar@^6.0.2, tar@^6.0.5: version "6.1.13" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" @@ -8578,7 +9486,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== @@ -8804,6 +9712,13 @@ url-parse@^1.2.0, url-parse@^1.5.9: querystringify "^2.1.1" requires-port "^1.0.0" +use-callback-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" + integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + dependencies: + tslib "^2.0.0" + use-latest-callback@^0.1.5: version "0.1.6" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.6.tgz#3fa6e7babbb5f9bfa24b5094b22939e1e92ebcf6" @@ -8814,6 +9729,14 @@ use-memo-one@^1.1.1: resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" @@ -8876,6 +9799,11 @@ vlq@^1.0.0: resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + walker@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -9146,7 +10074,7 @@ zod@3.21.4: resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== -zustand@4.3.7: +zustand@4.3.7, zustand@^4.3.3: version "4.3.7" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.7.tgz#501b1f0393a7f1d103332e45ab574be5747fedce" integrity sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ== From 62af7196a75ba9327259d3ab7a6185a267a3ea1a Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Sun, 30 Apr 2023 23:15:58 +0300 Subject: [PATCH 2/6] feat(home): add supersession card --- app/components/CustomHandle.tsx | 13 +- app/components/SessionCard/SessionCard.tsx | 165 ++++++++++++++-- .../SessionCard/SuperSessionCard.tsx | 69 +++++++ app/components/SessionCard/helpers.ts | 177 ++++++++++++++++++ .../PrivateScreens/Home/Home.helpers.ts | 53 ++++++ app/screens/PrivateScreens/Home/Home.tsx | 94 +++++++--- 6 files changed, 526 insertions(+), 45 deletions(-) create mode 100644 app/components/SessionCard/SuperSessionCard.tsx create mode 100644 app/components/SessionCard/helpers.ts create mode 100644 app/screens/PrivateScreens/Home/Home.helpers.ts diff --git a/app/components/CustomHandle.tsx b/app/components/CustomHandle.tsx index a58cc8c..1a40f63 100644 --- a/app/components/CustomHandle.tsx +++ b/app/components/CustomHandle.tsx @@ -117,13 +117,20 @@ const styles = StyleSheet.create({ alignItems: 'center', backgroundColor: '#fff', + paddingVertical: 14, - borderBottomWidth: 1, - borderBottomColor: '#fff', + // borderBottomWidth: 1, + // borderTopWidth: 1, + // borderLeftWidth: 1, + // borderRightWidth: 1, + // borderTopColor: '#f3f3f3', + // borderBottomColor: '#fff', + // borderLeftColor: '#f3f3f3', + // borderRightColor: '#f3f3f3', }, title: { alignSelf: 'flex-start', - paddingLeft: 4, + // paddingLeft: 4, marginTop: 26, fontSize: 20, lineHeight: 20, diff --git a/app/components/SessionCard/SessionCard.tsx b/app/components/SessionCard/SessionCard.tsx index 624fa3e..ce9a342 100644 --- a/app/components/SessionCard/SessionCard.tsx +++ b/app/components/SessionCard/SessionCard.tsx @@ -1,5 +1,6 @@ import React, { memo } from 'react'; import { Text, View } from 'react-native'; +import { TouchableOpacity } from 'react-native-ui-lib'; import colors from '@oxvo-mobile/assets/colors.json'; @@ -10,21 +11,35 @@ const Container = styled.View` padding: 4px; border-radius: 8px; width: 100%; - height: 64px; - background-color: #f7f5eb; - border: 1px solid #e5e5e5; + height: 84px; + background-color: ${({ status }) => { + switch (status) { + case 'completed': + return 'green'; + case 'notAttend': + return 'gray'; + default: + return '#fff'; + } + }}; + border: 1px solid #f6f6f6; + overflow: hidden; + flex: 1; `; const Top = styled.View` flex-direction: row; justify-content: space-between; align-items: center; + flex: 1; `; const Content = styled.View` + margin-top: 4px; flex-direction: row; justify-content: space-between; align-items: center; + flex: 1; `; const CompanyServiceText = styled.Text` @@ -32,29 +47,147 @@ const CompanyServiceText = styled.Text` font-weight: 600; `; -const DateText = styled.Text` +const StatusText = styled.Text` font-size: 8px; + font-weight: 600; +`; + +const DateText = styled.Text` + font-size: 10px; font-weight: 300; `; +const Square = styled.View` + width: 15px; + height: 15px; + background-color: ${({ backgroundColor }) => backgroundColor}; + }}; +`; + +const StatusContainer = styled.View` + margin-top: 4px; + flex-direction: row; + justify-content: flex-start; + align-items: center; + column-gap: 4px; + width: 150px; +`; + +const BottomContainer = styled.View` + flex-direction: row; + justify-content: space-between; + align-items: center; + flex: 1; +`; + +const DateContainer = styled.View` + flex-direction: column; + justify-content: space-between; + align-items: flex-end; + flex: 1; +`; + +type CurrentUserStatusType = 'join' | 'awaiting' | 'canceled'; +type CounterPartStatusType = 'completed' | 'not-attend'; + // before session // join (left green), awaiting (left yellow), canceled (left red) // after session // completed (all green), not attended (all gray) -const SessionCard = () => { +// staff im +// join gelirse staff reply beni yesil yap + +const SessionCard = ({ + currentUserStatus, + counterPartUserRoleName, + counterPartStatus, + serviceName, + fullName, +}: any) => { + console.log('currentUserStatus, counterPartStatus', currentUserStatus, counterPartStatus); + const getCurrentUserStatusText = (status: CurrentUserStatusType) => { + switch (status) { + case 'completed': + return 'Client 01 Tamamladı'; + case 'join': + return 'Client 02 Katılıyor'; + case 'awaiting': + return 'Onay Bekleniyor'; + case 'canceled': + return 'Client 02 İptal Etti'; + case 'not-attend': // if staff - staff not attend gelmeyecek + return 'Client 02 Katılmadı'; + default: + return 'Bekliyor'; + } + }; + const getCounterPartStatusText = (status: CounterPartStatusType) => { + switch (status) { + case 'completed': + return 'Tamamlandı'; + case 'not-attend': + return 'Katılmadı'; // aynisi + default: + return 'Bekliyor'; + } + }; + const getCurrentUserStatusColor = (status: CurrentUserStatusType) => { + // console.log('!!!!@@@@@@@@@@@@@@@', status); + switch (status) { + case 'join': + case 'completed': + return colors.supports.green; + case 'awaiting': + return colors.supports.yellow; + case 'not-attend': + return colors.grays.gray; + case 'canceled': + return colors.supports.red; + default: + return colors.supports.yellow; + } + }; + console.log(getCurrentUserStatusColor(currentUserStatus)); + const getCounterPartStatusColor = (status: CounterPartStatusType) => { + switch (status) { + case 'completed': + return colors.supports.green; + case 'not-attend': + return colors.grays.gray; + default: + return colors.supports.yellow; + } + }; return ( - - - Pilates - 16:30 - 17:30 - - - Peter Stan - 16.01.2023 - - Hello - + + + + {serviceName} + + 16:30 - 17:30 + 16.01.2023 + + + + {fullName} + + + + + + {getCurrentUserStatusText(currentUserStatus).toUpperCase()} + + {/* + + + {counterPartUserRoleName} STATUS:{' '} + {getCounterPartStatusText(counterPartStatus).toUpperCase()} + + */} + + + ); }; diff --git a/app/components/SessionCard/SuperSessionCard.tsx b/app/components/SessionCard/SuperSessionCard.tsx new file mode 100644 index 0000000..5f950b3 --- /dev/null +++ b/app/components/SessionCard/SuperSessionCard.tsx @@ -0,0 +1,69 @@ +import React, { memo } from 'react'; +import { StyleSheet, Text } from 'react-native'; + +import { + checkSessionExpiration, + getBackgroundColor, + getBorderColor, + getFormattedStartDate, + getSessionStatusText, + getSessionTimeRange, + getUserColor, +} from '@oxvo-mobile/components/SessionCard/helpers'; + +type SuperSessionCardProps = { + counterPartUserFullName: string; + userFullName: string; + startDate: string; + endDate: string; + companyServiceName: string; + userReply: string; + counterPartUserReply: string; +}; + +const SuperSessionCard = ({ + userFullName, + counterPartUserFullName, + startDate, + endDate, + companyServiceName, + userReply, + counterPartUserReply, +}: SuperSessionCardProps) => { + const isSessionExpired = checkSessionExpiration(endDate); + const backgroundColor = getBackgroundColor(userReply, counterPartUserReply, isSessionExpired); + const borderColor = getBorderColor(userReply, counterPartUserReply, isSessionExpired); + const formattedStartDate = getFormattedStartDate(startDate); + const sessionStatusText = getSessionStatusText({ + userFullName, + counterPartUserFullName, + userReply, + counterPartUserReply, + }); + const sessionTimeRange = getSessionTimeRange(startDate, endDate); + const userColor = getUserColor(userReply); + const counterPartUserColor = getUserColor(counterPartUserReply); + console.log( + 'backgroundColor ->', + backgroundColor, + 'borderColor ->', + borderColor, + 'formattedStartDate ->', + formattedStartDate, + 'sessionStatusText ->', + sessionStatusText, + 'sessionTimeRange ->', + sessionTimeRange, + 'companyServiceName ->', + companyServiceName, + 'userColor ->', + userColor, + 'counterPartUserColor ->', + counterPartUserColor, + 'isSessionExpired ->', + isSessionExpired + ); + return SuperSessionCard; +}; + +export default memo(SuperSessionCard); diff --git a/app/components/SessionCard/helpers.ts b/app/components/SessionCard/helpers.ts new file mode 100644 index 0000000..bd6e566 --- /dev/null +++ b/app/components/SessionCard/helpers.ts @@ -0,0 +1,177 @@ +import { SessionStatusType } from '@oxvo-mobile/constants/oxvo'; + +const checkSessionExpiration = (endDate: string): boolean => { + const now = new Date(); + const sessionEndDate = new Date(endDate); + + return now > sessionEndDate; +}; + +const getFormattedStartDate = (startDate: string): string => { + const sessionStartDate = new Date(startDate); + return sessionStartDate.toLocaleDateString(undefined, { + day: '2-digit', + month: '2-digit', + year: 'numeric', + }); +}; + +const getSessionTimeRange = (startDate: string, endDate: string): string => { + const sessionStartDate = new Date(startDate); + const sessionEndDate = new Date(endDate); + const startTime = sessionStartDate.toLocaleTimeString(undefined, { + hour: '2-digit', + minute: '2-digit', + }); + const endTime = sessionEndDate.toLocaleTimeString(undefined, { + hour: '2-digit', + minute: '2-digit', + }); + + return `${startTime} - ${endTime}`; +}; + +const getUserColor = (status: string): string => { + switch (status) { + case SessionStatusType.JOIN: + return 'green'; + case SessionStatusType.AWAITING: + return 'yellow'; + case SessionStatusType.CANCELED: + return 'red'; + case SessionStatusType.STAFF_NOT_ATTEND: + case SessionStatusType.CLIENT_NOT_ATTEND: + return 'gray'; + default: + return 'gray'; + } +}; + +const getBackgroundColor = ( + userReply: string, + counterPartUserReply: string, + isSessionExpired: boolean +): string => { + if (!isSessionExpired) { + return 'white'; + } + + if ( + userReply === SessionStatusType.STAFF_NOT_ATTEND || + counterPartUserReply === SessionStatusType.STAFF_NOT_ATTEND || + userReply === SessionStatusType.CLIENT_NOT_ATTEND || + counterPartUserReply === SessionStatusType.CLIENT_NOT_ATTEND + ) { + return 'gray'; + } + if ( + userReply === SessionStatusType.COMPLETED && + counterPartUserReply === SessionStatusType.COMPLETED + ) { + return 'green'; + } + + return 'gray'; +}; + +const getBorderColor = ( + userReply: string, + counterPartUserReply: string, + isSessionExpired: boolean +): string | null => { + if (isSessionExpired) { + return null; + } + + if ( + userReply === SessionStatusType.CANCELED || + counterPartUserReply === SessionStatusType.CANCELED + ) { + return 'red'; + } + + if ( + userReply === SessionStatusType.AWAITING || + counterPartUserReply === SessionStatusType.AWAITING + ) { + return 'yellow'; + } + + if (userReply === SessionStatusType.JOIN && counterPartUserReply === SessionStatusType.JOIN) { + return 'green'; + } + + return null; +}; + +type GetSessionStatusTextProps = { + userReply: string; + counterPartUserReply: string; + userFullName: string; + counterPartUserFullName: string; +}; + +const getSessionStatusText = ({ + userReply, + counterPartUserReply, + userFullName, + counterPartUserFullName, +}: GetSessionStatusTextProps): string => { + if (userReply === SessionStatusType.JOIN) { + return `${userFullName}, bu oturuma katılacağını onayladı.`; + } + + if (counterPartUserReply === SessionStatusType.JOIN) { + return `${counterPartUserFullName}, bu oturuma katılacağını onayladı.`; + } + + if (userReply === SessionStatusType.AWAITING) { + return `${userFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; + } + + if (counterPartUserReply === SessionStatusType.AWAITING) { + return `${counterPartUserFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; + } + + if (userReply === SessionStatusType.CANCELED) { + return `${userFullName}, bu oturumu iptal etti.`; + } + + if (counterPartUserReply === SessionStatusType.CANCELED) { + return `${counterPartUserFullName}, bu oturumu iptal etti.`; + } + + if ( + userReply === SessionStatusType.STAFF_NOT_ATTEND || + userReply === SessionStatusType.CLIENT_NOT_ATTEND + ) { + return `${userFullName}, bu oturumu ${counterPartUserFullName} katılmadı olarak işaretledi`; + } + + if ( + counterPartUserReply === SessionStatusType.STAFF_NOT_ATTEND || + counterPartUserReply === SessionStatusType.CLIENT_NOT_ATTEND + ) { + return `${counterPartUserFullName}, bu oturumu ${userFullName} katılmadı olarak işaretledi`; + } + + if (userReply === SessionStatusType.COMPLETED) { + return `${userFullName}, bu oturumu tamamlandı olarak işaretledi.`; + } + + if (counterPartUserReply === SessionStatusType.COMPLETED) { + return `${counterPartUserFullName}, bu oturumu tamamlandı olarak işaretledi.`; + } + + return ''; +}; + +export { + getSessionStatusText, + getBorderColor, + getBackgroundColor, + getUserColor, + checkSessionExpiration, + getSessionTimeRange, + getFormattedStartDate, +}; diff --git a/app/screens/PrivateScreens/Home/Home.helpers.ts b/app/screens/PrivateScreens/Home/Home.helpers.ts new file mode 100644 index 0000000..04b0ed7 --- /dev/null +++ b/app/screens/PrivateScreens/Home/Home.helpers.ts @@ -0,0 +1,53 @@ +import { UserRoles } from '@oxvo-mobile/constants/oxvo'; + +type UserData = { + staff: { + firstName: string; + lastName: string; + }; + client: { + firstName: string; + lastName: string; + }; +}; + +const getFullNameByUserRole = ( + data: UserData, + currentUserRole: UserRoles +): { userFullName: string; counterPartUserFullName: string } => { + const reverseMap: Record = { + CLIENT: UserRoles.STAFF, + STAFF: UserRoles.CLIENT, + }; + + const userFullName = `${ + data[UserRoles[currentUserRole].toLowerCase() as keyof UserData].firstName + } ${data[UserRoles[currentUserRole].toLowerCase() as keyof UserData].lastName}`; + + const counterPartUserFullName = `${ + data[reverseMap[UserRoles[currentUserRole]].toLowerCase() as keyof UserData].firstName + } ${data[reverseMap[UserRoles[currentUserRole]].toLowerCase() as keyof UserData].lastName}`; + + return { userFullName, counterPartUserFullName }; +}; + +type Session = { + staffReply: string; + clientReply: string; +}; + +const getReplyByUserRole = ( + session: Session, + currentUserRole: UserRoles +): { userReply: string; counterPartUserReply: string } => { + if (currentUserRole === UserRoles.STAFF) { + return { userReply: session.staffReply, counterPartUserReply: session.clientReply }; + } + if (currentUserRole === UserRoles.CLIENT) { + return { userReply: session.clientReply, counterPartUserReply: session.staffReply }; + } + + return { userReply: '', counterPartUserReply: '' }; +}; + +export { getReplyByUserRole, getFullNameByUserRole }; diff --git a/app/screens/PrivateScreens/Home/Home.tsx b/app/screens/PrivateScreens/Home/Home.tsx index 8ae9e76..7e4a9e4 100644 --- a/app/screens/PrivateScreens/Home/Home.tsx +++ b/app/screens/PrivateScreens/Home/Home.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useMemo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; -import { Button, ScrollView, StyleSheet } from 'react-native'; -import { Text, View } from 'react-native-ui-lib'; +import { Dimensions, RefreshControl, ScrollView, StyleSheet } from 'react-native'; +import { Button, Text, View } from 'react-native-ui-lib'; import useAuthStore from '@oxvo-mobile/domains/Auth/store/useAuthStore'; @@ -10,16 +10,22 @@ import useHome from '@oxvo-mobile/domains/Home/queries/useHome'; import useCurrentUserRole from '@oxvo-mobile/domains/Me/hooks/useCurrentUserRole'; import useMe from '@oxvo-mobile/domains/Me/queries/useMe'; +import { + getFullNameByUserRole, + getReplyByUserRole, +} from '@oxvo-mobile/screens/PrivateScreens/Home/Home.helpers'; import HomeSkeleton from '@oxvo-mobile/screens/PrivateScreens/Home/Home.skeleton'; import Container from '@oxvo-mobile/components/Containers/Private/Container.styled'; import CustomHandle from '@oxvo-mobile/components/CustomHandle'; import SessionCard from '@oxvo-mobile/components/SessionCard/SessionCard'; +import SuperSessionCard from '@oxvo-mobile/components/SessionCard/SuperSessionCard'; import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; import colors from '@oxvo-mobile/assets/colors.json'; +import { UserRoles } from '@oxvo-mobile/constants/oxvo'; import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; import { useNavigation } from '@react-navigation/native'; @@ -46,7 +52,7 @@ const HomeScreen = () => { .map((_, index) => `index-${index}`), [] ); - const snapPoints = useMemo(() => ['15%', '50%', '90%'], []); + const snapPoints = useMemo(() => ['25%', '50%', '93%'], []); // callbacks const handleSheetChange = useCallback((index) => { @@ -65,7 +71,7 @@ const HomeScreen = () => { (props) => , [] ); - const { data: homeData, isLoading, isError } = useHome(); + const { data: homeData, isLoading, isError, refetch, isFetching } = useHome(); const { data: meData, isLoading: isLoadingMe } = useMe(); const { t } = useTranslation(); @@ -84,24 +90,53 @@ const HomeScreen = () => { } if (isError) return Home Data has Error; - + const { width, height } = Dimensions.get('window'); + const paddingBottomValue = height * 0.24; + console.log(homeData.sessions?.length); return ( - Today's Sessions - - - - - - - - - - - - - - + {/* */} + + Today's Sessions + { + await refetch(); + }} + /> + } + > + + {homeData.sessions?.map((session) => { + const { userFullName, counterPartUserFullName } = getFullNameByUserRole( + session, + currentUserRole + ); + const { userReply, counterPartUserReply } = getReplyByUserRole( + session, + currentUserRole + ); + return ( + + ); + })} + + + {/* */} {/* {t('screens.privateScreens.home.lastCounts')} Today's Sessions Currents User Role: {currentUserRole} - + @@ -157,9 +197,11 @@ const styles = StyleSheet.create({ container: { flex: 1, }, - + contentWrapper: {}, + scrollView: {}, contentContainer: { rowGap: 12, + backgroundColor: '#fff', }, itemContainer: { From 25c14aa72818b34ed09e2588680fe40c8c274ae7 Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Sun, 30 Apr 2023 23:47:30 +0300 Subject: [PATCH 3/6] feat(home): add supersession card --- ...helpers.ts => SuperSessionCard.helpers.ts} | 27 ++++++++++--------- .../SessionCard/SuperSessionCard.tsx | 7 ++--- 2 files changed, 19 insertions(+), 15 deletions(-) rename app/components/SessionCard/{helpers.ts => SuperSessionCard.helpers.ts} (75%) diff --git a/app/components/SessionCard/helpers.ts b/app/components/SessionCard/SuperSessionCard.helpers.ts similarity index 75% rename from app/components/SessionCard/helpers.ts rename to app/components/SessionCard/SuperSessionCard.helpers.ts index bd6e566..2820f33 100644 --- a/app/components/SessionCard/helpers.ts +++ b/app/components/SessionCard/SuperSessionCard.helpers.ts @@ -116,54 +116,57 @@ const getSessionStatusText = ({ counterPartUserReply, userFullName, counterPartUserFullName, -}: GetSessionStatusTextProps): string => { +}: GetSessionStatusTextProps): any => { + let userSessionStatusText; + let counterPartUserSessionStatusText; + if (userReply === SessionStatusType.JOIN) { - return `${userFullName}, bu oturuma katılacağını onayladı.`; + userSessionStatusText = `${userFullName}, bu oturuma katılacağını onayladı.`; } if (counterPartUserReply === SessionStatusType.JOIN) { - return `${counterPartUserFullName}, bu oturuma katılacağını onayladı.`; + counterPartUserSessionStatusText = `${counterPartUserFullName}, bu oturuma katılacağını onayladı.`; } if (userReply === SessionStatusType.AWAITING) { - return `${userFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; + userSessionStatusText = `${userFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; } if (counterPartUserReply === SessionStatusType.AWAITING) { - return `${counterPartUserFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; + counterPartUserSessionStatusText = `${counterPartUserFullName}, henüz oturuma katılım hakkında bilgi sağlamadı.`; } if (userReply === SessionStatusType.CANCELED) { - return `${userFullName}, bu oturumu iptal etti.`; + userSessionStatusText = `${userFullName}, bu oturumu iptal etti.`; } if (counterPartUserReply === SessionStatusType.CANCELED) { - return `${counterPartUserFullName}, bu oturumu iptal etti.`; + counterPartUserSessionStatusText = `${counterPartUserFullName}, bu oturumu iptal etti.`; } if ( userReply === SessionStatusType.STAFF_NOT_ATTEND || userReply === SessionStatusType.CLIENT_NOT_ATTEND ) { - return `${userFullName}, bu oturumu ${counterPartUserFullName} katılmadı olarak işaretledi`; + userSessionStatusText = `${userFullName}, bu oturumu ${counterPartUserFullName} katılmadı olarak işaretledi`; } if ( counterPartUserReply === SessionStatusType.STAFF_NOT_ATTEND || counterPartUserReply === SessionStatusType.CLIENT_NOT_ATTEND ) { - return `${counterPartUserFullName}, bu oturumu ${userFullName} katılmadı olarak işaretledi`; + counterPartUserSessionStatusText = `${counterPartUserFullName}, bu oturumu ${userFullName} katılmadı olarak işaretledi`; } if (userReply === SessionStatusType.COMPLETED) { - return `${userFullName}, bu oturumu tamamlandı olarak işaretledi.`; + userSessionStatusText = `${userFullName}, bu oturumu tamamlandı olarak işaretledi.`; } if (counterPartUserReply === SessionStatusType.COMPLETED) { - return `${counterPartUserFullName}, bu oturumu tamamlandı olarak işaretledi.`; + counterPartUserSessionStatusText = `${counterPartUserFullName}, bu oturumu tamamlandı olarak işaretledi.`; } - return ''; + return { userSessionStatusText, counterPartUserSessionStatusText }; }; export { diff --git a/app/components/SessionCard/SuperSessionCard.tsx b/app/components/SessionCard/SuperSessionCard.tsx index 5f950b3..f6680e5 100644 --- a/app/components/SessionCard/SuperSessionCard.tsx +++ b/app/components/SessionCard/SuperSessionCard.tsx @@ -9,7 +9,7 @@ import { getSessionStatusText, getSessionTimeRange, getUserColor, -} from '@oxvo-mobile/components/SessionCard/helpers'; +} from '@oxvo-mobile/components/SessionCard/SuperSessionCard.helpers'; type SuperSessionCardProps = { counterPartUserFullName: string; @@ -34,7 +34,7 @@ const SuperSessionCard = ({ const backgroundColor = getBackgroundColor(userReply, counterPartUserReply, isSessionExpired); const borderColor = getBorderColor(userReply, counterPartUserReply, isSessionExpired); const formattedStartDate = getFormattedStartDate(startDate); - const sessionStatusText = getSessionStatusText({ + const { counterPartUserSessionStatusText, userSessionStatusText } = getSessionStatusText({ userFullName, counterPartUserFullName, userReply, @@ -51,7 +51,8 @@ const SuperSessionCard = ({ 'formattedStartDate ->', formattedStartDate, 'sessionStatusText ->', - sessionStatusText, + counterPartUserSessionStatusText, + userSessionStatusText, 'sessionTimeRange ->', sessionTimeRange, 'companyServiceName ->', From b47921742a866bb1ecb84c83ff75c7d246be9987 Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Tue, 2 May 2023 00:34:23 +0300 Subject: [PATCH 4/6] feat(home): add supersession card --- .../Containers/Private/Container.styled.ts | 4 +- app/components/CustomHandle.tsx | 25 +-- app/components/SessionCard/SessionCard.tsx | 11 +- .../SessionCard/SuperSessionCard.helpers.ts | 48 ++++-- .../SessionCard/SuperSessionCard.tsx | 108 +++++++++--- app/screens/PrivateScreens/Home/Home.tsx | 156 +++++------------- 6 files changed, 172 insertions(+), 180 deletions(-) diff --git a/app/components/Containers/Private/Container.styled.ts b/app/components/Containers/Private/Container.styled.ts index e50c29e..0f3eac6 100644 --- a/app/components/Containers/Private/Container.styled.ts +++ b/app/components/Containers/Private/Container.styled.ts @@ -5,9 +5,9 @@ import styled from 'styled-components/native'; const Container = styled.View` flex: 1; position: relative; - padding: 16px; + // padding: 0 16px; color: 'red'; - background-color: #fff; + background-color: ${colors.grays.gray02}; `; export default Container; diff --git a/app/components/CustomHandle.tsx b/app/components/CustomHandle.tsx index 1a40f63..0fbd393 100644 --- a/app/components/CustomHandle.tsx +++ b/app/components/CustomHandle.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from 'react'; -import { StyleProp, StyleSheet, Text, ViewStyle } from 'react-native'; +import { StyleProp, StyleSheet, ViewStyle } from 'react-native'; import Animated, { Extrapolate, interpolate, @@ -7,6 +7,7 @@ import Animated, { useDerivedValue, } from 'react-native-reanimated'; import { toRad } from 'react-native-redash'; +import { Text } from 'react-native-ui-lib'; import colors from '@oxvo-mobile/assets/colors.json'; @@ -104,7 +105,9 @@ const Handle: React.FC = ({ style, title, animatedIndex }) => { - {title} + + {title} + ); }; @@ -116,9 +119,9 @@ const styles = StyleSheet.create({ alignContent: 'center', alignItems: 'center', - backgroundColor: '#fff', + backgroundColor: 'blue', - paddingVertical: 14, + paddingVertical: 12, // borderBottomWidth: 1, // borderTopWidth: 1, // borderLeftWidth: 1, @@ -129,13 +132,13 @@ const styles = StyleSheet.create({ // borderRightColor: '#f3f3f3', }, title: { - alignSelf: 'flex-start', - // paddingLeft: 4, - marginTop: 26, - fontSize: 20, - lineHeight: 20, - textAlign: 'center', - fontWeight: 'bold', + // alignSelf: 'flex-start', + // // paddingLeft: 4, + // marginTop: 26, + // fontSize: 20, + // lineHeight: 20, + // textAlign: 'center', + // fontWeight: 'bold', }, indicator: { position: 'absolute', diff --git a/app/components/SessionCard/SessionCard.tsx b/app/components/SessionCard/SessionCard.tsx index ce9a342..4b165b7 100644 --- a/app/components/SessionCard/SessionCard.tsx +++ b/app/components/SessionCard/SessionCard.tsx @@ -12,16 +12,7 @@ const Container = styled.View` border-radius: 8px; width: 100%; height: 84px; - background-color: ${({ status }) => { - switch (status) { - case 'completed': - return 'green'; - case 'notAttend': - return 'gray'; - default: - return '#fff'; - } - }}; + background-color: black; border: 1px solid #f6f6f6; overflow: hidden; flex: 1; diff --git a/app/components/SessionCard/SuperSessionCard.helpers.ts b/app/components/SessionCard/SuperSessionCard.helpers.ts index 2820f33..be72ac5 100644 --- a/app/components/SessionCard/SuperSessionCard.helpers.ts +++ b/app/components/SessionCard/SuperSessionCard.helpers.ts @@ -1,3 +1,5 @@ +import colors from '@oxvo-mobile/assets/colors.json'; + import { SessionStatusType } from '@oxvo-mobile/constants/oxvo'; const checkSessionExpiration = (endDate: string): boolean => { @@ -34,16 +36,18 @@ const getSessionTimeRange = (startDate: string, endDate: string): string => { const getUserColor = (status: string): string => { switch (status) { case SessionStatusType.JOIN: - return 'green'; + return colors.base.blue; case SessionStatusType.AWAITING: - return 'yellow'; + return colors.supports.yellow; case SessionStatusType.CANCELED: - return 'red'; + return colors.supports.red; + case SessionStatusType.COMPLETED: + return colors.supports.green; case SessionStatusType.STAFF_NOT_ATTEND: case SessionStatusType.CLIENT_NOT_ATTEND: - return 'gray'; + return 'black'; default: - return 'gray'; + return colors.grays.gray; } }; @@ -53,7 +57,7 @@ const getBackgroundColor = ( isSessionExpired: boolean ): string => { if (!isSessionExpired) { - return 'white'; + return colors.base.white; } if ( @@ -62,16 +66,16 @@ const getBackgroundColor = ( userReply === SessionStatusType.CLIENT_NOT_ATTEND || counterPartUserReply === SessionStatusType.CLIENT_NOT_ATTEND ) { - return 'gray'; + return colors.base.white; } if ( userReply === SessionStatusType.COMPLETED && counterPartUserReply === SessionStatusType.COMPLETED ) { - return 'green'; + // return colors.supports.green; } - return 'gray'; + return colors.base.white; }; const getBorderColor = ( @@ -80,25 +84,32 @@ const getBorderColor = ( isSessionExpired: boolean ): string | null => { if (isSessionExpired) { - return null; + // return 'black'; } if ( - userReply === SessionStatusType.CANCELED || + userReply === SessionStatusType.CANCELED && counterPartUserReply === SessionStatusType.CANCELED ) { - return 'red'; + return colors.supports.red; } if ( - userReply === SessionStatusType.AWAITING || + userReply === SessionStatusType.AWAITING && counterPartUserReply === SessionStatusType.AWAITING ) { - return 'yellow'; + return colors.supports.yellow; } if (userReply === SessionStatusType.JOIN && counterPartUserReply === SessionStatusType.JOIN) { - return 'green'; + return colors.supports.green; + } + + if ( + userReply === SessionStatusType.COMPLETED && + counterPartUserReply === SessionStatusType.COMPLETED + ) { + return colors.base.blue; } return null; @@ -116,7 +127,7 @@ const getSessionStatusText = ({ counterPartUserReply, userFullName, counterPartUserFullName, -}: GetSessionStatusTextProps): any => { +}: GetSessionStatusTextProps) => { let userSessionStatusText; let counterPartUserSessionStatusText; @@ -169,7 +180,12 @@ const getSessionStatusText = ({ return { userSessionStatusText, counterPartUserSessionStatusText }; }; +const getUserImageUrl = (fullName: string): string => { + return `https://ui-avatars.com/api/?name=${fullName}`; +}; + export { + getUserImageUrl, getSessionStatusText, getBorderColor, getBackgroundColor, diff --git a/app/components/SessionCard/SuperSessionCard.tsx b/app/components/SessionCard/SuperSessionCard.tsx index f6680e5..6e71dc1 100644 --- a/app/components/SessionCard/SuperSessionCard.tsx +++ b/app/components/SessionCard/SuperSessionCard.tsx @@ -1,5 +1,6 @@ import React, { memo } from 'react'; -import { StyleSheet, Text } from 'react-native'; +import { Image, Platform, Text } from 'react-native'; +import { TouchableOpacity } from 'react-native-ui-lib'; import { checkSessionExpiration, @@ -9,8 +10,13 @@ import { getSessionStatusText, getSessionTimeRange, getUserColor, + getUserImageUrl, } from '@oxvo-mobile/components/SessionCard/SuperSessionCard.helpers'; +import colors from '@oxvo-mobile/assets/colors.json'; + +import styled from 'styled-components/native'; + type SuperSessionCardProps = { counterPartUserFullName: string; userFullName: string; @@ -21,6 +27,51 @@ type SuperSessionCardProps = { counterPartUserReply: string; }; +const Container = styled.View` + overflow: hidden; + padding: 12px 24px; + background-color: ${(props) => props.backgroundColor}; +`; + +const RoundedImage = styled.Image` + width: 34px; + height: 34px; + border-radius: 24px; + border: 2px solid ${(props) => props.borderColor}; +`; + +const Content = styled.View` + flex-direction: row; + justify-content: space-between; +`; + +const LeftContent = styled.View` + // flex-direction: column; + // justify-content: center; + // height: 100%; + width: 180px; + row-gap: 12px; +`; + +const RightContent = styled.View` + // flex-direction: column; + // align-items: flex-end; + // row-gap: 8px; + // width: 100px; +`; + +const SessionStatusTextContainer = styled.View` + flex-direction: row; + align-items: center; + column-gap: 8px; +`; + +const TextWrapper = styled.View` + width: 100px; + row-gap: 8px; + align-items: flex-end; +`; + const SuperSessionCard = ({ userFullName, counterPartUserFullName, @@ -43,28 +94,41 @@ const SuperSessionCard = ({ const sessionTimeRange = getSessionTimeRange(startDate, endDate); const userColor = getUserColor(userReply); const counterPartUserColor = getUserColor(counterPartUserReply); - console.log( - 'backgroundColor ->', - backgroundColor, - 'borderColor ->', - borderColor, - 'formattedStartDate ->', - formattedStartDate, - 'sessionStatusText ->', - counterPartUserSessionStatusText, - userSessionStatusText, - 'sessionTimeRange ->', - sessionTimeRange, - 'companyServiceName ->', - companyServiceName, - 'userColor ->', - userColor, - 'counterPartUserColor ->', - counterPartUserColor, - 'isSessionExpired ->', - isSessionExpired + const userImageUrl = getUserImageUrl(userFullName); + const counterPartUserImageUrl = getUserImageUrl(counterPartUserFullName); + + return ( + + + + + + + + {userSessionStatusText} + + + + + + {counterPartUserSessionStatusText} + + + + + + {sessionTimeRange} + {formattedStartDate} + {companyServiceName} + + + + + ); - return SuperSessionCard; }; export default memo(SuperSessionCard); diff --git a/app/screens/PrivateScreens/Home/Home.tsx b/app/screens/PrivateScreens/Home/Home.tsx index 7e4a9e4..7db4d67 100644 --- a/app/screens/PrivateScreens/Home/Home.tsx +++ b/app/screens/PrivateScreens/Home/Home.tsx @@ -31,6 +31,7 @@ import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; import { useNavigation } from '@react-navigation/native'; import BottomSheet, { BottomSheetFlatList } from '@gorhom/bottom-sheet'; +import styled from 'styled-components/native'; const HomeScreen = () => { const navigateSessionsHomeScreen = () => { @@ -52,7 +53,7 @@ const HomeScreen = () => { .map((_, index) => `index-${index}`), [] ); - const snapPoints = useMemo(() => ['25%', '50%', '93%'], []); + const snapPoints = useMemo(() => ['15%', '50%', '93%'], []); // callbacks const handleSheetChange = useCallback((index) => { @@ -91,131 +92,48 @@ const HomeScreen = () => { if (isError) return Home Data has Error; const { width, height } = Dimensions.get('window'); - const paddingBottomValue = height * 0.24; + const paddingBottomValue = height * 0.17; console.log(homeData.sessions?.length); + const Container = styled.View` + margin: 8px 0px; + row-gap: 8px; + `; return ( - - {/* */} - - Today's Sessions - { - await refetch(); - }} - /> - } - > - - {homeData.sessions?.map((session) => { - const { userFullName, counterPartUserFullName } = getFullNameByUserRole( - session, - currentUserRole - ); - const { userReply, counterPartUserReply } = getReplyByUserRole( - session, - currentUserRole - ); - return ( - - ); - })} - - - - {/* - */} - {/* {t('screens.privateScreens.home.lastCounts')} - Today's Sessions - - Currents User Role: - {currentUserRole} - - - - - Company Settings: - {JSON.stringify(companySettings)} - - - Me Data: - {JSON.stringify(meData)} - - - Home Data: Sessions Length: {homeData?.sessions?.length}, Packages Length:{' '} - {homeData?.packages?.length || 0} - - */} - + } + > + {/* */} + + {homeData.sessions?.map((session) => { + const { userFullName, counterPartUserFullName } = getFullNameByUserRole( + session, + currentUserRole + ); + const { userReply, counterPartUserReply } = getReplyByUserRole(session, currentUserRole); + return ( + + ); + })} + + {/* */} + ); }; -const styles = StyleSheet.create({ - container: { - flex: 1, - }, - contentWrapper: {}, - scrollView: {}, - contentContainer: { - rowGap: 12, - - backgroundColor: '#fff', - }, - itemContainer: { - backgroundColor: 'red', - padding: 6, - margin: 6, - }, - title: { - alignSelf: 'flex-start', - fontSize: 20, - marginBottom: 12, - lineHeight: 20, - textAlign: 'center', - fontWeight: 'bold', - }, -}); + export default HomeScreen; From 14fd90d70837ca9aad64f0f8e3c5e0f61d57aba4 Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Tue, 2 May 2023 00:40:09 +0300 Subject: [PATCH 5/6] feat(home): add supersession card --- app/components/SessionCard/SessionCard.tsx | 185 --------------------- app/screens/PrivateScreens/Home/Home.tsx | 2 - 2 files changed, 187 deletions(-) delete mode 100644 app/components/SessionCard/SessionCard.tsx diff --git a/app/components/SessionCard/SessionCard.tsx b/app/components/SessionCard/SessionCard.tsx deleted file mode 100644 index 4b165b7..0000000 --- a/app/components/SessionCard/SessionCard.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import React, { memo } from 'react'; -import { Text, View } from 'react-native'; -import { TouchableOpacity } from 'react-native-ui-lib'; - -import colors from '@oxvo-mobile/assets/colors.json'; - -import { AntDesign } from '@expo/vector-icons'; -import styled from 'styled-components/native'; - -const Container = styled.View` - padding: 4px; - border-radius: 8px; - width: 100%; - height: 84px; - background-color: black; - border: 1px solid #f6f6f6; - overflow: hidden; - flex: 1; -`; - -const Top = styled.View` - flex-direction: row; - justify-content: space-between; - align-items: center; - flex: 1; -`; - -const Content = styled.View` - margin-top: 4px; - flex-direction: row; - justify-content: space-between; - align-items: center; - flex: 1; -`; - -const CompanyServiceText = styled.Text` - font-size: 12px; - font-weight: 600; -`; - -const StatusText = styled.Text` - font-size: 8px; - font-weight: 600; -`; - -const DateText = styled.Text` - font-size: 10px; - font-weight: 300; -`; - -const Square = styled.View` - width: 15px; - height: 15px; - background-color: ${({ backgroundColor }) => backgroundColor}; - }}; -`; - -const StatusContainer = styled.View` - margin-top: 4px; - flex-direction: row; - justify-content: flex-start; - align-items: center; - column-gap: 4px; - width: 150px; -`; - -const BottomContainer = styled.View` - flex-direction: row; - justify-content: space-between; - align-items: center; - flex: 1; -`; - -const DateContainer = styled.View` - flex-direction: column; - justify-content: space-between; - align-items: flex-end; - flex: 1; -`; - -type CurrentUserStatusType = 'join' | 'awaiting' | 'canceled'; -type CounterPartStatusType = 'completed' | 'not-attend'; - -// before session -// join (left green), awaiting (left yellow), canceled (left red) -// after session -// completed (all green), not attended (all gray) - -// staff im -// join gelirse staff reply beni yesil yap - -const SessionCard = ({ - currentUserStatus, - counterPartUserRoleName, - counterPartStatus, - serviceName, - fullName, -}: any) => { - console.log('currentUserStatus, counterPartStatus', currentUserStatus, counterPartStatus); - const getCurrentUserStatusText = (status: CurrentUserStatusType) => { - switch (status) { - case 'completed': - return 'Client 01 Tamamladı'; - case 'join': - return 'Client 02 Katılıyor'; - case 'awaiting': - return 'Onay Bekleniyor'; - case 'canceled': - return 'Client 02 İptal Etti'; - case 'not-attend': // if staff - staff not attend gelmeyecek - return 'Client 02 Katılmadı'; - default: - return 'Bekliyor'; - } - }; - const getCounterPartStatusText = (status: CounterPartStatusType) => { - switch (status) { - case 'completed': - return 'Tamamlandı'; - case 'not-attend': - return 'Katılmadı'; // aynisi - default: - return 'Bekliyor'; - } - }; - const getCurrentUserStatusColor = (status: CurrentUserStatusType) => { - // console.log('!!!!@@@@@@@@@@@@@@@', status); - switch (status) { - case 'join': - case 'completed': - return colors.supports.green; - case 'awaiting': - return colors.supports.yellow; - case 'not-attend': - return colors.grays.gray; - case 'canceled': - return colors.supports.red; - default: - return colors.supports.yellow; - } - }; - console.log(getCurrentUserStatusColor(currentUserStatus)); - const getCounterPartStatusColor = (status: CounterPartStatusType) => { - switch (status) { - case 'completed': - return colors.supports.green; - case 'not-attend': - return colors.grays.gray; - default: - return colors.supports.yellow; - } - }; - return ( - - - - {serviceName} - - 16:30 - 17:30 - 16.01.2023 - - - - {fullName} - - - - - - {getCurrentUserStatusText(currentUserStatus).toUpperCase()} - - {/* - - - {counterPartUserRoleName} STATUS:{' '} - {getCounterPartStatusText(counterPartStatus).toUpperCase()} - - */} - - - - ); -}; - -export default memo(SessionCard); diff --git a/app/screens/PrivateScreens/Home/Home.tsx b/app/screens/PrivateScreens/Home/Home.tsx index 7db4d67..6a0b154 100644 --- a/app/screens/PrivateScreens/Home/Home.tsx +++ b/app/screens/PrivateScreens/Home/Home.tsx @@ -18,7 +18,6 @@ import HomeSkeleton from '@oxvo-mobile/screens/PrivateScreens/Home/Home.skeleton import Container from '@oxvo-mobile/components/Containers/Private/Container.styled'; import CustomHandle from '@oxvo-mobile/components/CustomHandle'; -import SessionCard from '@oxvo-mobile/components/SessionCard/SessionCard'; import SuperSessionCard from '@oxvo-mobile/components/SessionCard/SuperSessionCard'; import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; @@ -67,7 +66,6 @@ const HomeScreen = () => { }, []); // render - const renderItem = useCallback(({ item }) => , []); const renderCustomHandle = useCallback( (props) => , [] From 0c5cfd4ee5aa96c19c5588658616775662fc2597 Mon Sep 17 00:00:00 2001 From: Mert Koseoglu Date: Fri, 16 Jun 2023 21:28:12 +0300 Subject: [PATCH 6/6] feat: home --- .vscode/settings.json | 9 + app/components/Header/Header.tsx | 71 ++- app/components/Header/HeaderLeftAction.tsx | 34 +- app/components/Header/HeaderRightAction.tsx | 18 +- .../SessionCard/SuperSessionCard.tsx | 18 +- app/domains/Auth/services/refreshToken.ts | 2 +- app/domains/Auth/services/signIn.ts | 2 +- app/domains/Auth/services/signUp.ts | 2 +- app/libs/apiRequest.ts | 3 +- app/navigation/BottomTabNavigator.tsx | 9 +- app/navigation/RootNavigator.tsx | 7 +- app/navigation/SessionsNavigator.tsx | 32 +- app/navigation/types.ts | 2 +- app/screens/PrivateScreens/Home/Home.tsx | 143 ++++-- .../Sessions/CreateSession/CreateSession.tsx | 35 +- .../Sessions/SessionDetail/SessionDetail.tsx | 18 +- .../Sessions/SessionsHome/SessionsHome.tsx | 1 + docs/unused-code-lines.md | 111 ++++- ios/Podfile.lock | 450 +++++++++--------- package.json | 1 + yarn.lock | 215 ++++++++- 21 files changed, 800 insertions(+), 383 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0200e83 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "i18n-ally.localesPaths": [ + "ios/Pods/RCT-Folly/folly/lang", + "ios/Pods/boost/boost/locale", + "ios/Pods/boost/boost/predef/language", + "ios/Pods/Headers/Private/RCT-Folly/folly/lang", + "ios/Pods/Headers/Public/RCT-Folly/folly/lang" + ] +} diff --git a/app/components/Header/Header.tsx b/app/components/Header/Header.tsx index 335e376..97d0388 100644 --- a/app/components/Header/Header.tsx +++ b/app/components/Header/Header.tsx @@ -1,3 +1,5 @@ +/* eslint-disable react/no-unstable-nested-components */ + /** * @example: * PublicNavigator @@ -41,6 +43,7 @@ import useTabViewStore from '@oxvo-mobile/components/TabView/useTabViewStore'; import { BottomTabParamList, + PrivateStackNavigationProp, PrivateStackParamList, PublicStackParamList, } from '@oxvo-mobile/navigation/types'; @@ -48,6 +51,8 @@ import { import { UserRoles } from '@oxvo-mobile/constants/oxvo'; import { BOTTOM_TAB_ROUTES, PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; +import { useNavigation, useRoute } from '@react-navigation/native'; + type HeaderProps = { leftComponent: React.ReactNode; middleComponent: React.ReactNode; @@ -55,7 +60,7 @@ type HeaderProps = { }; // eslint-disable-next-line @typescript-eslint/no-unused-vars -const Header = memo(({ leftComponent, middleComponent, rightComponent }) => { +const Header = ({ leftComponent, middleComponent, rightComponent }) => { return ( {leftComponent} @@ -65,7 +70,7 @@ const Header = memo(({ leftComponent, middleComponent, rightCompone {rightComponent} ); -}); +}; type BottomTabRoutes = keyof BottomTabParamList; // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -150,24 +155,32 @@ const ProfileNavigatorHeader = memo(() => { ); }); -const SessionsNavigatorHeader = memo(() => { +const SessionsNavigatorHeader = ({ route }: { route: PrivateRoutes }) => { + const { navigate, getState } = useNavigation(); + const routex = useRoute(); + const currentNavigationState = getState(); + const previousRoute = currentNavigationState.routes[currentNavigationState.index - 1]; // Routes: PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME, PRIVATE_ROUTES.SESSIONS.CREATE_SESSION, PRIVATE_ROUTES.SESSIONS.SESSION_DETAIL - const HeaderLeft = useCallback(() => { - return ; - }, []); + const HeaderLeft = () => { + return ; + }; - const HeaderMiddle = useCallback(() => { + const HeaderMiddle = () => { return ; - }, []); + }; - const HeaderRight = useCallback(() => { - return ( - - ); - }, []); + const HeaderRight = () => { + // return ( + // { + // navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { + // screen: PRIVATE_ROUTES.SESSIONS.CREATE_SESSION, + // }); + // }} + // /> + // ); + }; return (
{ rightComponent={} /> ); -}); +}; -const BottomTabNavigatorHeader = memo(({ route }: { route: BottomTabRoutes }) => { +const BottomTabNavigatorHeader = ({ route }: { route: BottomTabRoutes }) => { const currentTabViewKey = useTabViewStore((state) => state.currentTabViewKey); const currentUserRole = useCurrentUserRole(); + const { navigate } = useNavigation(); - const HeaderLeft = useCallback(() => { + const HeaderLeft = () => { return ; - }, []); + }; - const HeaderMiddle = useCallback(() => { + const HeaderMiddle = () => { switch (route) { case BOTTOM_TAB_ROUTES.HOME: return ; default: return null; } - }, [route]); + }; - const HeaderRight = useCallback(() => { + const HeaderRight = () => { switch (route) { case BOTTOM_TAB_ROUTES.HOME: case BOTTOM_TAB_ROUTES.CALENDAR: @@ -205,7 +219,12 @@ const BottomTabNavigatorHeader = memo(({ route }: { route: BottomTabRoutes }) => return ( { + navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { + screen: PRIVATE_ROUTES.SESSIONS.CREATE_SESSION, + params: { from: BOTTOM_TAB_ROUTES.HOME }, + }); + }} /> ); case BOTTOM_TAB_ROUTES.NOTIFICATIONS: @@ -231,7 +250,7 @@ const BottomTabNavigatorHeader = memo(({ route }: { route: BottomTabRoutes }) => default: return null; } - }, [currentTabViewKey, currentUserRole, route]); + }; return (
rightComponent={} /> ); -}); +}; export { PublicNavigatorHeader, diff --git a/app/components/Header/HeaderLeftAction.tsx b/app/components/Header/HeaderLeftAction.tsx index 0899781..23adcff 100644 --- a/app/components/Header/HeaderLeftAction.tsx +++ b/app/components/Header/HeaderLeftAction.tsx @@ -8,18 +8,18 @@ import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; import { BottomTabBarButtonProps } from '@react-navigation/bottom-tabs'; -import { useNavigation } from '@react-navigation/native'; +import { useNavigation, useRoute } from '@react-navigation/native'; import { Ionicons } from '@expo/vector-icons'; import styled from 'styled-components/native'; -const HeaderLeftActionContainer = styled.View` +const HeaderProfileContainer = styled.View` align-items: center; flex-direction: column; justify-content: center; `; -const HeaderLeftActionText = styled(({ ...props }) => { +const HeaderProfileText = styled(({ ...props }) => { return ; })` margin-top: 4px; @@ -38,11 +38,12 @@ type HeaderLeftActionProps = { navigateRoute?: any; // FIXME: any is not good here }; -const HeaderLeftAction = ({ action, navigateRoute }: HeaderLeftActionProps) => { - const { goBack, canGoBack, navigate } = useNavigation< +const HeaderProfile = ({ action, navigateRoute, routex }: HeaderLeftActionProps) => { + const { goBack, reset, canGoBack, navigate } = useNavigation< PrivateStackNavigationProp & BottomTabBarButtonProps >(); - + const route = useRoute(); + console.log('header routex', routex); if (HeaderLeftActionType.GO_BACK === action) { return ( { if (navigateRoute) { navigate(navigateRoute); } else if (canGoBack()) { - goBack(); + if (route?.params?.from) { + reset({ + index: 0, + routes: [{ name: route.params.from }], + }); + navigate(route.params.from); + } + // goBack(); + + console.log('header profile', route); } }} > @@ -67,16 +77,16 @@ const HeaderLeftAction = ({ action, navigateRoute }: HeaderLeftActionProps) => { return ( - + - Profile - + Profile + ); }; -HeaderLeftAction.defaultProps = { +HeaderProfile.defaultProps = { action: HeaderLeftActionType.PROFILE, }; -export default memo(HeaderLeftAction); +export default HeaderProfile; diff --git a/app/components/Header/HeaderRightAction.tsx b/app/components/Header/HeaderRightAction.tsx index 12a26ad..ef327c1 100644 --- a/app/components/Header/HeaderRightAction.tsx +++ b/app/components/Header/HeaderRightAction.tsx @@ -1,10 +1,6 @@ import React, { memo } from 'react'; import { Text, TouchableOpacity } from 'react-native-ui-lib'; -import { PrivateStackNavigationProp, PrivateStackParamList } from '@oxvo-mobile/navigation/types'; - -import { useNavigation } from '@react-navigation/native'; - import { AntDesign } from '@expo/vector-icons'; import styled from 'styled-components/native'; @@ -22,18 +18,14 @@ const HeaderRightActionText = styled(({ ...props }) => { const HeaderRightAction = ({ title, - navigateRoute, + + onNavigate, }: { title: string; - navigateRoute: keyof PrivateStackParamList | any; // FIXME: any is not good here + onNavigate?: () => void; }) => { - const { navigate } = useNavigation(); - const handlePress = () => { - console.log('navigateRoute', navigateRoute); - if (navigateRoute) { - navigate(navigateRoute); - } + onNavigate?.(); }; return ( @@ -46,4 +38,4 @@ const HeaderRightAction = ({ ); }; -export default memo(HeaderRightAction); +export default HeaderRightAction; diff --git a/app/components/SessionCard/SuperSessionCard.tsx b/app/components/SessionCard/SuperSessionCard.tsx index 6e71dc1..8add73c 100644 --- a/app/components/SessionCard/SuperSessionCard.tsx +++ b/app/components/SessionCard/SuperSessionCard.tsx @@ -1,5 +1,5 @@ import React, { memo } from 'react'; -import { Image, Platform, Text } from 'react-native'; +import { Text } from 'react-native'; import { TouchableOpacity } from 'react-native-ui-lib'; import { @@ -13,8 +13,6 @@ import { getUserImageUrl, } from '@oxvo-mobile/components/SessionCard/SuperSessionCard.helpers'; -import colors from '@oxvo-mobile/assets/colors.json'; - import styled from 'styled-components/native'; type SuperSessionCardProps = { @@ -25,6 +23,7 @@ type SuperSessionCardProps = { companyServiceName: string; userReply: string; counterPartUserReply: string; + onPress: () => void; }; const Container = styled.View` @@ -46,19 +45,11 @@ const Content = styled.View` `; const LeftContent = styled.View` - // flex-direction: column; - // justify-content: center; - // height: 100%; width: 180px; row-gap: 12px; `; -const RightContent = styled.View` - // flex-direction: column; - // align-items: flex-end; - // row-gap: 8px; - // width: 100px; -`; +const RightContent = styled.View``; const SessionStatusTextContainer = styled.View` flex-direction: row; @@ -79,6 +70,7 @@ const SuperSessionCard = ({ endDate, companyServiceName, userReply, + onPress, counterPartUserReply, }: SuperSessionCardProps) => { const isSessionExpired = checkSessionExpiration(endDate); @@ -98,7 +90,7 @@ const SuperSessionCard = ({ const counterPartUserImageUrl = getUserImageUrl(counterPartUserFullName); return ( - + diff --git a/app/domains/Auth/services/refreshToken.ts b/app/domains/Auth/services/refreshToken.ts index e76e4f3..af72576 100644 --- a/app/domains/Auth/services/refreshToken.ts +++ b/app/domains/Auth/services/refreshToken.ts @@ -10,7 +10,7 @@ const RefreshTokenPayloadSchema = z.object({ const RefreshTokenResponseSchema = z.object({ accessToken: z.string(), - accessTokenExpiresAt: z.string(), + accessTokenExpiresAt: z.string().nullable(), refreshToken: z.string(), refreshTokenExpiresAt: z.null(), }); diff --git a/app/domains/Auth/services/signIn.ts b/app/domains/Auth/services/signIn.ts index 8e1558f..27d7329 100644 --- a/app/domains/Auth/services/signIn.ts +++ b/app/domains/Auth/services/signIn.ts @@ -12,7 +12,7 @@ const SignInPayloadSchema = z.object({ const SignInResponseSchema = z.object({ accessToken: z.string(), - accessTokenExpiresAt: z.string(), + accessTokenExpiresAt: z.string().nullable(), refreshToken: z.string(), refreshTokenExpiresAt: z.null(), }); diff --git a/app/domains/Auth/services/signUp.ts b/app/domains/Auth/services/signUp.ts index 5dfec9c..17c9718 100644 --- a/app/domains/Auth/services/signUp.ts +++ b/app/domains/Auth/services/signUp.ts @@ -21,7 +21,7 @@ const SignUpPayloadSchema = z const SignUpResponseSchema = z.object({ accessToken: z.string(), - accessTokenExpiresAt: z.string(), + accessTokenExpiresAt: z.string().nullable(), refreshToken: z.string(), refreshTokenExpiresAt: z.null(), }); diff --git a/app/libs/apiRequest.ts b/app/libs/apiRequest.ts index b4b6c36..8d524a3 100644 --- a/app/libs/apiRequest.ts +++ b/app/libs/apiRequest.ts @@ -7,12 +7,11 @@ interface ApiResponse { data: T; } -const apiBaseUrl = 'https://staging-api.oxvo.app'; +const apiBaseUrl = 'https://production-api.oxvo.app'; const apiRequest = async (axiosConfig: AxiosRequestConfig): Promise => { const axiosInstance = axios.create({ baseURL: apiBaseUrl, - timeout: 5000, }); // Add request interceptor diff --git a/app/navigation/BottomTabNavigator.tsx b/app/navigation/BottomTabNavigator.tsx index 33748b1..55c622e 100644 --- a/app/navigation/BottomTabNavigator.tsx +++ b/app/navigation/BottomTabNavigator.tsx @@ -53,13 +53,14 @@ const BottomTabNavigator = (): React.ReactElement => { options={{ header: () => , }} - > - {() => ( + component={HomeScreen} + /> + {/* {(props) => ( - + )} - + */} (); const RootNavigator = (): React.ReactElement => { const { isAuthenticated } = useAuth(); - console.log('isAuthenticated ----------->', isAuthenticated); + const navigationRef = useNavigationContainerRef(); // You can also use a regular ref with `React.useRef()` + console.log('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ->', navigationRef.getRootState()); return ( - + {isAuthenticated ? ( ( - - + , }} @@ -26,32 +26,22 @@ const SessionsNavigator = () => ( )} - - + , }} name={PRIVATE_ROUTES.SESSIONS.CREATE_SESSION} - > - {() => ( - - - - )} - - + , }} name={PRIVATE_ROUTES.SESSIONS.SESSION_DETAIL} - > - {() => ( - - - - )} - - + component={SessionDetailScreen} + /> + ); export default SessionsNavigator; diff --git a/app/navigation/types.ts b/app/navigation/types.ts index f1a8217..51bccc4 100644 --- a/app/navigation/types.ts +++ b/app/navigation/types.ts @@ -33,7 +33,7 @@ export type PrivateStackParamList = { [PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR]: | undefined - | { screen?: keyof PrivateStackParamList }; + | { screen?: keyof PrivateStackParamList; params?: any }; [PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME]: undefined; [PRIVATE_ROUTES.SESSIONS.SESSION_DETAIL]: undefined; [PRIVATE_ROUTES.SESSIONS.CREATE_SESSION]: undefined; diff --git a/app/screens/PrivateScreens/Home/Home.tsx b/app/screens/PrivateScreens/Home/Home.tsx index 6a0b154..cc98673 100644 --- a/app/screens/PrivateScreens/Home/Home.tsx +++ b/app/screens/PrivateScreens/Home/Home.tsx @@ -25,14 +25,19 @@ import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; import colors from '@oxvo-mobile/assets/colors.json'; import { UserRoles } from '@oxvo-mobile/constants/oxvo'; -import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; +import { BOTTOM_TAB_ROUTES, PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; -import { useNavigation } from '@react-navigation/native'; +import { useFocusEffect, useNavigation, useRoute } from '@react-navigation/native'; -import BottomSheet, { BottomSheetFlatList } from '@gorhom/bottom-sheet'; +import BottomSheet, { + BottomSheetBackdrop, + BottomSheetTextInput, + BottomSheetView, +} from '@gorhom/bottom-sheet'; import styled from 'styled-components/native'; +import tailwind from 'twrnc'; -const HomeScreen = () => { +const HomeScreen = ({ navigation }) => { const navigateSessionsHomeScreen = () => { navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { screen: PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME, @@ -42,39 +47,30 @@ const HomeScreen = () => { const purgeCompanySettingsInStorage = () => { onLogout({ purgeCompanySettingsInStorage: true }); }; - const sheetRef = useRef(null); - // variables - const data = useMemo( - () => - Array(50) - .fill(0) - .map((_, index) => `index-${index}`), - [] - ); - const snapPoints = useMemo(() => ['15%', '50%', '93%'], []); - - // callbacks - const handleSheetChange = useCallback((index) => { - console.log('handleSheetChange', index); - }, []); - const handleSnapPress = useCallback((index) => { - sheetRef.current?.snapToIndex(index); - }, []); - const handleClosePress = useCallback(() => { + const { data: homeData, isLoading, isError, refetch, isFetching } = useHome(); + const { data: meData, isLoading: isLoadingMe } = useMe(); + const { t } = useTranslation(); + const sheetRef = React.useRef(null); + const handleOnCloseSheet = React.useCallback(() => { sheetRef.current?.close(); }, []); - // render - const renderCustomHandle = useCallback( - (props) => , + const renderBackdrop = React.useCallback( + (props: any) => ( + + ), [] ); - const { data: homeData, isLoading, isError, refetch, isFetching } = useHome(); - const { data: meData, isLoading: isLoadingMe } = useMe(); - const { t } = useTranslation(); - - const { navigate } = useNavigation(); + // variables + const snapPoints = React.useMemo(() => ['40%'], []); + const { navigate, reset, getRootState } = useNavigation(); const companySettings = useAuthStore((state) => state.companySettings); const isLogoutProcessing = useAuthStore((state) => state.isLogoutProcessing); @@ -89,13 +85,22 @@ const HomeScreen = () => { } if (isError) return Home Data has Error; - const { width, height } = Dimensions.get('window'); - const paddingBottomValue = height * 0.17; + console.log(homeData.sessions?.length); const Container = styled.View` margin: 8px 0px; row-gap: 8px; `; + const currentNavigationState = navigation.getState(); + const previousRoute = currentNavigationState.routes[currentNavigationState.index - 1]; + + const handleNavigateToSessionDetail = (session: any) => { + navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_NAVIGATOR, { + screen: PRIVATE_ROUTES.SESSIONS.SESSION_DETAIL, + params: { session, from: BOTTOM_TAB_ROUTES.HOME }, + }); + }; + return ( { /> } > - {/* */} + {homeData.sessions?.map((session) => { const { userFullName, counterPartUserFullName } = getFullNameByUserRole( session, @@ -117,6 +124,7 @@ const HomeScreen = () => { const { userReply, counterPartUserReply } = getReplyByUserRole(session, currentUserRole); return ( handleNavigateToSessionDetail(session)} key={session.id} userFullName={userFullName} counterPartUserFullName={counterPartUserFullName} @@ -129,9 +137,76 @@ const HomeScreen = () => { ); })} + {/* */} + + + + sdsds + + + {/* */} ); }; export default HomeScreen; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + locationTextInput: { + height: 18, + fontSize: 16, + marginLeft: 14, + }, + hourSegmentStyle: { opacity: 0.06 }, + handleStyle: { + borderTopLeftRadius: 12, + borderTopRightRadius: 12, + backgroundColor: 'white', + }, + handleIndicatorStyle: { + width: 36, + height: 4, + }, + bottomSheetText: { + paddingLeft: 14, + fontSize: 16, + fontWeight: '400', + color: 'black', + }, + totalTimeContainer: { + paddingHorizontal: 12, + paddingVertical: 4.5, + borderRadius: 16, + backgroundColor: '#F3F3F3', + marginLeft: 12, + }, + totalTimeText: { + fontSize: 13, + fontWeight: '500', + color: '#383838', + }, + bottomSheetTotalTimeText: { + opacity: 0.5, + fontSize: 13, + fontWeight: '600', + }, + eventText: { + fontSize: 14, + fontWeight: '500', + }, +}); diff --git a/app/screens/PrivateScreens/Sessions/CreateSession/CreateSession.tsx b/app/screens/PrivateScreens/Sessions/CreateSession/CreateSession.tsx index 3a6d2ec..7fd9e58 100644 --- a/app/screens/PrivateScreens/Sessions/CreateSession/CreateSession.tsx +++ b/app/screens/PrivateScreens/Sessions/CreateSession/CreateSession.tsx @@ -1,10 +1,35 @@ import React from 'react'; import { Text, View } from 'react-native'; +import { Button } from 'react-native-ui-lib'; -const CreateSession = () => ( - - Create Session Screen - -); +import { PrivateStackNavigationProp } from '@oxvo-mobile/navigation/types'; + +import { PRIVATE_ROUTES } from '@oxvo-mobile/constants/routes'; + +import { useNavigation } from '@react-navigation/native'; + +const CreateSession = () => { + const { navigate } = useNavigation(); + + const navigateHomecreen = () => { + navigate(PRIVATE_ROUTES.SESSIONS.SESSIONS_HOME); + }; + + const navigateSessionDetailScreen = () => { + navigate(PRIVATE_ROUTES.SESSIONS.SESSION_DETAIL); + }; + + return ( + + CREATE SESSION! + + + + ); +}; export default CreateSession; diff --git a/app/screens/PrivateScreens/Sessions/SessionDetail/SessionDetail.tsx b/app/screens/PrivateScreens/Sessions/SessionDetail/SessionDetail.tsx index 99be7c9..d196d46 100644 --- a/app/screens/PrivateScreens/Sessions/SessionDetail/SessionDetail.tsx +++ b/app/screens/PrivateScreens/Sessions/SessionDetail/SessionDetail.tsx @@ -1,10 +1,18 @@ import React from 'react'; import { Text, View } from 'react-native'; -const SessionDetail = () => ( - - Session Detail Screen - -); +import { useRoute } from '@react-navigation/native'; + +// @ts-expect-error @ts-ignore +const SessionDetail = ({ route }) => { + const routex = useRoute(); + console.log('session detail', routex); + + return ( + + Session Detail Screen {JSON.stringify(route?.params?.session)} + + ); +}; export default SessionDetail; diff --git a/app/screens/PrivateScreens/Sessions/SessionsHome/SessionsHome.tsx b/app/screens/PrivateScreens/Sessions/SessionsHome/SessionsHome.tsx index 41c457c..70f2215 100644 --- a/app/screens/PrivateScreens/Sessions/SessionsHome/SessionsHome.tsx +++ b/app/screens/PrivateScreens/Sessions/SessionsHome/SessionsHome.tsx @@ -20,6 +20,7 @@ const SessionHome = () => { return ( + SESSION HOME diff --git a/docs/unused-code-lines.md b/docs/unused-code-lines.md index 3beee21..537dc79 100644 --- a/docs/unused-code-lines.md +++ b/docs/unused-code-lines.md @@ -1 +1,110 @@ -authStore.subscribe((state) => console.log('App JS, Subscribe: ', state)); \ No newline at end of file +authStore.subscribe((state) => console.log('App JS, Subscribe: ', state)); + + // + {/* */} + {/* */} + // + // Today's Sessions + // + + + + + + + + // + {/* + */} + {/* {t('screens.privateScreens.home.lastCounts')} + Today's Sessions + + Currents User Role: + {currentUserRole} + + + + + Company Settings: + {JSON.stringify(companySettings)} + + + Me Data: + {JSON.stringify(meData)} + + + Home Data: Sessions Length: {homeData?.sessions?.length}, Packages Length:{' '} + {homeData?.packages?.length || 0} + + */} + // + {/* {homeData.sessions?.map((session, index) => { + const getCurrentStatus = () => { + if (currentUserRole === UserRoles.CLIENT) { + const reply = session.clientReply.toLowerCase(); + if (reply.endsWith('_not_attend')) return 'not-attend'; + return session.clientReply.toLowerCase(); + } + const reply = session.staffReply.toLowerCase(); + if (reply.endsWith('_not_attend')) return 'not-attend'; + return session.staffReply.toLowerCase(); + }; + const getCounterPartStatus = () => { + if (currentUserRole === UserRoles.CLIENT) { + const reply = session.clientReply.toLowerCase(); + if (reply.endsWith('_not_attend')) return 'not-attend'; + return session.staffReply.toLowerCase(); + } + const reply = session.clientReply.toLowerCase(); + if (reply.endsWith('_not_attend')) return 'not-attend'; + return session.clientReply.toLowerCase(); + }; + + // console.log('1!!!!!!!!!!!!!!!!!!!!!!!!!!!!', currentUserRole, UserRoles.CLIENT); + return ( + + ); + })} */} diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f2f1fb9..c6f6460 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -11,7 +11,7 @@ PODS: - ExpoModulesCore - EXFont (11.1.1): - ExpoModulesCore - - Expo (48.0.11): + - Expo (48.0.15): - ExpoModulesCore - ExpoKeepAwake (12.0.1): - ExpoModulesCore @@ -23,17 +23,17 @@ PODS: - ReactCommon/turbomodule/core - EXSecureStore (12.1.1): - ExpoModulesCore - - EXSplashScreen (0.18.1): + - EXSplashScreen (0.18.2): - ExpoModulesCore - React-Core - - FBLazyVector (0.71.6) - - FBReactNativeSpec (0.71.6): + - FBLazyVector (0.71.7) + - FBReactNativeSpec (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.71.6) - - RCTTypeSafety (= 0.71.6) - - React-Core (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) + - RCTRequired (= 0.71.7) + - RCTTypeSafety (= 0.71.7) + - React-Core (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) - fmt (6.2.1) - glog (0.3.5) - hermes-engine (0.71.6): @@ -57,26 +57,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.71.6) - - RCTTypeSafety (0.71.6): - - FBLazyVector (= 0.71.6) - - RCTRequired (= 0.71.6) - - React-Core (= 0.71.6) - - React (0.71.6): - - React-Core (= 0.71.6) - - React-Core/DevSupport (= 0.71.6) - - React-Core/RCTWebSocket (= 0.71.6) - - React-RCTActionSheet (= 0.71.6) - - React-RCTAnimation (= 0.71.6) - - React-RCTBlob (= 0.71.6) - - React-RCTImage (= 0.71.6) - - React-RCTLinking (= 0.71.6) - - React-RCTNetwork (= 0.71.6) - - React-RCTSettings (= 0.71.6) - - React-RCTText (= 0.71.6) - - React-RCTVibration (= 0.71.6) - - React-callinvoker (0.71.6) - - React-Codegen (0.71.6): + - RCTRequired (0.71.7) + - RCTTypeSafety (0.71.7): + - FBLazyVector (= 0.71.7) + - RCTRequired (= 0.71.7) + - React-Core (= 0.71.7) + - React (0.71.7): + - React-Core (= 0.71.7) + - React-Core/DevSupport (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-RCTActionSheet (= 0.71.7) + - React-RCTAnimation (= 0.71.7) + - React-RCTBlob (= 0.71.7) + - React-RCTImage (= 0.71.7) + - React-RCTLinking (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - React-RCTSettings (= 0.71.7) + - React-RCTText (= 0.71.7) + - React-RCTVibration (= 0.71.7) + - React-callinvoker (0.71.7) + - React-Codegen (0.71.7): - FBReactNativeSpec - hermes-engine - RCT-Folly @@ -87,209 +87,209 @@ PODS: - React-jsiexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.71.6): + - React-Core (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.6) - - React-cxxreact (= 0.71.6) + - React-Core/Default (= 0.71.7) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/CoreModulesHeaders (0.71.6): + - React-Core/CoreModulesHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/Default (0.71.6): + - React-Core/Default (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/DevSupport (0.71.6): + - React-Core/DevSupport (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.6) - - React-Core/RCTWebSocket (= 0.71.6) - - React-cxxreact (= 0.71.6) + - React-Core/Default (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-jsinspector (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTActionSheetHeaders (0.71.6): + - React-Core/RCTActionSheetHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTAnimationHeaders (0.71.6): + - React-Core/RCTAnimationHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTBlobHeaders (0.71.6): + - React-Core/RCTBlobHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTImageHeaders (0.71.6): + - React-Core/RCTImageHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTLinkingHeaders (0.71.6): + - React-Core/RCTLinkingHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTNetworkHeaders (0.71.6): + - React-Core/RCTNetworkHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTSettingsHeaders (0.71.6): + - React-Core/RCTSettingsHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTTextHeaders (0.71.6): + - React-Core/RCTTextHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTVibrationHeaders (0.71.6): + - React-Core/RCTVibrationHeaders (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTWebSocket (0.71.6): + - React-Core/RCTWebSocket (0.71.7): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.6) - - React-cxxreact (= 0.71.6) + - React-Core/Default (= 0.71.7) + - React-cxxreact (= 0.71.7) - React-hermes - - React-jsi (= 0.71.6) - - React-jsiexecutor (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-CoreModules (0.71.6): + - React-CoreModules (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.6) - - React-Codegen (= 0.71.6) - - React-Core/CoreModulesHeaders (= 0.71.6) - - React-jsi (= 0.71.6) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/CoreModulesHeaders (= 0.71.7) + - React-jsi (= 0.71.7) - React-RCTBlob - - React-RCTImage (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-cxxreact (0.71.6): + - React-RCTImage (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-cxxreact (0.71.7): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.6) - - React-jsi (= 0.71.6) - - React-jsinspector (= 0.71.6) - - React-logger (= 0.71.6) - - React-perflogger (= 0.71.6) - - React-runtimeexecutor (= 0.71.6) - - React-hermes (0.71.6): + - React-callinvoker (= 0.71.7) + - React-jsi (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-runtimeexecutor (= 0.71.7) + - React-hermes (0.71.7): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.71.6) + - React-cxxreact (= 0.71.7) - React-jsi - - React-jsiexecutor (= 0.71.6) - - React-jsinspector (= 0.71.6) - - React-perflogger (= 0.71.6) - - React-jsi (0.71.6): + - React-jsiexecutor (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-jsi (0.71.7): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.71.6): + - React-jsiexecutor (0.71.7): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.6) - - React-jsi (= 0.71.6) - - React-perflogger (= 0.71.6) - - React-jsinspector (0.71.6) - - React-logger (0.71.6): + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-jsinspector (0.71.7) + - React-logger (0.71.7): - glog - react-native-safe-area-context (4.5.1): - RCT-Folly @@ -297,90 +297,90 @@ PODS: - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core - - React-perflogger (0.71.6) - - React-RCTActionSheet (0.71.6): - - React-Core/RCTActionSheetHeaders (= 0.71.6) - - React-RCTAnimation (0.71.6): + - React-perflogger (0.71.7) + - React-RCTActionSheet (0.71.7): + - React-Core/RCTActionSheetHeaders (= 0.71.7) + - React-RCTAnimation (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.6) - - React-Codegen (= 0.71.6) - - React-Core/RCTAnimationHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTAppDelegate (0.71.6): + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTAnimationHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTAppDelegate (0.71.7): - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core - - React-RCTBlob (0.71.6): + - React-RCTBlob (0.71.7): - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.6) - - React-Core/RCTBlobHeaders (= 0.71.6) - - React-Core/RCTWebSocket (= 0.71.6) - - React-jsi (= 0.71.6) - - React-RCTNetwork (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTImage (0.71.6): + - React-Codegen (= 0.71.7) + - React-Core/RCTBlobHeaders (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-jsi (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTImage (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.6) - - React-Codegen (= 0.71.6) - - React-Core/RCTImageHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - React-RCTNetwork (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTLinking (0.71.6): - - React-Codegen (= 0.71.6) - - React-Core/RCTLinkingHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTNetwork (0.71.6): + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTImageHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTLinking (0.71.7): + - React-Codegen (= 0.71.7) + - React-Core/RCTLinkingHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTNetwork (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.6) - - React-Codegen (= 0.71.6) - - React-Core/RCTNetworkHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTSettings (0.71.6): + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTNetworkHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTSettings (0.71.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.6) - - React-Codegen (= 0.71.6) - - React-Core/RCTSettingsHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-RCTText (0.71.6): - - React-Core/RCTTextHeaders (= 0.71.6) - - React-RCTVibration (0.71.6): + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTSettingsHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTText (0.71.7): + - React-Core/RCTTextHeaders (= 0.71.7) + - React-RCTVibration (0.71.7): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.6) - - React-Core/RCTVibrationHeaders (= 0.71.6) - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/core (= 0.71.6) - - React-runtimeexecutor (0.71.6): - - React-jsi (= 0.71.6) - - ReactCommon/turbomodule/bridging (0.71.6): + - React-Codegen (= 0.71.7) + - React-Core/RCTVibrationHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-runtimeexecutor (0.71.7): + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/bridging (0.71.7): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.6) - - React-Core (= 0.71.6) - - React-cxxreact (= 0.71.6) - - React-jsi (= 0.71.6) - - React-logger (= 0.71.6) - - React-perflogger (= 0.71.6) - - ReactCommon/turbomodule/core (0.71.6): + - React-callinvoker (= 0.71.7) + - React-Core (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) + - ReactCommon/turbomodule/core (0.71.7): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.6) - - React-Core (= 0.71.6) - - React-cxxreact (= 0.71.6) - - React-jsi (= 0.71.6) - - React-logger (= 0.71.6) - - React-perflogger (= 0.71.6) + - React-callinvoker (= 0.71.7) + - React-Core (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) - ReactNativeUiLib (4.0.0): - React - RNCAsyncStorage (1.18.1): @@ -596,53 +596,53 @@ SPEC CHECKSUMS: EXConstants: f348da07e21b23d2b085e270d7b74f282df1a7d9 EXFileSystem: 844e86ca9b5375486ecc4ef06d3838d5597d895d EXFont: 6ea3800df746be7233208d80fe379b8ed74f4272 - Expo: 81418098ffb16914b2e190f54e06db923248e4a1 + Expo: 62bba165c9cd30a2983176e7d975ae688b6334b6 ExpoKeepAwake: 69f5f627670d62318410392d03e0b5db0f85759a ExpoLinearGradient: 8eaab76b7f55c612ed8348c8be8c2a18a9b4529f ExpoModulesCore: 6e0259511f4c4341b6b8357db393624df2280828 EXSecureStore: e8923258361cc406d0401af380f12bd05b2b720f - EXSplashScreen: cd7fb052dff5ba8311d5c2455ecbebffe1b7a8ca - FBLazyVector: a83ceaa8a8581003a623facdb3c44f6d4f342ac5 - FBReactNativeSpec: 85eee79837cb797ab6176f0243a2b40511c09158 + EXSplashScreen: 0e0a9ba0cf7553094e93213099bd7b42e6e237e9 + FBLazyVector: a89a0525bc7ca174675045c2b492b5280d5a2470 + FBReactNativeSpec: 7714e6bc1e9ea23df6c4cb42f0b2fd9c6a3a559c fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b hermes-engine: b434cea529ad0152c56c7cb6486b0c4c0b23b5de libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: 5c6fd63b03abb06947d348dadac51c93e3485bd8 - RCTTypeSafety: 1c66daedd66f674e39ce9f40782f0d490c78b175 - React: e11ca7cdc7aa4ddd7e6a59278b808cfe17ebbd9f - React-callinvoker: 77a82869505c96945c074b80bbdc8df919646d51 - React-Codegen: 9ee33090c38ab3da3c4dc029924d50fb649f0dfc - React-Core: 44903e47b428a491f48fd0eae54caddb2ea05ebf - React-CoreModules: 83d989defdfc82be1f7386f84a56b6509f54ac74 - React-cxxreact: 058e7e6349649eae9cfcdec5854e702b26298932 - React-hermes: ba19a405804b833c9b832c1f2061ad5038bb97f2 - React-jsi: 3fe6f589c9cafbef85ed5a4be7c6dc8edfb4ab54 - React-jsiexecutor: 7894956638ff3e00819dd3f9f6f4a84da38f2409 - React-jsinspector: d5ce2ef3eb8fd30c28389d0bc577918c70821bd6 - React-logger: 9332c3e7b4ef007a0211c0a9868253aac3e1da82 + RCTRequired: 5a4a30ac20c86eeadd6844a9328f78d4168cf9b2 + RCTTypeSafety: 279fc5861a89f0f37db3a585f27f971485b4b734 + React: 88307a9be3bd0e71a6822271cf28b84a587fb97f + React-callinvoker: 35fb980c454104ebe82f0afb9826830089248e08 + React-Codegen: a8dbde3b7476d5c19437d2adb9e8ea1b426b9595 + React-Core: 385cb6fa78762c6409ff39faeb0dd9ad664b6e84 + React-CoreModules: c2b7db313b04d9b71954ffd55d0c2e46bc40e9fb + React-cxxreact: 845fefb889132e5d004ff818f7a599e32c52e7d6 + React-hermes: 86135f35e1dd2dfccfb97afe96d0c06f6a3970c4 + React-jsi: 39c116aa6c3d6f3d9874eff6998a670b47882a28 + React-jsiexecutor: eaa5f71eb8f6861cf0e57f1a0f52aeb020d9e18e + React-jsinspector: 9885f6f94d231b95a739ef7bb50536fb87ce7539 + React-logger: 3f8ebad1be1bf3299d1ab6d7f971802d7395c7ef react-native-safe-area-context: f5549f36508b1b7497434baa0cd97d7e470920d4 - React-perflogger: 43392072a5b867a504e2b4857606f8fc5a403d7f - React-RCTActionSheet: c7b67c125bebeda9fb19fc7b200d85cb9d6899c4 - React-RCTAnimation: c2de79906f607986633a7114bee44854e4c7e2f5 - React-RCTAppDelegate: 96bc933c3228a549718a6475c4d3f9dd4bbae98d - React-RCTBlob: cf72446957310e7da6627a4bdaadf970d3a8f232 - React-RCTImage: c6093f1bf3d67c0428d779b00390617d5bd90699 - React-RCTLinking: 5de47e37937889d22599af4b99d0552bad1b1c3c - React-RCTNetwork: e7d7077e073b08e5dd486fba3fe87ccad90a9bc4 - React-RCTSettings: 72a04921b2e8fb832da7201a60ffffff2a7c62f7 - React-RCTText: 7123c70fef5367e2121fea37e65b9ad6d3747e54 - React-RCTVibration: 73d201599a64ea14b4e0b8f91b64970979fd92e6 - React-runtimeexecutor: 8692ac548bec648fa121980ccb4304afd136d584 - ReactCommon: 0c43eaeaaee231d7d8dc24fc5a6e4cf2b75bf196 + React-perflogger: 2d505bbe298e3b7bacdd9e542b15535be07220f6 + React-RCTActionSheet: 0e96e4560bd733c9b37efbf68f5b1a47615892fb + React-RCTAnimation: fd138e26f120371c87e406745a27535e2c8a04ef + React-RCTAppDelegate: 4a9fd1230a98dc3d4382f8a934dc9f50834d8335 + React-RCTBlob: 38a7185f06a0ce8153a023e63b406a28d67b955d + React-RCTImage: 92b0966e7c1cadda889e961c474397ad5180e194 + React-RCTLinking: b80f8d0c6e94c54294b0048def51f57eaa9a27af + React-RCTNetwork: 491b0c65ac22edbd6695d12d084b4943103b009b + React-RCTSettings: 97af3e8abe0023349ec015910df3bda1a0380117 + React-RCTText: 33c85753bd714d527d2ae538dc56ec24c6783d84 + React-RCTVibration: 08f132cad9896458776f37c112e71d60aef1c6ae + React-runtimeexecutor: c5c89f8f543842dd864b63ded1b0bbb9c9445328 + ReactCommon: dbfbe2f7f3c5ce4ce44f43f2fd0d5950d1eb67c5 ReactNativeUiLib: 511a5eb03809a0b27f6aefa2b4d6f7c2d6ae4053 RNCAsyncStorage: b90b71f45b8b97be43bc4284e71a6af48ac9f547 RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39 RNReanimated: cc5e3aa479cb9170bcccf8204291a6950a3be128 RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2 - Yoga: ba09b6b11e6139e3df8229238aa794205ca6a02a + Yoga: d56980c8914db0b51692f55533409e844b66133c PODFILE CHECKSUM: 96a0ecc733f2f502289d4059ce69374d3e4cd67d diff --git a/package.json b/package.json index 9948f6b..9c4eb5f 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "react-native-ui-lib": "7.3.2", "styled-components": "5.3.9", "tamagui": "^1.20.7", + "twrnc": "^3.6.1", "zod": "3.21.4", "zustand": "4.3.7" }, diff --git a/yarn.lock b/yarn.lock index 8238d36..ace72f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@0no-co/graphql.web/-/graphql.web-1.0.0.tgz#af3f5e3b9359d2f011bc37a93654348b92d4d893" integrity sha512-JBq2pWyDchE1vVjj/+c4dzZ8stbpew4RrzpZ3vYdn1WJFGHfYg6YIX1fDdMKtSXJJM9FUlsoDOxemr9WMM2p+A== +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -3265,7 +3270,7 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -anymatch@^3.0.3: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3288,6 +3293,11 @@ arg@4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3625,6 +3635,11 @@ big-integer@1.6.x: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -3722,7 +3737,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3863,6 +3878,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3905,6 +3925,21 @@ charenc@0.0.2, charenc@~0.0.1: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -4301,6 +4336,11 @@ css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -4479,6 +4519,11 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -4491,6 +4536,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -5325,7 +5375,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.2.5, fast-glob@^3.2.9: +fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -5622,7 +5672,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5713,14 +5763,14 @@ getenv@^1.0.0: resolved "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31" integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg== -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -6120,6 +6170,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -6233,7 +6290,7 @@ is-glob@^2.0.0: dependencies: is-extglob "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -6545,6 +6602,11 @@ jimp-compact@0.16.1: resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3" integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== +jiti@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== + joi@^17.2.1: version "17.9.1" resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" @@ -6745,6 +6807,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -7237,7 +7304,7 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7390,7 +7457,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.1.23, nanoid@^3.3.1: +nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -7493,7 +7560,7 @@ node-stream-zip@^1.9.1: resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -7560,6 +7627,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -7894,11 +7966,16 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -7946,11 +8023,59 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -postcss-value-parser@^4.0.2: +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@^8.4.23: + version "8.4.24" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" + integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -8367,6 +8492,13 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -8389,6 +8521,13 @@ readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + readline@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" @@ -8546,7 +8685,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.1.7, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -8898,6 +9037,11 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -9149,7 +9293,7 @@ styled-components@5.3.9: shallowequal "^1.1.0" supports-color "^5.5.0" -sucrase@^3.20.0: +sucrase@^3.20.0, sucrase@^3.32.0: version "3.32.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== @@ -9221,6 +9365,35 @@ tabbable@^6.0.1: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.1.1.tgz#40cfead5ed11be49043f04436ef924c8890186a0" integrity sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg== +tailwindcss@>=2.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + resolve "^1.22.2" + sucrase "^3.32.0" + tamagui@^1.20.7: version "1.20.7" resolved "https://registry.yarnpkg.com/tamagui/-/tamagui-1.20.7.tgz#b4e7f14b56d1264d16614f4ffa6d946080b85fd7" @@ -9498,6 +9671,13 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +twrnc@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/twrnc/-/twrnc-3.6.1.tgz#9c67075212ea5d5ee17a2fabedef243a56eb1252" + integrity sha512-50b790axXexv1ABEpetd+jwL1JTTvG/UiZGg8Mc3zFeKnhm1BVsg9C12oNI/Bos4vEsyIwkwHidj0uzI/NTtSw== + dependencies: + tailwindcss ">=2.0.0" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -9747,7 +9927,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -10021,6 +10201,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"