import { Platform } from "react-native"; import Navigation from "./navigation"; import defaultLocaleJSON from "./variants/locales/default.json"; import defaultThemeJSON from "./variants/themes/default.json"; import { type NCoreUIKitConfig, setupNCoreUIKit, Host } from "ncore-ui-kit"; import { useFonts } from "expo-font"; import "moment/locale/tr"; import moment from "moment"; if (Platform.OS === "web" && typeof window !== "undefined") { window.addEventListener("error", (e) => { if ( e.message === "ResizeObserver loop limit exceeded" || e.message === "ResizeObserver loop completed with undelivered notifications." ) { e.stopImmediatePropagation(); } }); } let NCoreConfig: NCoreUIKitConfig = { projectThemes: defaultThemeJSON as NCoreUIKit.Palette, initialSelectedGapPropagation: "spacious", projectLocales: defaultLocaleJSON, initialSelectedPalette: "nibgat", initialSelectedTheme: "light" }; const themeStorage = Platform.OS === "web" ? window.localStorage.getItem("theme") : null; if(themeStorage) { const parsedThemeStorage = JSON.parse(themeStorage); NCoreConfig = { ...NCoreConfig, initialSelectedGapPropagation: parsedThemeStorage.activeGapPropagation, initialSelectedActiveSharpness: parsedThemeStorage.activeSharpness, initialSelectedTheme: parsedThemeStorage.activeTheme }; } const localeStorage = Platform.OS === "web" ? window.localStorage.getItem("locale") : null; if(localeStorage) { const parsedLocaleStorage = JSON.parse(localeStorage); NCoreConfig = { ...NCoreConfig, initialSelectedLocale: parsedLocaleStorage.activeLocale }; } if (Platform.OS === "web") { const urlParams = new URLSearchParams(window.location.search); const langParam = urlParams.get("lang"); if (langParam) { const isValidLocale = defaultLocaleJSON.some(item => item.locale === langParam); if (isValidLocale) { NCoreConfig.initialSelectedLocale = langParam as keyof NCoreUIKit.LocaleKey; } } if (!NCoreConfig.initialSelectedLocale) { const browserLang = window.navigator.language || ""; const exactMatch = defaultLocaleJSON.find(item => item.locale === browserLang); if (exactMatch) { NCoreConfig.initialSelectedLocale = exactMatch.locale as keyof NCoreUIKit.LocaleKey; } else { const primaryLang = (browserLang.split(/[-_]/)[0] || "").toLowerCase(); const similarMatch = defaultLocaleJSON.find(item => item.locale.toLowerCase() === primaryLang || item.locale.toLowerCase().startsWith(`${primaryLang}-`) ); if (similarMatch) { NCoreConfig.initialSelectedLocale = similarMatch.locale as keyof NCoreUIKit.LocaleKey; } else { NCoreConfig.initialSelectedLocale = (primaryLang === "tr" ? "tr-TR" : "en-US") as keyof NCoreUIKit.LocaleKey; } } } } const NCoreUIKitBase = setupNCoreUIKit(NCoreConfig); moment.locale("tr"); const App = () => { return ; }; const isExpo = typeof globalThis !== "undefined" && ("__expo" in globalThis || "Expo" in globalThis); const ContextAPI = () => { if(isExpo) { /* eslint-disable @typescript-eslint/no-require-imports */ const [loaded] = useFonts({ "Geist-ExtraLight": require("./assets/fonts/Geist-ExtraLight.ttf"), "Geist-ExtraBold": require("./assets/fonts/Geist-ExtraBold.ttf"), "Geist-SemiBold": require("./assets/fonts/Geist-SemiBold.ttf"), "Geist-Regular": require("./assets/fonts/Geist-Regular.ttf"), "Geist-Medium": require("./assets/fonts/Geist-Medium.ttf"), "Geist-Black": require("./assets/fonts/Geist-Black.ttf"), "Geist-Light": require("./assets/fonts/Geist-Light.ttf"), "Geist-Bold": require("./assets/fonts/Geist-Bold.ttf"), "Geist-Thin": require("./assets/fonts/Geist-Thin.ttf") }); if (!loaded) return null; } return ; }; export default ContextAPI;