mirror of
https://github.com/rustmailer/bichon.git
synced 2026-08-31 01:52:30 +00:00
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
//
|
|
// Copyright (c) 2025-2026 rustmailer.com (https://rustmailer.com)
|
|
//
|
|
// This file is part of the Bichon Email Archiving Project
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import { createFileRoute, Outlet } from '@tanstack/react-router'
|
|
import { cn } from '@/lib/utils'
|
|
import { SearchProvider } from '@/context/search-context'
|
|
import { SidebarProvider } from '@/components/ui/sidebar'
|
|
import { AppSidebar } from '@/components/layout/app-sidebar'
|
|
|
|
export const Route = createFileRoute('/_authenticated')({
|
|
component: RouteComponent,
|
|
})
|
|
|
|
function RouteComponent() {
|
|
const defaultOpen = localStorage.getItem('sidebar_state') === 'true';
|
|
return (
|
|
<SearchProvider>
|
|
<SidebarProvider defaultOpen={defaultOpen}>
|
|
{/* <SkipToMain /> */}
|
|
<AppSidebar />
|
|
<div
|
|
id='content'
|
|
className={cn(
|
|
'max-w-full w-full ml-auto',
|
|
'peer-data-[state=collapsed]:w-[calc(100%-var(--sidebar-width-icon)-1rem)]',
|
|
'peer-data-[state=expanded]:w-[calc(100%-var(--sidebar-width))]',
|
|
'transition-[width] ease-linear duration-200',
|
|
'h-svh flex flex-col',
|
|
'group-data-[scroll-locked=1]/body:h-full',
|
|
'group-data-[scroll-locked=1]/body:has-[main.fixed-main]:h-svh'
|
|
)}
|
|
>
|
|
<Outlet />
|
|
</div>
|
|
</SidebarProvider>
|
|
</SearchProvider>
|
|
)
|
|
}
|