{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { useEffect } from 'react';\nimport { Center, HStack, Icon, Pressable, Text } from 'native-base';\nimport { useLocation } from 'react-router';\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useStoredState } from 'react-native-use-stored-state';\nimport { goToAbout, goToHome, useNavigate } from \"../Routing\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar tabs = [{\n  label: 'Home',\n  icon: 'home',\n  action: goToHome\n}, {\n  label: 'About',\n  icon: 'information',\n  action: goToAbout\n}];\nexport var Navigation = function Navigation() {\n  var location = useLocation();\n  var navigate = useNavigate();\n  var _useStoredState = useStoredState('ACTIVE_NAV_TAB', 0),\n    _useStoredState2 = _slicedToArray(_useStoredState, 2),\n    selectedTab = _useStoredState2[0],\n    setSelectedTab = _useStoredState2[1];\n  useEffect(function () {\n    tabs.forEach(function (tab, id) {\n      if (tab.label && location.pathname.includes(tab.label)) {\n        setSelectedTab(id);\n      }\n    });\n  }, [location, setSelectedTab]);\n  return _jsx(HStack, {\n    alignItems: 'center',\n    bg: 'primary.100',\n    safeAreaBottom: true,\n    shadow: 5,\n    style: Platform.OS === 'web' ? {\n      position: 'fixed',\n      bottom: 0,\n      left: 0,\n      width: '100%'\n    } : {},\n    children: tabs.map(function (tab, id) {\n      return _jsx(Pressable, {\n        flex: 1,\n        opacity: selectedTab === id ? 1 : 0.5,\n        paddingY: 2,\n        onPress: function onPress() {\n          setSelectedTab(id);\n          tab.action(navigate);\n        },\n        children: _jsxs(Center, {\n          children: [_jsx(Icon, {\n            name: tab.icon,\n            as: MaterialCommunityIcons,\n            size: 'md'\n          }), _jsx(Text, {\n            children: tab.label\n          })]\n        })\n      }, \"nav-tab-\" + id);\n    })\n  });\n};","map":{"version":3,"names":["useEffect","Center","HStack","Icon","Pressable","Text","useLocation","Platform","MaterialCommunityIcons","useStoredState","goToAbout","goToHome","useNavigate","jsx","_jsx","jsxs","_jsxs","tabs","label","icon","action","Navigation","location","navigate","_useStoredState","_useStoredState2","_slicedToArray","selectedTab","setSelectedTab","forEach","tab","id","pathname","includes","alignItems","bg","safeAreaBottom","shadow","style","OS","position","bottom","left","width","children","map","flex","opacity","paddingY","onPress","name","as","size"],"sources":["/Users/Daniel.Antelo/Workspaces/expo-template-reactrouter-nativebase/packages/components/Navigation/index.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { Center, HStack, Icon, Pressable, Text } from 'native-base';\nimport { NavigateFunction, useLocation } from 'react-router';\nimport { Platform } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useStoredState } from 'react-native-use-stored-state';\n\nimport { goToAbout, goToHome, useNavigate } from '../Routing';\n\ninterface Tab {\n  label: string;\n  icon: string;\n  action: (navigate: NavigateFunction) => void;\n}\n\nconst tabs: Tab[] = [\n  {\n    label: 'Home',\n    icon: 'home',\n    action: goToHome,\n  },\n  {\n    label: 'About',\n    icon: 'information',\n    action: goToAbout,\n  },\n];\n\nexport const Navigation = () => {\n  const location = useLocation();\n  const navigate = useNavigate();\n  const [selectedTab, setSelectedTab] = useStoredState<number>('ACTIVE_NAV_TAB', 0);\n\n  useEffect(() => {\n    tabs.forEach((tab: Tab, id: number) => {\n      if (tab.label && location.pathname.includes(tab.label)) {\n        setSelectedTab(id);\n      }\n    });\n  }, [location, setSelectedTab]);\n\n  return (\n    <HStack\n      alignItems={'center'}\n      bg={'primary.100'}\n      safeAreaBottom\n      shadow={5}\n      //@ts-expect-error forced web styles for sticky nav\n      style={Platform.OS === 'web' ? { position: 'fixed', bottom: 0, left: 0, width: '100%' } : {}}\n    >\n      {tabs.map((tab: Tab, id: number) => (\n        <Pressable\n          key={`nav-tab-${id}`}\n          flex={1}\n          opacity={selectedTab === id ? 1 : 0.5}\n          paddingY={2}\n          onPress={() => {\n            setSelectedTab(id);\n            tab.action(navigate);\n          }}\n        >\n          <Center>\n            <Icon name={tab.icon} as={MaterialCommunityIcons} size={'md'} />\n            <Text>{tab.label}</Text>\n          </Center>\n        </Pressable>\n      ))}\n    </HStack>\n  );\n};\n"],"mappings":";AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,IAAI,QAAQ,aAAa;AACnE,SAA2BC,WAAW,QAAQ,cAAc;AAAC,OAAAC,QAAA;AAE7D,SAASC,sBAAsB,QAAQ,oBAAoB;AAC3D,SAASC,cAAc,QAAQ,+BAA+B;AAE9D,SAASC,SAAS,EAAEC,QAAQ,EAAEC,WAAW;AAAqB,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAQ9D,IAAMC,IAAW,GAAG,CAClB;EACEC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAET;AACV,CAAC,EACD;EACEO,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,aAAa;EACnBC,MAAM,EAAEV;AACV,CAAC,CACF;AAED,OAAO,IAAMW,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC9B,IAAMC,QAAQ,GAAGhB,WAAW,CAAC,CAAC;EAC9B,IAAMiB,QAAQ,GAAGX,WAAW,CAAC,CAAC;EAC9B,IAAAY,eAAA,GAAsCf,cAAc,CAAS,gBAAgB,EAAE,CAAC,CAAC;IAAAgB,gBAAA,GAAAC,cAAA,CAAAF,eAAA;IAA1EG,WAAW,GAAAF,gBAAA;IAAEG,cAAc,GAAAH,gBAAA;EAElCzB,SAAS,CAAC,YAAM;IACdiB,IAAI,CAACY,OAAO,CAAC,UAACC,GAAQ,EAAEC,EAAU,EAAK;MACrC,IAAID,GAAG,CAACZ,KAAK,IAAII,QAAQ,CAACU,QAAQ,CAACC,QAAQ,CAACH,GAAG,CAACZ,KAAK,CAAC,EAAE;QACtDU,cAAc,CAACG,EAAE,CAAC;MACpB;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACT,QAAQ,EAAEM,cAAc,CAAC,CAAC;EAE9B,OACEd,IAAA,CAACZ,MAAM;IACLgC,UAAU,EAAE,QAAS;IACrBC,EAAE,EAAE,aAAc;IAClBC,cAAc;IACdC,MAAM,EAAE,CAAE;IAEVC,KAAK,EAAE/B,QAAQ,CAACgC,EAAE,KAAK,KAAK,GAAG;MAAEC,QAAQ,EAAE,OAAO;MAAEC,MAAM,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,GAAG,CAAC,CAAE;IAAAC,QAAA,EAE5F3B,IAAI,CAAC4B,GAAG,CAAC,UAACf,GAAQ,EAAEC,EAAU;MAAA,OAC7BjB,IAAA,CAACV,SAAS;QAER0C,IAAI,EAAE,CAAE;QACRC,OAAO,EAAEpB,WAAW,KAAKI,EAAE,GAAG,CAAC,GAAG,GAAI;QACtCiB,QAAQ,EAAE,CAAE;QACZC,OAAO,EAAE,SAAAA,QAAA,EAAM;UACbrB,cAAc,CAACG,EAAE,CAAC;UAClBD,GAAG,CAACV,MAAM,CAACG,QAAQ,CAAC;QACtB,CAAE;QAAAqB,QAAA,EAEF5B,KAAA,CAACf,MAAM;UAAA2C,QAAA,GACL9B,IAAA,CAACX,IAAI;YAAC+C,IAAI,EAAEpB,GAAG,CAACX,IAAK;YAACgC,EAAE,EAAE3C,sBAAuB;YAAC4C,IAAI,EAAE;UAAK,CAAE,CAAC,EAChEtC,IAAA,CAACT,IAAI;YAAAuC,QAAA,EAAEd,GAAG,CAACZ;UAAK,CAAO,CAAC;QAAA,CAClB;MAAC,gBAZOa,EAaP,CAAC;IAAA,CACb;EAAC,CACI,CAAC;AAEb,CAAC"},"metadata":{},"sourceType":"module"}