UNPKG

kawkab-frontend

Version:

Kawkab frontend is a frontend library for the Kawkab framework

74 lines (73 loc) 3.46 kB
// -------------------- Initialization -------------------- import { ApiClient } from './core/ApiClient'; import { AuthManager } from './core/AuthManager'; import { SocketClient } from './core/SocketClient'; import { ClientStorage } from './core/ClientStorage'; let apiInstance; let authInstance; let socketInstance = null; let storageInstance; let isInitialized = false; function init(config) { if (isInitialized) return; const finalConfig = { storageType: 'localStorage', ...config, }; storageInstance = new ClientStorage(finalConfig.storageType); authInstance = new AuthManager(storageInstance, finalConfig.auth?.tokenKey); apiInstance = new ApiClient({ baseURL: finalConfig.apiBaseUrl, getToken: () => authInstance.getToken(), }); if (finalConfig.socketUrl) { socketInstance = new SocketClient(finalConfig.socketUrl); } isInitialized = true; } export { init, apiInstance as api, authInstance as auth, socketInstance as socket, storageInstance as storage, }; // -------------------- Direct Export -------------------- // Core export { ApiClient } from './core/ApiClient'; export { AuthManager } from './core/AuthManager'; export { SocketClient } from './core/SocketClient'; export { ClientStorage } from './core/ClientStorage'; export { BaseRepository } from './core/BaseRepository'; export { BaseModel } from './core/BaseModel'; export { createStore, defineStore, persistStore } from './core/createStore'; // Validation export { rule } from './validation/zod'; // Env export { env, setEnv } from './env/env'; // Utils export { collect } from './utils/collect'; export { Str as str } from './utils/string'; export { Time as time } from './utils/time'; export { Num as num } from './utils/number'; export { formatTranslations } from './utils/translation'; export { Cookie as cookie } from './utils/cookie'; export { LocalStorage as localStorage } from './utils/localStorage'; export { SessionStorage as sessionStorage } from './utils/sessionStorage'; // i18n - Translation export { translator, t, changeLanguage, getCurrentLanguage, getLanguageDirection, isRTL, isLTR, } from './utils/translator'; export { translate, getI18nInstance, setCurrentLanguage, detectLanguageFromCookies, detectLanguageFromHeader, initLanguageFromRequest, hydrateLanguage, updateDocumentLanguage, initI18n, getI18nDebugInfo, onLanguageChange, } from './utils/i18n'; // Hooks export { useApi } from './hooks/useApi'; export { useAuth } from './hooks/useAuth'; export { useSocket } from './hooks/useSocket'; export { useForm } from './hooks/useForm'; export { useRouteParams, useQuery } from './hooks/useRouter'; export { useTranslation } from './hooks/useTranslation'; export { useCookie } from './hooks/useCookie'; export { useLocalStorage } from './hooks/useLocalStorage'; export { useSessionStorage } from './hooks/useSessionStorage'; // Components export { TranslationProvider } from './components/TranslationProvider'; export { Meta } from './components/meta/Meta'; export { Links } from './components/meta/Links'; export { Scripts } from './components/meta/Scripts'; export { Kawkab } from './components/Kawkab'; export { Image } from './components/Image'; // React Router export { Outlet, Link, NavLink, Form, ScrollRestoration, useNavigate, useNavigation, useParams, useLocation, useFetcher, useLoaderData, useActionData, isRouteErrorResponse, redirect, } from 'react-router-dom';