ComponentHome

pull/4/head
Tony Fages 5 months ago
parent 82c92a75d6
commit 5af02d4017

@ -1,10 +1,9 @@
import {SafeAreaView, StyleSheet, View} from "react-native"; import {SafeAreaView, StyleSheet, View} from "react-native";
import React from "react"; 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 {AntDesign} from "@expo/vector-icons";
import {Text} from "@/app/src/components/ui/text"; import {Text} from "@/app/components/ui/text";
import {Box} from "@/app/src/components/ui/box"; import ExerciceOverview from "@/app/components/ExerciceOverview";
import ExerciceOverview from "@/src/component/ExerciceOverview";
export default function HomeScreen() { export default function HomeScreen() {

@ -1,7 +1,7 @@
import "../global.css"; import "../global.css";
import { GluestackUIProvider } from "./src/components/ui/gluestack-ui-provider"; import { GluestackUIProvider } from "@/app/components/ui/gluestack-ui-provider";
import HomeScreen from "@/src/screen/HomeScreen"; import HomeScreen from "@/app/HomeScreen";
import ProfileScreen from "@/src/screen/ProfileScreen"; import ProfileScreen from "@/app/ProfileScreen";
import React from "react"; import React from "react";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { import {

@ -1,8 +1,10 @@
import React from "react"; import React from "react";
import {View, TouchableOpacity, ImageBackground, ImageBase} from "react-native"; import {Text} from "./ui/text";
import { AntDesign } from "@expo/vector-icons"; // Assure-toi d'avoir installé les icônes import {Box} from "./ui/box";
import { Text } from "@/app/src/components/ui/text"; 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() { export default function ExerciceOverview() {
const exercise = { const exercise = {
@ -17,34 +19,30 @@ export default function ExerciceOverview() {
const image = {uri: exercise.imageUri}; const image = {uri: exercise.imageUri};
return ( return (
<View className="h-auto"> <Box>
<ImageBackground <ImageBackground
source={image} source={image}
imageStyle={{ borderRadius: 15 }} imageStyle={{ borderRadius: 15 }}
className="rounded-xl flex-1" // Ajoutez flex-1 ici pour que l'ImageBackground prenne toute la hauteur disponible
> >
<View className="flex-row p-80 "> <HStack >
<Text className="font-extrabold text-black">{exercise.time}</Text> <Text className="font-extrabold text-black">{exercise.time}</Text>
<Text className="text-black">{exercise.kcal} kcal</Text> <Text className="text-black">{exercise.kcal} kcal</Text>
</View> </HStack>
<View className="flex-row"> <HStack>
<Text className="text-black">{exercise.name}</Text> <Text className="text-black">{exercise.name}</Text>
<Text className="text-black">{exercise.sets} Sets</Text> <Text className="text-black">{exercise.sets} Sets</Text>
<Text className="text-black">{exercise.difficulty} Difficulty</Text> <Text className="text-black">{exercise.difficulty} Difficulty</Text>
</View>
<View className="flex items-end">
<TouchableOpacity <Button className="bg-transparent">
onPress={() => console.log("Play exercise started")} <AntDesign name="play" size={24} />
> </Button>
<AntDesign name="play" size={50} color="orange"/> </HStack>
</TouchableOpacity>
</View>
</ImageBackground> </ImageBackground>
</View> </Box>
); );
} }

@ -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<typeof View>,
ViewProps
>(({ ...props }, ref) => {
return <View {...props} ref={ref} />;
});
const LabelWrapper = React.forwardRef<React.ElementRef<typeof Text>, TextProps>(
({ ...props }, ref) => {
return <Text {...props} ref={ref} />;
}
);
const IconWrapper = React.forwardRef<
React.ElementRef<typeof PrimitiveIcon>,
IPrimitiveIcon
>(({ ...props }, ref) => {
return <UIIcon {...props} ref={ref} />;
});
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<typeof UICheckbox> &
VariantProps<typeof checkboxStyle>;
const Checkbox = React.forwardRef<
React.ElementRef<typeof UICheckbox>,
ICheckboxProps
>(({ className, size = 'md', ...props }, ref) => {
return (
<UICheckbox
className={checkboxStyle({
class: className,
size,
})}
{...props}
context={{
size,
}}
ref={ref}
/>
);
});
type ICheckboxIndicatorProps = React.ComponentPropsWithoutRef<
typeof UICheckbox.Indicator
> &
VariantProps<typeof checkboxIndicatorStyle>;
const CheckboxIndicator = React.forwardRef<
React.ElementRef<typeof UICheckbox.Indicator>,
ICheckboxIndicatorProps
>(({ className, ...props }, ref) => {
const { size: parentSize } = useStyleContext(SCOPE);
return (
<UICheckbox.Indicator
className={checkboxIndicatorStyle({
parentVariants: {
size: parentSize,
},
class: className,
})}
{...props}
ref={ref}
/>
);
});
type ICheckboxLabelProps = React.ComponentPropsWithoutRef<
typeof UICheckbox.Label
> &
VariantProps<typeof checkboxLabelStyle>;
const CheckboxLabel = React.forwardRef<
React.ElementRef<typeof UICheckbox.Label>,
ICheckboxLabelProps
>(({ className, ...props }, ref) => {
const { size: parentSize } = useStyleContext(SCOPE);
return (
<UICheckbox.Label
className={checkboxLabelStyle({
parentVariants: {
size: parentSize,
},
class: className,
})}
{...props}
ref={ref}
/>
);
});
type ICheckboxIconProps = React.ComponentPropsWithoutRef<
typeof UICheckbox.Icon
> &
VariantProps<typeof checkboxIconStyle>;
const CheckboxIcon = React.forwardRef<
React.ElementRef<typeof UICheckbox.Icon>,
ICheckboxIconProps
>(({ className, size, ...props }, ref) => {
const { size: parentSize } = useStyleContext(SCOPE);
if (typeof size === 'number') {
return (
<UICheckbox.Icon
ref={ref}
{...props}
className={checkboxIconStyle({ class: className })}
size={size}
/>
);
} else if (
(props.height !== undefined || props.width !== undefined) &&
size === undefined
) {
return (
<UICheckbox.Icon
ref={ref}
{...props}
className={checkboxIconStyle({ class: className })}
/>
);
}
return (
<UICheckbox.Icon
className={checkboxIconStyle({
parentVariants: {
size: parentSize,
},
class: className,
size,
})}
{...props}
ref={ref}
/>
);
});
Checkbox.displayName = 'Checkbox';
CheckboxIndicator.displayName = 'CheckboxIndicator';
CheckboxLabel.displayName = 'CheckboxLabel';
CheckboxIcon.displayName = 'CheckboxIcon';
export {
Checkbox,
CheckboxIndicator,
CheckboxLabel,
CheckboxIcon,
CheckboxGroup,
};

@ -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<typeof hstackStyle>;
const HStack = React.forwardRef<React.ElementRef<typeof View>, IHStackProps>(
({ className, space, reversed, ...props }, ref) => {
return (
<View
className={hstackStyle({ space, reversed, class: className })}
{...props}
ref={ref}
/>
);
}
);
HStack.displayName = 'HStack';
export { HStack };

@ -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<typeof hstackStyle>;
const HStack = React.forwardRef<React.ElementRef<'div'>, IHStackProps>(
({ className, space, reversed, ...props }, ref) => {
return (
<div
className={hstackStyle({ space, reversed, class: className })}
{...props}
ref={ref}
/>
);
}
);
HStack.displayName = 'HStack';
export { HStack };

@ -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',
},
},
});

@ -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<typeof View> &
VariantProps<typeof vstackStyle>;
const VStack = React.forwardRef<React.ElementRef<typeof View>, IVStackProps>(
({ className, space, reversed, ...props }, ref) => {
return (
<View
className={vstackStyle({ space, reversed, class: className })}
{...props}
ref={ref}
/>
);
}
);
VStack.displayName = 'VStack';
export { VStack };

@ -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<typeof vstackStyle>;
const VStack = React.forwardRef<React.ElementRef<'div'>, IVStackProps>(
({ className, space, reversed, ...props }, ref) => {
return (
<div
className={vstackStyle({ space, reversed, class: className })}
{...props}
ref={ref}
/>
);
}
);
VStack.displayName = 'VStack';
export { VStack };

@ -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',
},
},
});

@ -1,6 +1,6 @@
import {SafeAreaView, Text, View} from "react-native"; import {SafeAreaView, Text, View} from "react-native";
import Navigation from "@/src/navigation/navigation"; import Navigation from "@/src/navigation/navigation";
import HomeScreen from "@/src/screen/HomeScreen"; import HomeScreen from "@/app/HomeScreen";
export default function Index() { export default function Index() {
return ( return (

174
package-lock.json generated

@ -11,6 +11,7 @@
"@expo/vector-icons": "^14.0.2", "@expo/vector-icons": "^14.0.2",
"@gluestack-ui/avatar": "^0.1.18", "@gluestack-ui/avatar": "^0.1.18",
"@gluestack-ui/button": "^1.0.8", "@gluestack-ui/button": "^1.0.8",
"@gluestack-ui/checkbox": "^0.1.33",
"@gluestack-ui/icon": "^0.1.25", "@gluestack-ui/icon": "^0.1.25",
"@gluestack-ui/nativewind-utils": "^1.0.26", "@gluestack-ui/nativewind-utils": "^1.0.26",
"@gluestack-ui/overlay": "^0.1.16", "@gluestack-ui/overlay": "^0.1.16",
@ -2410,6 +2411,38 @@
"react-dom": ">=16" "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": { "node_modules/@gluestack-ui/hooks": {
"version": "0.1.12", "version": "0.1.12",
"resolved": "https://registry.npmjs.org/@gluestack-ui/hooks/-/hooks-0.1.12.tgz", "resolved": "https://registry.npmjs.org/@gluestack-ui/hooks/-/hooks-0.1.12.tgz",
@ -3217,6 +3250,24 @@
"react": "^16.8 || ^17.0 || ^18.0" "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": { "node_modules/@react-aria/focus": {
"version": "3.19.0", "version": "3.19.0",
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.19.0.tgz", "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" "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": { "node_modules/@react-aria/overlays": {
"version": "3.24.0", "version": "3.24.0",
"resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.24.0.tgz", "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" "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": { "node_modules/@react-aria/utils": {
"version": "3.26.0", "version": "3.26.0",
"resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", "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" "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": { "node_modules/@react-native-aria/focus": {
"version": "0.2.9", "version": "0.2.9",
"resolved": "https://registry.npmjs.org/@react-native-aria/focus/-/focus-0.2.9.tgz", "resolved": "https://registry.npmjs.org/@react-native-aria/focus/-/focus-0.2.9.tgz",
@ -3383,6 +3483,24 @@
"react-native": "*" "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": { "node_modules/@react-native-aria/utils": {
"version": "0.2.11", "version": "0.2.11",
"resolved": "https://registry.npmjs.org/@react-native-aria/utils/-/utils-0.2.11.tgz", "resolved": "https://registry.npmjs.org/@react-native-aria/utils/-/utils-0.2.11.tgz",
@ -3888,6 +4006,35 @@
"react-native-screens": ">= 4.0.0" "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": { "node_modules/@react-stately/overlays": {
"version": "3.6.12", "version": "3.6.12",
"resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.12.tgz", "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" "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": { "node_modules/@react-stately/utils": {
"version": "3.10.5", "version": "3.10.5",
"resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", "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" "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": { "node_modules/@react-types/overlays": {
"version": "3.8.11", "version": "3.8.11",
"resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.11.tgz", "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.11.tgz",

@ -18,6 +18,7 @@
"@expo/vector-icons": "^14.0.2", "@expo/vector-icons": "^14.0.2",
"@gluestack-ui/avatar": "^0.1.18", "@gluestack-ui/avatar": "^0.1.18",
"@gluestack-ui/button": "^1.0.8", "@gluestack-ui/button": "^1.0.8",
"@gluestack-ui/checkbox": "^0.1.33",
"@gluestack-ui/icon": "^0.1.25", "@gluestack-ui/icon": "^0.1.25",
"@gluestack-ui/nativewind-utils": "^1.0.26", "@gluestack-ui/nativewind-utils": "^1.0.26",
"@gluestack-ui/overlay": "^0.1.16", "@gluestack-ui/overlay": "^0.1.16",

@ -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 (
<BottomTabNavigator.Navigator initialRouteName={"Home"}
screenOptions={{
headerShown: false, // Désactive les en-têtes si vous voulez uniquement les onglets
tabBarActiveTintColor: '#007AFF', // Couleur des icônes actives
tabBarInactiveTintColor: '#8e8e93', // Couleur des icônes inactives
}}>
<BottomTabNavigator.Screen
name="Home"
component={HomeScreen}
options={{
title: 'Accueil',
tabBarIcon: ({ color, size }) => (
<MaterialIcons name="home" color={color} size={size} />
),
}}
/>
<BottomTabNavigator.Screen name={"Settings"} component={ProfileScreen}
options={{
title: 'Profile',
}}/>
</BottomTabNavigator.Navigator>
)
*/
}
Loading…
Cancel
Save