diff --git a/src/screen/HomeScreen.tsx b/app/HomeScreen.tsx similarity index 91% rename from src/screen/HomeScreen.tsx rename to app/HomeScreen.tsx index 023fdfb..7bbba87 100644 --- a/src/screen/HomeScreen.tsx +++ b/app/HomeScreen.tsx @@ -1,10 +1,9 @@ import {SafeAreaView, StyleSheet, View} from "react-native"; import React from "react"; -import {Avatar, AvatarFallbackText, AvatarImage,} from "@/app/src/components/ui/avatar" +import {Avatar, AvatarFallbackText, AvatarImage,} from "@/app/components/ui/avatar" import {AntDesign} from "@expo/vector-icons"; -import {Text} from "@/app/src/components/ui/text"; -import {Box} from "@/app/src/components/ui/box"; -import ExerciceOverview from "@/src/component/ExerciceOverview"; +import {Text} from "@/app/components/ui/text"; +import ExerciceOverview from "@/app/components/ExerciceOverview"; export default function HomeScreen() { diff --git a/src/screen/ProfileScreen.tsx b/app/ProfileScreen.tsx similarity index 100% rename from src/screen/ProfileScreen.tsx rename to app/ProfileScreen.tsx diff --git a/app/_layout.tsx b/app/_layout.tsx index 55d43ba..56b2272 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -1,7 +1,7 @@ import "../global.css"; -import { GluestackUIProvider } from "./src/components/ui/gluestack-ui-provider"; -import HomeScreen from "@/src/screen/HomeScreen"; -import ProfileScreen from "@/src/screen/ProfileScreen"; +import { GluestackUIProvider } from "@/app/components/ui/gluestack-ui-provider"; +import HomeScreen from "@/app/HomeScreen"; +import ProfileScreen from "@/app/ProfileScreen"; import React from "react"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { diff --git a/src/component/ExerciceOverview.tsx b/app/components/ExerciceOverview.tsx similarity index 51% rename from src/component/ExerciceOverview.tsx rename to app/components/ExerciceOverview.tsx index 2a4c4dd..2ee989b 100644 --- a/src/component/ExerciceOverview.tsx +++ b/app/components/ExerciceOverview.tsx @@ -1,8 +1,10 @@ - import React from "react"; -import {View, TouchableOpacity, ImageBackground, ImageBase} from "react-native"; -import { AntDesign } from "@expo/vector-icons"; // Assure-toi d'avoir installé les icônes -import { Text } from "@/app/src/components/ui/text"; +import {Text} from "./ui/text"; +import {Box} from "./ui/box"; +import {ImageBackground} from "react-native"; +import {HStack} from "@/app/components/ui/hstack"; +import {Button} from "@/app/components/ui/button"; +import {AntDesign} from "@expo/vector-icons"; export default function ExerciceOverview() { const exercise = { @@ -17,34 +19,30 @@ export default function ExerciceOverview() { const image = {uri: exercise.imageUri}; return ( - + - + {exercise.time} {exercise.kcal} kcal - + - + {exercise.name} {exercise.sets} Sets {exercise.difficulty} Difficulty - - - console.log("Play exercise started")} - > - - - + + + - + ); } \ No newline at end of file diff --git a/app/src/components/ui/avatar/index.tsx b/app/components/ui/avatar/index.tsx similarity index 100% rename from app/src/components/ui/avatar/index.tsx rename to app/components/ui/avatar/index.tsx diff --git a/app/src/components/ui/box/index.tsx b/app/components/ui/box/index.tsx similarity index 100% rename from app/src/components/ui/box/index.tsx rename to app/components/ui/box/index.tsx diff --git a/app/src/components/ui/box/index.web.tsx b/app/components/ui/box/index.web.tsx similarity index 100% rename from app/src/components/ui/box/index.web.tsx rename to app/components/ui/box/index.web.tsx diff --git a/app/src/components/ui/box/styles.tsx b/app/components/ui/box/styles.tsx similarity index 100% rename from app/src/components/ui/box/styles.tsx rename to app/components/ui/box/styles.tsx diff --git a/app/src/components/ui/button/index.tsx b/app/components/ui/button/index.tsx similarity index 100% rename from app/src/components/ui/button/index.tsx rename to app/components/ui/button/index.tsx diff --git a/app/components/ui/checkbox/index.tsx b/app/components/ui/checkbox/index.tsx new file mode 100644 index 0000000..4e85cac --- /dev/null +++ b/app/components/ui/checkbox/index.tsx @@ -0,0 +1,237 @@ +'use client'; +import React from 'react'; +import { createCheckbox } from '@gluestack-ui/checkbox'; +import { View, Pressable, Text, Platform } from 'react-native'; +import type { TextProps, ViewProps } from 'react-native'; +import { tva } from '@gluestack-ui/nativewind-utils/tva'; +import { PrimitiveIcon, IPrimitiveIcon, UIIcon } from '@gluestack-ui/icon'; +import { + withStyleContext, + useStyleContext, +} from '@gluestack-ui/nativewind-utils/withStyleContext'; +import { cssInterop } from 'nativewind'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; + +const IndicatorWrapper = React.forwardRef< + React.ElementRef, + ViewProps +>(({ ...props }, ref) => { + return ; +}); + +const LabelWrapper = React.forwardRef, TextProps>( + ({ ...props }, ref) => { + return ; + } +); + +const IconWrapper = React.forwardRef< + React.ElementRef, + IPrimitiveIcon +>(({ ...props }, ref) => { + return ; +}); + +const SCOPE = 'CHECKBOX'; +const UICheckbox = createCheckbox({ + // @ts-expect-error + Root: + Platform.OS === 'web' + ? withStyleContext(View, SCOPE) + : withStyleContext(Pressable, SCOPE), + Group: View, + Icon: IconWrapper, + Label: LabelWrapper, + Indicator: IndicatorWrapper, +}); + +cssInterop(PrimitiveIcon, { + className: { + target: 'style', + nativeStyleToProp: { + height: true, + width: true, + fill: true, + color: 'classNameColor', + stroke: true, + }, + }, +}); + +const checkboxStyle = tva({ + base: 'group/checkbox flex-row items-center justify-start web:cursor-pointer data-[disabled=true]:cursor-not-allowed', + variants: { + size: { + lg: 'gap-2', + md: 'gap-2', + sm: 'gap-1.5', + }, + }, +}); + +const checkboxIndicatorStyle = tva({ + base: 'justify-center items-center border-outline-400 bg-transparent rounded web:data-[focus-visible=true]:outline-none web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-indicator-primary data-[checked=true]:bg-primary-600 data-[checked=true]:border-primary-600 data-[hover=true]:data-[checked=false]:border-outline-500 data-[hover=true]:bg-transparent data-[hover=true]:data-[invalid=true]:border-error-700 data-[hover=true]:data-[checked=true]:bg-primary-700 data-[hover=true]:data-[checked=true]:border-primary-700 data-[hover=true]:data-[checked=true]:data-[disabled=true]:border-primary-600 data-[hover=true]:data-[checked=true]:data-[disabled=true]:bg-primary-600 data-[hover=true]:data-[checked=true]:data-[disabled=true]:opacity-40 data-[hover=true]:data-[checked=true]:data-[disabled=true]:data-[invalid=true]:border-error-700 data-[hover=true]:data-[disabled=true]:border-outline-400 data-[hover=true]:data-[disabled=true]:data-[invalid=true]:border-error-700 data-[active=true]:data-[checked=true]:bg-primary-800 data-[active=true]:data-[checked=true]:border-primary-800 data-[invalid=true]:border-error-700 data-[disabled=true]:opacity-40', + parentVariants: { + size: { + lg: 'w-6 h-6 border-[3px]', + md: 'w-5 h-5 border-2', + sm: 'w-4 h-4 border-2', + }, + }, +}); + +const checkboxLabelStyle = tva({ + base: 'text-typography-600 data-[checked=true]:text-typography-900 data-[hover=true]:text-typography-900 data-[hover=true]:data-[checked=true]:text-typography-900 data-[hover=true]:data-[checked=true]:data-[disabled=true]:text-typography-900 data-[hover=true]:data-[disabled=true]:text-typography-400 data-[active=true]:text-typography-900 data-[active=true]:data-[checked=true]:text-typography-900 data-[disabled=true]:opacity-40 web:select-none', + parentVariants: { + size: { + lg: 'text-lg', + md: 'text-base', + sm: 'text-sm', + }, + }, +}); + +const checkboxIconStyle = tva({ + base: 'text-typography-50 fill-none', + + parentVariants: { + size: { + sm: 'h-3 w-3', + md: 'h-4 w-4', + lg: 'h-5 w-5', + }, + }, +}); + +const CheckboxGroup = UICheckbox.Group; + +type ICheckboxProps = React.ComponentPropsWithoutRef & + VariantProps; + +const Checkbox = React.forwardRef< + React.ElementRef, + ICheckboxProps +>(({ className, size = 'md', ...props }, ref) => { + return ( + + ); +}); + +type ICheckboxIndicatorProps = React.ComponentPropsWithoutRef< + typeof UICheckbox.Indicator +> & + VariantProps; + +const CheckboxIndicator = React.forwardRef< + React.ElementRef, + ICheckboxIndicatorProps +>(({ className, ...props }, ref) => { + const { size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +type ICheckboxLabelProps = React.ComponentPropsWithoutRef< + typeof UICheckbox.Label +> & + VariantProps; +const CheckboxLabel = React.forwardRef< + React.ElementRef, + ICheckboxLabelProps +>(({ className, ...props }, ref) => { + const { size: parentSize } = useStyleContext(SCOPE); + return ( + + ); +}); + +type ICheckboxIconProps = React.ComponentPropsWithoutRef< + typeof UICheckbox.Icon +> & + VariantProps; + +const CheckboxIcon = React.forwardRef< + React.ElementRef, + ICheckboxIconProps +>(({ className, size, ...props }, ref) => { + const { size: parentSize } = useStyleContext(SCOPE); + + if (typeof size === 'number') { + return ( + + ); + } else if ( + (props.height !== undefined || props.width !== undefined) && + size === undefined + ) { + return ( + + ); + } + + return ( + + ); +}); + +Checkbox.displayName = 'Checkbox'; +CheckboxIndicator.displayName = 'CheckboxIndicator'; +CheckboxLabel.displayName = 'CheckboxLabel'; +CheckboxIcon.displayName = 'CheckboxIcon'; + +export { + Checkbox, + CheckboxIndicator, + CheckboxLabel, + CheckboxIcon, + CheckboxGroup, +}; diff --git a/app/src/components/ui/gluestack-ui-provider/config.ts b/app/components/ui/gluestack-ui-provider/config.ts similarity index 100% rename from app/src/components/ui/gluestack-ui-provider/config.ts rename to app/components/ui/gluestack-ui-provider/config.ts diff --git a/app/src/components/ui/gluestack-ui-provider/index.tsx b/app/components/ui/gluestack-ui-provider/index.tsx similarity index 100% rename from app/src/components/ui/gluestack-ui-provider/index.tsx rename to app/components/ui/gluestack-ui-provider/index.tsx diff --git a/app/components/ui/hstack/index.tsx b/app/components/ui/hstack/index.tsx new file mode 100644 index 0000000..5c4a81e --- /dev/null +++ b/app/components/ui/hstack/index.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { View } from 'react-native'; +import type { ViewProps } from 'react-native'; +import { hstackStyle } from './styles'; + +type IHStackProps = ViewProps & VariantProps; + +const HStack = React.forwardRef, IHStackProps>( + ({ className, space, reversed, ...props }, ref) => { + return ( + + ); + } +); + +HStack.displayName = 'HStack'; + +export { HStack }; diff --git a/app/components/ui/hstack/index.web.tsx b/app/components/ui/hstack/index.web.tsx new file mode 100644 index 0000000..7d1c50f --- /dev/null +++ b/app/components/ui/hstack/index.web.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { hstackStyle } from './styles'; + +type IHStackProps = React.ComponentPropsWithoutRef<'div'> & + VariantProps; + +const HStack = React.forwardRef, IHStackProps>( + ({ className, space, reversed, ...props }, ref) => { + return ( +
+ ); + } +); + +HStack.displayName = 'HStack'; + +export { HStack }; diff --git a/app/components/ui/hstack/styles.tsx b/app/components/ui/hstack/styles.tsx new file mode 100644 index 0000000..f02fb7c --- /dev/null +++ b/app/components/ui/hstack/styles.tsx @@ -0,0 +1,25 @@ +import { isWeb } from '@gluestack-ui/nativewind-utils/IsWeb'; +import { tva } from '@gluestack-ui/nativewind-utils/tva'; + +const baseStyle = isWeb + ? 'flex relative z-0 box-border border-0 list-none min-w-0 min-h-0 bg-transparent items-stretch m-0 p-0 text-decoration-none' + : ''; + +export const hstackStyle = tva({ + base: `flex-row ${baseStyle}`, + variants: { + space: { + 'xs': 'gap-1', + 'sm': 'gap-2', + 'md': 'gap-3', + 'lg': 'gap-4', + 'xl': 'gap-5', + '2xl': 'gap-6', + '3xl': 'gap-7', + '4xl': 'gap-8', + }, + reversed: { + true: 'flex-row-reverse', + }, + }, +}); diff --git a/app/src/components/ui/text/index.tsx b/app/components/ui/text/index.tsx similarity index 100% rename from app/src/components/ui/text/index.tsx rename to app/components/ui/text/index.tsx diff --git a/app/src/components/ui/text/index.web.tsx b/app/components/ui/text/index.web.tsx similarity index 100% rename from app/src/components/ui/text/index.web.tsx rename to app/components/ui/text/index.web.tsx diff --git a/app/src/components/ui/text/styles.tsx b/app/components/ui/text/styles.tsx similarity index 100% rename from app/src/components/ui/text/styles.tsx rename to app/components/ui/text/styles.tsx diff --git a/app/components/ui/vstack/index.tsx b/app/components/ui/vstack/index.tsx new file mode 100644 index 0000000..343b97a --- /dev/null +++ b/app/components/ui/vstack/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; +import { View } from 'react-native'; + +import { vstackStyle } from './styles'; + +type IVStackProps = React.ComponentProps & + VariantProps; + +const VStack = React.forwardRef, IVStackProps>( + ({ className, space, reversed, ...props }, ref) => { + return ( + + ); + } +); + +VStack.displayName = 'VStack'; + +export { VStack }; diff --git a/app/components/ui/vstack/index.web.tsx b/app/components/ui/vstack/index.web.tsx new file mode 100644 index 0000000..2f76b46 --- /dev/null +++ b/app/components/ui/vstack/index.web.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; + +import { vstackStyle } from './styles'; + +type IVStackProps = React.ComponentProps<'div'> & + VariantProps; + +const VStack = React.forwardRef, IVStackProps>( + ({ className, space, reversed, ...props }, ref) => { + return ( +
+ ); + } +); + +VStack.displayName = 'VStack'; + +export { VStack }; diff --git a/app/components/ui/vstack/styles.tsx b/app/components/ui/vstack/styles.tsx new file mode 100644 index 0000000..abc5dbe --- /dev/null +++ b/app/components/ui/vstack/styles.tsx @@ -0,0 +1,25 @@ +import { isWeb } from '@gluestack-ui/nativewind-utils/IsWeb'; +import { tva } from '@gluestack-ui/nativewind-utils/tva'; + +const baseStyle = isWeb + ? 'flex flex-col relative z-0 box-border border-0 list-none min-w-0 min-h-0 bg-transparent items-stretch m-0 p-0 text-decoration-none' + : ''; + +export const vstackStyle = tva({ + base: `flex-col ${baseStyle}`, + variants: { + space: { + 'xs': 'gap-1', + 'sm': 'gap-2', + 'md': 'gap-3', + 'lg': 'gap-4', + 'xl': 'gap-5', + '2xl': 'gap-6', + '3xl': 'gap-7', + '4xl': 'gap-8', + }, + reversed: { + true: 'flex-col-reverse', + }, + }, +}); diff --git a/app/index.tsx b/app/index.tsx index 7501f9c..92ad8e8 100644 --- a/app/index.tsx +++ b/app/index.tsx @@ -1,6 +1,6 @@ import {SafeAreaView, Text, View} from "react-native"; import Navigation from "@/src/navigation/navigation"; -import HomeScreen from "@/src/screen/HomeScreen"; +import HomeScreen from "@/app/HomeScreen"; export default function Index() { return ( diff --git a/src/component/component.ts b/app/model/component.ts similarity index 100% rename from src/component/component.ts rename to app/model/component.ts diff --git a/package-lock.json b/package-lock.json index 94dabb1..100ddab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@expo/vector-icons": "^14.0.2", "@gluestack-ui/avatar": "^0.1.18", "@gluestack-ui/button": "^1.0.8", + "@gluestack-ui/checkbox": "^0.1.33", "@gluestack-ui/icon": "^0.1.25", "@gluestack-ui/nativewind-utils": "^1.0.26", "@gluestack-ui/overlay": "^0.1.16", @@ -2410,6 +2411,38 @@ "react-dom": ">=16" } }, + "node_modules/@gluestack-ui/checkbox": { + "version": "0.1.33", + "resolved": "https://registry.npmjs.org/@gluestack-ui/checkbox/-/checkbox-0.1.33.tgz", + "integrity": "sha512-sTbjWiqJDzwfIzp1ZUnHV4MnR08+mlfixsBNqJHCUPrcFCvW2DMFyyRKHWdgHj3BJcfPZQH/kYljVGzJQeAetA==", + "dependencies": { + "@gluestack-ui/form-control": "^0.1.19", + "@gluestack-ui/utils": "^0.1.14", + "@react-aria/visually-hidden": "^3.8.6", + "@react-native-aria/checkbox": "^0.2.9", + "@react-native-aria/focus": "^0.2.9", + "@react-native-aria/interactions": "0.2.13", + "@react-native-aria/utils": "0.2.11", + "@react-stately/checkbox": "^3.4.2" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/@gluestack-ui/form-control": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@gluestack-ui/form-control/-/form-control-0.1.19.tgz", + "integrity": "sha512-6YbPbi/RZrXc5DyVPbxPV17FYaBoEl1yAdSwut8iE6n+yQekjluINrh2q5ZPWF2SGmyo7VSNcL85yeU5I97xHg==", + "dependencies": { + "@gluestack-ui/utils": "^0.1.14", + "@react-native-aria/focus": "^0.2.9" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, "node_modules/@gluestack-ui/hooks": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/@gluestack-ui/hooks/-/hooks-0.1.12.tgz", @@ -3217,6 +3250,24 @@ "react": "^16.8 || ^17.0 || ^18.0" } }, + "node_modules/@react-aria/checkbox": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.2.1.tgz", + "integrity": "sha512-XnypnlVIfhB3CD7eSjSds8hNkzHgnhu0t48I1D0jYdL1O6tQC4UytPdIqlemRYBVHDloZkWerbjenpHnxhv8iA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.6.2", + "@react-aria/label": "^3.1.1", + "@react-aria/toggle": "^3.1.1", + "@react-aria/utils": "^3.3.0", + "@react-stately/checkbox": "^3.0.1", + "@react-stately/toggle": "^3.2.1", + "@react-types/checkbox": "^3.2.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1" + } + }, "node_modules/@react-aria/focus": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.19.0.tgz", @@ -3267,6 +3318,20 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/label": { + "version": "3.7.13", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.13.tgz", + "integrity": "sha512-brSAXZVTey5RG/Ex6mTrV/9IhGSQFU4Al34qmjEDho+Z2qT4oPwf8k7TRXWWqzOU0ugYxekYbsLd2zlN3XvWcg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/overlays": { "version": "3.24.0", "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.24.0.tgz", @@ -3305,6 +3370,24 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/toggle": { + "version": "3.10.10", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.10.tgz", + "integrity": "sha512-QwMT/vTNrbrILxWVHfd9zVQ3mV2NdBwyRu+DphVQiFAXcmc808LEaIX2n0lI6FCsUDC9ZejCyvzd91/YemdZ1Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.19.0", + "@react-aria/interactions": "^3.22.5", + "@react-aria/utils": "^3.26.0", + "@react-stately/toggle": "^3.8.0", + "@react-types/checkbox": "^3.9.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/utils": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", @@ -3336,6 +3419,23 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-native-aria/checkbox": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@react-native-aria/checkbox/-/checkbox-0.2.9.tgz", + "integrity": "sha512-REycBw1DKbw2r9LbynrB+egWOnJXo1YPoMkAQOv6wiKgIzRZ69l4GpmAwkwqUmKit+DJM9Van6/cGl9kOKTAeA==", + "license": "MIT", + "dependencies": { + "@react-aria/checkbox": "3.2.1", + "@react-aria/utils": "^3.6.0", + "@react-native-aria/toggle": "^0.2.8", + "@react-native-aria/utils": "0.2.11", + "@react-stately/toggle": "^3.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/@react-native-aria/focus": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@react-native-aria/focus/-/focus-0.2.9.tgz", @@ -3383,6 +3483,24 @@ "react-native": "*" } }, + "node_modules/@react-native-aria/toggle": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@react-native-aria/toggle/-/toggle-0.2.8.tgz", + "integrity": "sha512-4TJXuIUuVeozbV3Lk9YUxHxCHAhignn6/GfEdQv8XsfKHUmRMHyvXwdrmKTQCnbtz2Nn+NDUoqKUfZtOYpT3cg==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "^3.2.3", + "@react-aria/utils": "^3.6.0", + "@react-native-aria/interactions": "0.2.13", + "@react-native-aria/utils": "0.2.11", + "@react-stately/toggle": "^3.2.1", + "@react-types/checkbox": "^3.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/@react-native-aria/utils": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/@react-native-aria/utils/-/utils-0.2.11.tgz", @@ -3888,6 +4006,35 @@ "react-native-screens": ">= 4.0.0" } }, + "node_modules/@react-stately/checkbox": { + "version": "3.6.10", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.10.tgz", + "integrity": "sha512-LHm7i4YI8A/RdgWAuADrnSAYIaYYpQeZqsp1a03Og0pJHAlZL0ymN3y2IFwbZueY0rnfM+yF+kWNXjJqbKrFEQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.1.0", + "@react-stately/utils": "^3.10.5", + "@react-types/checkbox": "^3.9.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/form": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.1.0.tgz", + "integrity": "sha512-E2wxNQ0QaTyDHD0nJFtTSnEH9A3bpJurwxhS4vgcUmESHgjFEMLlC9irUSZKgvOgb42GAq+fHoWBsgKeTp9Big==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-stately/overlays": { "version": "3.6.12", "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.12.tgz", @@ -3902,6 +4049,21 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-stately/toggle": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.8.0.tgz", + "integrity": "sha512-pyt/k/J8BwE/2g6LL6Z6sMSWRx9HEJB83Sm/MtovXnI66sxJ2EfQ1OaXB7Su5PEL9OMdoQF6Mb+N1RcW3zAoPw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.5", + "@react-types/checkbox": "^3.9.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-stately/utils": { "version": "3.10.5", "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", @@ -3926,6 +4088,18 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-types/checkbox": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.9.0.tgz", + "integrity": "sha512-9hbHx0Oo2Hp5a8nV8Q75LQR0DHtvOIJbFaeqESSopqmV9EZoYjtY/h0NS7cZetgahQgnqYWQi44XGooMDCsmxA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-types/overlays": { "version": "3.8.11", "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.11.tgz", diff --git a/package.json b/package.json index ff9bc02..62a8801 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@expo/vector-icons": "^14.0.2", "@gluestack-ui/avatar": "^0.1.18", "@gluestack-ui/button": "^1.0.8", + "@gluestack-ui/checkbox": "^0.1.33", "@gluestack-ui/icon": "^0.1.25", "@gluestack-ui/nativewind-utils": "^1.0.26", "@gluestack-ui/overlay": "^0.1.16", diff --git a/src/model/component.ts b/src/model/component.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/navigation/navigation.tsx b/src/navigation/navigation.tsx deleted file mode 100644 index af983d3..0000000 --- a/src/navigation/navigation.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import {createBottomTabNavigator} from "@react-navigation/bottom-tabs"; -import {NavigationContainer} from "expo-router/build/fork/NavigationContainer"; -import ProfileScreen from "@/src/screen/ProfileScreen"; -import HomeScreen from "@/src/screen/HomeScreen"; -import {MaterialIcons} from "@expo/vector-icons"; - -export default function Navigation() { - /* const BottomTabNavigator = createBottomTabNavigator(); - - return ( - - - ( - - ), - }} - /> - - - - - ) - */ - -} \ No newline at end of file diff --git a/src/screen/component.tsx b/src/screen/component.tsx deleted file mode 100644 index e69de29..0000000