themed-button, themed-mapview, selectChantier maj
This commit is contained in:
@@ -18,4 +18,4 @@ npm install react-native-maps
|
||||
npx expo install react-native-maps
|
||||
npm install react-native-maps @react-navigation/native @react-navigation/bottom-tabs react-native-safe-area-context react-native-screens
|
||||
|
||||
|
||||
npx expo start
|
||||
@@ -76,6 +76,8 @@ export default function BonjourScreen() {
|
||||
</ThemedText>
|
||||
|
||||
<ThemedTextInput
|
||||
lvl={0}
|
||||
border={5}
|
||||
style={styles.input}
|
||||
placeholder="Rechercher un groupe..."
|
||||
value={search}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// MapScreen.tsx
|
||||
import { ThemedMapView } from '@/components/themed-mapview';
|
||||
import React from 'react';
|
||||
import { StyleSheet, View, Dimensions } from 'react-native';
|
||||
import MapView, { Marker, PROVIDER_DEFAULT } from 'react-native-maps';
|
||||
@@ -13,7 +14,7 @@ const MapScreen: React.FC = () => {
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<MapView
|
||||
<ThemedMapView
|
||||
provider={PROVIDER_DEFAULT} // OpenStreetMap
|
||||
style={styles.map}
|
||||
region={region}
|
||||
@@ -23,7 +24,7 @@ const MapScreen: React.FC = () => {
|
||||
title="Paris"
|
||||
description="Capitale de la France"
|
||||
/>
|
||||
</MapView>
|
||||
</ThemedMapView>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import { useState } from 'react';
|
||||
import { Button, GestureResponderEvent, ScrollView, StyleSheet, View } from 'react-native';
|
||||
import { Button, GestureResponderEvent, Pressable, ScrollView, StyleSheet, View } from 'react-native';
|
||||
import { ThemedTextInput } from './themed-textinpute';
|
||||
import { ThemedView } from "./themed-view";
|
||||
import { ThemedText } from './themed-text';
|
||||
import { ThemedButton } from './themed-button';
|
||||
|
||||
export default function SelectChantier() {
|
||||
|
||||
@@ -22,40 +24,54 @@ export default function SelectChantier() {
|
||||
);
|
||||
};
|
||||
|
||||
if(isOpen){
|
||||
return (
|
||||
<ThemedView lvl={2} style={styles.selectZone}>
|
||||
{!isOpen && (
|
||||
<Button onPress={onPressOpen} title={"Open"}/>
|
||||
)}
|
||||
{isOpen && (
|
||||
<ScrollView>
|
||||
<Button onPress={onPressOpen} title={"Close"}/>
|
||||
<View style={styles.searchZone}>
|
||||
<ThemedView lvl={0} style={styles.searchMenu}>
|
||||
<ThemedTextInput placeholderTextColor="#808080"
|
||||
placeholder='Rechercher un chantier'
|
||||
value={search}
|
||||
onChangeText={setSearch}
|
||||
/>
|
||||
</ThemedView>
|
||||
</View>
|
||||
<View style={styles.closedSelectZone}>
|
||||
<ThemedButton style={styles.button} lvl={2} onPress={onPressOpen}>
|
||||
<ThemedText style={styles.buttonText}>Open</ThemedText>
|
||||
</ThemedButton>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
else{
|
||||
return(
|
||||
<ThemedView lvl={2} style={styles.openedSelectZone}>
|
||||
<ScrollView>
|
||||
<ThemedButton style={styles.buttonOpen} lvl={3} onPress={onPressOpen}>
|
||||
<ThemedText style={styles.buttonText}>Close</ThemedText>
|
||||
</ThemedButton>
|
||||
<View style={styles.searchZone}>
|
||||
<ThemedTextInput
|
||||
lvl={1}
|
||||
border={5}
|
||||
style={styles.input}
|
||||
placeholder='Rechercher un chantier'
|
||||
value={search}
|
||||
onChangeText={setSearch}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<View>
|
||||
<View>
|
||||
|
||||
</View>
|
||||
</ScrollView>
|
||||
)}
|
||||
</ThemedView>
|
||||
|
||||
);
|
||||
</View>
|
||||
</ScrollView>
|
||||
</ThemedView>
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
selectZone:{
|
||||
openedSelectZone:{
|
||||
position: 'absolute',
|
||||
width: "100%",
|
||||
margin: 0,
|
||||
borderRadius: 5,
|
||||
borderRadius: 10,
|
||||
zIndex: 9999,
|
||||
elevation: 9999,
|
||||
},
|
||||
closedSelectZone:{
|
||||
position: 'absolute',
|
||||
width: "50%",
|
||||
borderRadius: 10,
|
||||
zIndex: 9999,
|
||||
elevation: 9999,
|
||||
},
|
||||
@@ -79,5 +95,27 @@ const styles = StyleSheet.create({
|
||||
alignItems: 'center',
|
||||
},
|
||||
chantier:{
|
||||
},
|
||||
input: {
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
borderRadius: 10,
|
||||
padding: 10,
|
||||
fontSize: 16,
|
||||
},
|
||||
button:{
|
||||
width:'100%',
|
||||
margin: 5,
|
||||
borderRadius: 10,
|
||||
padding: 10,
|
||||
},
|
||||
buttonOpen:{
|
||||
width:'50%',
|
||||
margin: 5,
|
||||
borderRadius: 10,
|
||||
padding: 10,
|
||||
},
|
||||
buttonText:{
|
||||
textAlign: 'center',
|
||||
}
|
||||
});
|
||||
|
||||
37
components/themed-button.tsx
Normal file
37
components/themed-button.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import { Pressable, type PressableProps } from 'react-native';
|
||||
|
||||
import { useThemeColor } from '@/hooks/use-theme-color';
|
||||
|
||||
export type ThemedPressableProps = PressableProps & {
|
||||
lightColor?: string;
|
||||
darkColor?: string;
|
||||
lvl?:number;
|
||||
border?:number;
|
||||
};
|
||||
|
||||
export function ThemedButton({ style, lightColor, darkColor,lvl=1,border=-1, ...otherProps }: ThemedPressableProps) {
|
||||
var lvlStr:string = "background";
|
||||
var borderColor ="";
|
||||
if(lvl>=0 && lvl<6){
|
||||
lvlStr+=lvl;
|
||||
}
|
||||
else lvlStr+='5';
|
||||
|
||||
const backgroundColor = useThemeColor({ light: lightColor, dark: darkColor },lvlStr as 'background0'|'background1'|'background2'|'background3'|'background4'|'background5');
|
||||
|
||||
|
||||
if(border!=-1){
|
||||
var borderStr = "";
|
||||
if(border>=0 && border<6){
|
||||
borderStr="background"+border;
|
||||
borderColor = useThemeColor({ light: lightColor, dark: darkColor },borderStr as 'background0'|'background1'|'background2'|'background3'|'background4'|'background5');
|
||||
}
|
||||
else{
|
||||
borderColor = backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return <Pressable style={(state) =>[{ backgroundColor, borderColor }, typeof style === 'function' ? style(state) : style,]} {...otherProps}/>;
|
||||
}
|
||||
22
components/themed-mapview.tsx
Normal file
22
components/themed-mapview.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import MapView, { Marker, PROVIDER_DEFAULT, type MapViewProps } from 'react-native-maps';
|
||||
|
||||
|
||||
import { useThemeColor, useThemeColorMap } from '@/hooks/use-theme-color';
|
||||
|
||||
export type ThemedMapViewProps = MapViewProps & {
|
||||
lightColor?: string;
|
||||
darkColor?: string;
|
||||
};
|
||||
|
||||
export function ThemedMapView({children, style, lightColor, darkColor, ...otherProps }: ThemedMapViewProps) {
|
||||
|
||||
|
||||
const mapeStyle = useThemeColorMap();
|
||||
|
||||
|
||||
|
||||
|
||||
return<MapView customMapStyle={mapeStyle} style={style} {...otherProps}>
|
||||
{children}
|
||||
</MapView>;
|
||||
}
|
||||
@@ -6,29 +6,44 @@ export type ThemedTextInputProps = TextInputProps & {
|
||||
lightColor?: string;
|
||||
darkColor?: string;
|
||||
reverse?:boolean;
|
||||
lvl?:number;
|
||||
border?:number;
|
||||
type?: 'default' | 'title' | 'defaultSemiBold' | 'subtitle' | 'link';
|
||||
};
|
||||
|
||||
export function ThemedTextInput({
|
||||
style,
|
||||
lightColor,
|
||||
darkColor,
|
||||
reverse,
|
||||
type = 'default',
|
||||
|
||||
...rest
|
||||
}: ThemedTextInputProps) {
|
||||
export function ThemedTextInput({style, lightColor, darkColor, reverse=false, lvl=1,border=-1,type = 'default', ...rest}: ThemedTextInputProps) {
|
||||
|
||||
var text:string = 'text'
|
||||
if(reverse){
|
||||
text += '_';
|
||||
}
|
||||
const color = useThemeColor({ light: lightColor, dark: darkColor }, text as 'text'|'text_');
|
||||
const color = useThemeColor({ light: lightColor, dark: darkColor}, text as 'text'|'text_');
|
||||
|
||||
var lvlStr:string = "background";
|
||||
var borderColor ="";
|
||||
if(lvl>=0 && lvl<6){
|
||||
lvlStr+=lvl;
|
||||
}
|
||||
else lvlStr+='5';
|
||||
|
||||
const backgroundColor = useThemeColor({ light: lightColor, dark: darkColor },lvlStr as 'background0'|'background1'|'background2'|'background3'|'background4'|'background5');
|
||||
|
||||
|
||||
if(border!=-1){
|
||||
if(border>=0 && border<6){
|
||||
const borderStr="background"+border;
|
||||
borderColor = useThemeColor({ light: lightColor, dark: darkColor },borderStr as 'background0'|'background1'|'background2'|'background3'|'background4'|'background5');
|
||||
}
|
||||
else{
|
||||
borderColor = backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<TextInput
|
||||
style={[
|
||||
{ color },
|
||||
{ color,backgroundColor,borderColor },
|
||||
type === 'default' ? styles.default : undefined,
|
||||
type === 'title' ? styles.title : undefined,
|
||||
type === 'defaultSemiBold' ? styles.defaultSemiBold : undefined,
|
||||
@@ -37,8 +52,10 @@ export function ThemedTextInput({
|
||||
style,
|
||||
]}
|
||||
{...rest}
|
||||
placeholderTextColor="#808080"
|
||||
/>
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
|
||||
@@ -39,6 +39,128 @@ export const Colors = {
|
||||
},
|
||||
};
|
||||
|
||||
export const MapColor = {
|
||||
light:[
|
||||
{ elementType: 'geometry', stylers: [{ color: '#E8E8E8' }] },
|
||||
{ elementType: 'labels.icon', stylers: [{ visibility: 'off' }] },
|
||||
{ elementType: 'labels.text.fill', stylers: [{ color: '#101010' }] },
|
||||
{ elementType: 'labels.text.stroke', stylers: [{ color: '#F0F0F0' }] },
|
||||
{
|
||||
featureType: 'administrative',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#000000' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#d3f8e2' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape.man_made',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#f5f3f3' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape.natural.terrain',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#b5efcd' }],
|
||||
},
|
||||
{
|
||||
featureType: 'poi',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#c3f1d5' }],
|
||||
},
|
||||
{
|
||||
featureType: 'poi.medical',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#fce8e6' }],
|
||||
},
|
||||
{
|
||||
featureType: 'road',
|
||||
elementType: 'geometry.fill',
|
||||
stylers: [{ color: '#A0B0C0' }],
|
||||
},
|
||||
{
|
||||
featureType: 'water',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#7dd5e9' }],
|
||||
},
|
||||
],
|
||||
dark: [
|
||||
{ elementType: 'geometry', stylers: [{ color: '#252525' }] },
|
||||
{ elementType: 'labels.icon', stylers: [{ visibility: 'off' }] },
|
||||
{ elementType: 'labels.text.fill', stylers: [{ color: '#F0F0F0' }] },
|
||||
{ elementType: 'labels.text.stroke', stylers: [{ color: '#101010' }] },
|
||||
{
|
||||
featureType: 'administrative',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#FFFFFF' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#264131' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape.man_made',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#202020' }],
|
||||
},
|
||||
{
|
||||
featureType: 'landscape.natural.terrain',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#253f30' }],
|
||||
},
|
||||
{
|
||||
featureType: 'poi',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#103010' }],
|
||||
},
|
||||
{
|
||||
featureType: 'poi.medical',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#483030' }],
|
||||
},
|
||||
{
|
||||
featureType: 'road',
|
||||
elementType: 'geometry.fill',
|
||||
stylers: [{ color: '#A0A0A0' }],
|
||||
},
|
||||
{
|
||||
featureType: 'water',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#3E6A74' }],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const darkMapStyle = [
|
||||
{ elementType: 'geometry', stylers: [{ color: '#212121' }] },
|
||||
{ elementType: 'labels.icon', stylers: [{ visibility: 'off' }] },
|
||||
{ elementType: 'labels.text.fill', stylers: [{ color: '#757575' }] },
|
||||
{ elementType: 'labels.text.stroke', stylers: [{ color: '#212121' }] },
|
||||
{
|
||||
featureType: 'administrative',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#757575' }],
|
||||
},
|
||||
{
|
||||
featureType: 'poi',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#282828' }],
|
||||
},
|
||||
{
|
||||
featureType: 'road',
|
||||
elementType: 'geometry.fill',
|
||||
stylers: [{ color: '#383838' }],
|
||||
},
|
||||
{
|
||||
featureType: 'water',
|
||||
elementType: 'geometry',
|
||||
stylers: [{ color: '#000000' }],
|
||||
},
|
||||
];
|
||||
|
||||
export const Fonts = Platform.select({
|
||||
ios: {
|
||||
/** iOS `UIFontDescriptorSystemDesignDefault` */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* https://docs.expo.dev/guides/color-schemes/
|
||||
*/
|
||||
|
||||
import { Colors } from '@/constants/theme';
|
||||
import { Colors, MapColor } from '@/constants/theme';
|
||||
import { useColorScheme } from '@/hooks/use-color-scheme';
|
||||
|
||||
export function useThemeColor(
|
||||
@@ -19,3 +19,8 @@ export function useThemeColor(
|
||||
return Colors[theme][colorName];
|
||||
}
|
||||
}
|
||||
|
||||
export function useThemeColorMap() {
|
||||
const theme = useColorScheme() ?? 'light';
|
||||
return MapColor[theme];
|
||||
}
|
||||
|
||||
32
package-lock.json
generated
32
package-lock.json
generated
@@ -85,7 +85,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
|
||||
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.28.3",
|
||||
@@ -1467,7 +1466,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
|
||||
"integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
@@ -2328,7 +2326,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.5.tgz",
|
||||
"integrity": "sha512-zyNY77xJOGwcuB+xCxF8z8lSiHvD4ox7BCsqLEHEvgqQoRjxFZ0fkROR6NV5QyXmCqRLodMM8J5d2EStOocWIw==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.7.0",
|
||||
"@firebase/logger": "0.5.0",
|
||||
@@ -2395,7 +2392,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.5.tgz",
|
||||
"integrity": "sha512-lVG/nRnXaot0rQSZazmTNqy83ti9O3+kdwoaE0d5wahRIWNoDirbIMcGVjDDgdmf4IE6FYreWOMh0L3DV1475w==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@firebase/app": "0.14.5",
|
||||
"@firebase/component": "0.7.0",
|
||||
@@ -2411,8 +2407,7 @@
|
||||
"version": "0.9.3",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz",
|
||||
"integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@firebase/auth": {
|
||||
"version": "1.11.1",
|
||||
@@ -2863,7 +2858,6 @@
|
||||
"integrity": "sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
@@ -3876,7 +3870,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.19.tgz",
|
||||
"integrity": "sha512-fM7q8di4Q8sp2WUhiUWOe7bEDRyRhbzsKQOd5N2k+lHeCx3UncsRYuw4Q/KN0EovM3wWKqMMmhy/YWuEO04kgw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@react-navigation/core": "^7.13.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
@@ -4079,7 +4072,6 @@
|
||||
"integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
@@ -4151,7 +4143,6 @@
|
||||
"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "8.46.0",
|
||||
"@typescript-eslint/types": "8.46.0",
|
||||
@@ -4714,7 +4705,6 @@
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
@@ -5400,7 +5390,6 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"baseline-browser-mapping": "^2.8.9",
|
||||
"caniuse-lite": "^1.0.30001746",
|
||||
@@ -6540,7 +6529,6 @@
|
||||
"integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.8.0",
|
||||
"@eslint-community/regexpp": "^4.12.1",
|
||||
@@ -6738,7 +6726,6 @@
|
||||
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@rtsao/scc": "^1.1.0",
|
||||
"array-includes": "^3.1.9",
|
||||
@@ -6977,7 +6964,6 @@
|
||||
"resolved": "https://registry.npmjs.org/expo/-/expo-54.0.13.tgz",
|
||||
"integrity": "sha512-F1puKXzw8ESnsbvaKdXtcIiyYLQ2kUHqP8LuhgtJS1wm6w55VhtOPg8yl/0i8kPbTA0YfD+KYdXjSfhPXgUPxw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"@expo/cli": "54.0.11",
|
||||
@@ -7045,7 +7031,6 @@
|
||||
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.9.tgz",
|
||||
"integrity": "sha512-sqoXHAOGDcr+M9NlXzj1tGoZyd3zxYDy215W6E0Z0n8fgBaqce9FAYQE2bu5X4G629AYig5go7U6sQz7Pjcm8A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@expo/config": "~12.0.9",
|
||||
"@expo/env": "~2.0.7"
|
||||
@@ -7070,7 +7055,6 @@
|
||||
"resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.9.tgz",
|
||||
"integrity": "sha512-xCoQbR/36qqB6tew/LQ6GWICpaBmHLhg/Loix5Rku/0ZtNaXMJv08M9o1AcrdiGTn/Xf/BnLu6DgS45cWQEHZg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fontfaceobserver": "^2.1.0"
|
||||
},
|
||||
@@ -7121,7 +7105,6 @@
|
||||
"resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.8.tgz",
|
||||
"integrity": "sha512-MyeMcbFDKhXh4sDD1EHwd0uxFQNAc6VCrwBkNvvvufUsTYFq3glTA9Y8a+x78CPpjNqwNAamu74yIaIz7IEJyg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"expo-constants": "~18.0.8",
|
||||
"invariant": "^2.2.4"
|
||||
@@ -11357,7 +11340,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
|
||||
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -11377,7 +11359,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
|
||||
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"scheduler": "^0.26.0"
|
||||
},
|
||||
@@ -11414,7 +11395,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.4.tgz",
|
||||
"integrity": "sha512-bt5bz3A/+Cv46KcjV0VQa+fo7MKxs17RCcpzjftINlen4ZDUl0I6Ut+brQ2FToa5oD0IB0xvQHfmsg2EDqsZdQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^29.7.0",
|
||||
"@react-native/assets-registry": "0.81.4",
|
||||
@@ -11472,7 +11452,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz",
|
||||
"integrity": "sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@egjs/hammerjs": "^2.0.17",
|
||||
"hoist-non-react-statics": "^3.3.0",
|
||||
@@ -11520,7 +11499,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.3.tgz",
|
||||
"integrity": "sha512-GP8wsi1u3nqvC1fMab/m8gfFwFyldawElCcUSBJQgfrXeLmsPPUOpDw44lbLeCpcwUuLa05WTVePdTEwCLTUZg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"react-native-is-edge-to-edge": "^1.2.1",
|
||||
"semver": "7.7.2"
|
||||
@@ -11549,7 +11527,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz",
|
||||
"integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
"react-native": "*"
|
||||
@@ -11560,7 +11537,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.16.0.tgz",
|
||||
"integrity": "sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"react-freeze": "^1.0.0",
|
||||
"react-native-is-edge-to-edge": "^1.2.1",
|
||||
@@ -11576,7 +11552,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.1.tgz",
|
||||
"integrity": "sha512-BeNsgwwe4AXUFPAoFU+DKjJ+CVQa3h54zYX77p7GVZrXiiNo3vl03WYDYVEy5R2J2HOPInXtQZB5gmj3vuzrKg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@react-native/normalize-colors": "^0.74.1",
|
||||
@@ -11609,7 +11584,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.1.tgz",
|
||||
"integrity": "sha512-lJG6Uk9YuojjEX/tQrCbcbmpdLCSFxDK1rJlkDhgqkVi1KZzG7cdcBFQRqyNOOzR9Y0CXNuldmtWTGOyM0k0+w==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/plugin-transform-arrow-functions": "^7.0.0-0",
|
||||
"@babel/plugin-transform-class-properties": "^7.0.0-0",
|
||||
@@ -11720,7 +11694,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
|
||||
"integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -13143,7 +13116,6 @@
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
@@ -13350,7 +13322,6 @@
|
||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
@@ -14326,7 +14297,6 @@
|
||||
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
|
||||
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user