@hoddy-ui/core 2.5.29 → 2.5.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/theme/colors.ts","../../src/config/KeyManager.ts","../../src/config/index.ts","../components/AdaptiveStatusBarNext.tsx","../../src/hooks.ts","../../src/theme/index.tsx","../../src/Components/FlashMessage.tsx","../../src/Components/Typography.tsx","../../src/utility.ts","../../src/Components/AlertX.tsx","../../src/Components/Avatar.tsx","../../src/Components/Button.tsx","../../src/Components/Checkbox.tsx","../../src/Components/FormWrapper.tsx","../../src/Components/StarRating.tsx","../../src/Components/Popup.tsx","../../src/Components/Grid.tsx","../../src/Components/Locator.tsx","../../src/Components/List.tsx","../../src/Components/TextField.tsx","../../src/Components/SelectMenu.tsx","../../src/Components/SafeAreaView.tsx","../../src/Components/Divider.tsx","../../src/Components/Spinner.tsx","../../src/Components/OTPInput.tsx","../index.ts"],"sourcesContent":["import { ThemeTypes, extraColorTypes } from \"../types\";\n\nlet extraColors: extraColorTypes = {};\n\nexport const setExtraColors = (c: extraColorTypes) => (extraColors = c);\n\nexport default function colors(theme: ThemeTypes) {\n const lightColors = {\n white: {\n 1: \"#ffffff\",\n 2: \"#f7f7f7\",\n 3: \"#eeeeee\",\n 4: \"#dddddd\",\n 5: \"#bbbbbb\",\n ...extraColors?.light?.white,\n },\n black: {\n 1: \"#888888\",\n 2: \"#777777\",\n 3: \"#555555\",\n 4: \"#333333\",\n 5: \"#000000\",\n ...extraColors?.light?.black,\n },\n };\n\n const darkColors = {\n black: {\n 1: \"#ffffff\",\n 2: \"#f7f7f7\",\n 3: \"#eeeeee\",\n 4: \"#dddddd\",\n 5: \"#aaaaaa\",\n ...extraColors?.dark?.black,\n },\n white: {\n 1: \"#060606\",\n 2: \"#222222\",\n 3: \"#333333\",\n 4: \"#444444\",\n 5: \"#555555\",\n ...extraColors?.dark?.white,\n },\n dark: {\n main: \"#f2f3f4\",\n light: \"#ffffff\",\n dark: \"#dddddd\",\n text: \"#000000\",\n ...extraColors?.dark?.dark,\n },\n light: {\n main: \"#111111\",\n light: \"#555555\",\n dark: \"#333333\",\n text: \"#ffffff\",\n ...extraColors?.dark?.light,\n },\n textSecondary: {\n main: \"#666666\",\n light: \"#777777\",\n dark: \"#444444\",\n text: \"#ffffff\",\n ...extraColors?.dark?.textSecondary,\n },\n primary: {\n main: \"#ff8800\",\n light: \"#feffd3\",\n dark: \"#ffaa00\",\n text: \"#ffffff\",\n ...extraColors?.light?.primary,\n ...extraColors?.dark?.primary,\n },\n };\n\n const dynamicColors = theme === \"dark\" ? darkColors : lightColors;\n return {\n ...extraColors[theme],\n primary: {\n main: \"#ff8800\",\n light: \"#feffd3\",\n dark: \"#ffaa00\",\n text: \"#ffffff\",\n ...extraColors?.light?.primary,\n },\n secondary: {\n main: \"#ff1111\",\n light: \"#ff4433\",\n dark: \"#dd0000\",\n text: \"#ffffff\",\n ...extraColors?.light?.secondary,\n },\n light: {\n main: \"#ffffff\",\n light: \"#ffffff\",\n dark: \"#dddddd\",\n text: \"#000000\",\n ...extraColors?.light?.light,\n },\n dark: {\n main: \"#000000\",\n light: \"#777777\",\n dark: \"#111111\",\n text: \"#ffffff\",\n ...extraColors?.light?.dark,\n },\n textSecondary: {\n main: \"#aaaaaa\",\n light: \"#bbbbbb\",\n dark: \"#777777\",\n text: \"#112233\",\n ...extraColors?.light?.textSecondary,\n },\n blue: {\n main: \"#0099ff\",\n light: \"#3399ff\",\n dark: \"#002288\",\n text: \"#ffffff\",\n ...extraColors?.light?.blue,\n },\n info: {\n main: \"#0099ff\",\n light: \"#33aaff\",\n dark: \"#0088aa\",\n text: \"#ffffff\",\n ...extraColors?.light?.info,\n },\n success: {\n main: \"#00aa44\",\n text: \"#ffffff\",\n light: \"#55cc33\",\n dark: \"#006622\",\n ...extraColors?.light?.success,\n },\n warning: {\n main: \"#ffaa22\",\n light: \"#ffcc77\",\n dark: \"#ff9900\",\n text: \"#ffffff\",\n ...extraColors?.light?.warning,\n },\n error: {\n main: \"#dd2222\",\n text: \"#ffffff\",\n light: \"#ff4433\",\n dark: \"#aa2200\",\n ...extraColors?.light?.error,\n },\n ...dynamicColors,\n };\n}\n","type configTypes = {\n GOOGLE_MAP_API_KEY?: string;\n TYPOGRAPHY?: {\n fontFamily?: string;\n fontWeights?: {\n [K in 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]?: string;\n };\n };\n EDGE_TO_EDGE?: boolean;\n};\n\nlet config: configTypes = {\n GOOGLE_MAP_API_KEY: \"\",\n EDGE_TO_EDGE: false,\n};\n\nexport function setConfig(key: configTypes): void {\n config = key;\n}\n\nexport function getConfig(): configTypes {\n return config;\n}\n","// import * as fs from \"fs\";\nimport { setExtraColors } from \"../theme/colors\";\nimport { extraColorTypes } from \"../types\";\nimport { setConfig } from \"./KeyManager\";\n\n/**\n * Configuration options for the Hoddy UI library\n *\n * @example\n * ```typescript\n * initialize({\n * googleMapApiKey: \"AIzaSyBxxxxxxxxxxxxxxxxxxxxxx\",\n * edgeToEdge: true,\n * colors: {\n * primary: \"#007AFF\",\n * secondary: \"#34C759\"\n * },\n * typography: {\n * fontFamily: \"Inter\",\n * fontWeights: {\n * 400: \"Inter-Regular\",\n * 500: \"Inter-Medium\",\n * 600: \"Inter-SemiBold\",\n * 700: \"Inter-Bold\"\n * }\n * }\n * });\n * ```\n */\ntype configProps = {\n /** Google Maps API key for map components */\n googleMapApiKey?: string;\n /** Custom color palette overrides */\n colors?: extraColorTypes;\n /** Enable edge-to-edge display mode */\n edgeToEdge?: boolean;\n /** Typography settings */\n typography?: {\n /** Primary font family */\n fontFamily?: string;\n /** Font family mappings for each weight (Android support) */\n fontWeights?: {\n [K in 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]?: string;\n };\n };\n};\n\nexport function initialize(config: configProps): void {\n try {\n setConfig({\n GOOGLE_MAP_API_KEY: config.googleMapApiKey,\n TYPOGRAPHY: config.typography,\n EDGE_TO_EDGE: config.edgeToEdge ?? false,\n });\n if (config.colors) setExtraColors(config.colors);\n } catch (error) {\n console.error(\"Error reading the config file:\", error);\n }\n}\n","import { useFocusEffect } from \"expo-router\";\nimport React, { useState } from \"react\";\nimport { Platform, StatusBar } from \"react-native\";\nimport { useColors, useTheme } from \"../../src/hooks\";\n\nconst AdaptiveStatusBar = ({ translucent = false }) => {\n const [focused, setFocused] = useState(false);\n const colors = useColors();\n const theme = useTheme();\n const statusbarHandler = () => {\n StatusBar.setBarStyle(theme === \"dark\" ? \"light-content\" : \"dark-content\");\n if (Platform.OS === \"android\") {\n StatusBar.setBackgroundColor(\n translucent ? \"transparent\" : colors.white[1]\n );\n StatusBar.setTranslucent(true);\n }\n };\n\n useFocusEffect(\n React.useCallback(() => {\n statusbarHandler();\n }, [theme])\n );\n\n React.useEffect(() => {\n statusbarHandler();\n }, [theme]);\n return <></>;\n};\n\nexport default AdaptiveStatusBar;\n","import { useContext } from \"react\";\nimport { Dimensions, Platform } from \"react-native\";\nimport { vs } from \"react-native-size-matters\";\nimport { UIThemeContext } from \"./theme\";\nimport colors from \"./theme/colors\";\n\nexport const useColors = () => {\n const { themeState } = useContext(UIThemeContext);\n return colors(themeState.value);\n};\n\nexport const useTheme = () => {\n const { themeState } = useContext(UIThemeContext);\n return themeState.value;\n};\nexport const useNavScreenOptions = (type: \"stack\" | \"tab\" | \"drawer\") => {\n const colors = useColors();\n const theme = useTheme();\n const options: any = {\n stack: {\n headerShown: false,\n\n headerStyle: {\n backgroundColor: colors.white[1],\n },\n headerShadowVisible: false,\n contentStyle: {\n backgroundColor: colors.white[1],\n },\n headerTitleStyle: {\n color: colors.black[1],\n },\n headerTintColor:\n Platform.OS === \"android\" ? colors.black[1] : colors.blue.light,\n },\n tab: {\n headerShown: false,\n headerTintColor: colors.dark.main,\n tabBarStyle: {\n borderTopColor: theme === \"dark\" ? colors.light.main : colors.white[2],\n borderTopWidth: 1,\n // shadowColor: \"#000\",\n // shadowOffset: { height: -3, width: 0 },\n // shadowRadius: 7,\n // shadowOpacity: 0.1,\n backgroundColor: colors.white[1],\n },\n tabBarActiveTintColor: colors.blue.main,\n tabBarInactiveTintColor: colors.textSecondary.main,\n tabBarLabelStyle: {\n // fontSize: ms(12),\n },\n },\n drawer: {\n headerShown: false,\n drawerActiveTintColor: colors.primary.main,\n drawerInactiveTintColor: colors.textSecondary.main,\n sceneContainerStyle: {\n backgroundColor: colors.white[2],\n },\n drawerStyle: {\n backgroundColor: colors.white[1],\n },\n headerStyle: {\n backgroundColor: colors.white[1],\n },\n headerTitleStyle: {\n color: colors.dark.main,\n },\n },\n };\n\n if (Platform.OS === \"android\") {\n options.tab.tabBarStyle.height = Dimensions.get(\"screen\").height * 0.08;\n options.tab.tabBarStyle.paddingBottom = vs(15);\n }\n return options[type];\n};\n","import AsyncStorage from \"@react-native-async-storage/async-storage\";\nimport * as NavigationBar from \"expo-navigation-bar\";\nimport * as SystemUI from \"expo-system-ui\";\nimport React, { createContext, useEffect, useReducer } from \"react\";\nimport { Platform, useColorScheme } from \"react-native\";\nimport { SafeAreaProvider } from \"react-native-safe-area-context\";\nimport FlashMessage from \"../Components/FlashMessage\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { useColors, useTheme } from \"../hooks\";\nimport {\n ThemeActionTypes,\n ThemeContext,\n ThemeProviderProps,\n ThemeState,\n ThemeTypes,\n} from \"../types\";\n\nexport const UIThemeContext = createContext<ThemeContext>({\n themeState: { mode: \"default\", value: \"light\" },\n});\n\nfunction themeReducer(\n state: ThemeState,\n { type, payload }: ThemeActionTypes\n): ThemeState {\n // Platform\n\n switch (type) {\n case \"dark\":\n return { mode: \"dark\", value: \"dark\" };\n case \"default\":\n return { mode: \"default\", value: payload! };\n case \"light\":\n return { mode: \"light\", value: \"light\" };\n default:\n return state;\n }\n}\n\nconst ConfigureSystemUI = () => {\n const theme = useTheme();\n const colors = useColors();\n\n useEffect(() => {\n const config = getConfig();\n if (colors) {\n SystemUI.setBackgroundColorAsync(colors.white[1]);\n if (Platform.OS === \"android\" && !config.EDGE_TO_EDGE) {\n NavigationBar.setBackgroundColorAsync(colors.white[1]);\n if (theme === \"dark\") {\n NavigationBar.setButtonStyleAsync(\"light\");\n } else {\n NavigationBar.setButtonStyleAsync(\"dark\");\n }\n }\n }\n }, [colors, theme]);\n\n return <></>;\n};\n\nexport const UIThemeProvider = ({ children }: ThemeProviderProps) => {\n const [themeState, themeDispatch] = useReducer(themeReducer, {\n mode: \"default\",\n value: \"light\",\n });\n\n const colorScheme: ThemeTypes = useColorScheme()!;\n\n React.useEffect(() => {\n AsyncStorage.getItem(\"theme\").then((val: any) => {\n if (val) {\n if (val === \"default\") {\n themeDispatch({\n type: \"default\",\n payload: colorScheme,\n });\n } else\n themeDispatch({\n type: val,\n });\n } else {\n themeDispatch({\n type: \"default\",\n payload: colorScheme,\n });\n }\n });\n }, [colorScheme]);\n return (\n <SafeAreaProvider>\n <UIThemeContext.Provider\n value={{\n themeState,\n themeDispatch,\n }}\n >\n {children}\n <FlashMessage />\n <ConfigureSystemUI />\n </UIThemeContext.Provider>\n </SafeAreaProvider>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport Animated, {\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { FlashMessageProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nexport let showFlashMessage: (msg: FlashMessageProps) => void = () => {};\n\nconst FlashMessage: React.FC = () => {\n const { top } = useSafeAreaInsets();\n const [message, setMessage] = useState<null | FlashMessageProps>(null);\n const colors = useColors();\n const type = message?.type || \"success\";\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n // Animated values\n const translateY = useSharedValue(-200);\n const opacity = useSharedValue(0);\n\n const hideMessage = () => {\n setMessage(null);\n };\n\n const closeMessage = () => {\n // Clear existing timeout if any\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n // Animate out immediately\n translateY.value = withTiming(-200, { duration: 300 });\n opacity.value = withTiming(0, { duration: 300 }, () => {\n runOnJS(hideMessage)();\n });\n };\n\n showFlashMessage = (msg: FlashMessageProps) => {\n // Clear existing timeout if any\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n // Reset position immediately before starting new animation\n translateY.value = -200;\n opacity.value = 0;\n\n setMessage(msg);\n\n // Animate in\n translateY.value = withTiming(0, { duration: 300 });\n opacity.value = withTiming(1, { duration: 300 });\n\n // Animate out after duration\n const duration = msg.duration || 3000;\n timeoutRef.current = setTimeout(() => {\n translateY.value = withTiming(-200, { duration: 300 });\n opacity.value = withTiming(0, { duration: 300 }, () => {\n runOnJS(hideMessage)();\n });\n timeoutRef.current = null;\n }, duration);\n };\n\n const animatedStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: translateY.value }],\n opacity: opacity.value,\n };\n });\n\n const styles = ScaledSheet.create({\n root: {\n position: \"absolute\",\n top: 0,\n zIndex: 1000,\n left: 0,\n paddingTop: top + 10,\n paddingHorizontal: \"15@ms\",\n backgroundColor: colors[type].main,\n width: \"100%\",\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n paddingBottom: \"15@ms\",\n },\n\n action: {\n borderRadius: 20,\n marginTop: \"10@vs\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n paddingHorizontal: \"20@ms\",\n paddingVertical: \"8@vs\",\n backgroundColor: \"#fff3\",\n },\n });\n\n if (!message) return null;\n\n return (\n <Animated.View style={[styles.root, animatedStyle]}>\n <TouchableOpacity onPress={closeMessage} activeOpacity={0.9}>\n <View style={{ flexDirection: \"row\" }}>\n <View style={{ flex: 1, marginRight: 10 }}>\n {message?.title && (\n <Typography\n variant=\"h6\"\n fontWeight={600}\n gutterBottom={3}\n style={{ color: \"#fff\" }}\n >\n {message?.title}\n </Typography>\n )}\n <Typography style={{ color: \"#fff\" }}>\n {message?.message}\n </Typography>\n </View>\n {/* <MaterialIcons color=\"#fff\" size={36} name=\"error-outline\" /> */}\n </View>\n </TouchableOpacity>\n\n {message?.actions?.map((cur, i) => (\n <TouchableOpacity\n key={i}\n style={styles.action}\n onPress={() => {\n cur.onPress?.();\n closeMessage();\n }}\n >\n <Typography fontWeight={700} style={{ color: \"#fff\" }}>\n {cur.title}\n </Typography>\n </TouchableOpacity>\n ))}\n </Animated.View>\n );\n};\n\nexport default FlashMessage;\n","import React, { forwardRef } from \"react\";\nimport { StyleSheet, Text } from \"react-native\";\nimport { moderateScale, ms, verticalScale } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { TypographyProps } from \"../types\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { getFontFamily } from \"../utility\";\n\nconst Typography: React.FC<TypographyProps> = forwardRef(\n (\n {\n children,\n color = \"dark\",\n style = {},\n textCase,\n variant = \"body1\",\n align = \"left\",\n gutterBottom = 0,\n adjustsFontSizeToFit,\n fontWeight = 400,\n fontFamily, // NEW PROP ADDED\n fontSize,\n ...props\n },\n ref\n ) => {\n const colors: any = useColors();\n const _fontSize = {\n h1: moderateScale(42),\n h2: moderateScale(37),\n h3: moderateScale(32),\n h4: moderateScale(27),\n h5: moderateScale(22),\n h6: moderateScale(17),\n body1: moderateScale(15),\n body2: moderateScale(12),\n caption: moderateScale(10),\n };\n\n const styles: any = StyleSheet.create({\n text: {\n fontSize: fontSize || _fontSize[variant],\n marginBottom: ms(gutterBottom) || 0,\n color: colors[color]?.main || color,\n textTransform: textCase,\n alignItems: \"center\",\n textAlign: align,\n fontWeight: fontWeight,\n fontFamily: fontFamily || getFontFamily(fontWeight),\n },\n });\n\n return (\n <Text\n ref={ref as any}\n adjustsFontSizeToFit={adjustsFontSizeToFit}\n style={[styles.text, style]} // Ensures external styles are applied\n {...props}\n >\n {children}\n </Text>\n );\n }\n);\n\nexport default Typography;\n","import { getConfig } from \"./config/KeyManager\";\n\nexport const getFontFamily = (\n fontWeight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\n) => {\n return (\n getConfig().TYPOGRAPHY?.fontWeights?.[fontWeight] ||\n getConfig().TYPOGRAPHY?.fontFamily ||\n undefined\n );\n};\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { AlertXProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst AlertX: React.FC<AlertXProps> = ({\n type = \"info\",\n variant = \"contained\",\n title,\n gutterBottom = 0,\n body,\n style = {},\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n container: {\n padding: 20,\n paddingTop: 10,\n paddingBottom: 10,\n borderRadius: 8,\n alignItems: \"center\",\n flexDirection: \"row\",\n marginBottom: ms(gutterBottom),\n backgroundColor: colors[type].main + (variant === \"contained\" ? \"\" : \"3\"),\n },\n title: {\n color: variant === \"contained\" ? \"#fff\" : colors[type].main,\n },\n body: {\n color: variant === \"contained\" ? \"#fff\" : colors[type].main,\n },\n });\n return (\n <View style={[styles.container, style]}>\n <View style={{ width: \"80%\" }}>\n <Typography style={styles.title} gutterBottom={3} fontWeight={700}>\n {title}\n </Typography>\n {body && (\n <Typography fontWeight={700} variant=\"body2\" style={styles.body}>\n {body}\n </Typography>\n )}\n </View>\n <View style={{ marginLeft: \"auto\" }}>\n <MaterialIcons\n color={variant === \"contained\" ? \"#fff\" : colors[type].main}\n size={36}\n name={type === \"success\" ? \"check\" : type}\n />\n </View>\n </View>\n );\n};\n\nexport default AlertX;\n","import { AntDesign } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { Image, View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { AvatarProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst Avatar: React.FC<AvatarProps> = ({\n color = \"dark\",\n label,\n variant = \"contained\",\n source,\n size = 48,\n style = {},\n}) => {\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n root: {\n borderRadius: 150,\n height: ms(size),\n width: ms(size),\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderWidth: variant === \"outlined\" ? 5 : 0,\n borderColor: variant === \"outlined\" ? \"#fff\" : \"#0000\",\n backgroundColor:\n variant === \"outlined\"\n ? undefined\n : label\n ? colors[color].main\n : colors.white[4],\n ...style,\n },\n image: {\n height: \"110%\",\n width: \"110%\",\n },\n });\n\n return (\n <View style={styles.root}>\n {source ? (\n <Image resizeMode=\"cover\" style={styles.image} source={source} />\n ) : label ? (\n <Typography style={{ color: colors[color].text }}>\n {label[0]}\n </Typography>\n ) : (\n <AntDesign name=\"user\" color=\"#fff\" size={Math.round(size / 1.5)} />\n )}\n </View>\n );\n};\n\nexport default Avatar;\n","import { Ionicons, MaterialIcons } from \"@expo/vector-icons\";\nimport React, { forwardRef } from \"react\";\nimport { ActivityIndicator, Text, TouchableOpacity } from \"react-native\";\nimport { ScaledSheet, moderateScale, ms } from \"react-native-size-matters\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { useColors, useTheme } from \"../hooks\";\nimport { ButtonProps, IconButtonProps, LinkButtonProps } from \"../types\";\nimport { getFontFamily } from \"../utility\";\n\nexport const LinkButton: React.FC<LinkButtonProps> = ({\n title,\n style = {},\n color = \"blue\",\n fontSize = 12,\n fontWeight = 400,\n disabled,\n onPress = () => {},\n}) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n text: {\n fontSize: moderateScale(fontSize),\n fontWeight: fontWeight.toString() as any,\n fontFamily: getFontFamily(fontWeight),\n color: disabled ? \"#777\" : colors[color].main,\n },\n });\n return (\n <TouchableOpacity onPress={onPress} disabled={disabled}>\n <Text style={{ ...styles.text, ...style }}>{title}</Text>\n </TouchableOpacity>\n );\n};\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n style = {},\n color = \"dark\",\n disabled,\n icon,\n elevation,\n bg = false,\n size = 24,\n containerStyles = {},\n onPress = () => {},\n iconType = \"material\",\n}) => {\n const colors = useColors();\n const theme = useTheme();\n const bgColor = theme === \"light\" ? \"#fff\" : \"#222\";\n const styles: any = ScaledSheet.create({\n container: {\n alignSelf: \"flex-start\",\n flexGrow: 0,\n backgroundColor: bg ? bgColor : elevation! > 0 ? bgColor : undefined,\n padding: \"5@ms\",\n shadowColor: \"#000\",\n shadowOpacity: 0.1,\n shadowOffset: {\n height: 1,\n width: 0,\n },\n height: bg ? ms(size + 20) : undefined,\n width: bg ? ms(size + 20) : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n shadowRadius: elevation,\n elevation: elevation,\n borderRadius: size * 5,\n },\n text: {\n color: disabled ? \"#777\" : colors[color].main,\n },\n });\n\n const IconComp = {\n material: MaterialIcons,\n ion: Ionicons,\n }[iconType];\n return (\n <TouchableOpacity\n onPress={onPress}\n activeOpacity={0.3}\n style={{ ...styles.container, ...containerStyles }}\n >\n <IconComp style={{ ...styles.text, ...style }} name={icon} size={size} />\n </TouchableOpacity>\n );\n};\n\nconst Button: React.FC<ButtonProps> = forwardRef(\n (\n {\n elevation = 0,\n onPress = () => {},\n disabled = false,\n title,\n loading,\n size = \"normal\",\n rounded = false,\n gutterBottom,\n style = {},\n fullWidth = false,\n translucent = false,\n color = \"primary\",\n variant = \"contained\",\n start,\n end,\n },\n ref\n ) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n con: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n justifyContent: \"center\",\n backgroundColor:\n variant === \"text\" || variant === \"outlined\"\n ? undefined\n : translucent\n ? translucent === \"dark\"\n ? colors.white[3] + \"22\"\n : colors.black[3] + \"22\"\n : loading\n ? colors[color].light\n : disabled\n ? colors.white[4]\n : colors[color].main,\n borderRadius: rounded ? 30 : 10,\n elevation: variant === \"text\" ? 0 : elevation,\n paddingVertical:\n size === \"small\" ? 8 : size === \"large\" ? \"15@mvs\" : \"13@mvs\",\n paddingHorizontal: size === \"small\" ? \"10@ms\" : \"18@ms\",\n borderColor: colors[color].main,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n shadowColor: \"#000\",\n shadowRadius: elevation,\n marginBottom: gutterBottom,\n shadowOffset: {\n height: elevation / 2,\n width: 0,\n },\n shadowOpacity: variant === \"text\" ? 0 : 0.3,\n width: fullWidth ? \"100%\" : undefined,\n ...style,\n },\n text: {\n color: disabled\n ? variant === \"text\" || variant === \"outlined\"\n ? colors.black[1]\n : colors[color].text\n : colors[color][\n variant === \"text\" || variant === \"outlined\" ? \"main\" : \"text\"\n ],\n fontWeight: variant === \"outlined\" ? \"700\" : \"500\",\n fontSize: size === \"small\" ? \"12@ms\" : \"13@ms\",\n fontFamily: getFontFamily(variant === \"outlined\" ? 700 : 500),\n },\n });\n\n return (\n <TouchableOpacity\n ref={ref as any}\n onPress={onPress}\n disabled={disabled}\n style={styles.con}\n >\n {start}\n {loading && (\n <ActivityIndicator\n size=\"small\"\n color={colors[color].text}\n style={{ marginRight: 10 }}\n />\n )}\n <Text style={styles.text}>{title}</Text>\n {end}\n </TouchableOpacity>\n );\n }\n);\n\nexport default Button;\n","import { MaterialCommunityIcons } from \"@expo/vector-icons\";\nimport React, { FC } from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { CheckboxProps } from \"../types\";\n\nexport const CheckBox: FC<CheckboxProps> = ({\n color = \"primary\",\n checked,\n size = 24,\n label,\n style = {},\n onChange,\n}) => {\n const iconName = checked ? \"checkbox-marked\" : \"checkbox-blank-outline\";\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n container: {\n alignItems: \"center\",\n flexDirection: \"row\",\n ...style,\n },\n });\n\n return (\n <View style={styles.container}>\n <TouchableOpacity onPress={onChange}>\n <MaterialCommunityIcons\n name={iconName}\n size={size}\n color={colors[color].main}\n />\n </TouchableOpacity>\n {label}\n </View>\n );\n};\n","import React from \"react\";\nimport {\n Keyboard,\n KeyboardAvoidingView,\n Platform,\n ScrollView,\n TouchableWithoutFeedback,\n} from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { FormWrapperProps } from \"../types\";\nexport const FormWrapper: React.FC<FormWrapperProps> = ({\n children,\n behavior = Platform.OS === \"ios\" ? \"padding\" : \"height\",\n contentContainerStyle,\n mode = \"scroll\",\n keyboardVerticalOffset = 10,\n style = {},\n onScroll,\n}) => {\n const styles = ScaledSheet.create({\n root: {\n width: \"100%\",\n flex: 1,\n ...style,\n },\n });\n return mode === \"static\" ? (\n <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>\n <KeyboardAvoidingView\n style={styles.root}\n behavior={behavior}\n contentContainerStyle={styles.root}\n keyboardVerticalOffset={keyboardVerticalOffset}\n >\n {children}\n </KeyboardAvoidingView>\n </TouchableWithoutFeedback>\n ) : (\n <KeyboardAvoidingView\n behavior={behavior}\n style={styles.root}\n keyboardVerticalOffset={keyboardVerticalOffset}\n >\n <ScrollView\n onScroll={onScroll}\n showsVerticalScrollIndicator={false}\n scrollEventThrottle={40}\n keyboardDismissMode=\"interactive\"\n contentContainerStyle={contentContainerStyle}\n keyboardShouldPersistTaps=\"handled\"\n >\n {children}\n </ScrollView>\n </KeyboardAvoidingView>\n );\n};\n","import { Ionicons } from \"@expo/vector-icons\";\nimport * as Haptics from \"expo-haptics\";\nimport { FC, useEffect, useState } from \"react\";\nimport {\n ActivityIndicator,\n TextInput,\n TouchableOpacity,\n View,\n} from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { RatingInputProps, RatingStarsProps } from \"../types\";\nimport Button from \"./Button\";\nimport { Popup } from \"./Popup\";\nimport Typography from \"./Typography\";\n\nexport const RatingStars: FC<RatingStarsProps> = ({\n rating = 0,\n size = 16,\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n });\n return (\n <View style={styles.root}>\n {[...Array(Math.floor(rating))].map((_, index) => (\n <Ionicons key={index} name=\"star\" size={size} color=\"#FFD700\" />\n ))}\n {[...Array(5 - Math.floor(rating))].map((_, index) => (\n <Ionicons\n key={index}\n name=\"star\"\n size={size}\n color={colors.textSecondary.light}\n />\n ))}\n </View>\n );\n};\n\nexport const RatingInput: FC<RatingInputProps> = ({\n onSubmit: _onSubmit,\n rating = 0,\n size = 16,\n}) => {\n const [showReviewsModal, setShowReviewsModal] = useState(false);\n const [rate, setRate] = useState(0);\n const colors = useColors();\n const [loading, setLoading] = useState(false);\n const [review, setReview] = useState(\"\");\n const styles = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n inputCon: {\n marginBottom: \"20@vs\",\n backgroundColor: colors.white[3],\n padding: \"15@ms\",\n borderRadius: 20,\n },\n input: {\n fontSize: \"16@ms\",\n color: colors.dark.main,\n height: \"100@vs\",\n },\n });\n\n useEffect(() => {\n setRate(rating);\n }, [rating]);\n const onRate = (index: number) => {\n setRate(index + 1);\n Haptics.selectionAsync();\n\n setTimeout(() => {\n setShowReviewsModal(true);\n }, 500);\n };\n\n const onSubmit = async () => {\n setLoading(true);\n setShowReviewsModal(false);\n _onSubmit && (await _onSubmit({ rating: rate, review }));\n setLoading(false);\n };\n return (\n <>\n <View style={styles.root}>\n {loading ? (\n <ActivityIndicator />\n ) : (\n [...Array(5)].map((_, index) => (\n <TouchableOpacity\n key={index}\n activeOpacity={0.9}\n onPress={() => {\n onRate(index);\n }}\n >\n <Ionicons\n style={{ marginLeft: 10 }}\n name={index < rate ? \"star\" : \"star-outline\"}\n size={size}\n color={colors.primary.light}\n />\n </TouchableOpacity>\n ))\n )}\n </View>\n <Popup\n sheet\n open={showReviewsModal}\n onClose={() => {\n setShowReviewsModal(false);\n }}\n >\n <View\n style={{\n alignItems: \"center\",\n marginBottom: 5,\n }}\n >\n <RatingStars rating={rate} size={24} />\n </View>\n <Typography\n align=\"center\"\n fontWeight={700}\n variant=\"h5\"\n gutterBottom={20}\n >\n Add to your review\n </Typography>\n\n <View style={styles.inputCon}>\n <TextInput\n style={styles.input}\n multiline\n value={review}\n onChangeText={(text) => setReview(text)}\n placeholder=\"Type review here..\"\n />\n </View>\n <Button\n gutterBottom={40}\n title=\"Submit Review\"\n loading={loading}\n disabled={loading}\n onPress={() => {\n onSubmit();\n }}\n />\n </Popup>\n </>\n );\n};\n","import {\n Keyboard,\n KeyboardAvoidingView,\n Modal,\n Platform,\n Pressable,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n} from \"react-native\";\n\nimport React, { useEffect, useState } from \"react\";\nimport Animated, {\n CurvedTransition,\n LinearTransition,\n runOnJS,\n SequencedTransition,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors, useTheme } from \"../hooks\";\nimport { UIThemeProvider } from \"../theme\";\nimport { PopupProps } from \"../types\";\nimport { IconButton } from \"./Button\";\nimport Typography from \"./Typography\";\n\nexport const Popup: React.FC<PopupProps> = ({\n title,\n sheet,\n bare = false,\n keyboardVerticalOffset,\n children,\n open,\n onClose = () => {},\n style,\n onModalShow,\n onModalHide,\n}) => {\n const theme = useTheme();\n const colors = useColors();\n const [modalVisible, setModalVisible] = useState(false);\n const [keyboardVisible, setKeyboardVisible] = useState(false);\n const { bottom } = useSafeAreaInsets();\n\n // Animation values\n const backdropOpacity = useSharedValue(0);\n const contentTranslateY = useSharedValue(1000);\n\n // Memoized keyboard vertical offset based on platform and keyboard state\n const keyboardVerticalOffsetValue =\n Platform.OS === \"ios\" ? -bottom : -bottom * 2;\n\n // Keyboard event listeners\n useEffect(() => {\n const keyboardDidShowListener = Keyboard.addListener(\n \"keyboardDidShow\",\n () => {\n setKeyboardVisible(true);\n }\n );\n const keyboardDidHideListener = Keyboard.addListener(\n \"keyboardDidHide\",\n () => {\n setKeyboardVisible(false);\n }\n );\n\n return () => {\n keyboardDidHideListener?.remove();\n keyboardDidShowListener?.remove();\n };\n }, []);\n\n // Trigger animations when open prop changes\n useEffect(() => {\n if (open) {\n setModalVisible(true);\n // Opening animation\n backdropOpacity.value = withTiming(1, { duration: 300 });\n contentTranslateY.value = withTiming(0, { duration: 300 }, () => {\n if (onModalShow) {\n runOnJS(onModalShow)();\n }\n });\n } else {\n // Closing animation\n backdropOpacity.value = withTiming(0, { duration: 200 });\n contentTranslateY.value = withTiming(1000, { duration: 200 }, () => {\n runOnJS(setModalVisible)(false);\n if (onModalHide) {\n runOnJS(onModalHide)();\n }\n });\n }\n }, [open]);\n\n // Animated styles\n const backdropAnimatedStyle = useAnimatedStyle(() => ({\n opacity: backdropOpacity.value,\n }));\n\n const contentAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: contentTranslateY.value }],\n }));\n\n const styles: any = ScaledSheet.create({\n root: {\n height: \"100%\",\n width: \"100%\",\n justifyContent: sheet ? \"flex-end\" : \"center\",\n },\n keyboardView: {\n flex: 1,\n zIndex: 1000,\n },\n avoidingView: {\n zIndex: 2,\n minHeight: typeof sheet === \"number\" ? sheet : undefined,\n maxHeight: \"90%\",\n alignSelf: \"center\",\n maxWidth: sheet ? undefined : \"90%\",\n width: sheet ? \"100%\" : undefined,\n marginBottom: Platform.OS === \"android\" && keyboardVisible ? bottom : 0,\n },\n container: {\n paddingBottom: sheet && !bare ? bottom + ms(10) : undefined,\n backgroundColor: theme === \"dark\" ? \"#111\" : colors.white[1],\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n borderBottomRightRadius: sheet ? 0 : 20,\n borderBottomLeftRadius: sheet ? 0 : 20,\n width: \"100%\",\n overflow: \"hidden\",\n ...style,\n },\n content: {\n paddingHorizontal: bare ? undefined : \"15@ms\",\n },\n title: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"50@ms\",\n },\n titleIcon: {\n position: \"absolute\",\n left: \"15@ms\",\n },\n backdrop: {\n position: \"absolute\",\n height: \"100%\",\n zIndex: 1,\n width: \"100%\",\n backgroundColor: \"#000b\",\n },\n });\n\n const closeAction = () => {\n onClose();\n };\n\n return (\n <Modal\n transparent\n animationType=\"none\"\n statusBarTranslucent\n visible={modalVisible}\n onRequestClose={closeAction}\n >\n <UIThemeProvider>\n <Animated.View style={[styles.backdrop, backdropAnimatedStyle]} />\n <KeyboardAvoidingView\n style={styles.keyboardView}\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n keyboardVerticalOffset={\n keyboardVerticalOffset || keyboardVerticalOffsetValue\n }\n >\n <TouchableWithoutFeedback onPress={Keyboard.dismiss}>\n <View style={styles.root}>\n {open && (\n <Pressable\n style={[StyleSheet.absoluteFill, { zIndex: 1 }]}\n onPress={closeAction}\n />\n )}\n\n <Animated.View\n style={[styles.avoidingView, contentAnimatedStyle]}\n layout={LinearTransition.springify()\n .stiffness(200)\n .mass(0.5)\n .damping(100)}\n >\n <View style={styles.container}>\n {!bare && (\n <View style={styles.title}>\n <View style={styles.titleIcon}>\n <IconButton\n size={20}\n icon=\"close\"\n onPress={closeAction}\n />\n </View>\n <Typography align=\"center\" fontWeight={500}>\n {title}\n </Typography>\n </View>\n )}\n\n <View style={styles.content}>{children}</View>\n </View>\n </Animated.View>\n </View>\n </TouchableWithoutFeedback>\n </KeyboardAvoidingView>\n </UIThemeProvider>\n </Modal>\n );\n};\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { GridItemProps, GridProps } from \"../types\";\n\nexport const GridItem: React.FC<GridItemProps> = ({\n children,\n col = 2,\n alignItems,\n spacing = 1,\n style = {},\n}) => {\n const styles = ScaledSheet.create({\n gridItem: {\n width: `${100 / col}%`,\n padding: ms(spacing * 10),\n alignItems: alignItems,\n },\n });\n return <View children={children} style={[styles.gridItem, style]} />;\n};\nexport const Grid: React.FC<GridProps> = ({\n children,\n spacing = 1,\n style = {},\n}) => {\n const styles = ScaledSheet.create({\n grid: {\n flexWrap: \"wrap\",\n margin: `${-spacing * 10}@ms`,\n flexDirection: \"row\",\n },\n });\n return <View children={children} style={[styles.grid, style]} />;\n};\n","import { Ionicons } from \"@expo/vector-icons\";\nimport React, { useEffect, useState } from \"react\";\nimport { Alert, TouchableOpacity, View } from \"react-native\";\nimport { ListItem } from \"./List\";\nimport TextField from \"./TextField\";\n\nimport * as Location from \"expo-location\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { LocatorProps } from \"../types\";\n\nimport { getConfig } from \"../config/KeyManager\";\nimport Typography from \"./Typography\";\n\nexport type predictionType = {\n id: string;\n description: string;\n};\nexport const getPredictionsFromCoords = async (coords: {\n latitude: number;\n longitude: number;\n}) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n\n if (!GOOGLE_MAP_API_KEY)\n console.error(\n \"Google map api key needs to be set to use this component \\nMake sure to run initialize() with a valid google map api key\"\n );\n if (!coords) return [];\n const res = await (\n await fetch(\n `https://maps.googleapis.com/maps/api/geocode/json?radius=200&latlng=${coords.latitude},${coords.longitude}&key=${GOOGLE_MAP_API_KEY}`\n )\n ).json();\n\n const p = [];\n\n for (let key in res.results) {\n const { formatted_address: description, place_id } = res.results[key];\n p.push({\n description,\n id: place_id,\n latLng: { lst: coords.latitude, lng: coords.longitude },\n });\n }\n\n return p;\n};\n\nexport const getPredictionsFromQuery = async (\n query: string,\n country: string\n) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n const endpoint = `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=${query}&components=country:${country}&radius=20000&key=${GOOGLE_MAP_API_KEY}`;\n const res = await (await fetch(endpoint)).json();\n\n const p = [];\n for (let key in res.predictions) {\n const { description, place_id } = res.predictions[key];\n p.push({\n description,\n id: place_id,\n });\n }\n return p;\n};\n\nexport const getLocationFromPlaceId = async (\n place_id: string\n): Promise<{\n formatted_address: string;\n geometry: {\n location: {\n lat: number;\n lng: number;\n };\n };\n}> => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n const res = await (\n await fetch(\n `https://maps.googleapis.com/maps/api/place/details/json?place_id=${place_id}&fields=formatted_address%2Cgeometry&key=${GOOGLE_MAP_API_KEY}`\n )\n ).json();\n return res.result;\n};\n\nexport const Locator: React.FC<LocatorProps> = ({\n variant = \"contained\",\n onLocationSelected,\n label,\n error,\n location = {\n description: null,\n },\n renderInput,\n gutterBottom = 0,\n helperText,\n float = true,\n country = \"ng\",\n}) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n\n const [changed, setChanged] = useState(false);\n const [value, setValue] = useState(\"\");\n const [prediction, setPrediction] = useState<predictionType[]>([]);\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n list: {\n backgroundColor: colors.white[2],\n elevation: 10,\n shadowColor: \"#000\",\n shadowOpacity: 0.1,\n shadowRadius: float ? 15 : 0,\n shadowOffset: {\n height: 10,\n width: 0,\n },\n borderRadius: 10,\n marginBottom: 10,\n width: \"100%\",\n zIndex: 20,\n marginTop: float ? 2 : \"15@ms\",\n top: float ? \"100%\" : undefined,\n position: float ? \"absolute\" : \"relative\",\n },\n });\n const search = async (query: string) => {\n const predictions = await getPredictionsFromQuery(query, country);\n setPrediction(predictions);\n };\n\n const locateMe = () => {\n // Alert.alert(\n // \"Use my location\",\n // \"Auto fill this input with my current location\",\n // [{ text: \"Cancel\" }, { text: \"Use Location\", onPress: () => getLoc() }]\n // );\n const getLoc = async () => {\n const { status } = await Location.requestForegroundPermissionsAsync();\n if (status !== \"granted\")\n return Alert.alert(\n \"Error\",\n \"Permission to access location was denied! \"\n );\n try {\n let { coords } = await Location.getCurrentPositionAsync({\n accuracy: Location.LocationAccuracy.High,\n });\n const p = await getPredictionsFromCoords(coords);\n setPrediction(p);\n } catch (err) {\n console.log(err);\n Alert.alert(\n \"Can't access your location\",\n \"Make sure your location settings are turned on and you are connected to the internet. \"\n );\n }\n };\n getLoc();\n };\n\n const clear = () => {\n setPrediction([]);\n setValue(\"\");\n onLocationSelected(null);\n setChanged(false);\n };\n const locationPressed = async (loc: predictionType) => {\n setValue(loc.description);\n const res = await getLocationFromPlaceId(loc.id);\n onLocationSelected(\n {\n latitude: res.geometry.location.lat,\n longitude: res.geometry.location.lng,\n description: loc.description,\n },\n res?.formatted_address\n );\n setChanged(false);\n setPrediction([]);\n };\n\n useEffect(() => {\n if (!GOOGLE_MAP_API_KEY)\n console.error(\n \"Google map api key needs to be set to use this component \\nMake sure to run initialize() with a valid google map api key\"\n );\n }, [GOOGLE_MAP_API_KEY]);\n\n return (\n <View style={{ zIndex: 10 }}>\n {renderInput ? (\n renderInput({\n onFocus: () => search(value),\n onBlur: () => setPrediction([]),\n value: changed ? value : location?.description || value,\n onChangeText: (val) => {\n setChanged(true);\n setValue(val);\n search(val);\n },\n clear,\n locateMe,\n })\n ) : (\n <TextField\n label={label}\n onChangeText={(val) => {\n setChanged(true);\n setValue(val);\n search(val);\n }}\n onBlur={() => {\n setPrediction([]);\n }}\n onFocus={() => {\n search(value);\n }}\n value={changed ? value : location?.description || value}\n gutterBottom={gutterBottom}\n error={error}\n helperText={helperText}\n variant={variant}\n end={\n <View style={{ flexDirection: \"row\" }}>\n <TouchableOpacity onPress={locateMe} style={{ marginRight: 10 }}>\n <Ionicons\n color={colors.primary.main}\n size={18}\n name=\"location\"\n />\n </TouchableOpacity>\n <TouchableOpacity onPress={clear}>\n <Ionicons color={colors.dark.main} size={18} name=\"close\" />\n </TouchableOpacity>\n </View>\n }\n />\n )}\n\n {prediction.length > 0 && (\n <View style={styles.list}>\n {prediction.map(\n (cur, i) =>\n i < 5 && (\n <ListItem\n divider={i < prediction.length - 1}\n key={cur.id}\n link\n onPress={() => locationPressed(cur)}\n >\n <Ionicons\n name=\"location-outline\"\n style={{ marginRight: 10 }}\n size={16}\n color={colors.textSecondary.main}\n />\n <Typography style={{ flex: 1 }}>{cur.description}</Typography>\n </ListItem>\n )\n )}\n </View>\n )}\n </View>\n );\n};\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { ListItemProps, ListItemTextProps, ListProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nexport const ListItemText: React.FC<ListItemTextProps> = ({\n primary,\n divider,\n primaryProps = {},\n secondaryProps = {},\n secondary,\n style = {},\n}) => {\n const colors = useColors();\n const styles = ScaledSheet.create({\n container: {\n borderBottomColor: colors.white[2],\n borderBottomWidth: divider ? 1 : 0,\n paddingVertical: 0,\n flexGrow: 1,\n ...style,\n },\n });\n return (\n <View style={styles.container}>\n {primary && (\n <Typography\n style={{ alignItems: \"center\" }}\n variant=\"body1\"\n gutterBottom={2}\n {...primaryProps}\n >\n {primary}\n </Typography>\n )}\n {secondary && (\n <Typography variant=\"body2\" color=\"textSecondary\" {...secondaryProps}>\n {secondary}\n </Typography>\n )}\n </View>\n );\n};\nexport const ListItem: React.FC<ListItemProps> = ({\n link = false,\n divider = false,\n onPress,\n index = 1,\n style = {},\n children,\n}) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: \"10@s\",\n borderBottomColor: colors.white[2],\n borderBottomWidth: divider ? 1 : 0,\n paddingVertical: \"10@vs\",\n },\n });\n return (\n <View\n\n // layout={Layout.springify()}\n // exiting={SlideOutDown.delay(index * 100)}\n // entering={SlideInUp.delay(index * 100)}\n >\n <TouchableOpacity disabled={Boolean(!onPress)} onPress={onPress}>\n <View style={{ ...styles.root, ...style }}>\n {children}\n {link && (\n <MaterialIcons\n color={colors.white[5]}\n style={{ marginLeft: \"auto\" }}\n name=\"arrow-forward-ios\"\n size={15}\n />\n )}\n </View>\n </TouchableOpacity>\n </View>\n );\n};\nexport const List: React.FC<ListProps> = ({ style = {}, children }) => {\n const styles = ScaledSheet.create({\n root: {\n flex: 1,\n paddingHorizontal: \"20@ms\",\n ...style,\n },\n });\n return <View style={styles.root}>{children}</View>;\n};\n","import { Ionicons, MaterialIcons } from \"@expo/vector-icons\";\nimport React, { useRef, useState } from \"react\";\nimport { Animated, TextInput, TouchableOpacity, View } from \"react-native\";\nimport {\n ScaledSheet,\n moderateScale,\n ms,\n mvs,\n verticalScale,\n} from \"react-native-size-matters\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { useColors } from \"../hooks\";\nimport { TextFieldProps } from \"../types\";\nimport SelectMenu from \"./SelectMenu\";\nimport Typography from \"./Typography\";\nimport { getFontFamily } from \"../utility\";\n\nconst TextField: React.FC<TextFieldProps> = ({\n label,\n keyboardType,\n variant,\n color = \"primary\",\n value,\n type,\n helperText,\n onChangeText,\n onSubmitEditing = () => {},\n onFocus = () => {},\n onBlur = () => {},\n error,\n start,\n size = \"normal\",\n rounded,\n disabled = false,\n style = {},\n inputStyles = {},\n gutterBottom = 0,\n end,\n options,\n ...props\n}) => {\n const colors = useColors();\n const [focused, setFocused] = useState(false);\n const height =\n moderateScale(variant === \"text\" ? 50 : 45) *\n (size === \"large\" ? 1.2 : size === \"small\" ? 0.8 : 1);\n\n const labelAnim = useRef(\n new Animated.Value(height / moderateScale(variant === \"text\" ? 2.5 : 3.2))\n ).current;\n\n React.useEffect(() => {\n if (focused || value) {\n Animated.timing(labelAnim, {\n toValue: verticalScale(variant === \"text\" ? 2 : 4),\n duration: 300,\n useNativeDriver: false,\n }).start();\n } else {\n Animated.timing(labelAnim, {\n toValue: height / moderateScale(variant === \"text\" ? 2.5 : 3.2),\n duration: 300,\n useNativeDriver: false,\n }).start();\n }\n }, [focused, value]);\n const styles: any = ScaledSheet.create({\n root: {\n marginBottom: ms(gutterBottom),\n width: \"100%\",\n ...style,\n },\n container: {\n height: height,\n overflow: \"hidden\",\n\n backgroundColor:\n variant === \"outlined\" || variant === \"text\"\n ? \"#fff0\"\n : focused\n ? colors.white[3]\n : colors.white[4],\n flexDirection: \"row\",\n borderColor: error\n ? colors.error.main\n : focused\n ? colors[color].main\n : colors.textSecondary.main,\n borderWidth: error ? 1 : variant === \"outlined\" ? (focused ? 2 : 0.5) : 0,\n borderBottomWidth: variant === \"text\" ? 0.5 : undefined,\n width: \"100%\",\n borderRadius: variant === \"text\" ? 0 : rounded ? 30 : 7,\n alignItems: \"center\",\n ...inputStyles,\n },\n input: {\n fontSize: \"14@s\",\n flex: 1,\n alignSelf: \"stretch\",\n paddingLeft: variant === \"text\" ? 0 : moderateScale(15),\n paddingRight: moderateScale(10),\n paddingTop: \"11@vs\",\n fontFamily: getFontFamily(400),\n color: colors.black[1],\n zIndex: 10,\n // backgroundColor: \"#284\",\n },\n inputText: {\n fontSize: \"14@ms\",\n flex: 1,\n paddingLeft: variant === \"text\" ? 0 : moderateScale(15),\n paddingTop: \"13@ms\",\n },\n label: {\n fontFamily: getFontFamily(400),\n position: \"absolute\",\n left: variant === \"text\" ? 0 : moderateScale(15),\n fontSize: focused || value ? \"10@s\" : \"13@s\",\n color: focused ? colors[color].main : colors.textSecondary.main,\n },\n helperText: {\n paddingHorizontal: \"15@s\",\n flex: 1,\n color: focused ? colors[color].dark : colors.textSecondary.main,\n paddingTop: \"4@ms\",\n },\n error: {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 5,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n errorText: {\n fontSize: 12,\n marginLeft: 10,\n },\n });\n const formProps: any =\n type === \"email\"\n ? {\n textContentType: \"emailAddress\",\n keyboardType: \"email-address\",\n autoCapitalize: \"none\",\n autoCompleteType: \"email\",\n }\n : type === \"number\"\n ? {\n keyboardType: \"numeric\",\n }\n : type === \"tel\"\n ? {\n textContentType: \"telephoneNumber\",\n keyboardType: \"phone-pad\",\n }\n : type === \"search\"\n ? {\n keyboardType: \"web-search\",\n returnKeyType: \"search\",\n autoCapitalize: \"none\",\n }\n : type === \"password\"\n ? {\n secureTextEntry: true,\n autoCompleteType: \"password\",\n autoCapitalize: \"none\",\n textContentType: \"password\",\n }\n : {};\n return (\n <>\n <View style={styles.root}>\n <TouchableOpacity\n onPress={() => setFocused(true)}\n style={styles.container}\n >\n <Animated.Text style={{ ...styles.label, top: labelAnim }}>\n {label}\n </Animated.Text>\n {start}\n {options ? (\n <View\n style={{ flex: 1, alignItems: \"center\", flexDirection: \"row\" }}\n >\n {options.find((cur) => cur.value === value)?.start && (\n <View\n style={{\n paddingTop: variant !== \"outlined\" ? ms(13) : 0,\n paddingRight: 10,\n }}\n >\n {options.find((cur) => cur.value === value)?.start}\n </View>\n )}\n\n <Typography style={styles.inputText}>\n {options.find((cur) => cur.value === value)?.label}\n </Typography>\n </View>\n ) : (\n <TextInput\n onFocus={() => {\n onFocus();\n setFocused(true);\n }}\n onBlur={() => {\n onBlur();\n setFocused(false);\n }}\n value={value}\n onChangeText={onChangeText}\n keyboardType={keyboardType}\n editable={!disabled}\n selectTextOnFocus={!disabled}\n onSubmitEditing={onSubmitEditing}\n placeholderTextColor={colors.textSecondary.main}\n {...formProps}\n {...props}\n style={styles.input}\n />\n )}\n {end && (\n <View\n style={{\n marginRight: 20,\n paddingTop: variant === \"text\" ? ms(13) : 0,\n }}\n >\n {end}\n </View>\n )}\n {options && (\n <View\n style={{\n marginRight: variant === \"text\" ? 0 : 20,\n paddingTop: variant === \"text\" ? ms(13) : 0,\n }}\n >\n <Ionicons\n name=\"chevron-down\"\n color={colors.textSecondary.main}\n size={24}\n />\n </View>\n )}\n </TouchableOpacity>\n {helperText && (\n <Typography\n color=\"textSecondary\"\n style={styles.helperText}\n variant=\"caption\"\n >\n {helperText}\n </Typography>\n )}\n {error && (\n <View style={styles.error}>\n <MaterialIcons name=\"error\" color={colors.error.main} size={16} />\n <Typography style={styles.errorText} color=\"error\">\n {error}\n </Typography>\n </View>\n )}\n </View>\n {options && (\n <SelectMenu\n options={options}\n value={value}\n open={focused}\n onClose={() => setFocused(false)}\n label={label}\n helperText={helperText}\n onChange={onChangeText!}\n />\n )}\n </>\n );\n};\n\nexport const TextField2 = React.forwardRef<TextInput, TextFieldProps>(\n (\n {\n label,\n labelProps,\n keyboardType,\n color = \"primary\",\n value,\n type,\n helperText,\n onChangeText,\n onSubmitEditing = () => {},\n onFocus = () => {},\n onBlur = () => {},\n error,\n start,\n rounded,\n disabled = false,\n style = {},\n inputStyles = {},\n gutterBottom = 8,\n placeholder,\n end,\n options,\n multiline,\n ...props\n },\n ref\n ) => {\n const colors = useColors();\n const [focused, _setFocused] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n\n const height = moderateScale(\n multiline ? 50 + (props.numberOfLines || 1) * 18 : 50\n );\n\n const setFocused = (value: boolean) => {\n _setFocused(value);\n };\n\n const styles: any = ScaledSheet.create({\n root: {\n marginBottom: ms(gutterBottom),\n ...style,\n },\n container: {\n height: height,\n overflow: \"hidden\",\n flexDirection: \"row\",\n borderColor: error\n ? colors.error.main\n : focused\n ? colors[color].main\n : colors.white[4],\n borderWidth: error ? 1 : focused ? 2 : 1,\n width: \"100%\",\n borderRadius: rounded ? 30 : 10,\n alignItems: multiline ? \"flex-start\" : \"center\",\n paddingVertical: multiline ? 10 : 0,\n ...inputStyles,\n },\n input: {\n fontSize: \"14@s\",\n flex: 1,\n alignSelf: \"stretch\",\n paddingLeft: moderateScale(10),\n paddingRight: moderateScale(10),\n color: colors.dark.main,\n zIndex: 10,\n // backgroundColor: \"#284\",\n },\n inputText: {\n fontSize: \"14@ms\",\n color: colors.dark.main,\n paddingLeft: moderateScale(10),\n },\n placeholder: {\n fontSize: \"14@ms\",\n color: colors.textSecondary.light,\n paddingLeft: moderateScale(10),\n },\n label: {},\n helperText: {\n paddingHorizontal: \"15@s\",\n color: focused ? colors[color].dark : \"#fffa\",\n paddingTop: \"4@ms\",\n },\n error: {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 5,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n errorText: {\n fontSize: 12,\n marginLeft: 10,\n },\n });\n const formProps: any =\n type === \"email\"\n ? {\n textContentType: \"emailAddress\",\n keyboardType: \"email-address\",\n autoCapitalize: \"none\",\n autoCompleteType: \"email\",\n }\n : type === \"number\"\n ? {\n keyboardType: \"numeric\",\n }\n : type === \"tel\"\n ? {\n textContentType: \"telephoneNumber\",\n keyboardType: \"phone-pad\",\n }\n : type === \"search\"\n ? {\n keyboardType: \"web-search\",\n returnKeyType: \"search\",\n autoCapitalize: \"none\",\n }\n : type === \"password\"\n ? {\n secureTextEntry: !showPassword,\n autoCompleteType: \"password\",\n autoCapitalize: \"none\",\n textContentType: \"password\",\n }\n : {};\n return (\n <>\n <View style={styles.root}>\n {label && (\n <Typography\n variant=\"body2\"\n color=\"textSecondary\"\n gutterBottom={7}\n {...labelProps}\n >\n {label}\n </Typography>\n )}\n <TouchableOpacity\n onPress={() => setFocused(true)}\n style={styles.container}\n >\n <View style={{ marginTop: multiline ? 5 : 0 }}>{start}</View>\n\n {options ? (\n <>\n {value ? (\n <Typography style={styles.inputText}>\n {options.find((cur) => cur.value === value)?.label}\n </Typography>\n ) : (\n <Typography style={styles.placeholder}>\n {placeholder}\n </Typography>\n )}\n <Ionicons\n name=\"chevron-down\"\n size={24}\n style={{ marginLeft: \"auto\", marginRight: 15 }}\n color={colors.dark.light}\n />\n </>\n ) : (\n <TextInput\n ref={ref}\n onFocus={() => {\n onFocus();\n setFocused(true);\n }}\n onBlur={() => {\n onBlur();\n setFocused(false);\n }}\n value={value}\n onChangeText={onChangeText}\n key={showPassword ? \"show\" : \"hide\"}\n keyboardType={keyboardType}\n placeholderTextColor={colors.textSecondary.light}\n editable={!disabled}\n placeholder={placeholder}\n selectTextOnFocus={!disabled}\n onSubmitEditing={onSubmitEditing}\n multiline={multiline}\n extAlignVertical={multiline ? \"top\" : \"center\"}\n {...formProps}\n {...props}\n style={styles.input}\n />\n )}\n\n {end ? (\n <View style={{ marginRight: 20 }}>{end}</View>\n ) : (\n type === \"password\" && (\n <TouchableOpacity\n style={{ marginRight: 20 }}\n onPress={() => setShowPassword(!showPassword)}\n >\n <Ionicons\n name={showPassword ? \"eye-outline\" : \"eye-off-outline\"}\n size={24}\n color={colors.textSecondary.main}\n />\n </TouchableOpacity>\n )\n )}\n </TouchableOpacity>\n {helperText && (\n <Typography\n color=\"textSecondary\"\n style={styles.helperText}\n variant=\"caption\"\n >\n {helperText}\n </Typography>\n )}\n {error && (\n <View style={styles.error}>\n <MaterialIcons name=\"error\" color={colors.error.main} size={16} />\n <Typography style={styles.errorText} color=\"error\">\n {error}\n </Typography>\n </View>\n )}\n </View>\n {options && (\n <SelectMenu\n options={options}\n value={value}\n open={focused}\n onClose={() => setFocused(false)}\n label={label}\n helperText={helperText}\n onChange={onChangeText!}\n />\n )}\n </>\n );\n }\n);\n\nexport default TextField;\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React, { useCallback, useState } from \"react\";\nimport { FlatList, Modal, TouchableOpacity, View } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { SelectMenuProps } from \"../types\";\nimport Button from \"./Button\";\nimport TextField from \"./TextField\";\nimport Typography from \"./Typography\";\n\nconst SelectMenu: React.FC<SelectMenuProps> = ({\n open = false,\n onClose,\n value,\n options = [],\n onChange,\n disableAutoClose = false,\n label,\n secondary,\n helperText,\n}) => {\n const colors = useColors();\n const { bottom } = useSafeAreaInsets();\n\n const [search, setSearch] = useState(\"\");\n const styles: any = ScaledSheet.create({\n root: {\n backgroundColor: colors.white[1],\n flex: 1,\n },\n content: {\n flex: 1,\n paddingHorizontal: \"10@ms\",\n },\n header: {\n paddingTop: \"80@ms\",\n marginBottom: \"20@vs\",\n },\n\n option: {\n paddingHorizontal: \"10@s\",\n paddingVertical: \"10@vs\",\n borderRadius: 8,\n flexDirection: \"row\",\n alignItems: \"center\",\n marginBottom: \"10@vs\",\n },\n footer: {\n paddingBottom: bottom,\n paddingHorizontal: \"15@ms\",\n paddingTop: \"15@ms\",\n },\n });\n\n const renderItem = useCallback(\n ({ item }: any) => (\n <TouchableOpacity\n style={{\n ...styles.option,\n backgroundColor:\n item.value === value ? colors.blue.light + \"22\" : colors.white[2],\n }}\n onPress={() => {\n onChange(item.value);\n if (!disableAutoClose) onClose();\n }}\n key={item.label}\n >\n {item.start && <View style={{ marginRight: 10 }}>{item.start}</View>}\n <View style={{ flex: 1 }}>\n <Typography\n style={{\n color: item.value === value ? colors.blue.light : colors.black[2],\n }}\n >\n {item.label}\n </Typography>\n {item.secondary ? (\n <Typography\n variant=\"body2\"\n style={{\n marginTop: 2,\n color:\n item.value === value ? colors.blue.light : colors.white[5],\n }}\n >\n {item.secondary}\n </Typography>\n ) : null}\n </View>\n {value === item.value && (\n <MaterialIcons\n name=\"check\"\n color={colors.blue.light}\n size={24}\n style={{ marginLeft: \"auto\" }}\n />\n )}\n </TouchableOpacity>\n ),\n [value, colors]\n );\n return (\n <Modal visible={open} animationType=\"slide\" onRequestClose={onClose}>\n <View style={styles.root}>\n <View style={styles.content}>\n <View style={styles.header}>\n <Typography variant=\"h5\" gutterBottom={5} fontWeight={700}>\n {label}\n </Typography>\n {helperText ? (\n <Typography variant=\"body2\" color=\"textSecondary\">\n {helperText}\n </Typography>\n ) : null}\n\n <TextField\n label=\"Search\"\n value={search}\n type=\"search\"\n onChangeText={setSearch}\n variant=\"outlined\"\n />\n </View>\n <FlatList\n removeClippedSubviews\n keyExtractor={(item) => item.value}\n renderItem={renderItem}\n data={options\n .filter((item) =>\n search.length > 1\n ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1\n : item\n )\n .sort((a, b) => a.label.localeCompare(b.label))}\n />\n </View>\n <View style={styles.footer}>\n <Button\n color=\"error\"\n variant=\"outlined\"\n fullWidth\n title=\"Close\"\n onPress={onClose}\n />\n </View>\n </View>\n </Modal>\n );\n};\n\nexport default SelectMenu;\n","import { SafeAreaView as Safe } from \"react-native\";\nimport React from \"react\";\n\nimport { Platform, StyleSheet } from \"react-native\";\nimport { moderateScale } from \"react-native-size-matters\";\nimport { SafeAreaViewProps } from \"../types\";\n\nconst styles = StyleSheet.create({\n droidSafeArea: {\n flex: 1,\n paddingTop: Platform.OS === \"android\" ? moderateScale(35) : 0,\n },\n});\n\nexport const SafeAreaView: React.FC<SafeAreaViewProps> = ({\n children,\n style,\n}) => {\n return <Safe style={{ ...styles.droidSafeArea, ...style }}>{children}</Safe>;\n};\n","import { FC } from \"react\";\nimport { View } from \"react-native\";\nimport { ScaledSheet, ms } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { DividerProps } from \"../types\";\n\nexport const Divider: FC<DividerProps> = ({\n height = 1,\n color = \"textSecondary\",\n gutterBottom = 0,\n style,\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n root: {\n height,\n backgroundColor: colors[color].main,\n marginBottom: ms(gutterBottom),\n ...style,\n },\n });\n return <View style={styles.root} />;\n};\n","import React from \"react\";\nimport { ActivityIndicator, Dimensions, View } from \"react-native\";\n\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { SpinnerProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst Spinner: React.FC<SpinnerProps> = ({\n label,\n size = \"large\",\n color = \"primary\",\n fullscreen = false,\n style = {},\n}) => {\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n root: {\n width: fullscreen ? Dimensions.get(\"screen\").width : \"100%\",\n height: fullscreen ? Dimensions.get(\"screen\").height : \"100%\",\n left: 0,\n bottom: 0,\n zIndex: 100,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: fullscreen ? \"absolute\" : \"relative\",\n backgroundColor: fullscreen ? colors.white[1] + \"dd\" : undefined,\n ...style,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingVertical: \"15@vs\",\n paddingHorizontal: \"20@s\",\n borderRadius: 10,\n // backgroundColor: fullscreen ? colors.light.main : null,\n },\n label: {\n marginLeft: \"10@s\",\n color: color === \"light\" ? colors.white[2] : colors.black[4],\n },\n });\n\n return (\n <View style={styles.root}>\n <View style={styles.content}>\n <ActivityIndicator color={colors[color].dark} size={size} />\n {label && <Typography style={styles.label}>{label}</Typography>}\n </View>\n </View>\n );\n};\n\nexport default Spinner;\n","import React, { FC, useMemo } from \"react\";\nimport {\n TextInput,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from \"react-native\";\nimport { ScaledSheet, ms } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { OTPInputProps } from \"../types\";\n\nexport const OTPInput: FC<OTPInputProps> = ({\n length = 6,\n onChange = () => {},\n value = \"\",\n variant = \"outlined\",\n spacing = 1,\n size = 45,\n}) => {\n const inputRefs = useMemo(\n () =>\n Array(length)\n .fill(0)\n .map((_) => React.createRef<TextInput>()),\n [length]\n );\n\n const onChangeHandler = (val: string, index: number) => {\n if (value.length >= length && val.length > 0) return;\n // Handle pasting of full OTP\n if (val.length > 1) {\n const digits = val.replace(/\\D/g, \"\").slice(0, length);\n onChange(digits);\n if (digits.length === length) {\n inputRefs[length - 1].current?.focus();\n }\n return;\n }\n // Handle backspace\n if (val.length === 0) {\n const newValue = value.slice(0, index) + value.slice(index + 1);\n onChange(newValue);\n if (index > 0) {\n inputRefs[index - 1].current?.focus();\n }\n return;\n }\n // Only allow numbers and take first digit\n const digit = val.replace(/\\D/g, \"\").slice(0, 1);\n if (!digit) return;\n // Create new value string\n const newValue = value.slice(0, index) + digit + value.slice(index + 1);\n onChange(newValue);\n // Auto advance to next input if not at end\n if (index < length - 1) {\n inputRefs[index + 1].current?.focus();\n }\n };\n\n const colors = useColors();\n const styles = ScaledSheet.create({\n root: {},\n container: { flexDirection: \"row\" },\n input: {\n height: ms(size),\n width: ms(size),\n borderColor: colors.white[5],\n backgroundColor: variant === \"contained\" ? colors.white[3] : undefined,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderBottomWidth: variant === \"contained\" ? 0 : 1,\n marginHorizontal: ms(spacing * 5),\n textAlign: \"center\",\n borderRadius: variant === \"text\" ? 0 : 10,\n color: colors.dark.main,\n fontSize: ms(size * 0.5),\n },\n });\n\n return (\n <View style={styles.root}>\n <View style={styles.container}>\n {[...Array(length)].map((_, index) => (\n <TextInput\n ref={inputRefs[index]}\n onChangeText={(val) => onChangeHandler(val, index)}\n value={value[index] || \"\"}\n blurOnSubmit={false}\n // maxLength={1}\n keyboardType=\"number-pad\"\n key={index}\n style={[styles.input]}\n />\n ))}\n </View>\n </View>\n );\n};\n","import { initialize } from \"../src/config\";\n\n// Components\nexport { default as AdaptiveStatusBar } from \"./components/AdaptiveStatusBarNext\";\nexport { default as AlertX } from \"../src/Components/AlertX\";\nexport { default as Avatar } from \"../src/Components/Avatar\";\nexport * from \"../src/Components/Button\";\nexport { default as Button } from \"../src/Components/Button\";\nexport * from \"../src/Components/Checkbox\";\nexport * from \"../src/Components/FlashMessage\";\nexport * from \"../src/Components/FormWrapper\";\nexport * from \"../src/Components/StarRating\";\nexport * from \"../src/Components/Grid\";\nexport * from \"../src/Components/Locator\";\nexport * from \"../src/Components/Popup\";\nexport * from \"../src/Components/SafeAreaView\";\nexport * from \"../src/Components/Divider\";\nexport { default as SelectMenu } from \"../src/Components/SelectMenu\";\nexport { default as Spinner } from \"../src/Components/Spinner\";\nexport * from \"../src/Components/TextField\";\nexport { default as TextField } from \"../src/Components/TextField\";\nexport { default as Typography } from \"../src/Components/Typography\";\nexport * from \"../src/Components/OTPInput\";\n// Others\n// export * from \"../src/config\";\nexport * from \"../src/hooks\";\nexport * from \"../src/theme\";\nexport * from \"../src/types\";\n\nconst HoddyUI = {\n initialize: initialize,\n};\n\nexport default HoddyUI;\n"],"mappings":"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","names":["config","React","useState","Platform","Platform","React","React","React","colors","styles","React","colors","styles","React","colors","config","React","colors","Platform","useState","colors","Platform","React","React","View","ms","ScaledSheet","colors","styles","ScaledSheet","ms","React","View","React","View","ms","ScaledSheet","colors","styles","ScaledSheet","ms","React","View","MaterialIcons","React","forwardRef","Text","TouchableOpacity","ScaledSheet","moderateScale","ms","colors","styles","ScaledSheet","moderateScale","React","TouchableOpacity","Text","ms","MaterialIcons","forwardRef","React","TouchableOpacity","View","ScaledSheet","colors","styles","ScaledSheet","React","View","TouchableOpacity","React","Platform","ScaledSheet","styles","Ionicons","useEffect","useState","ActivityIndicator","TouchableOpacity","View","ScaledSheet","Keyboard","KeyboardAvoidingView","Platform","StyleSheet","TouchableWithoutFeedback","View","React","useEffect","useState","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","ms","ScaledSheet","colors","useState","useSafeAreaInsets","useSharedValue","Platform","useEffect","Keyboard","withTiming","runOnJS","useAnimatedStyle","styles","ScaledSheet","ms","React","Animated","KeyboardAvoidingView","TouchableWithoutFeedback","View","StyleSheet","colors","styles","ScaledSheet","View","Ionicons","useState","useEffect","ActivityIndicator","TouchableOpacity","React","View","ms","ScaledSheet","styles","Ionicons","React","useEffect","useState","TouchableOpacity","View","MaterialIcons","React","TouchableOpacity","View","ScaledSheet","colors","styles","ScaledSheet","React","View","TouchableOpacity","MaterialIcons","Ionicons","MaterialIcons","React","useRef","useState","Animated","TextInput","TouchableOpacity","View","ScaledSheet","moderateScale","ms","verticalScale","MaterialIcons","React","useState","Modal","TouchableOpacity","View","useSafeAreaInsets","ScaledSheet","colors","useSafeAreaInsets","useState","styles","ScaledSheet","React","TouchableOpacity","View","MaterialIcons","Modal","colors","useState","moderateScale","useRef","Animated","React","verticalScale","styles","ScaledSheet","ms","View","TouchableOpacity","TextInput","Ionicons","MaterialIcons","value","ScaledSheet","useState","colors","styles","ScaledSheet","useEffect","React","View","TouchableOpacity","Ionicons","React","Platform","StyleSheet","moderateScale","View","ScaledSheet","ms","colors","styles","ScaledSheet","ms","View","React","ActivityIndicator","Dimensions","View","ScaledSheet","colors","styles","ScaledSheet","Dimensions","React","View","ActivityIndicator","React","TextInput","View","ScaledSheet","ms","React","newValue","colors","styles","ScaledSheet","ms","View","TextInput"]}
1
+ {"version":3,"sources":["../../src/theme/colors.ts","../../src/config/KeyManager.ts","../../src/config/index.ts","../components/AdaptiveStatusBarNext.tsx","../../src/hooks.ts","../../src/theme/index.tsx","../../src/Components/FlashMessage.tsx","../../src/Components/Typography.tsx","../../src/utility.ts","../../src/Components/AlertX.tsx","../../src/Components/Avatar.tsx","../../src/Components/Button.tsx","../../src/Components/Checkbox.tsx","../../src/Components/FormWrapper.tsx","../../src/Components/StarRating.tsx","../../src/Components/Popup.tsx","../../src/Components/Grid.tsx","../../src/Components/Locator.tsx","../../src/Components/List.tsx","../../src/Components/TextField.tsx","../../src/Components/SelectMenu.tsx","../../src/Components/SafeAreaView.tsx","../../src/Components/Divider.tsx","../../src/Components/Spinner.tsx","../../src/Components/OTPInput.tsx","../index.ts"],"sourcesContent":["import { ThemeTypes, extraColorTypes } from \"../types\";\n\nlet extraColors: extraColorTypes = {};\n\nexport const setExtraColors = (c: extraColorTypes) => (extraColors = c);\n\nexport default function colors(theme: ThemeTypes) {\n const lightColors = {\n white: {\n 1: \"#ffffff\",\n 2: \"#f7f7f7\",\n 3: \"#eeeeee\",\n 4: \"#dddddd\",\n 5: \"#bbbbbb\",\n ...extraColors?.light?.white,\n },\n black: {\n 1: \"#888888\",\n 2: \"#777777\",\n 3: \"#555555\",\n 4: \"#333333\",\n 5: \"#000000\",\n ...extraColors?.light?.black,\n },\n };\n\n const darkColors = {\n black: {\n 1: \"#ffffff\",\n 2: \"#f7f7f7\",\n 3: \"#eeeeee\",\n 4: \"#dddddd\",\n 5: \"#aaaaaa\",\n ...extraColors?.dark?.black,\n },\n white: {\n 1: \"#060606\",\n 2: \"#222222\",\n 3: \"#333333\",\n 4: \"#444444\",\n 5: \"#555555\",\n ...extraColors?.dark?.white,\n },\n dark: {\n main: \"#f2f3f4\",\n light: \"#ffffff\",\n dark: \"#dddddd\",\n text: \"#000000\",\n ...extraColors?.dark?.dark,\n },\n light: {\n main: \"#111111\",\n light: \"#555555\",\n dark: \"#333333\",\n text: \"#ffffff\",\n ...extraColors?.dark?.light,\n },\n textSecondary: {\n main: \"#666666\",\n light: \"#777777\",\n dark: \"#444444\",\n text: \"#ffffff\",\n ...extraColors?.dark?.textSecondary,\n },\n primary: {\n main: \"#ff8800\",\n light: \"#feffd3\",\n dark: \"#ffaa00\",\n text: \"#ffffff\",\n ...extraColors?.light?.primary,\n ...extraColors?.dark?.primary,\n },\n };\n\n const dynamicColors = theme === \"dark\" ? darkColors : lightColors;\n return {\n ...extraColors[theme],\n primary: {\n main: \"#ff8800\",\n light: \"#feffd3\",\n dark: \"#ffaa00\",\n text: \"#ffffff\",\n ...extraColors?.light?.primary,\n },\n secondary: {\n main: \"#ff1111\",\n light: \"#ff4433\",\n dark: \"#dd0000\",\n text: \"#ffffff\",\n ...extraColors?.light?.secondary,\n },\n light: {\n main: \"#ffffff\",\n light: \"#ffffff\",\n dark: \"#dddddd\",\n text: \"#000000\",\n ...extraColors?.light?.light,\n },\n dark: {\n main: \"#000000\",\n light: \"#777777\",\n dark: \"#111111\",\n text: \"#ffffff\",\n ...extraColors?.light?.dark,\n },\n textSecondary: {\n main: \"#aaaaaa\",\n light: \"#bbbbbb\",\n dark: \"#777777\",\n text: \"#112233\",\n ...extraColors?.light?.textSecondary,\n },\n blue: {\n main: \"#0099ff\",\n light: \"#3399ff\",\n dark: \"#002288\",\n text: \"#ffffff\",\n ...extraColors?.light?.blue,\n },\n info: {\n main: \"#0099ff\",\n light: \"#33aaff\",\n dark: \"#0088aa\",\n text: \"#ffffff\",\n ...extraColors?.light?.info,\n },\n success: {\n main: \"#00aa44\",\n text: \"#ffffff\",\n light: \"#55cc33\",\n dark: \"#006622\",\n ...extraColors?.light?.success,\n },\n warning: {\n main: \"#ffaa22\",\n light: \"#ffcc77\",\n dark: \"#ff9900\",\n text: \"#ffffff\",\n ...extraColors?.light?.warning,\n },\n error: {\n main: \"#dd2222\",\n text: \"#ffffff\",\n light: \"#ff4433\",\n dark: \"#aa2200\",\n ...extraColors?.light?.error,\n },\n ...dynamicColors,\n };\n}\n","type configTypes = {\n GOOGLE_MAP_API_KEY?: string;\n TYPOGRAPHY?: {\n fontFamily?: string;\n fontWeights?: {\n [K in 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]?: string;\n };\n };\n EDGE_TO_EDGE?: boolean;\n};\n\nlet config: configTypes = {\n GOOGLE_MAP_API_KEY: \"\",\n EDGE_TO_EDGE: false,\n};\n\nexport function setConfig(key: configTypes): void {\n config = key;\n}\n\nexport function getConfig(): configTypes {\n return config;\n}\n","// import * as fs from \"fs\";\nimport { setExtraColors } from \"../theme/colors\";\nimport { extraColorTypes } from \"../types\";\nimport { setConfig } from \"./KeyManager\";\n\n/**\n * Configuration options for the Hoddy UI library\n *\n * @example\n * ```typescript\n * initialize({\n * googleMapApiKey: \"AIzaSyBxxxxxxxxxxxxxxxxxxxxxx\",\n * edgeToEdge: true,\n * colors: {\n * primary: \"#007AFF\",\n * secondary: \"#34C759\"\n * },\n * typography: {\n * fontFamily: \"Inter\",\n * fontWeights: {\n * 400: \"Inter-Regular\",\n * 500: \"Inter-Medium\",\n * 600: \"Inter-SemiBold\",\n * 700: \"Inter-Bold\"\n * }\n * }\n * });\n * ```\n */\ntype configProps = {\n /** Google Maps API key for map components */\n googleMapApiKey?: string;\n /** Custom color palette overrides */\n colors?: extraColorTypes;\n /** Enable edge-to-edge display mode */\n edgeToEdge?: boolean;\n /** Typography settings */\n typography?: {\n /** Primary font family */\n fontFamily?: string;\n /** Font family mappings for each weight (Android support) */\n fontWeights?: {\n [K in 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]?: string;\n };\n };\n};\n\nexport function initialize(config: configProps): void {\n try {\n setConfig({\n GOOGLE_MAP_API_KEY: config.googleMapApiKey,\n TYPOGRAPHY: config.typography,\n EDGE_TO_EDGE: config.edgeToEdge ?? false,\n });\n if (config.colors) setExtraColors(config.colors);\n } catch (error) {\n console.error(\"Error reading the config file:\", error);\n }\n}\n","import { useFocusEffect } from \"expo-router\";\nimport React, { useState } from \"react\";\nimport { Platform, StatusBar } from \"react-native\";\nimport { useColors, useTheme } from \"../../src/hooks\";\n\nconst AdaptiveStatusBar = ({ translucent = false }) => {\n const [focused, setFocused] = useState(false);\n const colors = useColors();\n const theme = useTheme();\n const statusbarHandler = () => {\n StatusBar.setBarStyle(theme === \"dark\" ? \"light-content\" : \"dark-content\");\n if (Platform.OS === \"android\") {\n StatusBar.setBackgroundColor(\n translucent ? \"transparent\" : colors.white[1]\n );\n StatusBar.setTranslucent(true);\n }\n };\n\n useFocusEffect(\n React.useCallback(() => {\n statusbarHandler();\n }, [theme])\n );\n\n React.useEffect(() => {\n statusbarHandler();\n }, [theme]);\n return <></>;\n};\n\nexport default AdaptiveStatusBar;\n","import { useContext } from \"react\";\nimport { Platform, useColorScheme } from \"react-native\";\nimport { UIThemeContext } from \"./theme\";\nimport colors from \"./theme/colors\";\nimport { ThemeModes, ThemeTypes } from \"./types\";\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport const useColors = () => {\n const { themeState } = useContext(UIThemeContext);\n return colors(themeState.value);\n};\n\nexport const useTheme = () => {\n const { themeState } = useContext(UIThemeContext);\n return themeState.value;\n};\n\nexport const useThemeContext = () => {\n const { themeState: theme, themeDispatch } = useContext(UIThemeContext);\n const colorScheme: ThemeTypes = useColorScheme()!;\n\n const setTheme = (theme: ThemeModes) => {\n if (theme === \"default\") {\n themeDispatch?.({ type: \"default\", payload: colorScheme });\n AsyncStorage.setItem(\"theme\", \"default\");\n } else {\n themeDispatch?.({ type: theme });\n AsyncStorage.setItem(\"theme\", theme);\n }\n };\n return { theme, setTheme };\n};\n\nexport const useNavScreenOptions = (type: \"stack\" | \"tab\" | \"drawer\") => {\n const colors = useColors();\n const options: any = {\n stack: {\n headerShown: false,\n headerStyle: {\n backgroundColor: colors.white[1],\n },\n headerShadowVisible: false,\n contentStyle: {\n backgroundColor: colors.white[1],\n },\n headerTitleStyle: {\n color: colors.black[1],\n },\n headerTintColor:\n Platform.OS === \"android\" ? colors.black[1] : colors.blue.light,\n },\n tab: {\n headerShown: false,\n headerTintColor: colors.dark.main,\n tabBarStyle: {\n borderTopColor: colors.white[2],\n borderColor: colors.white[2],\n borderTopWidth: 1,\n backgroundColor: colors.white[1],\n },\n tabBarActiveTintColor: colors.primary.main,\n tabBarInactiveTintColor: colors.textSecondary.main,\n tabBarLabelStyle: {\n // fontSize: ms(12),\n },\n },\n drawer: {\n headerShown: false,\n drawerActiveTintColor: colors.primary.main,\n drawerInactiveTintColor: colors.textSecondary.main,\n sceneContainerStyle: {\n backgroundColor: colors.white[2],\n },\n drawerStyle: {\n backgroundColor: colors.white[1],\n },\n headerStyle: {\n backgroundColor: colors.white[1],\n },\n headerTitleStyle: {\n color: colors.dark.main,\n },\n },\n };\n\n return options[type];\n};\n","import AsyncStorage from \"@react-native-async-storage/async-storage\";\nimport * as NavigationBar from \"expo-navigation-bar\";\nimport * as SystemUI from \"expo-system-ui\";\nimport React, { createContext, useEffect, useReducer } from \"react\";\nimport { Platform, useColorScheme } from \"react-native\";\nimport { SafeAreaProvider } from \"react-native-safe-area-context\";\nimport FlashMessage from \"../Components/FlashMessage\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { useColors, useTheme } from \"../hooks\";\nimport {\n ThemeActionTypes,\n ThemeContext,\n ThemeProviderProps,\n ThemeState,\n ThemeTypes,\n} from \"../types\";\n\nexport const UIThemeContext = createContext<ThemeContext>({\n themeState: { mode: \"default\", value: \"light\" },\n});\n\nfunction themeReducer(\n state: ThemeState,\n { type, payload }: ThemeActionTypes\n): ThemeState {\n // Platform\n\n switch (type) {\n case \"dark\":\n return { mode: \"dark\", value: \"dark\" };\n case \"default\":\n return { mode: \"default\", value: payload! };\n case \"light\":\n return { mode: \"light\", value: \"light\" };\n default:\n return state;\n }\n}\n\nconst ConfigureSystemUI = () => {\n const theme = useTheme();\n const colors = useColors();\n\n useEffect(() => {\n const config = getConfig();\n if (colors) {\n SystemUI.setBackgroundColorAsync(colors.white[1]);\n if (Platform.OS === \"android\" && !config.EDGE_TO_EDGE) {\n NavigationBar.setBackgroundColorAsync(colors.white[1]);\n if (theme === \"dark\") {\n NavigationBar.setButtonStyleAsync(\"light\");\n } else {\n NavigationBar.setButtonStyleAsync(\"dark\");\n }\n }\n }\n }, [colors, theme]);\n\n return <></>;\n};\n\nexport const UIThemeProvider = ({ children }: ThemeProviderProps) => {\n const [themeState, themeDispatch] = useReducer(themeReducer, {\n mode: \"default\",\n value: \"light\",\n });\n\n const colorScheme: ThemeTypes = useColorScheme()!;\n\n React.useEffect(() => {\n AsyncStorage.getItem(\"theme\").then((val: any) => {\n if (val) {\n if (val === \"default\") {\n themeDispatch({\n type: \"default\",\n payload: colorScheme,\n });\n } else\n themeDispatch({\n type: val,\n });\n } else {\n themeDispatch({\n type: \"default\",\n payload: colorScheme,\n });\n }\n });\n }, [colorScheme]);\n return (\n <SafeAreaProvider>\n <UIThemeContext.Provider\n value={{\n themeState,\n themeDispatch,\n }}\n >\n {children}\n <FlashMessage />\n <ConfigureSystemUI />\n </UIThemeContext.Provider>\n </SafeAreaProvider>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport Animated, {\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { FlashMessageProps } from \"../types\";\nimport Typography from \"./Typography\";\n\n// Event-based API to decouple the trigger from the component instance\ntype FlashListener = (msg: FlashMessageProps) => void;\nconst flashListeners = new Set<FlashListener>();\n\nexport const showFlashMessage = (msg: FlashMessageProps) => {\n flashListeners.forEach((listener) => listener(msg));\n};\n\nconst subscribeToFlashMessages = (listener: FlashListener) => {\n flashListeners.add(listener);\n return () => {\n flashListeners.delete(listener);\n };\n};\n\nconst FlashMessage: React.FC = () => {\n const { top } = useSafeAreaInsets();\n const [message, setMessage] = useState<null | FlashMessageProps>(null);\n const colors = useColors();\n const type = message?.type || \"success\";\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n // Animated values\n const translateY = useSharedValue(-200);\n const opacity = useSharedValue(0);\n\n const hideMessage = () => {\n setMessage(null);\n };\n\n const closeMessage = () => {\n // Clear existing timeout if any\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n // Animate out immediately\n translateY.value = withTiming(-200, { duration: 300 });\n opacity.value = withTiming(0, { duration: 300 }, () => {\n runOnJS(hideMessage)();\n });\n };\n\n useEffect(() => {\n const listener: FlashListener = (msg) => {\n // Clear existing timeout if any\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n // Reset position immediately before starting new animation\n translateY.value = -200;\n opacity.value = 0;\n\n setMessage(msg);\n\n // Animate in\n translateY.value = withTiming(0, { duration: 300 });\n opacity.value = withTiming(1, { duration: 300 });\n\n // Animate out after duration\n const duration = msg.duration || 3000;\n timeoutRef.current = setTimeout(() => {\n translateY.value = withTiming(-200, { duration: 300 });\n opacity.value = withTiming(0, { duration: 300 }, () => {\n runOnJS(hideMessage)();\n });\n timeoutRef.current = null;\n }, duration);\n };\n\n const unsubscribe = subscribeToFlashMessages(listener);\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n unsubscribe();\n };\n }, []);\n\n const animatedStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: translateY.value }],\n opacity: opacity.value,\n };\n });\n\n const styles = ScaledSheet.create({\n root: {\n position: \"absolute\",\n top: 0,\n zIndex: 1000,\n left: 0,\n paddingTop: top + 10,\n paddingHorizontal: \"15@ms\",\n backgroundColor: colors[type].main,\n width: \"100%\",\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n paddingBottom: \"15@ms\",\n },\n\n action: {\n borderRadius: 20,\n marginTop: \"10@vs\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n paddingHorizontal: \"20@ms\",\n paddingVertical: \"8@vs\",\n backgroundColor: \"#fff3\",\n },\n });\n\n if (!message) return null;\n\n return (\n <Animated.View style={[styles.root, animatedStyle]}>\n <TouchableOpacity onPress={closeMessage} activeOpacity={0.9}>\n <View style={{ flexDirection: \"row\" }}>\n <View style={{ flex: 1, marginRight: 10 }}>\n {message?.title && (\n <Typography\n variant=\"h6\"\n fontWeight={600}\n gutterBottom={3}\n style={{ color: \"#fff\" }}\n >\n {message?.title}\n </Typography>\n )}\n <Typography style={{ color: \"#fff\" }}>\n {message?.message}\n </Typography>\n </View>\n {/* <MaterialIcons color=\"#fff\" size={36} name=\"error-outline\" /> */}\n </View>\n </TouchableOpacity>\n\n {message?.actions?.map((cur, i) => (\n <TouchableOpacity\n key={i}\n style={styles.action}\n onPress={() => {\n cur.onPress?.();\n closeMessage();\n }}\n >\n <Typography fontWeight={700} style={{ color: \"#fff\" }}>\n {cur.title}\n </Typography>\n </TouchableOpacity>\n ))}\n </Animated.View>\n );\n};\n\nexport default FlashMessage;\n","import React, { forwardRef } from \"react\";\nimport { StyleSheet, Text } from \"react-native\";\nimport { moderateScale, ms, verticalScale } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { TypographyProps } from \"../types\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { getFontFamily } from \"../utility\";\n\nconst Typography: React.FC<TypographyProps> = forwardRef(\n (\n {\n children,\n color = \"dark\",\n style = {},\n textCase,\n variant = \"body1\",\n align = \"left\",\n gutterBottom = 0,\n adjustsFontSizeToFit,\n fontWeight = 400,\n fontFamily, // NEW PROP ADDED\n fontSize,\n ...props\n },\n ref\n ) => {\n const colors: any = useColors();\n const _fontSize = {\n h1: ms(42),\n h2: ms(37),\n h3: ms(32),\n h4: ms(27),\n h5: ms(22),\n h6: ms(17),\n body1: ms(15),\n body2: ms(12),\n caption: ms(10),\n };\n const f = fontSize || _fontSize[variant];\n const styles: any = StyleSheet.create({\n text: {\n lineHeight: f * 1.2,\n fontSize: f,\n marginBottom: ms(gutterBottom) || 0,\n color: colors[color]?.main || color,\n textTransform: textCase,\n alignItems: \"center\",\n textAlign: align,\n fontWeight: fontWeight,\n fontFamily: fontFamily || getFontFamily(fontWeight),\n },\n });\n\n return (\n <Text\n ref={ref as any}\n adjustsFontSizeToFit={adjustsFontSizeToFit}\n style={[styles.text, style]} // Ensures external styles are applied\n {...props}\n >\n {children}\n </Text>\n );\n }\n);\n\nexport default Typography;\n","import { getConfig } from \"./config/KeyManager\";\n\nexport const getFontFamily = (\n fontWeight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\n) => {\n return (\n getConfig().TYPOGRAPHY?.fontWeights?.[fontWeight] ||\n getConfig().TYPOGRAPHY?.fontFamily ||\n undefined\n );\n};\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { AlertXProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst AlertX: React.FC<AlertXProps> = ({\n type = \"info\",\n variant = \"contained\",\n title,\n gutterBottom = 0,\n body,\n style = {},\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n container: {\n padding: 20,\n paddingTop: 10,\n paddingBottom: 10,\n borderRadius: 8,\n alignItems: \"center\",\n flexDirection: \"row\",\n marginBottom: ms(gutterBottom),\n backgroundColor: colors[type].main + (variant === \"contained\" ? \"\" : \"3\"),\n },\n title: {\n color: variant === \"contained\" ? \"#fff\" : colors[type].main,\n },\n body: {\n color: variant === \"contained\" ? \"#fff\" : colors[type].main,\n },\n });\n return (\n <View style={[styles.container, style]}>\n <View style={{ width: \"80%\" }}>\n <Typography style={styles.title} gutterBottom={3} fontWeight={700}>\n {title}\n </Typography>\n {body && (\n <Typography fontWeight={700} variant=\"body2\" style={styles.body}>\n {body}\n </Typography>\n )}\n </View>\n <View style={{ marginLeft: \"auto\" }}>\n <MaterialIcons\n color={variant === \"contained\" ? \"#fff\" : colors[type].main}\n size={36}\n name={type === \"success\" ? \"check\" : type}\n />\n </View>\n </View>\n );\n};\n\nexport default AlertX;\n","import { AntDesign } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { Image, View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { AvatarProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst Avatar: React.FC<AvatarProps> = ({\n color = \"dark\",\n label,\n variant = \"contained\",\n source,\n size = 48,\n style = {},\n}) => {\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n root: {\n borderRadius: 150,\n height: ms(size),\n width: ms(size),\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderWidth: variant === \"outlined\" ? 5 : 0,\n borderColor: variant === \"outlined\" ? \"#fff\" : \"#0000\",\n backgroundColor:\n variant === \"outlined\"\n ? undefined\n : label\n ? colors[color].main\n : colors.white[4],\n ...style,\n },\n image: {\n height: \"110%\",\n width: \"110%\",\n },\n });\n\n return (\n <View style={styles.root}>\n {source ? (\n <Image resizeMode=\"cover\" style={styles.image} source={source} />\n ) : label ? (\n <Typography style={{ color: colors[color].text }}>\n {label[0]}\n </Typography>\n ) : (\n <AntDesign name=\"user\" color=\"#fff\" size={Math.round(size / 1.5)} />\n )}\n </View>\n );\n};\n\nexport default Avatar;\n","import { Ionicons, MaterialIcons } from \"@expo/vector-icons\";\nimport React, { forwardRef } from \"react\";\nimport { ActivityIndicator, Text, TouchableOpacity } from \"react-native\";\nimport { ScaledSheet, moderateScale, ms } from \"react-native-size-matters\";\nimport { getConfig } from \"../config/KeyManager\";\nimport { useColors, useTheme } from \"../hooks\";\nimport { ButtonProps, IconButtonProps, LinkButtonProps } from \"../types\";\nimport { getFontFamily } from \"../utility\";\n\nexport const LinkButton: React.FC<LinkButtonProps> = ({\n title,\n style = {},\n color = \"blue\",\n fontSize = 12,\n fontWeight = 400,\n disabled,\n onPress = () => {},\n}) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n text: {\n fontSize: moderateScale(fontSize),\n fontWeight: fontWeight.toString() as any,\n fontFamily: getFontFamily(fontWeight),\n color: disabled ? \"#777\" : colors[color].main,\n },\n });\n return (\n <TouchableOpacity onPress={onPress} disabled={disabled}>\n <Text style={{ ...styles.text, ...style }}>{title}</Text>\n </TouchableOpacity>\n );\n};\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n style = {},\n color = \"dark\",\n disabled,\n icon,\n elevation,\n bg = false,\n size = 24,\n containerStyles = {},\n onPress = () => {},\n iconType = \"material\",\n}) => {\n const colors = useColors();\n const theme = useTheme();\n const bgColor = theme === \"light\" ? \"#fff\" : \"#222\";\n const styles: any = ScaledSheet.create({\n container: {\n alignSelf: \"flex-start\",\n flexGrow: 0,\n backgroundColor: bg ? bgColor : elevation! > 0 ? bgColor : undefined,\n padding: \"5@ms\",\n shadowColor: \"#000\",\n shadowOpacity: 0.1,\n shadowOffset: {\n height: 1,\n width: 0,\n },\n height: bg ? ms(size + 20) : undefined,\n width: bg ? ms(size + 20) : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n shadowRadius: elevation,\n elevation: elevation,\n borderRadius: size * 5,\n },\n text: {\n color: disabled ? \"#777\" : colors[color].main,\n },\n });\n\n const IconComp = {\n material: MaterialIcons,\n ion: Ionicons,\n }[iconType];\n return (\n <TouchableOpacity\n onPress={onPress}\n activeOpacity={0.3}\n style={{ ...styles.container, ...containerStyles }}\n >\n <IconComp style={{ ...styles.text, ...style }} name={icon} size={size} />\n </TouchableOpacity>\n );\n};\n\nconst Button: React.FC<ButtonProps> = forwardRef(\n (\n {\n elevation = 0,\n onPress = () => {},\n disabled = false,\n title,\n loading,\n size = \"normal\",\n rounded = false,\n gutterBottom,\n style = {},\n fullWidth = false,\n translucent = false,\n color = \"primary\",\n variant = \"contained\",\n start,\n end,\n },\n ref\n ) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n con: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n justifyContent: \"center\",\n backgroundColor:\n variant === \"text\" || variant === \"outlined\"\n ? undefined\n : translucent\n ? translucent === \"dark\"\n ? colors.white[3] + \"22\"\n : colors.black[3] + \"22\"\n : loading\n ? colors[color].light\n : disabled\n ? colors.white[4]\n : colors[color].main,\n borderRadius: rounded ? 30 : 10,\n elevation: variant === \"text\" ? 0 : elevation,\n paddingVertical:\n size === \"small\" ? 8 : size === \"large\" ? \"15@mvs\" : \"13@mvs\",\n paddingHorizontal: size === \"small\" ? \"10@ms\" : \"18@ms\",\n borderColor: colors[color].main,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n shadowColor: \"#000\",\n shadowRadius: elevation,\n marginBottom: gutterBottom,\n shadowOffset: {\n height: elevation / 2,\n width: 0,\n },\n shadowOpacity: variant === \"text\" ? 0 : 0.3,\n width: fullWidth ? \"100%\" : undefined,\n ...style,\n },\n text: {\n color: disabled\n ? variant === \"text\" || variant === \"outlined\"\n ? colors.black[1]\n : colors[color].text\n : colors[color][\n variant === \"text\" || variant === \"outlined\" ? \"main\" : \"text\"\n ],\n fontWeight: variant === \"outlined\" ? \"700\" : \"500\",\n fontSize: size === \"small\" ? \"12@ms\" : \"13@ms\",\n fontFamily: getFontFamily(variant === \"outlined\" ? 700 : 500),\n },\n });\n\n return (\n <TouchableOpacity\n ref={ref as any}\n onPress={onPress}\n disabled={disabled}\n style={styles.con}\n >\n {start}\n {loading && (\n <ActivityIndicator\n size=\"small\"\n color={colors[color].text}\n style={{ marginRight: 10 }}\n />\n )}\n <Text style={styles.text}>{title}</Text>\n {end}\n </TouchableOpacity>\n );\n }\n);\n\nexport default Button;\n","import { MaterialCommunityIcons } from \"@expo/vector-icons\";\nimport React, { FC } from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { CheckboxProps } from \"../types\";\n\nexport const CheckBox: FC<CheckboxProps> = ({\n color = \"primary\",\n checked,\n size = 24,\n label,\n style = {},\n onChange,\n}) => {\n const iconName = checked ? \"checkbox-marked\" : \"checkbox-blank-outline\";\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n container: {\n alignItems: \"center\",\n flexDirection: \"row\",\n ...style,\n },\n });\n\n return (\n <View style={styles.container}>\n <TouchableOpacity onPress={onChange}>\n <MaterialCommunityIcons\n name={iconName}\n size={size}\n color={colors[color].main}\n />\n </TouchableOpacity>\n {label}\n </View>\n );\n};\n","import React from \"react\";\nimport {\n Keyboard,\n KeyboardAvoidingView,\n Platform,\n ScrollView,\n TouchableWithoutFeedback,\n} from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { FormWrapperProps } from \"../types\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nexport const FormWrapper: React.FC<FormWrapperProps> = ({\n children,\n behavior = Platform.OS === \"ios\" ? \"padding\" : \"height\",\n contentContainerStyle,\n mode = \"scroll\",\n keyboardVerticalOffset = 10,\n style = {},\n onScroll,\n}) => {\n const { bottom } = useSafeAreaInsets();\n\n const defaultOffset = Platform.OS === \"ios\" ? -bottom : -bottom * 2;\n const styles = ScaledSheet.create({\n root: {\n width: \"100%\",\n flex: 1,\n ...style,\n },\n });\n\n return mode === \"static\" ? (\n <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>\n <KeyboardAvoidingView\n style={styles.root}\n behavior={behavior}\n contentContainerStyle={styles.root}\n keyboardVerticalOffset={keyboardVerticalOffset || defaultOffset}\n >\n {children}\n </KeyboardAvoidingView>\n </TouchableWithoutFeedback>\n ) : (\n <KeyboardAvoidingView\n behavior={behavior}\n style={styles.root}\n keyboardVerticalOffset={keyboardVerticalOffset || defaultOffset}\n >\n <ScrollView\n onScroll={onScroll}\n showsVerticalScrollIndicator={false}\n scrollEventThrottle={40}\n keyboardDismissMode=\"interactive\"\n contentContainerStyle={contentContainerStyle}\n keyboardShouldPersistTaps=\"handled\"\n >\n {children}\n </ScrollView>\n </KeyboardAvoidingView>\n );\n};\n","import { Ionicons } from \"@expo/vector-icons\";\nimport * as Haptics from \"expo-haptics\";\nimport { FC, useEffect, useState } from \"react\";\nimport {\n ActivityIndicator,\n TextInput,\n TouchableOpacity,\n View,\n} from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { RatingInputProps, RatingStarsProps } from \"../types\";\nimport Button from \"./Button\";\nimport { Popup } from \"./Popup\";\nimport Typography from \"./Typography\";\n\nexport const RatingStars: FC<RatingStarsProps> = ({\n rating = 0,\n size = 16,\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n });\n return (\n <View style={styles.root}>\n {[...Array(Math.floor(rating))].map((_, index) => (\n <Ionicons key={index} name=\"star\" size={size} color=\"#FFD700\" />\n ))}\n {[...Array(5 - Math.floor(rating))].map((_, index) => (\n <Ionicons\n key={index}\n name=\"star\"\n size={size}\n color={colors.textSecondary.light}\n />\n ))}\n </View>\n );\n};\n\nexport const RatingInput: FC<RatingInputProps> = ({\n onSubmit: _onSubmit,\n rating = 0,\n size = 16,\n}) => {\n const [showReviewsModal, setShowReviewsModal] = useState(false);\n const [rate, setRate] = useState(0);\n const colors = useColors();\n const [loading, setLoading] = useState(false);\n const [review, setReview] = useState(\"\");\n const styles = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n inputCon: {\n marginBottom: \"20@vs\",\n backgroundColor: colors.white[3],\n padding: \"15@ms\",\n borderRadius: 20,\n },\n input: {\n fontSize: \"16@ms\",\n color: colors.dark.main,\n height: \"100@vs\",\n },\n });\n\n useEffect(() => {\n setRate(rating);\n }, [rating]);\n const onRate = (index: number) => {\n setRate(index + 1);\n Haptics.selectionAsync();\n\n setTimeout(() => {\n setShowReviewsModal(true);\n }, 500);\n };\n\n const onSubmit = async () => {\n setLoading(true);\n setShowReviewsModal(false);\n _onSubmit && (await _onSubmit({ rating: rate, review }));\n setLoading(false);\n };\n return (\n <>\n <View style={styles.root}>\n {loading ? (\n <ActivityIndicator />\n ) : (\n [...Array(5)].map((_, index) => (\n <TouchableOpacity\n key={index}\n activeOpacity={0.9}\n onPress={() => {\n onRate(index);\n }}\n >\n <Ionicons\n style={{ marginLeft: 10 }}\n name={index < rate ? \"star\" : \"star-outline\"}\n size={size}\n color={colors.primary.light}\n />\n </TouchableOpacity>\n ))\n )}\n </View>\n <Popup\n sheet\n open={showReviewsModal}\n onClose={() => {\n setShowReviewsModal(false);\n }}\n >\n <View\n style={{\n alignItems: \"center\",\n marginBottom: 5,\n }}\n >\n <RatingStars rating={rate} size={24} />\n </View>\n <Typography\n align=\"center\"\n fontWeight={700}\n variant=\"h5\"\n gutterBottom={20}\n >\n Add to your review\n </Typography>\n\n <View style={styles.inputCon}>\n <TextInput\n style={styles.input}\n multiline\n value={review}\n onChangeText={(text) => setReview(text)}\n placeholder=\"Type review here..\"\n />\n </View>\n <Button\n gutterBottom={40}\n title=\"Submit Review\"\n loading={loading}\n disabled={loading}\n onPress={() => {\n onSubmit();\n }}\n />\n </Popup>\n </>\n );\n};\n","import {\n Keyboard,\n KeyboardAvoidingView,\n Modal,\n Platform,\n Pressable,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n} from \"react-native\";\n\nimport React, { useEffect, useState } from \"react\";\nimport Animated, {\n CurvedTransition,\n LinearTransition,\n runOnJS,\n SequencedTransition,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { useColors, useTheme } from \"../hooks\";\nimport { UIThemeProvider } from \"../theme\";\nimport { PopupProps } from \"../types\";\nimport { IconButton } from \"./Button\";\nimport Typography from \"./Typography\";\n\nexport const Popup: React.FC<PopupProps> = ({\n title,\n sheet = true,\n bare = false,\n keyboardVerticalOffset,\n children,\n open,\n onClose = () => {},\n style,\n onModalShow,\n onModalHide,\n}) => {\n const theme = useTheme();\n const colors = useColors();\n const [modalVisible, setModalVisible] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const [keyboardVisible, setKeyboardVisible] = useState(false);\n const { bottom } = useSafeAreaInsets();\n\n // Animation values\n const backdropOpacity = useSharedValue(0);\n const contentTranslateY = useSharedValue(1000);\n\n // Memoized keyboard vertical offset based on platform and keyboard state\n const keyboardVerticalOffsetValue =\n Platform.OS === \"ios\" ? -bottom : -bottom * 2;\n\n // Keyboard event listeners\n useEffect(() => {\n const keyboardDidShowListener = Keyboard.addListener(\n \"keyboardDidShow\",\n () => {\n setKeyboardVisible(true);\n }\n );\n const keyboardDidHideListener = Keyboard.addListener(\n \"keyboardDidHide\",\n () => {\n setKeyboardVisible(false);\n }\n );\n\n return () => {\n keyboardDidHideListener?.remove();\n keyboardDidShowListener?.remove();\n };\n }, []);\n\n const _onModalShow = () => {\n setModalVisible(true);\n onModalShow?.();\n };\n const _onModalHide = () => {\n onModalHide?.();\n setModalOpen(false);\n };\n\n // Trigger animations when open prop changes\n useEffect(() => {\n if (open) {\n setModalOpen(true);\n // Opening animation\n backdropOpacity.value = withTiming(1, { duration: 300 });\n contentTranslateY.value = withTiming(0, { duration: 300 }, () => {\n runOnJS(_onModalShow)();\n });\n } else {\n // Closing animation\n setModalVisible(false);\n\n backdropOpacity.value = withTiming(0, { duration: 200 });\n contentTranslateY.value = withTiming(1000, { duration: 200 }, () => {\n runOnJS(_onModalHide)();\n });\n }\n }, [open]);\n\n // Animated styles\n const backdropAnimatedStyle = useAnimatedStyle(() => ({\n opacity: backdropOpacity.value,\n }));\n\n const contentAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: contentTranslateY.value }],\n }));\n\n const styles: any = ScaledSheet.create({\n root: {\n height: \"100%\",\n width: \"100%\",\n justifyContent: sheet ? \"flex-end\" : \"center\",\n },\n keyboardView: {\n flex: 1,\n zIndex: 1000,\n },\n avoidingView: {\n zIndex: 2,\n minHeight: typeof sheet === \"number\" ? sheet : undefined,\n maxHeight: \"90%\",\n alignSelf: \"center\",\n maxWidth: sheet ? undefined : \"90%\",\n width: sheet ? \"100%\" : undefined,\n marginBottom: Platform.OS === \"android\" && keyboardVisible ? bottom : 0,\n },\n container: {\n paddingBottom: sheet && !bare ? bottom + ms(10) : undefined,\n backgroundColor: theme === \"dark\" ? \"#111\" : colors.white[1],\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n borderBottomRightRadius: sheet ? 0 : 20,\n borderBottomLeftRadius: sheet ? 0 : 20,\n width: \"100%\",\n overflow: \"hidden\",\n ...style,\n },\n content: {\n paddingHorizontal: bare ? undefined : \"15@ms\",\n },\n title: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"50@ms\",\n },\n titleIcon: {\n position: \"absolute\",\n left: \"15@ms\",\n },\n backdrop: {\n position: \"absolute\",\n height: \"100%\",\n zIndex: 1,\n width: \"100%\",\n backgroundColor: \"#000b\",\n },\n });\n\n const closeAction = () => {\n onClose();\n };\n\n return (\n <Modal\n transparent\n animationType=\"none\"\n statusBarTranslucent\n visible={modalOpen}\n onRequestClose={closeAction}\n >\n <UIThemeProvider>\n <Animated.View style={[styles.backdrop, backdropAnimatedStyle]} />\n <KeyboardAvoidingView\n style={styles.keyboardView}\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n keyboardVerticalOffset={\n keyboardVerticalOffset || keyboardVerticalOffsetValue\n }\n >\n <TouchableWithoutFeedback onPress={Keyboard.dismiss}>\n <View style={styles.root}>\n {modalOpen && (\n <Pressable\n style={[StyleSheet.absoluteFill, { zIndex: 1 }]}\n onPress={closeAction}\n />\n )}\n\n <Animated.View\n style={[styles.avoidingView, contentAnimatedStyle]}\n layout={\n modalVisible\n ? LinearTransition.springify()\n .stiffness(200)\n .mass(0.5)\n .damping(100)\n : undefined\n }\n >\n <View style={styles.container}>\n {!bare && (\n <View style={styles.title}>\n <View style={styles.titleIcon}>\n <IconButton\n size={20}\n icon=\"close\"\n onPress={closeAction}\n />\n </View>\n <Typography align=\"center\" fontWeight={500}>\n {title}\n </Typography>\n </View>\n )}\n\n <View style={styles.content}>{children}</View>\n </View>\n </Animated.View>\n </View>\n </TouchableWithoutFeedback>\n </KeyboardAvoidingView>\n </UIThemeProvider>\n </Modal>\n );\n};\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { ms, ScaledSheet } from \"react-native-size-matters\";\nimport { GridItemProps, GridProps } from \"../types\";\n\nexport const GridItem: React.FC<GridItemProps> = ({\n children,\n col = 2,\n alignItems,\n spacing = 1,\n style = {},\n}) => {\n const styles = ScaledSheet.create({\n gridItem: {\n width: `${100 / col}%`,\n padding: ms(spacing * 10),\n alignItems: alignItems,\n },\n });\n return <View children={children} style={[styles.gridItem, style]} />;\n};\nexport const Grid: React.FC<GridProps> = ({\n children,\n spacing = 1,\n style = {},\n}) => {\n const styles = ScaledSheet.create({\n grid: {\n flexWrap: \"wrap\",\n margin: `${-spacing * 10}@ms`,\n flexDirection: \"row\",\n },\n });\n return <View children={children} style={[styles.grid, style]} />;\n};\n","import { Ionicons } from \"@expo/vector-icons\";\nimport React, { useEffect, useState } from \"react\";\nimport { Alert, TouchableOpacity, View } from \"react-native\";\nimport { ListItem } from \"./List\";\nimport TextField from \"./TextField\";\n\nimport * as Location from \"expo-location\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { LocatorProps } from \"../types\";\n\nimport { getConfig } from \"../config/KeyManager\";\nimport Typography from \"./Typography\";\n\nexport type predictionType = {\n id: string;\n description: string;\n};\nexport const getPredictionsFromCoords = async (coords: {\n latitude: number;\n longitude: number;\n}) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n\n if (!GOOGLE_MAP_API_KEY)\n console.error(\n \"Google map api key needs to be set to use this component \\nMake sure to run initialize() with a valid google map api key\"\n );\n if (!coords) return [];\n const res = await (\n await fetch(\n `https://maps.googleapis.com/maps/api/geocode/json?radius=200&latlng=${coords.latitude},${coords.longitude}&key=${GOOGLE_MAP_API_KEY}`\n )\n ).json();\n\n const p = [];\n\n for (let key in res.results) {\n const { formatted_address: description, place_id } = res.results[key];\n p.push({\n description,\n id: place_id,\n latLng: { lst: coords.latitude, lng: coords.longitude },\n });\n }\n\n return p;\n};\n\nexport const getPredictionsFromQuery = async (\n query: string,\n country: string\n) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n const endpoint = `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=${query}&components=country:${country}&radius=20000&key=${GOOGLE_MAP_API_KEY}`;\n const res = await (await fetch(endpoint)).json();\n\n const p = [];\n for (let key in res.predictions) {\n const { description, place_id } = res.predictions[key];\n p.push({\n description,\n id: place_id,\n });\n }\n return p;\n};\n\nexport const getLocationFromPlaceId = async (\n place_id: string\n): Promise<{\n formatted_address: string;\n geometry: {\n location: {\n lat: number;\n lng: number;\n };\n };\n}> => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n const res = await (\n await fetch(\n `https://maps.googleapis.com/maps/api/place/details/json?place_id=${place_id}&fields=formatted_address%2Cgeometry&key=${GOOGLE_MAP_API_KEY}`\n )\n ).json();\n return res.result;\n};\n\nexport const Locator: React.FC<LocatorProps> = ({\n variant = \"contained\",\n onLocationSelected,\n label,\n error,\n location = {\n description: null,\n },\n renderInput,\n gutterBottom = 0,\n helperText,\n float = true,\n country = \"ng\",\n}) => {\n const { GOOGLE_MAP_API_KEY } = getConfig();\n\n const [changed, setChanged] = useState(false);\n const [value, setValue] = useState(\"\");\n const [prediction, setPrediction] = useState<predictionType[]>([]);\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n list: {\n backgroundColor: colors.white[2],\n elevation: 10,\n shadowColor: \"#000\",\n shadowOpacity: 0.1,\n shadowRadius: float ? 15 : 0,\n shadowOffset: {\n height: 10,\n width: 0,\n },\n borderRadius: 10,\n marginBottom: 10,\n width: \"100%\",\n zIndex: 20,\n marginTop: float ? 2 : \"15@ms\",\n top: float ? \"100%\" : undefined,\n position: float ? \"absolute\" : \"relative\",\n },\n });\n const search = async (query: string) => {\n const predictions = await getPredictionsFromQuery(query, country);\n setPrediction(predictions);\n };\n\n const locateMe = () => {\n // Alert.alert(\n // \"Use my location\",\n // \"Auto fill this input with my current location\",\n // [{ text: \"Cancel\" }, { text: \"Use Location\", onPress: () => getLoc() }]\n // );\n const getLoc = async () => {\n const { status } = await Location.requestForegroundPermissionsAsync();\n if (status !== \"granted\")\n return Alert.alert(\n \"Error\",\n \"Permission to access location was denied! \"\n );\n try {\n let { coords } = await Location.getCurrentPositionAsync({\n accuracy: Location.LocationAccuracy.High,\n });\n const p = await getPredictionsFromCoords(coords);\n setPrediction(p);\n } catch (err) {\n console.log(err);\n Alert.alert(\n \"Can't access your location\",\n \"Make sure your location settings are turned on and you are connected to the internet. \"\n );\n }\n };\n getLoc();\n };\n\n const clear = () => {\n setPrediction([]);\n setValue(\"\");\n onLocationSelected(null);\n setChanged(false);\n };\n const locationPressed = async (loc: predictionType) => {\n setValue(loc.description);\n const res = await getLocationFromPlaceId(loc.id);\n onLocationSelected(\n {\n latitude: res.geometry.location.lat,\n longitude: res.geometry.location.lng,\n description: loc.description,\n },\n res?.formatted_address\n );\n setChanged(false);\n setPrediction([]);\n };\n\n useEffect(() => {\n if (!GOOGLE_MAP_API_KEY)\n console.error(\n \"Google map api key needs to be set to use this component \\nMake sure to run initialize() with a valid google map api key\"\n );\n }, [GOOGLE_MAP_API_KEY]);\n\n return (\n <View style={{ zIndex: 10 }}>\n {renderInput ? (\n renderInput({\n onFocus: () => search(value),\n onBlur: () => setPrediction([]),\n value: changed ? value : location?.description || value,\n onChangeText: (val) => {\n setChanged(true);\n setValue(val);\n search(val);\n },\n clear,\n locateMe,\n })\n ) : (\n <TextField\n label={label}\n onChangeText={(val) => {\n setChanged(true);\n setValue(val);\n search(val);\n }}\n onBlur={() => {\n setPrediction([]);\n }}\n onFocus={() => {\n search(value);\n }}\n value={changed ? value : location?.description || value}\n gutterBottom={gutterBottom}\n error={error}\n helperText={helperText}\n variant={variant}\n end={\n <View style={{ flexDirection: \"row\" }}>\n <TouchableOpacity onPress={locateMe} style={{ marginRight: 10 }}>\n <Ionicons\n color={colors.primary.main}\n size={18}\n name=\"location\"\n />\n </TouchableOpacity>\n <TouchableOpacity onPress={clear}>\n <Ionicons color={colors.dark.main} size={18} name=\"close\" />\n </TouchableOpacity>\n </View>\n }\n />\n )}\n\n {prediction.length > 0 && (\n <View style={styles.list}>\n {prediction.map(\n (cur, i) =>\n i < 5 && (\n <ListItem\n divider={i < prediction.length - 1}\n key={cur.id}\n link\n onPress={() => locationPressed(cur)}\n >\n <Ionicons\n name=\"location-outline\"\n style={{ marginRight: 10 }}\n size={16}\n color={colors.textSecondary.main}\n />\n <Typography style={{ flex: 1 }}>{cur.description}</Typography>\n </ListItem>\n )\n )}\n </View>\n )}\n </View>\n );\n};\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React from \"react\";\nimport { TouchableOpacity, View } from \"react-native\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { ListItemProps, ListItemTextProps, ListProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nexport const ListItemText: React.FC<ListItemTextProps> = ({\n primary,\n divider,\n primaryProps = {},\n secondaryProps = {},\n secondary,\n style = {},\n}) => {\n const colors = useColors();\n const styles = ScaledSheet.create({\n container: {\n borderBottomColor: colors.white[2],\n borderBottomWidth: divider ? 1 : 0,\n paddingVertical: 0,\n flexGrow: 1,\n ...style,\n },\n });\n return (\n <View style={styles.container}>\n {primary && (\n <Typography\n style={{ alignItems: \"center\" }}\n variant=\"body1\"\n gutterBottom={2}\n {...primaryProps}\n >\n {primary}\n </Typography>\n )}\n {secondary && (\n <Typography variant=\"body2\" color=\"textSecondary\" {...secondaryProps}>\n {secondary}\n </Typography>\n )}\n </View>\n );\n};\nexport const ListItem: React.FC<ListItemProps> = ({\n link = false,\n divider = false,\n onPress,\n index = 1,\n style = {},\n children,\n}) => {\n const colors = useColors();\n\n const styles: any = ScaledSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: \"10@s\",\n borderBottomColor: colors.white[2],\n borderBottomWidth: divider ? 1 : 0,\n paddingVertical: \"10@vs\",\n },\n });\n return (\n <View\n\n // layout={Layout.springify()}\n // exiting={SlideOutDown.delay(index * 100)}\n // entering={SlideInUp.delay(index * 100)}\n >\n <TouchableOpacity disabled={Boolean(!onPress)} onPress={onPress}>\n <View style={{ ...styles.root, ...style }}>\n {children}\n {link && (\n <MaterialIcons\n color={colors.white[5]}\n style={{ marginLeft: \"auto\" }}\n name=\"arrow-forward-ios\"\n size={15}\n />\n )}\n </View>\n </TouchableOpacity>\n </View>\n );\n};\nexport const List: React.FC<ListProps> = ({ style = {}, children }) => {\n const styles = ScaledSheet.create({\n root: {\n flex: 1,\n paddingHorizontal: \"20@ms\",\n ...style,\n },\n });\n return <View style={styles.root}>{children}</View>;\n};\n","import { Ionicons, MaterialIcons } from \"@expo/vector-icons\";\nimport React, { useRef, useState } from \"react\";\nimport { Animated, TextInput, TouchableOpacity, View } from \"react-native\";\nimport {\n ScaledSheet,\n moderateScale,\n ms,\n verticalScale,\n} from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { TextFieldProps } from \"../types\";\nimport { getFontFamily } from \"../utility\";\nimport SelectMenu from \"./SelectMenu\";\nimport Typography from \"./Typography\";\n\nconst TextField: React.FC<TextFieldProps> = ({\n label,\n keyboardType,\n variant,\n color = \"primary\",\n value,\n type,\n helperText,\n onChangeText,\n onSubmitEditing = () => {},\n onFocus = () => {},\n onBlur = () => {},\n error,\n start,\n size = \"normal\",\n rounded,\n disabled = false,\n style = {},\n inputStyles = {},\n gutterBottom = 0,\n end,\n options,\n selectMenuProps,\n ...props\n}) => {\n const colors = useColors();\n const [focused, setFocused] = useState(false);\n const height =\n moderateScale(variant === \"text\" ? 50 : 45) *\n (size === \"large\" ? 1.2 : size === \"small\" ? 0.8 : 1);\n\n const labelAnim = useRef(\n new Animated.Value(height / moderateScale(variant === \"text\" ? 2.5 : 3.2))\n ).current;\n\n React.useEffect(() => {\n if (focused || value) {\n Animated.timing(labelAnim, {\n toValue: verticalScale(variant === \"text\" ? 2 : 4),\n duration: 300,\n useNativeDriver: false,\n }).start();\n } else {\n Animated.timing(labelAnim, {\n toValue: height / moderateScale(variant === \"text\" ? 2.5 : 3.2),\n duration: 300,\n useNativeDriver: false,\n }).start();\n }\n }, [focused, value]);\n const styles: any = ScaledSheet.create({\n root: {\n marginBottom: ms(gutterBottom),\n width: \"100%\",\n ...style,\n },\n container: {\n height: height,\n overflow: \"hidden\",\n\n backgroundColor:\n variant === \"outlined\" || variant === \"text\"\n ? \"#fff0\"\n : focused\n ? colors.white[3]\n : colors.white[4],\n flexDirection: \"row\",\n borderColor: error\n ? colors.error.main\n : focused\n ? colors[color].main\n : colors.textSecondary.main,\n borderWidth: error ? 1 : variant === \"outlined\" ? (focused ? 2 : 0.5) : 0,\n borderBottomWidth: variant === \"text\" ? 0.5 : undefined,\n width: \"100%\",\n borderRadius: variant === \"text\" ? 0 : rounded ? 30 : 7,\n alignItems: \"center\",\n ...inputStyles,\n },\n input: {\n fontSize: \"14@s\",\n flex: 1,\n alignSelf: \"stretch\",\n paddingLeft: variant === \"text\" ? 0 : moderateScale(15),\n paddingRight: moderateScale(10),\n paddingTop: \"11@vs\",\n fontFamily: getFontFamily(400),\n color: colors.black[1],\n zIndex: 10,\n // backgroundColor: \"#284\",\n },\n inputText: {\n fontSize: \"14@ms\",\n flex: 1,\n paddingLeft: variant === \"text\" ? 0 : moderateScale(15),\n paddingTop: \"13@ms\",\n },\n label: {\n fontFamily: getFontFamily(400),\n position: \"absolute\",\n left: variant === \"text\" ? 0 : moderateScale(15),\n fontSize: focused || value ? \"10@s\" : \"13@s\",\n color: focused ? colors[color].main : colors.textSecondary.main,\n },\n helperText: {\n paddingHorizontal: \"15@s\",\n flex: 1,\n color: focused ? colors[color].dark : colors.textSecondary.main,\n paddingTop: \"4@ms\",\n },\n error: {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 5,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n errorText: {\n fontSize: 12,\n marginLeft: 10,\n },\n });\n const formProps: any =\n type === \"email\"\n ? {\n textContentType: \"emailAddress\",\n keyboardType: \"email-address\",\n autoCapitalize: \"none\",\n autoCompleteType: \"email\",\n }\n : type === \"number\"\n ? {\n keyboardType: \"numeric\",\n }\n : type === \"tel\"\n ? {\n textContentType: \"telephoneNumber\",\n keyboardType: \"phone-pad\",\n }\n : type === \"search\"\n ? {\n keyboardType: \"web-search\",\n returnKeyType: \"search\",\n autoCapitalize: \"none\",\n }\n : type === \"password\"\n ? {\n secureTextEntry: true,\n autoCompleteType: \"password\",\n autoCapitalize: \"none\",\n textContentType: \"password\",\n }\n : {};\n return (\n <>\n <View style={styles.root}>\n <TouchableOpacity\n onPress={() => setFocused(true)}\n style={styles.container}\n >\n <Animated.Text style={{ ...styles.label, top: labelAnim }}>\n {label}\n </Animated.Text>\n {start}\n {options ? (\n <View\n style={{ flex: 1, alignItems: \"center\", flexDirection: \"row\" }}\n >\n {options.find((cur) => cur.value === value)?.start && (\n <View\n style={{\n paddingTop: variant !== \"outlined\" ? ms(13) : 0,\n paddingRight: 10,\n }}\n >\n {options.find((cur) => cur.value === value)?.start}\n </View>\n )}\n\n <Typography style={styles.inputText}>\n {options.find((cur) => cur.value === value)?.label}\n </Typography>\n </View>\n ) : (\n <TextInput\n onFocus={() => {\n onFocus();\n setFocused(true);\n }}\n onBlur={() => {\n onBlur();\n setFocused(false);\n }}\n value={value}\n onChangeText={onChangeText}\n keyboardType={keyboardType}\n editable={!disabled}\n selectTextOnFocus={!disabled}\n onSubmitEditing={onSubmitEditing}\n placeholderTextColor={colors.textSecondary.main}\n {...formProps}\n {...props}\n style={styles.input}\n />\n )}\n {end && (\n <View\n style={{\n marginRight: 20,\n paddingTop: variant === \"text\" ? ms(13) : 0,\n }}\n >\n {end}\n </View>\n )}\n {options && (\n <View\n style={{\n marginRight: variant === \"text\" ? 0 : 20,\n paddingTop: variant === \"text\" ? ms(13) : 0,\n }}\n >\n <Ionicons\n name=\"chevron-down\"\n color={colors.textSecondary.main}\n size={24}\n />\n </View>\n )}\n </TouchableOpacity>\n {helperText && (\n <Typography\n color=\"textSecondary\"\n style={styles.helperText}\n variant=\"caption\"\n >\n {helperText}\n </Typography>\n )}\n {error && (\n <View style={styles.error}>\n <MaterialIcons name=\"error\" color={colors.error.main} size={16} />\n <Typography style={styles.errorText} color=\"error\">\n {error}\n </Typography>\n </View>\n )}\n </View>\n {options && (\n <SelectMenu\n options={options}\n value={value}\n open={focused}\n onClose={() => setFocused(false)}\n label={label}\n helperText={helperText}\n onChange={onChangeText!}\n {...selectMenuProps}\n />\n )}\n </>\n );\n};\n\nexport const TextField2 = React.forwardRef<TextInput, TextFieldProps>(\n (\n {\n label,\n labelProps,\n keyboardType,\n color = \"primary\",\n value,\n type,\n helperText,\n onChangeText,\n onSubmitEditing = () => {},\n onFocus = () => {},\n onBlur = () => {},\n error,\n start,\n rounded,\n disabled = false,\n style = {},\n inputStyles = {},\n gutterBottom = 8,\n placeholder,\n end,\n options,\n multiline,\n selectMenuProps,\n ...props\n },\n ref\n ) => {\n const colors = useColors();\n const [focused, _setFocused] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n\n const height = moderateScale(\n multiline ? 50 + (props.numberOfLines || 1) * 18 : 50\n );\n\n const setFocused = (value: boolean) => {\n _setFocused(value);\n };\n\n const styles: any = ScaledSheet.create({\n root: {\n marginBottom: ms(gutterBottom),\n ...style,\n },\n container: {\n height: height,\n overflow: \"hidden\",\n flexDirection: \"row\",\n borderColor: error\n ? colors.error.main\n : focused\n ? colors[color].main\n : colors.white[4],\n borderWidth: error ? 1 : focused ? 2 : 1,\n width: \"100%\",\n borderRadius: rounded ? 30 : 10,\n alignItems: multiline ? \"flex-start\" : \"center\",\n paddingVertical: multiline ? 10 : 0,\n ...inputStyles,\n },\n input: {\n fontSize: \"14@s\",\n flex: 1,\n alignSelf: \"stretch\",\n paddingLeft: moderateScale(10),\n paddingRight: moderateScale(10),\n color: colors.dark.main,\n zIndex: 10,\n // backgroundColor: \"#284\",\n },\n inputText: {\n fontSize: \"14@ms\",\n color: colors.dark.main,\n paddingLeft: moderateScale(10),\n },\n placeholder: {\n fontSize: \"14@ms\",\n color: colors.textSecondary.light,\n paddingLeft: moderateScale(10),\n },\n label: {},\n helperText: {\n paddingHorizontal: \"15@s\",\n color: focused ? colors[color].dark : \"#fffa\",\n paddingTop: \"4@ms\",\n },\n error: {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 5,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n errorText: {\n fontSize: 12,\n marginLeft: 10,\n },\n });\n const formProps: any =\n type === \"email\"\n ? {\n textContentType: \"emailAddress\",\n keyboardType: \"email-address\",\n autoCapitalize: \"none\",\n autoCompleteType: \"email\",\n }\n : type === \"number\"\n ? {\n keyboardType: \"numeric\",\n }\n : type === \"tel\"\n ? {\n textContentType: \"telephoneNumber\",\n keyboardType: \"phone-pad\",\n }\n : type === \"search\"\n ? {\n keyboardType: \"web-search\",\n returnKeyType: \"search\",\n autoCapitalize: \"none\",\n }\n : type === \"password\"\n ? {\n secureTextEntry: !showPassword,\n autoCompleteType: \"password\",\n autoCapitalize: \"none\",\n textContentType: \"password\",\n }\n : {};\n return (\n <>\n <View style={styles.root}>\n {label && (\n <Typography\n variant=\"body2\"\n color=\"textSecondary\"\n gutterBottom={7}\n {...labelProps}\n >\n {label}\n </Typography>\n )}\n <TouchableOpacity\n onPress={() => setFocused(true)}\n style={styles.container}\n >\n <View style={{ marginTop: multiline ? 5 : 0 }}>{start}</View>\n\n {options ? (\n <>\n {value ? (\n <Typography style={styles.inputText}>\n {options.find((cur) => cur.value === value)?.label}\n </Typography>\n ) : (\n <Typography style={styles.placeholder}>\n {placeholder}\n </Typography>\n )}\n <Ionicons\n name=\"chevron-down\"\n size={24}\n style={{ marginLeft: \"auto\", marginRight: 15 }}\n color={colors.dark.light}\n />\n </>\n ) : (\n <TextInput\n ref={ref}\n onFocus={() => {\n onFocus();\n setFocused(true);\n }}\n onBlur={() => {\n onBlur();\n setFocused(false);\n }}\n value={value}\n onChangeText={onChangeText}\n key={showPassword ? \"show\" : \"hide\"}\n keyboardType={keyboardType}\n placeholderTextColor={colors.textSecondary.light}\n editable={!disabled}\n placeholder={placeholder}\n selectTextOnFocus={!disabled}\n onSubmitEditing={onSubmitEditing}\n multiline={multiline}\n extAlignVertical={multiline ? \"top\" : \"center\"}\n {...formProps}\n {...props}\n style={styles.input}\n />\n )}\n\n {end ? (\n <View style={{ marginRight: 20 }}>{end}</View>\n ) : (\n type === \"password\" && (\n <TouchableOpacity\n style={{ marginRight: 20 }}\n onPress={() => setShowPassword(!showPassword)}\n >\n <Ionicons\n name={showPassword ? \"eye-outline\" : \"eye-off-outline\"}\n size={24}\n color={colors.textSecondary.main}\n />\n </TouchableOpacity>\n )\n )}\n </TouchableOpacity>\n {helperText && (\n <Typography\n color=\"textSecondary\"\n style={styles.helperText}\n variant=\"caption\"\n >\n {helperText}\n </Typography>\n )}\n {error && (\n <View style={styles.error}>\n <MaterialIcons name=\"error\" color={colors.error.main} size={16} />\n <Typography style={styles.errorText} color=\"error\">\n {error}\n </Typography>\n </View>\n )}\n </View>\n {options && (\n <SelectMenu\n options={options}\n value={value}\n open={focused}\n onClose={() => setFocused(false)}\n label={label}\n helperText={helperText}\n onChange={onChangeText!}\n {...selectMenuProps}\n />\n )}\n </>\n );\n }\n);\n\nexport default TextField;\n","import { MaterialIcons } from \"@expo/vector-icons\";\nimport React, { useCallback, useState } from \"react\";\nimport { FlatList, TouchableOpacity, View } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { SelectMenuProps } from \"../types\";\nimport { Popup } from \"./Popup\";\nimport TextField from \"./TextField\";\nimport Typography from \"./Typography\";\n\nconst SelectMenu: React.FC<SelectMenuProps> = ({\n open = false,\n onClose,\n value,\n options = [],\n onChange,\n disableAutoClose = false,\n label,\n secondary,\n helperText,\n searchEnabled = false,\n searchPlaceholder = \"Search\",\n}) => {\n const colors = useColors();\n const { bottom } = useSafeAreaInsets();\n\n const [search, setSearch] = useState(\"\");\n const styles: any = ScaledSheet.create({\n header: {\n marginBottom: \"20@vs\",\n },\n\n option: {\n paddingHorizontal: \"10@s\",\n paddingVertical: \"10@vs\",\n borderRadius: 8,\n flexDirection: \"row\",\n alignItems: \"center\",\n marginBottom: \"10@vs\",\n },\n });\n\n const renderItem = useCallback(\n ({ item }: any) => (\n <TouchableOpacity\n style={{\n ...styles.option,\n backgroundColor:\n item.value === value ? colors.blue.light + \"22\" : colors.white[2],\n }}\n onPress={() => {\n onChange(item.value);\n if (!disableAutoClose) onClose();\n }}\n key={item.label}\n >\n {item.start && <View style={{ marginRight: 10 }}>{item.start}</View>}\n <View style={{ flex: 1 }}>\n <Typography\n variant=\"body2\"\n style={{\n color: item.value === value ? colors.blue.light : colors.black[2],\n }}\n >\n {item.label}\n </Typography>\n {item.secondary ? (\n <Typography\n variant=\"body2\"\n style={{\n marginTop: 2,\n color:\n item.value === value ? colors.blue.light : colors.white[5],\n }}\n >\n {item.secondary}\n </Typography>\n ) : null}\n </View>\n {value === item.value && (\n <MaterialIcons\n name=\"check\"\n color={colors.blue.light}\n size={24}\n style={{ marginLeft: \"auto\" }}\n />\n )}\n </TouchableOpacity>\n ),\n [value, colors]\n );\n return (\n <Popup open={open} onClose={onClose} title={label}>\n <View style={styles.content}>\n <View style={styles.header}>\n {helperText && (\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom={5}>\n {helperText}\n </Typography>\n )}\n {searchEnabled && (\n <TextField\n label={searchPlaceholder}\n value={search}\n type=\"search\"\n onChangeText={setSearch}\n variant=\"outlined\"\n />\n )}\n </View>\n <FlatList\n removeClippedSubviews\n keyExtractor={(item) => item.value}\n bounces={false}\n renderItem={renderItem}\n data={options\n .filter((item) =>\n search.length > 1\n ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1\n : item\n )\n .sort((a, b) => a.label.localeCompare(b.label))}\n />\n </View>\n </Popup>\n );\n};\n\nexport default SelectMenu;\n","import React from \"react\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\n\nimport { StyleSheet, View } from \"react-native\";\nimport { SafeAreaViewProps } from \"../types\";\n\nexport const SafeAreaView: React.FC<SafeAreaViewProps> = ({\n children,\n style,\n}) => {\n const { top, bottom } = useSafeAreaInsets();\n const styles = StyleSheet.create({\n root: {\n paddingTop: top,\n paddingBottom: bottom,\n flex: 1,\n },\n });\n return <View style={[styles.root, style]}>{children}</View>;\n};\n","import { FC } from \"react\";\nimport { View } from \"react-native\";\nimport { ScaledSheet, ms } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { DividerProps } from \"../types\";\n\nexport const Divider: FC<DividerProps> = ({\n height = 1,\n color = \"textSecondary\",\n gutterBottom = 0,\n style,\n}) => {\n const colors = useColors();\n\n const styles = ScaledSheet.create({\n root: {\n height,\n backgroundColor: colors[color].main,\n marginBottom: ms(gutterBottom),\n ...style,\n },\n });\n return <View style={styles.root} />;\n};\n","import React from \"react\";\nimport { ActivityIndicator, Dimensions, View } from \"react-native\";\n\nimport { ScaledSheet } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { SpinnerProps } from \"../types\";\nimport Typography from \"./Typography\";\n\nconst Spinner: React.FC<SpinnerProps> = ({\n label,\n size = \"large\",\n color = \"primary\",\n fullscreen = false,\n style = {},\n}) => {\n const colors = useColors();\n const styles: any = ScaledSheet.create({\n root: {\n width: fullscreen ? Dimensions.get(\"screen\").width : \"100%\",\n height: fullscreen ? Dimensions.get(\"screen\").height : \"100%\",\n left: 0,\n bottom: 0,\n zIndex: 100,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: fullscreen ? \"absolute\" : \"relative\",\n backgroundColor: fullscreen ? colors.white[1] + \"dd\" : undefined,\n ...style,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingVertical: \"15@vs\",\n paddingHorizontal: \"20@s\",\n borderRadius: 10,\n // backgroundColor: fullscreen ? colors.light.main : null,\n },\n label: {\n marginLeft: \"10@s\",\n color: color === \"light\" ? colors.white[2] : colors.black[4],\n },\n });\n\n return (\n <View style={styles.root}>\n <View style={styles.content}>\n <ActivityIndicator color={colors[color].dark} size={size} />\n {label && <Typography style={styles.label}>{label}</Typography>}\n </View>\n </View>\n );\n};\n\nexport default Spinner;\n","import React, { FC, useMemo } from \"react\";\nimport {\n TextInput,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from \"react-native\";\nimport { ScaledSheet, ms } from \"react-native-size-matters\";\nimport { useColors } from \"../hooks\";\nimport { OTPInputProps } from \"../types\";\n\nexport const OTPInput: FC<OTPInputProps> = ({\n length = 6,\n onChange = () => {},\n value = \"\",\n variant = \"outlined\",\n spacing = 1,\n size = 45,\n}) => {\n const inputRefs = useMemo(\n () =>\n Array(length)\n .fill(0)\n .map((_) => React.createRef<TextInput>()),\n [length]\n );\n\n const onChangeHandler = (val: string, index: number) => {\n if (value.length >= length && val.length > 0) return;\n // Handle pasting of full OTP\n if (val.length > 1) {\n const digits = val.replace(/\\D/g, \"\").slice(0, length);\n onChange(digits);\n if (digits.length === length) {\n inputRefs[length - 1].current?.focus();\n }\n return;\n }\n // Handle backspace\n if (val.length === 0) {\n const newValue = value.slice(0, index) + value.slice(index + 1);\n onChange(newValue);\n if (index > 0) {\n inputRefs[index - 1].current?.focus();\n }\n return;\n }\n // Only allow numbers and take first digit\n const digit = val.replace(/\\D/g, \"\").slice(0, 1);\n if (!digit) return;\n // Create new value string\n const newValue = value.slice(0, index) + digit + value.slice(index + 1);\n onChange(newValue);\n // Auto advance to next input if not at end\n if (index < length - 1) {\n inputRefs[index + 1].current?.focus();\n }\n };\n\n const colors = useColors();\n const styles = ScaledSheet.create({\n root: {},\n container: { flexDirection: \"row\" },\n input: {\n height: ms(size),\n width: ms(size),\n borderColor: colors.white[5],\n backgroundColor: variant === \"contained\" ? colors.white[3] : undefined,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderBottomWidth: variant === \"contained\" ? 0 : 1,\n marginHorizontal: ms(spacing * 5),\n textAlign: \"center\",\n borderRadius: variant === \"text\" ? 0 : 10,\n color: colors.dark.main,\n fontSize: ms(size * 0.5),\n },\n });\n\n return (\n <View style={styles.root}>\n <View style={styles.container}>\n {[...Array(length)].map((_, index) => (\n <TextInput\n ref={inputRefs[index]}\n onChangeText={(val) => onChangeHandler(val, index)}\n value={value[index] || \"\"}\n blurOnSubmit={false}\n // maxLength={1}\n keyboardType=\"number-pad\"\n key={index}\n style={[styles.input]}\n />\n ))}\n </View>\n </View>\n );\n};\n","import { initialize } from \"../src/config\";\n\n// Components\nexport { default as AdaptiveStatusBar } from \"./components/AdaptiveStatusBarNext\";\nexport { default as AlertX } from \"../src/Components/AlertX\";\nexport { default as Avatar } from \"../src/Components/Avatar\";\nexport * from \"../src/Components/Button\";\nexport { default as Button } from \"../src/Components/Button\";\nexport * from \"../src/Components/Checkbox\";\nexport * from \"../src/Components/FlashMessage\";\nexport * from \"../src/Components/FormWrapper\";\nexport * from \"../src/Components/StarRating\";\nexport * from \"../src/Components/Grid\";\nexport * from \"../src/Components/Locator\";\nexport * from \"../src/Components/Popup\";\nexport * from \"../src/Components/SafeAreaView\";\nexport * from \"../src/Components/Divider\";\nexport { default as SelectMenu } from \"../src/Components/SelectMenu\";\nexport { default as Spinner } from \"../src/Components/Spinner\";\nexport * from \"../src/Components/TextField\";\nexport { default as TextField } from \"../src/Components/TextField\";\nexport { default as Typography } from \"../src/Components/Typography\";\nexport * from \"../src/Components/OTPInput\";\n// Others\n// export * from \"../src/config\";\nexport * from \"../src/hooks\";\nexport * from \"../src/theme\";\nexport * from \"../src/types\";\n\nconst HoddyUI = {\n initialize: initialize,\n};\n\nexport default HoddyUI;\n"],"mappings":"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","names":["config","React","useState","Platform","Platform","useColorScheme","React","useEffect","React","React","colors","React","colors","React","colors","useEffect","config","React","AsyncStorage","useColorScheme","theme","colors","Platform","useState","colors","Platform","React","React","View","ms","ScaledSheet","colors","ScaledSheet","ms","React","View","React","View","ms","ScaledSheet","colors","ScaledSheet","ms","React","View","MaterialIcons","React","forwardRef","Text","TouchableOpacity","ScaledSheet","moderateScale","ms","colors","ScaledSheet","moderateScale","React","TouchableOpacity","Text","ms","MaterialIcons","forwardRef","React","TouchableOpacity","View","ScaledSheet","colors","ScaledSheet","React","View","TouchableOpacity","React","Platform","ScaledSheet","useSafeAreaInsets","Ionicons","useEffect","useState","ActivityIndicator","TouchableOpacity","View","ScaledSheet","Keyboard","KeyboardAvoidingView","Platform","StyleSheet","TouchableWithoutFeedback","View","React","useEffect","useState","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","ms","ScaledSheet","colors","useState","useSafeAreaInsets","useSharedValue","Platform","useEffect","Keyboard","withTiming","runOnJS","useAnimatedStyle","ScaledSheet","ms","React","Animated","KeyboardAvoidingView","TouchableWithoutFeedback","View","StyleSheet","colors","ScaledSheet","View","Ionicons","useState","useEffect","ActivityIndicator","TouchableOpacity","React","View","ms","ScaledSheet","Ionicons","React","useEffect","useState","TouchableOpacity","View","MaterialIcons","React","TouchableOpacity","View","ScaledSheet","colors","ScaledSheet","React","View","TouchableOpacity","MaterialIcons","Ionicons","MaterialIcons","React","useRef","useState","Animated","TextInput","TouchableOpacity","View","ScaledSheet","moderateScale","ms","verticalScale","MaterialIcons","React","useState","TouchableOpacity","View","useSafeAreaInsets","ScaledSheet","colors","useSafeAreaInsets","useState","ScaledSheet","React","TouchableOpacity","View","MaterialIcons","colors","useState","moderateScale","useRef","Animated","React","verticalScale","ScaledSheet","ms","View","TouchableOpacity","TextInput","Ionicons","MaterialIcons","value","ScaledSheet","useState","colors","ScaledSheet","useEffect","React","View","TouchableOpacity","Ionicons","React","useSafeAreaInsets","StyleSheet","View","View","ScaledSheet","ms","colors","ScaledSheet","ms","View","React","ActivityIndicator","View","ScaledSheet","colors","ScaledSheet","React","View","ActivityIndicator","React","TextInput","View","ScaledSheet","ms","React","newValue","colors","ScaledSheet","ms","View","TextInput"]}