@pagamio/frontend-commons-lib
Version:
Pagamio library for Frontend reusable components like the form engine and table container
20 lines (19 loc) • 1.94 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { useSessionTimer } from '../../shared';
import { useAnyDrawerOpen } from '../../shared/hooks/useAnyDrawerOpen';
import { TranslationProvider } from '../../translations';
import { AppBreadcrumbNav, AppDashboardNavbar, AppDashboardSidebar, AppLayoutContent, SessionExpiryModal, } from '../layout';
import LoaderComponent from '../ui/Loader';
const AppLayout = ({ children, appNavbar, hideSidebar = false, hideNavbar = false, hideBreadcrumbNav = false, enableTranslations = false, translationConfig, sidebarHeader, }) => {
const isDrawerOpen = useAnyDrawerOpen();
const { showModal, countdown, loading, modalDismissed, handleCloseModal, handleRefreshToken } = useSessionTimer();
if (loading) {
return (_jsx("div", { className: "flex min-h-screen items-center justify-center", children: _jsx(LoaderComponent, {}) }));
}
const content = (_jsxs(_Fragment, { children: [!hideNavbar && (_jsx(AppDashboardNavbar, { ...appNavbar, hideSidebarToggle: hideSidebar, showLocaleSwitcher: enableTranslations })), _jsxs("div", { className: `flex items-start transition-all duration-300 ${!hideNavbar ? 'mt-16' : ''}`, style: { width: isDrawerOpen ? 'calc(100vw - 420px)' : '100%' }, children: [!hideSidebar && _jsx(AppDashboardSidebar, {}), _jsxs(AppLayoutContent, { isSidebarHidden: hideSidebar, children: [!hideBreadcrumbNav && _jsx(AppBreadcrumbNav, {}), children] }), _jsx(SessionExpiryModal, { show: showModal && !modalDismissed, countdown: countdown, loading: loading, onDismiss: handleCloseModal, onRenew: handleRefreshToken })] })] }));
if (enableTranslations) {
return (_jsx(TranslationProvider, { defaultLocale: translationConfig?.defaultLocale ?? 'en', localeData: translationConfig?.localeData, loadPath: translationConfig?.loadPath, children: content }));
}
return content;
};
export default AppLayout;