update
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 597 KiB After Width: | Height: | Size: 4.1 MiB |
@@ -233,6 +233,7 @@ import placeholder2 from "./UI/placeholder2.jpg";
|
|||||||
import placeholder3 from "./UI/placeholder3.png";
|
import placeholder3 from "./UI/placeholder3.png";
|
||||||
import placeholder4 from "./UI/placeholder4.jpg";
|
import placeholder4 from "./UI/placeholder4.jpg";
|
||||||
import profile from "./UI/profile.jpg";
|
import profile from "./UI/profile.jpg";
|
||||||
|
import goodVibe from './UI/goodVibe.png'
|
||||||
|
|
||||||
export const img = {
|
export const img = {
|
||||||
placeholder,
|
placeholder,
|
||||||
@@ -240,4 +241,5 @@ export const img = {
|
|||||||
placeholder3,
|
placeholder3,
|
||||||
placeholder4,
|
placeholder4,
|
||||||
profile,
|
profile,
|
||||||
|
goodVibe,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text } from "react-native";
|
import { View, Text, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ActionSheet from "react-native-actions-sheet";
|
import ActionSheet from "react-native-actions-sheet";
|
||||||
import { gutters, Palette } from "../styles";
|
import { gutters, Palette } from "../styles";
|
||||||
@@ -27,6 +27,9 @@ const AppActionSheet = ({ children, props }) => {
|
|||||||
borderTopRightRadius: 20,
|
borderTopRightRadius: 20,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
</BlurView>
|
</BlurView>
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
import { View, Text, Pressable, StyleSheet, Image } from "react-native";
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
Pressable,
|
||||||
|
StyleSheet,
|
||||||
|
Image,
|
||||||
|
Platform,
|
||||||
|
} from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import { Palette, Style } from "../styles";
|
import { Palette, Style } from "../styles";
|
||||||
@@ -9,7 +16,13 @@ import { size } from "../styles/Style";
|
|||||||
const BlurItemButton = ({ onPress, title = "" }) => {
|
const BlurItemButton = ({ onPress, title = "" }) => {
|
||||||
return (
|
return (
|
||||||
<Pressable onPress={onPress}>
|
<Pressable onPress={onPress}>
|
||||||
<BlurView intensity={20} style={styles.buttonContainer}>
|
<BlurView
|
||||||
|
intensity={20}
|
||||||
|
style={styles.buttonContainer}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
<Text style={styles.buttonText}>{title}</Text>
|
<Text style={styles.buttonText}>{title}</Text>
|
||||||
<Image
|
<Image
|
||||||
source={icons.chevronDown}
|
source={icons.chevronDown}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable, Image } from "react-native";
|
import { View, Text, Pressable, Image, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import BorderGradient from "./BorderGradient/BorderGradient";
|
import BorderGradient from "./BorderGradient/BorderGradient";
|
||||||
import { Palette, Style } from "../styles";
|
import { Palette, Style } from "../styles";
|
||||||
@@ -50,6 +50,9 @@ const BorderGradientButton = ({
|
|||||||
borderRadius: 14,
|
borderRadius: 14,
|
||||||
gap: 11,
|
gap: 11,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{icon && <Image source={icon} style={size({ size: 16 })} />}
|
{icon && <Image source={icon} style={size({ size: 16 })} />}
|
||||||
<Text
|
<Text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useState, useEffect } from "reactn";
|
import { useState, useEffect } from "reactn";
|
||||||
import { Pressable, TextInput, View, Image } from "react-native";
|
import { Pressable, TextInput, View, Image, Platform } from "react-native";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
|
|
||||||
import { Fonts, gutters, Palette } from "../styles";
|
import { Fonts, gutters, Palette } from "../styles";
|
||||||
@@ -65,6 +65,9 @@ const ChatInput = ({
|
|||||||
intensity={30}
|
intensity={30}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
style={{ flex: 1, justifyContent: "center" }}
|
style={{ flex: 1, justifyContent: "center" }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<FilesPreview
|
<FilesPreview
|
||||||
files={files}
|
files={files}
|
||||||
|
|||||||
+45
-24
@@ -6,6 +6,7 @@ import {
|
|||||||
View,
|
View,
|
||||||
Image,
|
Image,
|
||||||
Keyboard,
|
Keyboard,
|
||||||
|
Platform,
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import CountryPicker, { DARK_THEME } from "react-native-country-picker-modal";
|
import CountryPicker, { DARK_THEME } from "react-native-country-picker-modal";
|
||||||
@@ -13,10 +14,11 @@ import usePlaceApi from "react-native-minuit/src/hooks/usePlacesApi";
|
|||||||
|
|
||||||
import { art, icons } from "../assets";
|
import { art, icons } from "../assets";
|
||||||
import { Fonts, Palette, Style, gutters } from "../styles";
|
import { Fonts, Palette, Style, gutters } from "../styles";
|
||||||
import { fontTypeList } from "../styles/Fonts";
|
import { FONT_FAMILY, fontTypeList } from "../styles/Fonts";
|
||||||
|
|
||||||
import { isWeb } from "../hooks/useLayoutType";
|
import { isWeb } from "../hooks/useLayoutType";
|
||||||
import { GOOGLE_API_KEY } from "../data/keys";
|
import { GOOGLE_API_KEY } from "../data/keys";
|
||||||
|
import { BlurView } from "expo-blur";
|
||||||
|
|
||||||
const Input = ({
|
const Input = ({
|
||||||
inputRef = null,
|
inputRef = null,
|
||||||
@@ -39,6 +41,7 @@ const Input = ({
|
|||||||
layout = "default", // "default" | "line"
|
layout = "default", // "default" | "line"
|
||||||
|
|
||||||
isNumeric = false,
|
isNumeric = false,
|
||||||
|
isBlur = false,
|
||||||
}) => {
|
}) => {
|
||||||
const [isFocused, setIsFocused] = useState(false);
|
const [isFocused, setIsFocused] = useState(false);
|
||||||
const [showPassword, setShowPassword] = useState(false);
|
const [showPassword, setShowPassword] = useState(false);
|
||||||
@@ -63,10 +66,36 @@ const Input = ({
|
|||||||
minChars: 2,
|
minChars: 2,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const ContainerView = isBlur ? BlurView : View;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
width: "100%",
|
||||||
|
...containerStyle,
|
||||||
|
gap: 4,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{label?.length > 0 && (
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{label}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<ContainerView
|
||||||
|
tint="dark"
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
style={{
|
||||||
|
...Style.containerRow,
|
||||||
...(isRoundedRectangle
|
...(isRoundedRectangle
|
||||||
? {
|
? {
|
||||||
...Style.containerItem,
|
...Style.containerItem,
|
||||||
@@ -76,8 +105,10 @@ const Input = ({
|
|||||||
backgroundColor:
|
backgroundColor:
|
||||||
type === "coinAmount"
|
type === "coinAmount"
|
||||||
? Palette.transparentRadioactivGreen
|
? Palette.transparentRadioactivGreen
|
||||||
: Palette.lightPurple,
|
: Palette.glass,
|
||||||
height: type === "textarea" ? 150 : "auto",
|
height: type === "textarea" ? 150 : 50,
|
||||||
|
overflow: "hidden",
|
||||||
|
borderRadius: 12,
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
}
|
}
|
||||||
@@ -96,19 +127,6 @@ const Input = ({
|
|||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
width: "100%",
|
width: "100%",
|
||||||
...containerStyle,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{label?.length > 0 && (
|
|
||||||
<Text style={{ ...Fonts({ type: "default" }) }}>{label}</Text>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
...Style.containerRow,
|
|
||||||
...(isRoundedRectangle ? { flex: 1 } : {}),
|
|
||||||
paddingVertical: 10,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{type === "search" ? (
|
{type === "search" ? (
|
||||||
@@ -155,7 +173,7 @@ const Input = ({
|
|||||||
<TextInput
|
<TextInput
|
||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
placeholderTextColor={mainColor}
|
placeholderTextColor={Palette.gray}
|
||||||
value={value}
|
value={value}
|
||||||
onChangeText={setValue}
|
onChangeText={setValue}
|
||||||
multiline={type === "textarea"}
|
multiline={type === "textarea"}
|
||||||
@@ -165,9 +183,15 @@ const Input = ({
|
|||||||
style={{
|
style={{
|
||||||
width: "100%",
|
width: "100%",
|
||||||
...(isRoundedRectangle
|
...(isRoundedRectangle
|
||||||
? { height: "100%", flex: 1, textAlignVertical: "top" }
|
? {
|
||||||
|
height: "100%",
|
||||||
|
flex: 1,
|
||||||
|
textAlignVertical: type === "textarea" ? "top" : "center",
|
||||||
|
}
|
||||||
: { textAlign: "center" }),
|
: { textAlign: "center" }),
|
||||||
...Fonts({ type: "default", color: mainColor }),
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
...(isWeb
|
...(isWeb
|
||||||
? {
|
? {
|
||||||
lineHeight: "auto",
|
lineHeight: "auto",
|
||||||
@@ -199,10 +223,7 @@ const Input = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{type === "password" ? (
|
{type === "password" ? (
|
||||||
<Pressable
|
<Pressable onPress={() => setShowPassword(!showPassword)}>
|
||||||
onPress={() => setShowPassword(!showPassword)}
|
|
||||||
style={{ position: "absolute", right: 0 }}
|
|
||||||
>
|
|
||||||
<Image
|
<Image
|
||||||
source={icons.eye}
|
source={icons.eye}
|
||||||
style={[Style.iconDefault]}
|
style={[Style.iconDefault]}
|
||||||
@@ -216,7 +237,7 @@ const Input = ({
|
|||||||
resizeMode="contain"
|
resizeMode="contain"
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</View>
|
</ContainerView>
|
||||||
|
|
||||||
{type === "autoCompleteAddress" &&
|
{type === "autoCompleteAddress" &&
|
||||||
places?.[0]?.description &&
|
places?.[0]?.description &&
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, StyleSheet } from "react-native";
|
import { View, Text, StyleSheet, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import BorderGradient from "../BorderGradient/BorderGradient";
|
import BorderGradient from "../BorderGradient/BorderGradient";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
@@ -25,7 +25,14 @@ const ItemContainer = ({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<View style={styles.blurContainer}>
|
<View style={styles.blurContainer}>
|
||||||
<BlurView intensity={40} tint="dark" style={{ flex: 1, padding: 6 }}>
|
<BlurView
|
||||||
|
intensity={40}
|
||||||
|
tint="dark"
|
||||||
|
style={{ flex: 1, padding: 6 }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
{children}
|
{children}
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, StyleSheet } from "react-native";
|
import { View, Text, StyleSheet, Platform } from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import BorderGradient from "../BorderGradient/BorderGradient";
|
import BorderGradient from "../BorderGradient/BorderGradient";
|
||||||
import { responsiveHeight } from "react-native-responsive-dimensions";
|
import { responsiveHeight } from "react-native-responsive-dimensions";
|
||||||
@@ -55,6 +55,9 @@ const ItemContainer = ({
|
|||||||
alignSelf: "center",
|
alignSelf: "center",
|
||||||
height: "99.2%",
|
height: "99.2%",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
</BlurView>
|
</BlurView>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Pressable, StyleSheet } from "react-native";
|
import { Platform, Pressable, StyleSheet } from "react-native";
|
||||||
import { AnimatePresence, Motion } from "@legendapp/motion";
|
import { AnimatePresence, Motion } from "@legendapp/motion";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import { Portal } from "@gorhom/portal";
|
import { Portal } from "@gorhom/portal";
|
||||||
@@ -55,6 +55,9 @@ const Overlay = ({
|
|||||||
...StyleSheet.absoluteFillObject,
|
...StyleSheet.absoluteFillObject,
|
||||||
...contentContainerStyle,
|
...contentContainerStyle,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Pressable
|
<Pressable
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, TextInput, Image } from "react-native";
|
import { View, Text, TextInput, Image, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import { icons } from "../assets";
|
import { icons } from "../assets";
|
||||||
@@ -20,6 +20,9 @@ const SearchBar = ({
|
|||||||
gap: 10,
|
gap: 10,
|
||||||
...Style.containerRow,
|
...Style.containerRow,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Image source={icons.search} />
|
<Image source={icons.search} />
|
||||||
<TextInput
|
<TextInput
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import { View, Text } from "react-native";
|
import { View, Text } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ActionSheet, { SheetManager } from "react-native-actions-sheet";
|
import { SheetManager } from "react-native-actions-sheet";
|
||||||
import { gutters, Palette } from "../../styles";
|
import { Palette } from "../../styles";
|
||||||
import { BlurView } from "expo-blur";
|
|
||||||
import BorderGradientButton from "../BorderGradientButton";
|
import BorderGradientButton from "../BorderGradientButton";
|
||||||
import GradientButton from "../GradientButton";
|
import GradientButton from "../GradientButton";
|
||||||
import { FONT_FAMILY } from "../../styles/Fonts";
|
import { FONT_FAMILY } from "../../styles/Fonts";
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable react/display-name */
|
||||||
import React, { useState } from "reactn";
|
import React, { useState } from "reactn";
|
||||||
import { Image, View } from "react-native";
|
import { Image, View } from "react-native";
|
||||||
import { SafeAreaView } from "react-native-safe-area-context";
|
import { SafeAreaView } from "react-native-safe-area-context";
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export const BottomTabScreen = () => {
|
|||||||
return (
|
return (
|
||||||
<BottomTab.Navigator tabBar={(props) => <TabBar {...props} />}>
|
<BottomTab.Navigator tabBar={(props) => <TabBar {...props} />}>
|
||||||
<BottomTab.Screen
|
<BottomTab.Screen
|
||||||
name={Routes.Create}
|
name={Routes.HomeStack}
|
||||||
component={HomeStack}
|
component={HomeStack}
|
||||||
options={{
|
options={{
|
||||||
tabBarLabel: "Créer",
|
tabBarLabel: "Créer",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { Palette } from "../styles";
|
|||||||
import { Routes } from "./Routes";
|
import { Routes } from "./Routes";
|
||||||
|
|
||||||
import Home from "../screens/Home";
|
import Home from "../screens/Home";
|
||||||
|
import CreateSongs from "../screens/CreateSongs";
|
||||||
|
|
||||||
const screenOptions = {
|
const screenOptions = {
|
||||||
headerShown: false,
|
headerShown: false,
|
||||||
@@ -36,6 +37,11 @@ export default function HomeStackScreen() {
|
|||||||
component={Home}
|
component={Home}
|
||||||
options={{ headerShown: false }}
|
options={{ headerShown: false }}
|
||||||
/>
|
/>
|
||||||
|
<HomeStack.Screen
|
||||||
|
name={Routes.Create}
|
||||||
|
component={CreateSongs}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
</HomeStack.Navigator>
|
</HomeStack.Navigator>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ import ChangeEmailAddress from "../screens/Profile/ChangeEmailAddress";
|
|||||||
import ChangePassword from "../screens/Profile/ChangePassword";
|
import ChangePassword from "../screens/Profile/ChangePassword";
|
||||||
import Language from "../screens/Profile/Language";
|
import Language from "../screens/Profile/Language";
|
||||||
import Reels from "../screens/Profile/Reels";
|
import Reels from "../screens/Profile/Reels";
|
||||||
|
import Register from "../screens/Register";
|
||||||
|
import CreatePassword from "../screens/CreatePassword";
|
||||||
|
import CreateName from "../screens/CreateName";
|
||||||
|
|
||||||
const screenOptions = {
|
const screenOptions = {
|
||||||
headerShown: false,
|
headerShown: false,
|
||||||
@@ -267,6 +270,18 @@ const screens = [
|
|||||||
name: Routes.Reels,
|
name: Routes.Reels,
|
||||||
component: Reels,
|
component: Reels,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: Routes.Register,
|
||||||
|
component: Register,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Routes.CreatePassword,
|
||||||
|
component: CreatePassword,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Routes.CreateName,
|
||||||
|
component: CreateName,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function Main() {
|
export default function Main() {
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ export const Routes = {
|
|||||||
Onboarding: "Onboarding",
|
Onboarding: "Onboarding",
|
||||||
Login: "Login",
|
Login: "Login",
|
||||||
ForgotPassword: "ForgotPassword",
|
ForgotPassword: "ForgotPassword",
|
||||||
|
Register: "Register",
|
||||||
|
CreatePassword: "CreatePassword",
|
||||||
|
CreateName: "CreateName",
|
||||||
|
|
||||||
BottomTab: "BottomTab",
|
BottomTab: "BottomTab",
|
||||||
Welcome: "Welcome",
|
Welcome: "Welcome",
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import { View, Text } from "react-native";
|
||||||
|
import React from "react";
|
||||||
|
import Page from "../layouts/Page";
|
||||||
|
import { background } from "../assets";
|
||||||
|
import ItemContainer from "../components/ItemContainer/ItemContainer";
|
||||||
|
import { Palette } from "../styles";
|
||||||
|
import { FONT_FAMILY } from "../styles/Fonts";
|
||||||
|
import { Input } from "../components/Input";
|
||||||
|
import GradientButton from "../components/GradientButton";
|
||||||
|
import { navigate } from "../navigation/NavigationService";
|
||||||
|
import { Routes } from "../navigation";
|
||||||
|
|
||||||
|
const CreateName = () => {
|
||||||
|
return (
|
||||||
|
<Page
|
||||||
|
backgroundImg={background.homeBG}
|
||||||
|
headerType="NAVIGATION"
|
||||||
|
title="Inscription"
|
||||||
|
>
|
||||||
|
<View style={{ flex: 1, paddingTop: 20 }}>
|
||||||
|
<ItemContainer height={275}>
|
||||||
|
<View style={{ gap: 32, paddingTop: 5, paddingHorizontal: 5 }}>
|
||||||
|
<View style={{ gap: 16 }}>
|
||||||
|
<View style={{ gap: 2 }}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 22,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Comment t’appelles-tu?
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.gray,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Invisible pour les autres, sauf si tu l’utilises comme nom
|
||||||
|
d’artiste.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<Input placeholder="Prénom" label="Prénom" isBlur />
|
||||||
|
</View>
|
||||||
|
<GradientButton
|
||||||
|
title="Suivant"
|
||||||
|
containerStyle={{
|
||||||
|
width: "80%",
|
||||||
|
alignSelf: "center",
|
||||||
|
}}
|
||||||
|
onPress={() => navigate(Routes.Login)}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</ItemContainer>
|
||||||
|
</View>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CreateName;
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
import { View, Text, Pressable } from "react-native";
|
||||||
|
import React from "react";
|
||||||
|
import Page from "../layouts/Page";
|
||||||
|
import { background } from "../assets";
|
||||||
|
import ItemContainer from "../components/ItemContainer/ItemContainer";
|
||||||
|
import { Palette } from "../styles";
|
||||||
|
import { FONT_FAMILY } from "../styles/Fonts";
|
||||||
|
import { Input } from "../components/Input";
|
||||||
|
import GradientButton from "../components/GradientButton";
|
||||||
|
import { navigate } from "../navigation/NavigationService";
|
||||||
|
import { Routes } from "../navigation";
|
||||||
|
|
||||||
|
const CreatePassword = () => {
|
||||||
|
return (
|
||||||
|
<Page
|
||||||
|
backgroundImg={background.homeBG}
|
||||||
|
headerType="NAVIGATION"
|
||||||
|
title="Inscription"
|
||||||
|
>
|
||||||
|
<View style={{ flex: 1, paddingTop: 20 }}>
|
||||||
|
<ItemContainer height={300}>
|
||||||
|
<View style={{ gap: 32, paddingTop: 5, paddingHorizontal: 5 }}>
|
||||||
|
<View style={{ gap: 16 }}>
|
||||||
|
<View style={{ gap: 2 }}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 22,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Choisis un mot de passe{"\n"}sécurisé
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.gray,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Utilise au moins 8 caractères pour sécuriser ton compte.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<Input
|
||||||
|
placeholder="Mot de passe"
|
||||||
|
label="Mot de passe"
|
||||||
|
isBlur
|
||||||
|
type="password"
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
<GradientButton
|
||||||
|
title="Suivant"
|
||||||
|
containerStyle={{
|
||||||
|
width: "80%",
|
||||||
|
alignSelf: "center",
|
||||||
|
}}
|
||||||
|
onPress={() => navigate(Routes.CreateName)}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</ItemContainer>
|
||||||
|
</View>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CreatePassword;
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
import { View, Text, Image, Pressable, Platform } from "react-native";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import Page from "../layouts/Page";
|
||||||
|
import { ai, background, icons } from "../assets";
|
||||||
|
import { Palette, Style } from "../styles";
|
||||||
|
import { responsiveHeight } from "react-native-responsive-dimensions";
|
||||||
|
import BorderGradient from "../components/BorderGradient/BorderGradient";
|
||||||
|
import { BlurView } from "expo-blur";
|
||||||
|
import { FONT_FAMILY } from "../styles/Fonts";
|
||||||
|
import { size } from "../styles/Style";
|
||||||
|
import GradientButton from "../components/GradientButton";
|
||||||
|
import { goBack } from "../navigation/NavigationService";
|
||||||
|
|
||||||
|
const CreateSongs = () => {
|
||||||
|
const [selectedIndex, setSelectedIndex] = useState(null);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page backgroundImg={background.homeBG} headerType="NONE">
|
||||||
|
<View style={{ flex: 1, ...Style.containerCenter }}>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
width: "100%",
|
||||||
|
height: responsiveHeight(60),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<BorderGradient
|
||||||
|
gradientProps={{
|
||||||
|
colors: ["#FFFFFF00", Palette.white],
|
||||||
|
start: { x: 0, y: 0 },
|
||||||
|
end: { x: 1, y: 0.4 },
|
||||||
|
}}
|
||||||
|
style={{
|
||||||
|
borderWidth: 1,
|
||||||
|
borderRadius: 20,
|
||||||
|
height: responsiveHeight(55),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
source={ai.nathalie}
|
||||||
|
style={{
|
||||||
|
width: 171,
|
||||||
|
height: 250,
|
||||||
|
position: "absolute",
|
||||||
|
zIndex: 3,
|
||||||
|
top: -100,
|
||||||
|
alignSelf: "center",
|
||||||
|
}}
|
||||||
|
resizeMode="contain"
|
||||||
|
/>
|
||||||
|
<BlurView
|
||||||
|
intensity={40}
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
borderRadius: 20,
|
||||||
|
overflow: "hidden",
|
||||||
|
justifyContent: "flex-end",
|
||||||
|
backgroundColor: Palette.glass,
|
||||||
|
paddingHorizontal: 10,
|
||||||
|
zIndex: 1,
|
||||||
|
gap: 20,
|
||||||
|
paddingVertical: 20,
|
||||||
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Pressable
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
...Style.containerCenter,
|
||||||
|
...size({ size: 24 }),
|
||||||
|
top: 10,
|
||||||
|
left: 10,
|
||||||
|
}}
|
||||||
|
onPress={goBack}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
source={icons.close}
|
||||||
|
style={{
|
||||||
|
...size({ size: 15 }),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<View style={{ alignItems: "center", zIndex: 2 }}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 22,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Atelier écriture
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
C'est ici que je vais t'aider à écrire ta chanson.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={{ gap: 10, zIndex: 1 }}>
|
||||||
|
{Array.from({ length: 3 }).map((item, index) => (
|
||||||
|
<Pressable
|
||||||
|
key={index}
|
||||||
|
onPress={() => {
|
||||||
|
console.log("Pressed");
|
||||||
|
if (selectedIndex === index) {
|
||||||
|
setSelectedIndex(null);
|
||||||
|
} else {
|
||||||
|
setSelectedIndex(index);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
style={{ zIndex: 1 }}
|
||||||
|
>
|
||||||
|
<BlurView
|
||||||
|
tint={selectedIndex === index ? "default" : "dark"}
|
||||||
|
style={{
|
||||||
|
...Style.containerSpaceBetween,
|
||||||
|
paddingHorizontal: 12,
|
||||||
|
paddingVertical: 10,
|
||||||
|
borderRadius: 14,
|
||||||
|
backgroundColor: Palette.glass,
|
||||||
|
overflow: "hidden",
|
||||||
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 16,
|
||||||
|
color:
|
||||||
|
selectedIndex === index
|
||||||
|
? Palette.black
|
||||||
|
: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Chanson sans titre
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 12,
|
||||||
|
color:
|
||||||
|
selectedIndex === index
|
||||||
|
? Palette.black
|
||||||
|
: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Modifié le 23/04
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<Pressable>
|
||||||
|
<Image
|
||||||
|
source={icons.threeDots}
|
||||||
|
style={{
|
||||||
|
...size({ size: 24 }),
|
||||||
|
transform: [{ rotateZ: "90deg" }],
|
||||||
|
}}
|
||||||
|
tintColor={
|
||||||
|
selectedIndex === index
|
||||||
|
? Palette.black
|
||||||
|
: Palette.white
|
||||||
|
}
|
||||||
|
resizeMode="contain"
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</BlurView>
|
||||||
|
</Pressable>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
<GradientButton
|
||||||
|
title="Créer un texte"
|
||||||
|
containerStyle={{
|
||||||
|
width: "80%",
|
||||||
|
alignSelf: "center",
|
||||||
|
marginTop: 10,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</BlurView>
|
||||||
|
</BorderGradient>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CreateSongs;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image } from "react-native";
|
import { View, Text, Image, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import { img } from "../../../assets";
|
import { img } from "../../../assets";
|
||||||
@@ -19,6 +19,9 @@ const PlaybacksCard = () => {
|
|||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image } from "react-native";
|
import { View, Text, Image, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { img } from "../../../assets";
|
import { img } from "../../../assets";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
@@ -31,6 +31,9 @@ const SongCard = () => {
|
|||||||
...Style.containerRow,
|
...Style.containerRow,
|
||||||
}}
|
}}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={{ flex: 1, ...Style.containerRow, gap: 15 }}>
|
<View style={{ flex: 1, ...Style.containerRow, gap: 15 }}>
|
||||||
<Text
|
<Text
|
||||||
|
|||||||
+123
-149
@@ -1,163 +1,137 @@
|
|||||||
import { useState } from "react";
|
import {
|
||||||
import React from "reactn";
|
View,
|
||||||
import { responsiveHeight } from "react-native-responsive-dimensions";
|
Text,
|
||||||
import useMinuit from "react-native-minuit/src/hooks/useMinuit";
|
Image,
|
||||||
|
ScrollView,
|
||||||
|
Pressable,
|
||||||
|
Platform,
|
||||||
|
} from "react-native";
|
||||||
|
import React from "react";
|
||||||
import Page from "../layouts/Page";
|
import Page from "../layouts/Page";
|
||||||
|
import { ai, background, img } from "../assets";
|
||||||
|
import { responsiveHeight } from "react-native-responsive-dimensions";
|
||||||
|
import { BlurView } from "expo-blur";
|
||||||
|
import { Palette } from "../styles";
|
||||||
|
import { FONT_FAMILY } from "../styles/Fonts";
|
||||||
|
import { navigate } from "../navigation/NavigationService";
|
||||||
|
import { Routes } from "../navigation";
|
||||||
|
|
||||||
import { Palette, gutters } from "../styles";
|
const CREATE_DATA = [
|
||||||
|
|
||||||
import SectionTextHeader from "../components/SectionTextHeader";
|
|
||||||
import OptionSelector from "../components/OptionSelector";
|
|
||||||
import { Input } from "../components/Input";
|
|
||||||
import Button from "../components/Button";
|
|
||||||
import DocumentDropZone from "../components/DocumentDropZone";
|
|
||||||
import FilesPreview from "../components/FilesPreview";
|
|
||||||
|
|
||||||
import { documentsRef } from "../config/firebase";
|
|
||||||
import { background } from "../assets";
|
|
||||||
|
|
||||||
const accountTypeList = {
|
|
||||||
INDIVIDUAL: "Particulier",
|
|
||||||
COMPANY: "Société",
|
|
||||||
};
|
|
||||||
|
|
||||||
const accountTypeColorMap = {
|
|
||||||
INDIVIDUAL: {
|
|
||||||
primary: Palette.primary,
|
|
||||||
secondary: Palette.transparentPrimary,
|
|
||||||
},
|
|
||||||
COMPANY: {
|
|
||||||
primary: Palette.radioactivGreen,
|
|
||||||
secondary: Palette.transparentRadioactivGreen,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default ({ containerStyle = {} }) => {
|
|
||||||
const { setIsLoading, setTooltip } = useMinuit();
|
|
||||||
|
|
||||||
const documentID = "TEST_DOCUMENT_ID";
|
|
||||||
|
|
||||||
const [billingDetails, setBillingDetails] = useState({
|
|
||||||
type: "INDIVIDUAL",
|
|
||||||
name: "",
|
|
||||||
address: "",
|
|
||||||
city: "",
|
|
||||||
zipCode: "",
|
|
||||||
countryCode: "",
|
|
||||||
vatNumber: "",
|
|
||||||
companyIdentifier: "",
|
|
||||||
files: [],
|
|
||||||
});
|
|
||||||
|
|
||||||
const {
|
|
||||||
type = "INDIVIDUAL",
|
|
||||||
name = "",
|
|
||||||
address = "",
|
|
||||||
city = "",
|
|
||||||
zipCode = "",
|
|
||||||
countryCode = "FR",
|
|
||||||
vatNumber = "",
|
|
||||||
companyIdentifier = "",
|
|
||||||
files = [],
|
|
||||||
} = billingDetails || {};
|
|
||||||
|
|
||||||
const updateBillingDetails = (key, value) => {
|
|
||||||
setBillingDetails({
|
|
||||||
...billingDetails,
|
|
||||||
[key]: value,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const fieldList = [
|
|
||||||
{
|
{
|
||||||
key: "name",
|
img: ai.nathalie,
|
||||||
label: type === "COMPANY" ? "Raison sociale" : "Nom",
|
bg: background.writingBG,
|
||||||
value: name,
|
label: "Nathalie",
|
||||||
inputProps: {
|
desc: "Let’s write lyrics together !",
|
||||||
autoCapitalize: type === "COMPANY" ? "none" : "words",
|
type: "Songwriter",
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "address",
|
img: ai.theo,
|
||||||
label: "Adresse",
|
bg: background.studioBG,
|
||||||
value: address,
|
label: "Theo",
|
||||||
inputProps: {
|
desc: "Come back, when\nyou’ll have lyrics!",
|
||||||
type: "autoCompleteAddress",
|
type: "Beatmaker",
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "city",
|
img: ai.bena,
|
||||||
label: "Ville",
|
bg: background.productionBG,
|
||||||
value: city,
|
label: "Bena",
|
||||||
|
desc: "Come back when you want\nto publish the song!",
|
||||||
|
type: "Producer",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "zipCode",
|
img: ai.john,
|
||||||
label: "Code postal",
|
bg: background.playbackBG,
|
||||||
value: zipCode,
|
label: "John",
|
||||||
inputProps: {
|
desc: "Come back when your\naudio is ready!",
|
||||||
isNumeric: true,
|
type: "Director",
|
||||||
},
|
},
|
||||||
},
|
];
|
||||||
{
|
|
||||||
key: "countryCode",
|
|
||||||
label: "Pays",
|
|
||||||
value: countryCode,
|
|
||||||
type: "countryPicker",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "vatNumber",
|
|
||||||
label: "Numéro de TVA intracommunautaire (facultatif)",
|
|
||||||
value: vatNumber,
|
|
||||||
condition: type === "COMPANY",
|
|
||||||
required: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "companyIdentifier",
|
|
||||||
label: "Numéro SIRET",
|
|
||||||
value: companyIdentifier,
|
|
||||||
condition: type === "COMPANY",
|
|
||||||
},
|
|
||||||
].filter(({ condition = true }) => condition);
|
|
||||||
|
|
||||||
const onSubmit = async () => {
|
|
||||||
try {
|
|
||||||
setIsLoading(true);
|
|
||||||
|
|
||||||
let cleanObject = {};
|
|
||||||
|
|
||||||
fieldList.forEach(({ key, value, label, required = true }) => {
|
|
||||||
if (value) {
|
|
||||||
cleanObject[key] = value;
|
|
||||||
} else if (required) {
|
|
||||||
throw new Error(`Le champ ${label.toLowerCase()} est obligatoire`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
await documentsRef.doc(documentID).set(
|
|
||||||
{
|
|
||||||
...cleanObject,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
merge: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
setTooltip({
|
|
||||||
type: "sucess",
|
|
||||||
text: "Document publié!",
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
setTooltip({
|
|
||||||
type: "error",
|
|
||||||
text: error.message,
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
setIsLoading(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
const Home = () => {
|
||||||
return (
|
return (
|
||||||
<Page backgroundImg={background.homeBG} headerType="NONE"></Page>
|
<Page backgroundImg={background.homeBG} headerType="NONE">
|
||||||
|
<View style={{ flex: 1 }}>
|
||||||
|
<Image
|
||||||
|
source={img.goodVibe}
|
||||||
|
style={{ alignSelf: "center", position: "absolute" }}
|
||||||
|
/>
|
||||||
|
<ScrollView
|
||||||
|
contentContainerStyle={{
|
||||||
|
flexGrow: 1,
|
||||||
|
gap: 57,
|
||||||
|
paddingBottom: responsiveHeight(20),
|
||||||
|
}}
|
||||||
|
showsVerticalScrollIndicator={false}
|
||||||
|
>
|
||||||
|
<View style={{ height: responsiveHeight(60) }} />
|
||||||
|
{CREATE_DATA.map((item, index) => (
|
||||||
|
<Pressable
|
||||||
|
key={index}
|
||||||
|
onPress={() =>
|
||||||
|
navigate(Routes.Create, {
|
||||||
|
action: item.type,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<BlurView
|
||||||
|
tint="dark"
|
||||||
|
intensity={20}
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
zIndex: 1,
|
||||||
|
left: 110,
|
||||||
|
top: 10,
|
||||||
|
paddingVertical: 8,
|
||||||
|
paddingHorizontal: 12,
|
||||||
|
borderRadius: 14,
|
||||||
|
borderBottomLeftRadius: 0,
|
||||||
|
overflow: "hidden",
|
||||||
|
backgroundColor: Palette.glass,
|
||||||
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 13,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{item.label}, {item.type}
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{item.desc}
|
||||||
|
</Text>
|
||||||
|
</BlurView>
|
||||||
|
<Image
|
||||||
|
source={item.bg}
|
||||||
|
style={{
|
||||||
|
width: "100%",
|
||||||
|
height: 152,
|
||||||
|
borderRadius: 20,
|
||||||
|
position: "absolute",
|
||||||
|
bottom: 0,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Image
|
||||||
|
source={item.img}
|
||||||
|
style={{ width: 130, height: 200 }}
|
||||||
|
resizeMode="contain"
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
))}
|
||||||
|
</ScrollView>
|
||||||
|
</View>
|
||||||
|
</Page>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default Home;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable } from "react-native";
|
import { View, Text, Pressable, Platform } from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background } from "../../assets";
|
import { background } from "../../assets";
|
||||||
@@ -68,6 +68,9 @@ const AllMyLikedMusic = () => {
|
|||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image, Pressable } from "react-native";
|
import { View, Text, Image, Pressable, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background, icons } from "../../assets";
|
import { background, icons } from "../../assets";
|
||||||
@@ -33,6 +33,9 @@ const AllMyPlaylist = () => {
|
|||||||
height: 59,
|
height: 59,
|
||||||
paddingHorizontal: 10,
|
paddingHorizontal: 10,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
import { View, Text, Image, Pressable, StyleSheet } from "react-native";
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
Image,
|
||||||
|
Pressable,
|
||||||
|
StyleSheet,
|
||||||
|
Platform,
|
||||||
|
} from "react-native";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Palette, Style } from "../../../styles";
|
import { Palette, Style } from "../../../styles";
|
||||||
import { icons, img } from "../../../assets";
|
import { icons, img } from "../../../assets";
|
||||||
@@ -45,6 +52,9 @@ const MusicCard = ({ onPress, onPressMore }) => {
|
|||||||
...Style.containerSpaceBetween,
|
...Style.containerSpaceBetween,
|
||||||
paddingHorizontal: 8,
|
paddingHorizontal: 8,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View>
|
<View>
|
||||||
<Text style={styles.title}>Alors on danse</Text>
|
<Text style={styles.title}>Alors on danse</Text>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable, Image } from "react-native";
|
import { View, Text, Pressable, Image, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import CardContainer from "./CardContainer";
|
import CardContainer from "./CardContainer";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
@@ -25,6 +25,9 @@ const MyPlaylist = () => {
|
|||||||
height: 59,
|
height: 59,
|
||||||
paddingHorizontal: 10,
|
paddingHorizontal: 10,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable, StyleSheet } from "react-native";
|
import { View, Text, Pressable, StyleSheet, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import SearchBar from "../../../components/SearchBar";
|
import SearchBar from "../../../components/SearchBar";
|
||||||
import { Palette, Style } from "../../../styles";
|
import { Palette, Style } from "../../../styles";
|
||||||
@@ -31,7 +31,13 @@ const ResearchHeader = ({ onPress, selected }) => {
|
|||||||
style={styles.borderGradient}
|
style={styles.borderGradient}
|
||||||
/>
|
/>
|
||||||
<View style={styles.blurContainer}>
|
<View style={styles.blurContainer}>
|
||||||
<BlurView intensity={20} style={styles.blurView}>
|
<BlurView
|
||||||
|
intensity={20}
|
||||||
|
style={styles.blurView}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
<Text style={styles.menu}>{item}</Text>
|
<Text style={styles.menu}>{item}</Text>
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
+80
-304
@@ -1,345 +1,121 @@
|
|||||||
import React, { useState, useRef, useEffect, useGlobal } from "reactn";
|
/* eslint-disable react/display-name */
|
||||||
import {
|
import React from "reactn";
|
||||||
Text,
|
import { Pressable, Text, View } from "react-native";
|
||||||
View,
|
|
||||||
KeyboardAvoidingView,
|
|
||||||
Image,
|
|
||||||
Pressable,
|
|
||||||
} from "react-native";
|
|
||||||
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
||||||
|
|
||||||
import {
|
import Page from "../layouts/Page.js";
|
||||||
responsiveHeight,
|
import { background } from "../assets/index.js";
|
||||||
responsiveWidth,
|
import { Input } from "../components/Input.js";
|
||||||
} from "../actions/responsiveSizes.js";
|
import GradientButton from "../components/GradientButton.js";
|
||||||
|
import Palette from "../styles/Palette.js";
|
||||||
import firebase from "../config/firebase";
|
import { FONT_FAMILY } from "../styles/Fonts.js";
|
||||||
|
|
||||||
import Button from "../components/Button";
|
|
||||||
import { Input } from "../components/Input";
|
|
||||||
|
|
||||||
import { Fonts, gutters, Palette, Style } from "../styles";
|
|
||||||
import { Routes } from "../navigation";
|
|
||||||
import { art, mockups } from "../assets";
|
|
||||||
import {
|
|
||||||
checkIfEmailIsValid,
|
|
||||||
checkIfPasswordIsStrongEnough,
|
|
||||||
handleFirebaseError,
|
|
||||||
} from "../actions/signupActions";
|
|
||||||
|
|
||||||
import useLayoutType from "../hooks/useLayoutType.js";
|
|
||||||
import { capitalize } from "../helpers/index.js";
|
|
||||||
import { navigate } from "../navigation/NavigationService.js";
|
import { navigate } from "../navigation/NavigationService.js";
|
||||||
|
import { Routes } from "../navigation/Routes.js";
|
||||||
|
import ItemContainer from "../components/ItemContainer/ItemContainer.js";
|
||||||
|
|
||||||
export default ({ navigation }) => {
|
export default ({ navigation }) => {
|
||||||
console.log("LOGINSCREEN");
|
|
||||||
const [, setTooltip] = useGlobal("_tooltip");
|
|
||||||
const [, setIsLoading] = useGlobal("_isLoading");
|
|
||||||
|
|
||||||
const [mode, setMode] = useState("LOGIN");
|
|
||||||
|
|
||||||
const [emailIsStatic, setEmailIsStatic] = useState(false);
|
|
||||||
|
|
||||||
const [email, setEmail] = useState("login@minuit.com");
|
|
||||||
const [password, setPassword] = useState("password");
|
|
||||||
|
|
||||||
const [firstName, setFirstName] = useState("");
|
|
||||||
const [lastName, setLastName] = useState("");
|
|
||||||
|
|
||||||
const passwordInputRef = useRef();
|
|
||||||
|
|
||||||
const { isDesktop } = useLayoutType();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const checkIfUserIsLoggedIn = async () => {
|
|
||||||
const userEmail = await AsyncStorage.getItem("userEmail");
|
|
||||||
|
|
||||||
if (userEmail) {
|
|
||||||
setEmail(userEmail);
|
|
||||||
setEmailIsStatic(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
checkIfUserIsLoggedIn();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const onLogin = async () => {
|
|
||||||
try {
|
|
||||||
setIsLoading(true);
|
|
||||||
|
|
||||||
let trimmedEmail = email.trim();
|
|
||||||
|
|
||||||
await firebase.auth().signInWithEmailAndPassword(trimmedEmail, password);
|
|
||||||
await AsyncStorage.setItem("userEmail", trimmedEmail);
|
|
||||||
|
|
||||||
onAuthSuccess();
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
setTooltip({
|
|
||||||
text: handleFirebaseError(error.code),
|
|
||||||
type: "error",
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
setIsLoading(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onSignup = async () => {
|
|
||||||
try {
|
|
||||||
setIsLoading(true);
|
|
||||||
|
|
||||||
if (!checkIfPasswordIsStrongEnough({ password })) {
|
|
||||||
throw new Error(
|
|
||||||
"Votre mot de passe doit contenir au moins 6 caractères, une majuscule et un chiffre."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!checkIfEmailIsValid({ email })) {
|
|
||||||
throw new Error("Veuillez renseigner une adresse email valide.");
|
|
||||||
}
|
|
||||||
|
|
||||||
const { user = null } = await firebase
|
|
||||||
.auth()
|
|
||||||
.createUserWithEmailAndPassword(email, password);
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
throw new Error("Erreur lors de la création du compte");
|
|
||||||
}
|
|
||||||
|
|
||||||
let userObject = {
|
|
||||||
firstName: capitalize(firstName.trim()),
|
|
||||||
lastName: capitalize(lastName.trim()),
|
|
||||||
};
|
|
||||||
|
|
||||||
// push user data to firestore
|
|
||||||
|
|
||||||
onAuthSuccess();
|
|
||||||
|
|
||||||
setTooltip({
|
|
||||||
text: "Votre compte a été créé avec succès!",
|
|
||||||
type: "success",
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
setTooltip({
|
|
||||||
text: error?.code?.startsWith("auth/")
|
|
||||||
? handleFirebaseError(error.code)
|
|
||||||
: error.message,
|
|
||||||
type: "error",
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
setIsLoading(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onAuthSuccess = async () => {
|
|
||||||
navigation.reset({
|
|
||||||
index: 0,
|
|
||||||
routes: [{ name: Routes.Splash }],
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<Page
|
||||||
headerType="NONE"
|
backgroundImg={background.homeBG}
|
||||||
style={{
|
headerType="NAVIGATION"
|
||||||
flex: 1,
|
title="Connexion"
|
||||||
backgroundColor: Palette.lightPurple,
|
|
||||||
...Style.containerRow,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
position: "relative",
|
|
||||||
flex: 1,
|
|
||||||
padding: 2 * gutters,
|
|
||||||
backgroundColor: Palette.darkPurple,
|
|
||||||
height: "100%",
|
|
||||||
...Style.containerCenter,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
resizeMode="contain"
|
|
||||||
source={art.gradientTriangle}
|
|
||||||
style={{
|
|
||||||
position: "absolute",
|
|
||||||
top: responsiveHeight(20),
|
|
||||||
right: responsiveHeight(5),
|
|
||||||
width: responsiveWidth(140),
|
|
||||||
height: responsiveWidth(140),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<KeyboardAvoidingView
|
|
||||||
style={{ ...Style.containerCenter, width: "100%" }}
|
|
||||||
behavior="padding"
|
|
||||||
keyboardVerticalOffset={responsiveHeight(10)}
|
|
||||||
>
|
>
|
||||||
|
<View style={{ flex: 1, paddingTop: 20 }}>
|
||||||
|
<ItemContainer height={490}>
|
||||||
|
<View style={{ gap: 30, paddingTop: 5, paddingHorizontal: 5 }}>
|
||||||
|
<View style={{ gap: 2 }}>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
...Fonts({ type: "megaTitle" }),
|
fontSize: 22,
|
||||||
marginBottom: responsiveHeight(10),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
minuit.starter
|
|
||||||
</Text>
|
|
||||||
|
|
||||||
{emailIsStatic && mode === "LOGIN" ? (
|
|
||||||
<>
|
|
||||||
<Text
|
|
||||||
style={{
|
|
||||||
...Fonts({
|
|
||||||
type: "default",
|
|
||||||
color: Palette.white,
|
color: Palette.white,
|
||||||
style: { marginBottom: 20, textAlign: "center" },
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
}),
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{`Vous êtes connecté(e) avec l'adresse ${email},`}
|
Bonjour, pseudo!
|
||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
<Pressable
|
|
||||||
onPress={async () => {
|
|
||||||
await AsyncStorage.removeItem("userEmail");
|
|
||||||
|
|
||||||
setEmailIsStatic(false);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
...Fonts({
|
fontSize: 14,
|
||||||
type: "default",
|
color: Palette.gray,
|
||||||
color: Palette.primary,
|
fontFamily: FONT_FAMILY.InterRegular,
|
||||||
style: {
|
|
||||||
marginBottom: 20,
|
|
||||||
textAlign: "center",
|
|
||||||
textDecorationLine: "underline",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Modifier
|
Nous sommes heureux de te revoir parmi nous. Prêt·e à reprendre
|
||||||
|
le rythme ?
|
||||||
</Text>
|
</Text>
|
||||||
</Pressable>
|
</View>
|
||||||
</>
|
<View style={{ gap: 20 }}>
|
||||||
) : (
|
|
||||||
<Input
|
<Input
|
||||||
layout="line"
|
placeholder="Adresse mail ou pseudo"
|
||||||
type="email"
|
label="Adresse mail ou pseudo"
|
||||||
label="Adresse email"
|
isBlur
|
||||||
placeholder="Votre adresse email"
|
|
||||||
value={email}
|
|
||||||
setValue={setEmail}
|
|
||||||
containerStyle={{ marginBottom: 20 }}
|
|
||||||
textInputProps={{
|
|
||||||
returnKeyType: "next",
|
|
||||||
onSubmitEditing: () => passwordInputRef.current.focus(),
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
)}
|
<View style={{ gap: 4 }}>
|
||||||
|
|
||||||
<Input
|
<Input
|
||||||
layout="line"
|
placeholder="Mot de passe"
|
||||||
inputRef={passwordInputRef}
|
|
||||||
label="Mot de passe"
|
label="Mot de passe"
|
||||||
placeholder="Votre mot de passe"
|
|
||||||
value={password}
|
|
||||||
setValue={setPassword}
|
|
||||||
type="password"
|
type="password"
|
||||||
containerStyle={{ marginBottom: gutters }}
|
isBlur
|
||||||
textInputProps={{
|
|
||||||
returnKeyType: "done",
|
|
||||||
onSubmitEditing: onLogin,
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
|
<Pressable>
|
||||||
{mode === "LOGIN" ? (
|
|
||||||
<Pressable
|
|
||||||
onPress={() => navigation.navigate("ForgotPassword")}
|
|
||||||
style={{ marginBottom: gutters }}
|
|
||||||
>
|
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
...Fonts({
|
fontSize: 12,
|
||||||
type: "default",
|
color: Palette.white,
|
||||||
style: { textDecorationLine: "underline" },
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
}),
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Mot de passe oublié?
|
Mot de passe oublié?
|
||||||
</Text>
|
</Text>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
) : (
|
</View>
|
||||||
<>
|
</View>
|
||||||
<Input
|
<GradientButton
|
||||||
layout="line"
|
title="Poursuivre la création"
|
||||||
label="Prénom"
|
containerStyle={{
|
||||||
placeholder="Votre prénom"
|
width: "80%",
|
||||||
value={firstName}
|
alignSelf: "center",
|
||||||
setValue={setFirstName}
|
}}
|
||||||
containerStyle={{ marginBottom: gutters }}
|
onPress={() => navigate(Routes.BottomTab)}
|
||||||
/>
|
/>
|
||||||
|
<View
|
||||||
<Input
|
|
||||||
layout="line"
|
|
||||||
label="Nom"
|
|
||||||
placeholder="Votre nom"
|
|
||||||
value={lastName}
|
|
||||||
setValue={setLastName}
|
|
||||||
containerStyle={{ marginBottom: gutters }}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Button
|
|
||||||
{...(mode === "LOGIN"
|
|
||||||
? { text: "Connexion", onPress: () => navigate(Routes.BottomTab) }
|
|
||||||
: {
|
|
||||||
text: "Inscription",
|
|
||||||
onPress: onSignup,
|
|
||||||
})}
|
|
||||||
containerStyle={{ marginBottom: gutters }}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Pressable onPress={() => navigation.navigate("TermsOfUse")}>
|
|
||||||
<Text
|
|
||||||
style={Fonts({
|
|
||||||
type: "default",
|
|
||||||
style: { textAlign: "center", opacity: 1 },
|
|
||||||
})}
|
|
||||||
>
|
|
||||||
En vous {mode === "LOGIN" ? "connectant" : "inscrivant"}, vous
|
|
||||||
acceptez sans réserve les{" "}
|
|
||||||
<Text
|
|
||||||
style={{
|
style={{
|
||||||
color: Palette.primary,
|
alignItems: "center",
|
||||||
textDecorationLine: "underline",
|
gap: 4,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
conditions générales d'utilisation
|
<Text
|
||||||
</Text>{" "}
|
style={{
|
||||||
de minuit.starter.
|
fontSize: 12,
|
||||||
|
color: Palette.gray,
|
||||||
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
|
textAlign: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
En t’inscrivant, tu acceptes nos conditions générales{"\n"}
|
||||||
|
d’utilisation et notre politique de confidentialité.
|
||||||
|
</Text>
|
||||||
|
<Pressable onPress={() => navigate(Routes.Register)}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Tu as déjà un compte?{" "}
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Se connecter
|
||||||
|
</Text>
|
||||||
</Text>
|
</Text>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
</KeyboardAvoidingView>
|
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{isDesktop && (
|
|
||||||
<View style={{ flex: 2, height: "100%", overflow: "hidden" }}>
|
|
||||||
<Image
|
|
||||||
resizeMode="contain"
|
|
||||||
source={mockups.loginAppDashboard}
|
|
||||||
style={{
|
|
||||||
position: "absolute",
|
|
||||||
top: 0,
|
|
||||||
right: 0,
|
|
||||||
bottom: 0,
|
|
||||||
width: "100%",
|
|
||||||
height: "100%",
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</View>
|
</View>
|
||||||
)}
|
</ItemContainer>
|
||||||
</View>
|
</View>
|
||||||
|
</Page>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image } from "react-native";
|
import { View, Text, Image, Platform } from "react-native";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { ai, background } from "../../assets";
|
import { ai, background } from "../../assets";
|
||||||
@@ -73,6 +73,9 @@ const CreatingDecor = () => {
|
|||||||
intensity={40}
|
intensity={40}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={{ flex: 1, justifyContent: "flex-end", gap: 20 }}>
|
<View style={{ flex: 1, justifyContent: "flex-end", gap: 20 }}>
|
||||||
<View>
|
<View>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image, Pressable } from "react-native";
|
import { View, Text, Image, Pressable, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { responsiveHeight } from "react-native-responsive-dimensions";
|
import { responsiveHeight } from "react-native-responsive-dimensions";
|
||||||
import { icons, img } from "../assets";
|
import { icons, img } from "../assets";
|
||||||
@@ -64,6 +64,9 @@ const Playbacks = () => {
|
|||||||
borderColor: Palette.white,
|
borderColor: Palette.white,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
@@ -99,6 +102,9 @@ const Playbacks = () => {
|
|||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
import { View, Text, StyleSheet, Image, Pressable } from "react-native";
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
StyleSheet,
|
||||||
|
Image,
|
||||||
|
Pressable,
|
||||||
|
Platform,
|
||||||
|
} from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background, img } from "../../assets";
|
import { background, img } from "../../assets";
|
||||||
@@ -43,7 +50,10 @@ const DownloadSongs = () => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<View style={{ gap: 12, paddingVertical: 12 }}>
|
<View style={{ gap: 12, paddingVertical: 12 }}>
|
||||||
<Text style={styles.title}>Prêt à télécharger {action === "playback" ? "ton Playback" : "ta chanson"} ?</Text>
|
<Text style={styles.title}>
|
||||||
|
Prêt à télécharger{" "}
|
||||||
|
{action === "playback" ? "ton Playback" : "ta chanson"} ?
|
||||||
|
</Text>
|
||||||
<View style={{ gap: 10 }}>
|
<View style={{ gap: 10 }}>
|
||||||
<Pressable
|
<Pressable
|
||||||
style={styles.itemContainer}
|
style={styles.itemContainer}
|
||||||
@@ -53,8 +63,18 @@ const DownloadSongs = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<BlurView style={styles.blurView} intensity={40} tint="dark">
|
<BlurView
|
||||||
<Text style={styles.label}>Télécharger {action === "playback" ? "mon Playback" : "ma chanson"}</Text>
|
style={styles.blurView}
|
||||||
|
intensity={40}
|
||||||
|
tint="dark"
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text style={styles.label}>
|
||||||
|
Télécharger{" "}
|
||||||
|
{action === "playback" ? "mon Playback" : "ma chanson"}
|
||||||
|
</Text>
|
||||||
<Text style={styles.description}>Pour moi uniquement</Text>
|
<Text style={styles.description}>Pour moi uniquement</Text>
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
@@ -66,14 +86,24 @@ const DownloadSongs = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<BlurView style={styles.blurView} intensity={40} tint="dark">
|
<BlurView
|
||||||
|
style={styles.blurView}
|
||||||
|
intensity={40}
|
||||||
|
tint="dark"
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
<Text style={styles.label}>
|
<Text style={styles.label}>
|
||||||
Diffuser {action === "playback" ? "mon Playback" : "ma chanson"} sur la plateforme de MusicLand (+
|
Diffuser{" "}
|
||||||
réseaux sociaux) et participer au concours
|
{action === "playback" ? "mon Playback" : "ma chanson"} sur
|
||||||
|
la plateforme de MusicLand (+ réseaux sociaux) et participer
|
||||||
|
au concours
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={styles.description}>
|
<Text style={styles.description}>
|
||||||
Top 3: 1er 15% du CA ML - 2ème 10% du CA ML - 3ème 5% du CA
|
Top 3: 1er 15% du CA ML - 2ème 10% du CA ML - 3ème 5% du CA
|
||||||
ML (catégorie {action === "playback" ? "Playback" : "chanson"})
|
ML (catégorie{" "}
|
||||||
|
{action === "playback" ? "Playback" : "chanson"})
|
||||||
</Text>
|
</Text>
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View } from "react-native";
|
import { Platform, View } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background } from "../../assets";
|
import { background } from "../../assets";
|
||||||
@@ -31,6 +31,9 @@ const ChangeEmailAddress = () => {
|
|||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<EditInput placeholder="Adresse mail" label="Adresse mail" />
|
<EditInput placeholder="Adresse mail" label="Adresse mail" />
|
||||||
</BlurView>
|
</BlurView>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable } from "react-native";
|
import { View, Text, Pressable, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background } from "../../assets";
|
import { background } from "../../assets";
|
||||||
@@ -33,6 +33,9 @@ const ChangePassword = () => {
|
|||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
gap: 4,
|
gap: 4,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<EditInput
|
<EditInput
|
||||||
placeholder="Mot de passe"
|
placeholder="Mot de passe"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image, TextInput } from "react-native";
|
import { View, Text, Image, TextInput, Platform } from "react-native";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background, img } from "../../assets";
|
import { background, img } from "../../assets";
|
||||||
@@ -34,6 +34,9 @@ const EditProfile = () => {
|
|||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
gap: 24,
|
gap: 24,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={{ alignItems: "center" }}>
|
<View style={{ alignItems: "center" }}>
|
||||||
<Image
|
<Image
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable } from "react-native";
|
import { View, Text, Pressable, Platform } from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { background } from "../../assets";
|
import { background } from "../../assets";
|
||||||
@@ -37,6 +37,9 @@ const Language = () => {
|
|||||||
borderRadius: 20,
|
borderRadius: 20,
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
/* eslint-disable react/display-name */
|
||||||
import React from "reactn";
|
import React from "reactn";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
import { gutters, Palette, Style } from "../../styles";
|
import { gutters, Palette, Style } from "../../styles";
|
||||||
import { background } from "../../assets";
|
import { background } from "../../assets";
|
||||||
import { Text, View } from "react-native";
|
import { Platform, Text, View } from "react-native";
|
||||||
import { responsiveHeight } from "react-native-responsive-dimensions";
|
import { responsiveHeight } from "react-native-responsive-dimensions";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import Switch from "../../components/Switch";
|
import Switch from "../../components/Switch";
|
||||||
@@ -35,6 +36,9 @@ export default (props) => {
|
|||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={Style.containerSpaceBetween}>
|
<View style={Style.containerSpaceBetween}>
|
||||||
<Text
|
<Text
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
Image,
|
Image,
|
||||||
FlatList,
|
FlatList,
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
|
Platform,
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
@@ -54,6 +55,9 @@ const Profile = () => {
|
|||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
paddingHorizontal: 20,
|
paddingHorizontal: 20,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={{ alignItems: "center" }}>
|
<View style={{ alignItems: "center" }}>
|
||||||
<Image
|
<Image
|
||||||
@@ -122,7 +126,13 @@ const Profile = () => {
|
|||||||
style={styles.borderGradient}
|
style={styles.borderGradient}
|
||||||
/>
|
/>
|
||||||
<View style={styles.blurContainer}>
|
<View style={styles.blurContainer}>
|
||||||
<BlurView intensity={20} style={styles.blurView}>
|
<BlurView
|
||||||
|
intensity={20}
|
||||||
|
style={styles.blurView}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
<Text style={styles.menu}>{item}</Text>
|
<Text style={styles.menu}>{item}</Text>
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -65,7 +65,10 @@ const Settings = () => {
|
|||||||
))}
|
))}
|
||||||
</View>
|
</View>
|
||||||
<View style={{ width: "80%", gap: 5, alignSelf: "center" }}>
|
<View style={{ width: "80%", gap: 5, alignSelf: "center" }}>
|
||||||
<BorderGradientButton title="Déconnexion" />
|
<BorderGradientButton
|
||||||
|
title="Déconnexion"
|
||||||
|
onPress={() => navigate(Routes.Login)}
|
||||||
|
/>
|
||||||
<BorderGradientButton
|
<BorderGradientButton
|
||||||
title="Supprimer mon profil"
|
title="Supprimer mon profil"
|
||||||
titleStyle={{
|
titleStyle={{
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
Image,
|
Image,
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
FlatList,
|
FlatList,
|
||||||
|
Platform,
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import Page from "../../layouts/Page";
|
import Page from "../../layouts/Page";
|
||||||
@@ -54,6 +55,9 @@ const SingerProfile = () => {
|
|||||||
backgroundColor: Palette.glass,
|
backgroundColor: Palette.glass,
|
||||||
paddingHorizontal: 20,
|
paddingHorizontal: 20,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<View style={{ alignItems: "center" }}>
|
<View style={{ alignItems: "center" }}>
|
||||||
<Image
|
<Image
|
||||||
@@ -122,7 +126,13 @@ const SingerProfile = () => {
|
|||||||
style={styles.borderGradient}
|
style={styles.borderGradient}
|
||||||
/>
|
/>
|
||||||
<View style={styles.blurContainer}>
|
<View style={styles.blurContainer}>
|
||||||
<BlurView intensity={20} style={styles.blurView}>
|
<BlurView
|
||||||
|
intensity={20}
|
||||||
|
style={styles.blurView}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
|
>
|
||||||
<Text style={styles.menu}>{item}</Text>
|
<Text style={styles.menu}>{item}</Text>
|
||||||
</BlurView>
|
</BlurView>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
import { View, Text, TextInput, Image, Pressable } from "react-native";
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
TextInput,
|
||||||
|
Image,
|
||||||
|
Pressable,
|
||||||
|
Platform,
|
||||||
|
} from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Palette, Style } from "../../../styles";
|
import { Palette, Style } from "../../../styles";
|
||||||
import { FONT_FAMILY } from "../../../styles/Fonts";
|
import { FONT_FAMILY } from "../../../styles/Fonts";
|
||||||
@@ -44,6 +51,9 @@ const EditInput = ({ label = "", placeholder = "", type = "default" }) => {
|
|||||||
height: 52,
|
height: 52,
|
||||||
...Style.containerRow,
|
...Style.containerRow,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<TextInput
|
<TextInput
|
||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
import { View, Text, Pressable } from "react-native";
|
||||||
|
import React from "react";
|
||||||
|
import Page from "../layouts/Page";
|
||||||
|
import { background } from "../assets";
|
||||||
|
import { Palette } from "../styles";
|
||||||
|
import { FONT_FAMILY } from "../styles/Fonts";
|
||||||
|
import { Input } from "../components/Input";
|
||||||
|
import BorderGradientButton from "../components/BorderGradientButton";
|
||||||
|
import { navigate } from "../navigation/NavigationService";
|
||||||
|
import { Routes } from "../navigation";
|
||||||
|
import ItemContainer from "../components/ItemContainer/ItemContainer";
|
||||||
|
|
||||||
|
const Register = () => {
|
||||||
|
return (
|
||||||
|
<Page
|
||||||
|
backgroundImg={background.homeBG}
|
||||||
|
headerType="NAVIGATION"
|
||||||
|
title="Inscription"
|
||||||
|
>
|
||||||
|
<View style={{ flex: 1, paddingTop: 20 }}>
|
||||||
|
<ItemContainer height={360}>
|
||||||
|
<View style={{ gap: 32, paddingTop: 5, paddingHorizontal: 5 }}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 22,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Saisis ton adresse mail pour commencer
|
||||||
|
</Text>
|
||||||
|
<Input placeholder="Adresse mail" label="Adresse mail" isBlur />
|
||||||
|
<BorderGradientButton
|
||||||
|
title="Créer mon compte"
|
||||||
|
containerStyle={{
|
||||||
|
width: "80%",
|
||||||
|
alignSelf: "center",
|
||||||
|
}}
|
||||||
|
onPress={() => navigate(Routes.CreatePassword)}
|
||||||
|
/>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
alignItems: "center",
|
||||||
|
gap: 4,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 12,
|
||||||
|
color: Palette.gray,
|
||||||
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
|
textAlign: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
En t’inscrivant, tu acceptes nos conditions générales{"\n"}
|
||||||
|
d’utilisation et notre politique de confidentialité.
|
||||||
|
</Text>
|
||||||
|
<Pressable onPress={() => navigate(Routes.Login)}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 14,
|
||||||
|
color: Palette.white,
|
||||||
|
fontFamily: FONT_FAMILY.HelveticaNeueRegular,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Tu as déjà un compte?{" "}
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontFamily: FONT_FAMILY.InterSemiBold,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Se connecter
|
||||||
|
</Text>
|
||||||
|
</Text>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</ItemContainer>
|
||||||
|
</View>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Register;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Image, Pressable } from "react-native";
|
import { View, Text, Image, Pressable, Platform } from "react-native";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { ai, icons } from "../../assets";
|
import { ai, icons } from "../../assets";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
@@ -69,7 +69,7 @@ const CreatingSong = ({ active, config }) => {
|
|||||||
const elapsed = moment().diff(moment(startDate));
|
const elapsed = moment().diff(moment(startDate));
|
||||||
const pct = Math.max(
|
const pct = Math.max(
|
||||||
0,
|
0,
|
||||||
Math.min(100, Math.floor((elapsed / totalMs) * 100)),
|
Math.min(100, Math.floor((elapsed / totalMs) * 100))
|
||||||
);
|
);
|
||||||
setProgress(pct);
|
setProgress(pct);
|
||||||
if (pct >= 100) {
|
if (pct >= 100) {
|
||||||
@@ -119,10 +119,11 @@ const CreatingSong = ({ active, config }) => {
|
|||||||
{
|
{
|
||||||
sunoTaskId: taskId,
|
sunoTaskId: taskId,
|
||||||
musicStatus: "GENERATING",
|
musicStatus: "GENERATING",
|
||||||
generationStartAt: firebase.firestore.FieldValue.serverTimestamp(),
|
generationStartAt:
|
||||||
|
firebase.firestore.FieldValue.serverTimestamp(),
|
||||||
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
|
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
|
||||||
},
|
},
|
||||||
{ merge: true },
|
{ merge: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -179,6 +180,9 @@ const CreatingSong = ({ active, config }) => {
|
|||||||
intensity={40}
|
intensity={40}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Pressable
|
<Pressable
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { background, icons } from "../../assets";
|
|||||||
import MusicLandHeader from "../../components/MusicLandHeader";
|
import MusicLandHeader from "../../components/MusicLandHeader";
|
||||||
import { goBack, navigate } from "../../navigation/NavigationService";
|
import { goBack, navigate } from "../../navigation/NavigationService";
|
||||||
import Slider from "../../components/Slider";
|
import Slider from "../../components/Slider";
|
||||||
import { Image, Pressable, View } from "react-native";
|
import { Image, Platform, Pressable, View } from "react-native";
|
||||||
import CreateLyricsHeader from "../Writing/components/CreateLyricsHeader";
|
import CreateLyricsHeader from "../Writing/components/CreateLyricsHeader";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import { Style } from "../../styles";
|
import { Style } from "../../styles";
|
||||||
@@ -39,6 +39,9 @@ const SongReady = () => {
|
|||||||
intensity={40}
|
intensity={40}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
style={{ ...Style.containerCenter, flex: 1 }}
|
style={{ ...Style.containerCenter, flex: 1 }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Image source={icons.disk} />
|
<Image source={icons.disk} />
|
||||||
</BlurView>
|
</BlurView>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable, Image } from "react-native";
|
import { View, Text, Pressable, Image, Platform } from "react-native";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Palette, Style } from "../../styles";
|
import { Palette, Style } from "../../styles";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
@@ -117,6 +117,9 @@ const CreatingLyrics = ({ active, config, regenerateKey, selections }) => {
|
|||||||
intensity={40}
|
intensity={40}
|
||||||
tint="dark"
|
tint="dark"
|
||||||
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
style={{ flex: 1, padding: 10, paddingBottom: 20 }}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Pressable
|
<Pressable
|
||||||
style={{
|
style={{
|
||||||
@@ -161,7 +164,11 @@ const CreatingLyrics = ({ active, config, regenerateKey, selections }) => {
|
|||||||
alignSelf: "center",
|
alignSelf: "center",
|
||||||
}}
|
}}
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
navigate(Routes.Lyrics, { lyricsData: result, config, selections })
|
navigate(Routes.Lyrics, {
|
||||||
|
lyricsData: result,
|
||||||
|
config,
|
||||||
|
selections,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { View, Text, Pressable } from "react-native";
|
import { View, Text, Pressable, Platform } from "react-native";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { BlurView } from "expo-blur";
|
import { BlurView } from "expo-blur";
|
||||||
import BorderGradient from "../../../components/BorderGradient/BorderGradient";
|
import BorderGradient from "../../../components/BorderGradient/BorderGradient";
|
||||||
@@ -65,6 +65,9 @@ const CreateLyricsHeader = ({
|
|||||||
gap: 4,
|
gap: 4,
|
||||||
...blurViewStyle,
|
...blurViewStyle,
|
||||||
}}
|
}}
|
||||||
|
experimentalBlurMethod={
|
||||||
|
Platform.OS !== "ios" ? "dimezisBlurView" : "none"
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{title && (
|
{title && (
|
||||||
<Text
|
<Text
|
||||||
|
|||||||
Reference in New Issue
Block a user