import type { SortableGridRenderItem } from 'react-native-sortables' import type { NavItem } from '@/store/navigation' import { Slot, usePathname, useRouter } from 'expo-router' import { useCallback, useEffect, useState } from 'react' import { Text, TouchableOpacity, View } from 'react-native' import { KeyboardAvoidingView } from 'react-native-keyboard-controller' import Animated, { useAnimatedRef } from 'react-native-reanimated' import Sortable from 'react-native-sortables' import { ADrawer, LucideIcon } from '@/components/common/ao' import { Divider } from '@/components/ui/divider' import { useNavStore } from '@/store/navigation' export default function TabsLayout() { const scrollableRef = useAnimatedRef() const router = useRouter() const pathname = usePathname() const navStore = useNavStore() const [showNavDrawer, setShowNavDrawer] = useState(false) const [currentNav, setCurrentNav] = useState({ label: 'Welcome', path: '/', icon: 'Sparkles', }) useEffect(() => { const current = navStore.navMenus.find(item => item.path === pathname) if (current) { setCurrentNav(current) } else { setCurrentNav({ label: 'Welcome', path: '/', icon: 'Sparkles', }) } }, [pathname]) const refreshPage = () => { router.replace(pathname) } const renderNavItem = useCallback>( ({ item }) => ( { setShowNavDrawer(false) router.navigate(item.path) }} > {item.label} ), [], ) return ( { setShowNavDrawer(true) }} > {currentNav.label} { setShowNavDrawer(false) }} > item.path} renderItem={renderNavItem} scrollableRef={scrollableRef} autoScrollActivationOffset={200} showDropIndicator onDragEnd={(dragData) => { navStore.setNavMenus(dragData.data) }} /> ) }