index.tsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import {
  2. useEffect
  3. } from "react";
  4. import {
  5. Platform
  6. } from "react-native";
  7. import type RootStackParamList from "./type";
  8. import {
  9. NCoreUIKitEmbeddedMenu,
  10. NCoreUIKitLocalize,
  11. NCoreUIKitTheme,
  12. MainHeader
  13. } from "ncore-ui-kit";
  14. import {
  15. NavigationContainer,
  16. useNavigation
  17. } from "@react-navigation/native";
  18. import {
  19. type NativeStackNavigationProp,
  20. createNativeStackNavigator
  21. } from "@react-navigation/native-stack";
  22. import {
  23. ComponentIcon,
  24. HomeIcon
  25. } from "lucide-react-native";
  26. import Home from "../pages/home";
  27. import TextPage from "../pages/text";
  28. const RootStack = createNativeStackNavigator();
  29. const ComponentsStack = createNativeStackNavigator();
  30. const ComponentsNav = () => {
  31. return <ComponentsStack.Navigator
  32. initialRouteName="TextPage"
  33. screenOptions={{
  34. headerShown: true
  35. }}
  36. >
  37. <ComponentsStack.Screen
  38. name="TextPage"
  39. component={TextPage}
  40. />
  41. </ComponentsStack.Navigator>;
  42. };
  43. const RootNav = () => {
  44. const {
  45. colors
  46. } = NCoreUIKitTheme.useContext();
  47. const {
  48. localize
  49. } = NCoreUIKitLocalize.useContext();
  50. const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
  51. useEffect(() => {
  52. const currentMenuStatus = Platform.OS === "web" ? window.localStorage.getItem("main-menu-status") : "false";
  53. NCoreUIKitEmbeddedMenu.load({
  54. isCollapse: currentMenuStatus === "true" ? true : false,
  55. isWorkWithSafeAreaView: false,
  56. siteLogoProps: {
  57. isShowIcon: false,
  58. title: localize("menu")
  59. },
  60. buttons: [
  61. {
  62. redirectMain: "Home",
  63. isUseLocalize: true,
  64. title: "home",
  65. icon: ({
  66. color
  67. }) => <HomeIcon
  68. color={colors.content.icon[color]}
  69. />
  70. },
  71. {
  72. redirectMain: "Components",
  73. isUseLocalize: true,
  74. isCollapsible: true,
  75. title: "components",
  76. icon: ({
  77. color
  78. }) => <ComponentIcon
  79. color={colors.content.icon[color]}
  80. />,
  81. subButtons: [
  82. {
  83. redirectMain: "Components",
  84. redirectSub: "TextPage",
  85. title: "Text"
  86. }
  87. ]
  88. }
  89. ],
  90. isAutoClosed: true,
  91. id: "main-menu"
  92. });
  93. NCoreUIKitEmbeddedMenu.addEventListener("state", updateStorage);
  94. }, []);
  95. const updateStorage = () => {
  96. const data = NCoreUIKitEmbeddedMenu.state.data;
  97. if(Platform.OS === "web" && data && data.length) {
  98. const currentMenu = data.find(dI => dI.id === "main-menu");
  99. if(currentMenu) {
  100. window.localStorage.setItem("main-menu-status", String(currentMenu.isCollapse));
  101. }
  102. }
  103. };
  104. return <MainHeader
  105. isWorkWithSeperator={true}
  106. siteLogoProps={{
  107. imageUrl: "http://ncore.nibgat.space/assets/images/ncorelogo.png",
  108. onPress: () => {
  109. navigation.navigate("Home");
  110. },
  111. imageProps: {
  112. resizeMode: "stretch"
  113. },
  114. subTitle: "Design System - UI Kit",
  115. title: "NİBGAT® | NCore",
  116. isWorkWithAction: true,
  117. isWorkWithFlex1: true
  118. }}
  119. isWorkWithSticky={true}
  120. glassEffect={5}
  121. >
  122. <NCoreUIKitEmbeddedMenu.Render
  123. navigation={navigation as unknown as NCoreUIKit.Navigation}
  124. id="main-menu"
  125. >
  126. <RootStack.Navigator
  127. initialRouteName="Home"
  128. screenOptions={{
  129. headerShown: false
  130. }}
  131. >
  132. <RootStack.Screen
  133. component={Home}
  134. name="Home"
  135. />
  136. <RootStack.Screen
  137. component={ComponentsNav}
  138. name="Components"
  139. />
  140. </RootStack.Navigator>
  141. </NCoreUIKitEmbeddedMenu.Render>
  142. </MainHeader>;
  143. };
  144. const Navigation = () => {
  145. return <NavigationContainer
  146. linking={{
  147. prefixes: [
  148. "http://localhost:3000",
  149. "https://ncore.nibgat.space"
  150. ],
  151. config: {
  152. screens: {
  153. Home: "",
  154. TestSubPage: "text"
  155. }
  156. }
  157. }}
  158. >
  159. <RootNav/>
  160. </NavigationContainer>;
  161. };
  162. export default Navigation;