diff --git a/.yarn/cache/@babel-helper-plugin-utils-npm-7.24.8-a288f101a7-73b1a83ba8.zip b/.yarn/cache/@babel-helper-plugin-utils-npm-7.24.8-a288f101a7-73b1a83ba8.zip
new file mode 100644
index 00000000..9da160c7
Binary files /dev/null and b/.yarn/cache/@babel-helper-plugin-utils-npm-7.24.8-a288f101a7-73b1a83ba8.zip differ
diff --git a/.yarn/cache/@babel-plugin-transform-optional-chaining-npm-7.24.8-3f07208b22-45e55e3a2f.zip b/.yarn/cache/@babel-plugin-transform-optional-chaining-npm-7.24.8-3f07208b22-45e55e3a2f.zip
new file mode 100644
index 00000000..31fd9505
Binary files /dev/null and b/.yarn/cache/@babel-plugin-transform-optional-chaining-npm-7.24.8-3f07208b22-45e55e3a2f.zip differ
diff --git a/.yarn/cache/@react-navigation-material-top-tabs-npm-6.6.14-97af57dac8-565919b1a9.zip b/.yarn/cache/@react-navigation-material-top-tabs-npm-6.6.14-97af57dac8-565919b1a9.zip
new file mode 100644
index 00000000..8a0256b6
Binary files /dev/null and b/.yarn/cache/@react-navigation-material-top-tabs-npm-6.6.14-97af57dac8-565919b1a9.zip differ
diff --git a/.yarn/cache/@tanstack-query-core-npm-5.51.9-6ef6539693-f3192fe32a.zip b/.yarn/cache/@tanstack-query-core-npm-5.51.9-6ef6539693-f3192fe32a.zip
new file mode 100644
index 00000000..00f046c0
Binary files /dev/null and b/.yarn/cache/@tanstack-query-core-npm-5.51.9-6ef6539693-f3192fe32a.zip differ
diff --git a/.yarn/cache/@tanstack-react-query-npm-5.51.9-b0e195cb17-f0e1612227.zip b/.yarn/cache/@tanstack-react-query-npm-5.51.9-b0e195cb17-f0e1612227.zip
new file mode 100644
index 00000000..18d46dee
Binary files /dev/null and b/.yarn/cache/@tanstack-react-query-npm-5.51.9-b0e195cb17-f0e1612227.zip differ
diff --git a/.yarn/cache/@types-tinycolor2-npm-1.4.6-62a2039a99-50179851b3.zip b/.yarn/cache/@types-tinycolor2-npm-1.4.6-62a2039a99-50179851b3.zip
new file mode 100644
index 00000000..6e7b97df
Binary files /dev/null and b/.yarn/cache/@types-tinycolor2-npm-1.4.6-62a2039a99-50179851b3.zip differ
diff --git a/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip b/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip
new file mode 100644
index 00000000..bb08c24f
Binary files /dev/null and b/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip differ
diff --git a/.yarn/cache/axios-npm-1.7.2-c89264f6f7-e457e2b0ab.zip b/.yarn/cache/axios-npm-1.7.2-c89264f6f7-e457e2b0ab.zip
new file mode 100644
index 00000000..5d20f72e
Binary files /dev/null and b/.yarn/cache/axios-npm-1.7.2-c89264f6f7-e457e2b0ab.zip differ
diff --git a/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip b/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip
new file mode 100644
index 00000000..89c8caa0
Binary files /dev/null and b/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip differ
diff --git a/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip b/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip
new file mode 100644
index 00000000..71514340
Binary files /dev/null and b/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip differ
diff --git a/.yarn/cache/follow-redirects-npm-1.15.6-50635fe51d-a62c378dfc.zip b/.yarn/cache/follow-redirects-npm-1.15.6-50635fe51d-a62c378dfc.zip
new file mode 100644
index 00000000..4a44b00e
Binary files /dev/null and b/.yarn/cache/follow-redirects-npm-1.15.6-50635fe51d-a62c378dfc.zip differ
diff --git a/.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip b/.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip
new file mode 100644
index 00000000..8ae5189b
Binary files /dev/null and b/.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip differ
diff --git a/.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip b/.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip
new file mode 100644
index 00000000..a58e6bf3
Binary files /dev/null and b/.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip differ
diff --git a/.yarn/cache/react-native-pager-view-npm-6.3.3-7b62f58674-b4f6ef33a7.zip b/.yarn/cache/react-native-pager-view-npm-6.3.3-7b62f58674-b4f6ef33a7.zip
new file mode 100644
index 00000000..a0f13bd0
Binary files /dev/null and b/.yarn/cache/react-native-pager-view-npm-6.3.3-7b62f58674-b4f6ef33a7.zip differ
diff --git a/.yarn/cache/react-native-reanimated-npm-3.14.0-e00554c9e8-31eb58d1c7.zip b/.yarn/cache/react-native-reanimated-npm-3.14.0-e00554c9e8-31eb58d1c7.zip
new file mode 100644
index 00000000..6a781071
Binary files /dev/null and b/.yarn/cache/react-native-reanimated-npm-3.14.0-e00554c9e8-31eb58d1c7.zip differ
diff --git a/.yarn/cache/react-native-tab-view-npm-3.5.2-fb6cb6fe6f-bd287e5543.zip b/.yarn/cache/react-native-tab-view-npm-3.5.2-fb6cb6fe6f-bd287e5543.zip
new file mode 100644
index 00000000..f9d96253
Binary files /dev/null and b/.yarn/cache/react-native-tab-view-npm-3.5.2-fb6cb6fe6f-bd287e5543.zip differ
diff --git a/.yarn/cache/reanimated-color-picker-npm-3.0.4-ee2956e6a1-c402ac8033.zip b/.yarn/cache/reanimated-color-picker-npm-3.0.4-ee2956e6a1-c402ac8033.zip
new file mode 100644
index 00000000..4e3d4c06
Binary files /dev/null and b/.yarn/cache/reanimated-color-picker-npm-3.0.4-ee2956e6a1-c402ac8033.zip differ
diff --git a/.yarn/cache/tinycolor2-npm-1.6.0-8df41252c6-6df4d07fce.zip b/.yarn/cache/tinycolor2-npm-1.6.0-8df41252c6-6df4d07fce.zip
new file mode 100644
index 00000000..ed477a53
Binary files /dev/null and b/.yarn/cache/tinycolor2-npm-1.6.0-8df41252c6-6df4d07fce.zip differ
diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz
index a2e01e09..605b2f26 100644
Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ
diff --git a/packages/design-system/src/Font.tsx b/packages/design-system/src/Font.tsx
index b47f8a43..794461c2 100644
--- a/packages/design-system/src/Font.tsx
+++ b/packages/design-system/src/Font.tsx
@@ -19,6 +19,7 @@ const FONT_TYPE_PREFIX = {
body1: 'text-[16px] leading-[24px]',
body2: 'text-[14px] leading-[18px]',
body3: 'text-[12px] leading-[16px]',
+ 'ui-text': 'text-[10px] leading-[10px]',
};
export type Color = keyof typeof COLOR_PREFIX;
@@ -36,13 +37,7 @@ const FontRegular = ({ type, color, children, underline }: FontProps) => {
const colorStyle = COLOR_PREFIX[color];
const underLineStyle = underline ? 'underline underline-offset-1' : '';
const fontStyle = FONT_PREFIX.MEDIUM;
- return (
-
- {children}
-
- );
+ return {children};
};
const FontBold = ({ type, color, children, underline }: FontProps) => {
@@ -50,13 +45,7 @@ const FontBold = ({ type, color, children, underline }: FontProps) => {
const colorStyle = COLOR_PREFIX[color];
const underLineStyle = underline ? 'underline underline-offset-1' : '';
const fontStyle = FONT_PREFIX.BOLD;
- return (
-
- {children}
-
- );
+ return {children};
};
const FontLight = ({ type, color, children, underline }: FontProps) => {
@@ -65,13 +54,7 @@ const FontLight = ({ type, color, children, underline }: FontProps) => {
const underLineStyle = underline ? 'underline underline-offset-1' : '';
const fontStyle = FONT_PREFIX.LIGHT;
- return (
-
- {children}
-
- );
+ return {children};
};
export const Font = Object.assign(FontRegular, {
diff --git a/packages/design-system/src/TextField.tsx b/packages/design-system/src/TextField.tsx
index f3c1eb90..d07ec812 100644
--- a/packages/design-system/src/TextField.tsx
+++ b/packages/design-system/src/TextField.tsx
@@ -4,18 +4,12 @@ import { TextInput } from 'react-native';
interface TextField {
value: string;
onChange: (value: string) => void;
- onSubmit: () => void;
+ onSubmit?: () => void;
placeholder: string;
- isCorrect: boolean;
+ isCorrect?: boolean;
}
-export function TextField({
- value,
- onChange,
- placeholder,
- onSubmit,
- isCorrect,
-}: TextField) {
+export function TextField({ value, onChange, placeholder, onSubmit, isCorrect }: TextField) {
const defaultClassName =
'text-SPOT-black text-body2 rounded-md p-4 bg-SPOT-white/60 border-[2px] border-bg-SPOT-white/60';
const incorrectClassName = 'border-SPOT-red border-[2px]';
@@ -34,7 +28,7 @@ export function TextField({
value={value}
onChangeText={onChange}
placeholder={placeholder}
- placeholderTextColor="#ffffff"
+ placeholderTextColor='#ffffff'
className={`${defaultClassName} ${getBorderClassName()}`}
onSubmitEditing={onSubmit}
/>
diff --git a/packages/react-native/babel.config.js b/packages/react-native/babel.config.js
index db1e1189..669e3441 100644
--- a/packages/react-native/babel.config.js
+++ b/packages/react-native/babel.config.js
@@ -13,6 +13,7 @@ module.exports = {
'@pages': './src/pages',
'@routes': './src/routes',
'@components': './src/components',
+ '@layouts': './src/layouts',
'@assets': './src/assets',
'@constants': './src/constants',
'@utils': './src/utils',
diff --git a/packages/react-native/ios/Podfile.lock b/packages/react-native/ios/Podfile.lock
index 913dff6a..a5397a17 100644
--- a/packages/react-native/ios/Podfile.lock
+++ b/packages/react-native/ios/Podfile.lock
@@ -979,6 +979,27 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
+ - react-native-pager-view (6.3.3):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Codegen
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
- react-native-safe-area-context (4.10.8):
- React-Core
- react-native-view-shot (3.8.0):
@@ -1325,6 +1346,7 @@ DEPENDENCIES:
- React-Mapbuffer (from `../../../node_modules/react-native/ReactCommon`)
- "react-native-cameraroll (from `../../../node_modules/@react-native-camera-roll/camera-roll`)"
- react-native-image-picker (from `../../../node_modules/react-native-image-picker`)
+ - react-native-pager-view (from `../../../node_modules/react-native-pager-view`)
- react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`)
- react-native-view-shot (from `../../../node_modules/react-native-view-shot`)
- React-nativeconfig (from `../../../node_modules/react-native/ReactCommon`)
@@ -1430,6 +1452,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/@react-native-camera-roll/camera-roll"
react-native-image-picker:
:path: "../../../node_modules/react-native-image-picker"
+ react-native-pager-view:
+ :path: "../../../node_modules/react-native-pager-view"
react-native-safe-area-context:
:path: "../../../node_modules/react-native-safe-area-context"
react-native-view-shot:
@@ -1529,6 +1553,7 @@ SPEC CHECKSUMS:
React-Mapbuffer: 9f68550e7c6839d01411ac8896aea5c868eff63a
react-native-cameraroll: a9138c165c9975da773d26945591d313992c799b
react-native-image-picker: c3afe5472ef870d98a4b28415fc0b928161ee5f7
+ react-native-pager-view: f848f89049a8e888d38f10ff31588eb63292a95f
react-native-safe-area-context: b7daa1a8df36095a032dff095a1ea8963cb48371
react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688
React-nativeconfig: fa5de9d8f4dbd5917358f8ad3ad1e08762f01dcb
diff --git a/packages/react-native/package.json b/packages/react-native/package.json
index 6875e06b..fe183297 100644
--- a/packages/react-native/package.json
+++ b/packages/react-native/package.json
@@ -19,6 +19,7 @@
"@gorhom/bottom-sheet": "^4.6.4",
"@react-native-camera-roll/camera-roll": "^7.8.1",
"@react-navigation/bottom-tabs": "^6.6.0",
+ "@react-navigation/material-top-tabs": "^6.6.14",
"@react-navigation/native": "^6.1.17",
"@react-navigation/stack": "^6.4.0",
"@tanstack/react-query": "^5.51.9",
@@ -32,11 +33,13 @@
"react-native-gesture-handler": "^2.17.1",
"react-native-image-picker": "^7.1.2",
"react-native-linear-gradient": "^2.8.3",
+ "react-native-pager-view": "^6.3.3",
"react-native-permissions": "^4.1.5",
"react-native-reanimated": "^3.14.0",
"react-native-safe-area-context": "^4.10.8",
"react-native-screens": "^3.32.0",
"react-native-svg": "^15.4.0",
+ "react-native-tab-view": "^3.5.2",
"react-native-view-shot": "^3.8.0",
"react-native-vision-camera": "^4.5.0",
"reanimated-color-picker": "^3.0.4",
diff --git a/packages/react-native/src/assets/EditIcon.tsx b/packages/react-native/src/assets/EditIcon.tsx
new file mode 100644
index 00000000..bd0450b2
--- /dev/null
+++ b/packages/react-native/src/assets/EditIcon.tsx
@@ -0,0 +1,17 @@
+import { Path, Svg, SvgProps } from 'react-native-svg';
+
+export default function EditIcon({ width, height, color }: SvgProps) {
+ return (
+
+ );
+}
diff --git a/packages/react-native/src/assets/Heart.tsx b/packages/react-native/src/assets/HeartIcon.tsx
similarity index 95%
rename from packages/react-native/src/assets/Heart.tsx
rename to packages/react-native/src/assets/HeartIcon.tsx
index 6578e25d..98724d9a 100644
--- a/packages/react-native/src/assets/Heart.tsx
+++ b/packages/react-native/src/assets/HeartIcon.tsx
@@ -1,6 +1,6 @@
import { Path, Svg, SvgProps } from 'react-native-svg';
-export default function Heart({ width, height, color }: SvgProps) {
+export default function HeartIcon({ width, height, color }: SvgProps) {
return (