Some checks failed
API CI / API Lint (push) Has been cancelled
API CI / API Type Check (push) Has been cancelled
API CI / API Test (push) Has been cancelled
API CI / API Build (push) Has been cancelled
CD Pipeline / Deploy to Staging (push) Has been cancelled
CI Pipeline / Lint and Type Check (push) Has been cancelled
CI Pipeline / Test Backend (push) Has been cancelled
CI Pipeline / Test Frontend (push) Has been cancelled
CI Pipeline / Security Scan (push) Has been cancelled
Deploy to Staging / Deploy to Staging (push) Has been cancelled
Portal CI / Portal Lint (push) Has been cancelled
Portal CI / Portal Type Check (push) Has been cancelled
Portal CI / Portal Test (push) Has been cancelled
Portal CI / Portal Build (push) Has been cancelled
Test Suite / frontend-tests (push) Has been cancelled
Test Suite / api-tests (push) Has been cancelled
Test Suite / blockchain-tests (push) Has been cancelled
Type Check / type-check (map[directory:. name:root]) (push) Has been cancelled
Type Check / type-check (map[directory:api name:api]) (push) Has been cancelled
Type Check / type-check (map[directory:portal name:portal]) (push) Has been cancelled
API CI / Build Docker Image (push) Has been cancelled
CD Pipeline / Deploy to Production (push) Has been cancelled
CI Pipeline / Build (push) Has been cancelled
- root .eslintrc with recommended TS rules; eslint --fix import order project-wide - Replace any/unknown in lib clients (ArgoCD, K8s, Phoenix), hooks, and key components - Form labels: htmlFor+id; escape apostrophes; remove or gate console (error boundary keep) - Crossplane VM status typing; webhook test result interface; infrastructure/resources maps typed Made-with: Cursor
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
'use client'
|
|
|
|
import { Inter } from 'next/font/google'
|
|
import './globals.css'
|
|
import { SessionProvider } from 'next-auth/react'
|
|
|
|
import { KeyboardShortcutsProvider } from '@/components/KeyboardShortcutsProvider'
|
|
import { MobileNavigation } from '@/components/layout/MobileNavigation'
|
|
import { PortalBreadcrumbs } from '@/components/layout/PortalBreadcrumbs'
|
|
import { PortalHeader } from '@/components/layout/PortalHeader'
|
|
import { PortalSidebar } from '@/components/layout/PortalSidebar'
|
|
|
|
import { Providers } from './providers'
|
|
|
|
|
|
const inter = Inter({ subsets: ['latin'] })
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
return (
|
|
<html lang="en">
|
|
<body className={inter.className}>
|
|
<SessionProvider>
|
|
<Providers>
|
|
<KeyboardShortcutsProvider>
|
|
<div className="flex min-h-screen flex-col">
|
|
<PortalHeader />
|
|
<PortalBreadcrumbs />
|
|
<div className="flex flex-1">
|
|
<PortalSidebar />
|
|
<main className="flex-1 ml-0 md:ml-64">
|
|
{children}
|
|
</main>
|
|
</div>
|
|
<MobileNavigation />
|
|
</div>
|
|
</KeyboardShortcutsProvider>
|
|
</Providers>
|
|
</SessionProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|