import { useEffect } from "react"; import { Platform, View } from "react-native"; import type RootStackParamList from "./type"; import stylesheet from "./stylesheet"; import { NCoreUIKitEmbeddedMenu, NCoreUIKitLocalize, NCoreUIKitTheme, PaletteSwitcher, LocaleSwitcher, ThemeSwitcher, MainHeader } from "ncore-ui-kit"; import { type LinkingOptions, NavigationContainer, getStateFromPath, useNavigation } from "@react-navigation/native"; import TypesOverridePage from "../pages/coreFeatures/typesOverride"; import { type NativeStackNavigationProp, createNativeStackNavigator } from "@react-navigation/native-stack"; import { ComponentIcon, SettingsIcon, GoalIcon, HomeIcon } from "lucide-react-native"; import NotificationIndicatorPage from "../pages/components/notificationIndicator"; import HighlightButtonPage from "../pages/components/highlightButton"; import PaletteSwitcherPage from "../pages/components/paletteSwitcher"; import LocaleExamplesPage from "../pages/coreFeatures/localeExamples"; import DateTimePickerPage from "../pages/components/dateTimePicker"; import LocaleSwitcherPage from "../pages/components/localeSwitcher"; import MarkdownViewerPage from "../pages/components/markdownViewer"; import ThemeExamplesPage from "../pages/coreFeatures/themeExamples"; import DateTimeSheetPage from "../pages/components/dateTimeSheet"; import MonthSelectorPage from "../pages/components/monthSelector"; import PageContainerPage from "../pages/components/pageContainer"; import TextAreaInputPage from "../pages/components/textAreaInput"; import ThemeSwitcherPage from "../pages/components/themeSwitcher"; import DateSelectorPage from "../pages/components/dateSelector"; import EmbeddedMenuPage from "../pages/components/embeddedMenu"; import NumericInputPage from "../pages/components/numericInput"; import TimeSelectorPage from "../pages/components/timeSelector"; import WebScrollbarPage from "../pages/components/webScrollbar"; import YearSelectorPage from "../pages/components/yearSelector"; import AvatarGroupPage from "../pages/components/avatarGroup"; import BottomSheetPage from "../pages/components/bottomSheet"; import RadioButtonPage from "../pages/components/radioButton"; import SelectSheetPage from "../pages/components/selectSheet"; import ToolsUsagePage from "../pages/coreFeatures/toolsUsage"; import CodeViewerPage from "../pages/components/codeViewer"; import MainHeaderPage from "../pages/components/mainHeader"; import SelectBoxPage from "../pages/components/selectBox"; import SeperatorPage from "../pages/components/seperator"; import StateCardPage from "../pages/components/stateCard"; import TextInputPage from "../pages/components/textInput"; import ImplementationPage from "../pages/implementation"; import CheckBoxPage from "../pages/components/checkBox"; import SiteLogoPage from "../pages/components/siteLogo"; import SnackBarPage from "../pages/components/snackBar"; import LoadingPage from "../pages/components/loading"; import RowCardPage from "../pages/components/rowCard"; import StickerPage from "../pages/components/sticker"; import InstallationPage from "../pages/installation"; import AvatarPage from "../pages/components/avatar"; import ButtonPage from "../pages/components/button"; import DialogPage from "../pages/components/dialog"; import HeaderPage from "../pages/components/header"; import SwitchPage from "../pages/components/switch"; import ModalPage from "../pages/components/modal"; import ToastPage from "../pages/components/toast"; import ChipPage from "../pages/components/chip"; import MenuPage from "../pages/components/menu"; import TextPage from "../pages/components/text"; import Home from "../pages/home"; const RootStack = createNativeStackNavigator(); const ComponentsStack = createNativeStackNavigator(); const GettingStartedStack = createNativeStackNavigator(); const CoreFeaturesStack = createNativeStackNavigator(); const CoreFeaturesNav = () => { return ; }; const GettingStartedNav = () => { return ; }; const ComponentsNav = () => { return ; }; const RenderHomeIcon = ({ color }: { color: keyof NCoreUIKit.IconContentColors; }) => { const { colors } = NCoreUIKitTheme.useContext(); return ; }; const RenderComponentIcon = ({ color }: { color: keyof NCoreUIKit.IconContentColors; }) => { const { colors } = NCoreUIKitTheme.useContext(); return ; }; const RenderGettingStartedIcon = ({ color }: { color: keyof NCoreUIKit.IconContentColors; }) => { const { colors } = NCoreUIKitTheme.useContext(); return ; }; const RenderCoreFeaturesIcon = ({ color }: { color: keyof NCoreUIKit.IconContentColors; }) => { const { colors } = NCoreUIKitTheme.useContext(); return ; }; const RootNav = () => { const { activeTheme, spaces } = NCoreUIKitTheme.useContext(); const { localize } = NCoreUIKitLocalize.useContext(); const navigation = useNavigation>(); useEffect(() => { const currentMenuStatus = Platform.OS === "web" ? window.localStorage.getItem("main-menu-status") : "false"; NCoreUIKitEmbeddedMenu.load({ isCollapse: currentMenuStatus === "true" ? true : false, isWorkWithSafeAreaView: false, siteLogoProps: { isShowIcon: false, title: localize("menu") }, buttons: [ { redirectMain: "Home", isUseLocalize: true, title: "home", icon: ({ color }) => }, { redirectMain: "GettingStarted", isCollapsible: true, title: "gettingStarted", isUseLocalize: true, icon: ({ color }) => , subButtons: [ { redirectMain: "GettingStarted", redirectSub: "Installation", title: "installation", isUseLocalize: true }, { redirectMain: "GettingStarted", redirectSub: "Implementation", title: "implementation", isUseLocalize: true } ] }, { redirectMain: "CoreFeatures", isCollapsible: true, title: "coreFeatures", isUseLocalize: true, icon: ({ color }) => , subButtons: [ { redirectMain: "CoreFeatures", redirectSub: "ToolsUsage", title: "toolsUsage", isUseLocalize: true }, { redirectMain: "CoreFeatures", redirectSub: "ThemeExamples", title: "themeExamples", isUseLocalize: true }, { redirectMain: "CoreFeatures", redirectSub: "LocaleExamples", title: "localeExamples", isUseLocalize: true }, { redirectMain: "CoreFeatures", redirectSub: "TypesOverride", title: "typesOverride", isUseLocalize: true } ] }, { redirectMain: "Components", isUseLocalize: true, isCollapsible: true, title: "components", icon: ({ color }) => , subButtons: [ { redirectMain: "Components", redirectSub: "Text", title: "Text" }, { redirectMain: "Components", redirectSub: "Button", title: "Button" }, { redirectMain: "Components", redirectSub: "HighlightButton", title: "HighlightButton" }, { redirectMain: "Components", redirectSub: "TextInput", title: "TextInput" }, { redirectMain: "Components", redirectSub: "TextAreaInput", title: "TextAreaInput" }, { redirectMain: "Components", redirectSub: "NumericInput", title: "NumericInput" }, { redirectMain: "Components", redirectSub: "SelectBox", title: "SelectBox" }, { redirectMain: "Components", redirectSub: "SelectSheet", title: "SelectSheet" }, { redirectMain: "Components", redirectSub: "CheckBox", title: "CheckBox" }, { redirectMain: "Components", redirectSub: "RadioButton", title: "RadioButton" }, { redirectMain: "Components", redirectSub: "Switch", title: "Switch" }, { redirectMain: "Components", redirectSub: "DateTimePicker", title: "DateTimePicker" }, { redirectMain: "Components", redirectSub: "DateTimeSheet", title: "DateTimeSheet" }, { redirectMain: "Components", redirectSub: "DateSelector", title: "DateSelector" }, { redirectMain: "Components", redirectSub: "TimeSelector", title: "TimeSelector" }, { redirectMain: "Components", redirectSub: "MonthSelector", title: "MonthSelector" }, { redirectMain: "Components", redirectSub: "YearSelector", title: "YearSelector" }, { redirectMain: "Components", redirectSub: "Avatar", title: "Avatar" }, { redirectMain: "Components", redirectSub: "AvatarGroup", title: "AvatarGroup" }, { redirectMain: "Components", redirectSub: "CodeViewer", title: "CodeViewer" }, { redirectMain: "Components", redirectSub: "Chip", title: "Chip" }, { redirectMain: "Components", redirectSub: "Sticker", title: "Sticker" }, { redirectMain: "Components", redirectSub: "RowCard", title: "RowCard" }, { redirectMain: "Components", redirectSub: "StateCard", title: "StateCard" }, { redirectMain: "Components", redirectSub: "Dialog", title: "Dialog" }, { redirectMain: "Components", redirectSub: "Modal", title: "Modal" }, { redirectMain: "Components", redirectSub: "BottomSheet", title: "BottomSheet" }, { redirectMain: "Components", redirectSub: "SnackBar", title: "SnackBar" }, { redirectMain: "Components", redirectSub: "Toast", title: "Toast" }, { redirectMain: "Components", redirectSub: "Loading", title: "Loading" }, { redirectMain: "Components", redirectSub: "NotificationIndicator", title: "NotificationIndicator" }, { redirectMain: "Components", redirectSub: "MarkdownViewer", title: "MarkdownViewer" }, { redirectMain: "Components", redirectSub: "Seperator", title: "Seperator" }, { redirectMain: "Components", redirectSub: "SiteLogo", title: "SiteLogo" }, { redirectMain: "Components", redirectSub: "WebScrollbar", title: "WebScrollbar" }, { redirectMain: "Components", redirectSub: "PageContainer", title: "PageContainer" }, { redirectMain: "Components", redirectSub: "Header", title: "Header" }, { redirectMain: "Components", redirectSub: "MainHeader", title: "MainHeader" }, { redirectMain: "Components", redirectSub: "Menu", title: "Menu" }, { redirectMain: "Components", redirectSub: "EmbeddedMenu", title: "EmbeddedMenu" }, { redirectMain: "Components", redirectSub: "ThemeSwitcher", title: "ThemeSwitcher" }, { redirectMain: "Components", redirectSub: "PaletteSwitcher", title: "PaletteSwitcher" }, { redirectMain: "Components", redirectSub: "LocaleSwitcher", title: "LocaleSwitcher" } ] } ], isAutoClosed: true, id: "main-menu" }); NCoreUIKitLocalize.addEventListener("state", updateLocaleStorage); NCoreUIKitEmbeddedMenu.addEventListener("state", updateStorage); NCoreUIKitTheme.addEventListener("state", updateThemeStorage); }, []); const updateStorage = () => { if(Platform.OS === "web") { const data = NCoreUIKitEmbeddedMenu.state.data; if(data && data.length) { const currentMenu = data.find(dI => dI.id === "main-menu"); if(currentMenu) { window.localStorage.setItem("main-menu-status", String(currentMenu.isCollapse)); } } } }; const updateLocaleStorage = () => { if(Platform.OS === "web") { const localeData = NCoreUIKitLocalize.state; if(localeData) { window.localStorage.setItem("locale", JSON.stringify(localeData)); } } }; const updateThemeStorage = () => { if(Platform.OS === "web") { const themeData = NCoreUIKitTheme.state; if(themeData) { window.localStorage.setItem("theme", JSON.stringify(themeData)); } } }; return { navigation.navigate("Home"); }, imageProps: { resizeMode: "stretch" }, subTitle: "Design System - UI Kit", title: "NİBGAT® | NCore", isWorkWithAction: true, isWorkWithFlex1: true }} isWorkWithSticky={true} renderRight={() => { return ; }} glassEffect={5} > ; }; const Navigation = () => { return `NCore - Design System | UI Kit - ${options?.title ?? route?.name ?? "Home"}` }} linking={{ prefixes: [ "http://localhost:3000", "https://ncore.nibgat.space" ], config: { screens: { Home: "home", GettingStarted: { path: "gettingstarted", screens: { Installation: "installation", Implementation: "implementation" } }, CoreFeatures: { path: "corefeatures", screens: { ToolsUsage: "toolsusage", ThemeExamples: "themeexamples", LocaleExamples: "localeexamples", TypesOverride: "typesoverride" } }, Components: { path: "components", screens: { Avatar: "avatar", AvatarGroup: "avatargroup", BottomSheet: "bottomsheet", Button: "button", CheckBox: "checkbox", Chip: "chip", CodeViewer: "codeviewer", DateSelector: "dateselector", DateTimePicker: "datetimepicker", DateTimeSheet: "datetimesheet", Dialog: "dialog", EmbeddedMenu: "embeddedmenu", Header: "header", HighlightButton: "highlightbutton", Loading: "loading", LocaleSwitcher: "localeswitcher", MainHeader: "mainheader", MarkdownViewer: "markdownviewer", Menu: "menu", Modal: "modal", MonthSelector: "monthselector", NotificationIndicator: "notificationindicator", NumericInput: "numericinput", PageContainer: "pagecontainer", PaletteSwitcher: "paletteswitcher", RadioButton: "radiobutton", RowCard: "rowcard", SelectBox: "selectbox", SelectSheet: "selectsheet", Seperator: "seperator", SiteLogo: "sitelogo", SnackBar: "snackbar", StateCard: "statecard", Sticker: "sticker", Switch: "switch", Text: "text", TextAreaInput: "textareainput", TextInput: "textinput", ThemeSwitcher: "themeswitcher", TimeSelector: "timeselector", Toast: "toast", WebScrollbar: "webscrollbar", YearSelector: "yearselector" } } } }, getStateFromPath: (path, options) => { return getStateFromPath(path.toLowerCase(), options); } } as LinkingOptions} > ; }; export default Navigation;