- login page (Supabase email/password sign-in + sign-up) - onboarding: create first tenant, redirects into /dashboard once a membership exists - dashboard shell: sidebar nav, tenant switcher (x-tenant-id header, never in body/query -- matches ceo-api's TenantGuard), sign out - Organizations, Tasks, and Team (members/RBAC) pages wired to ceo-api via a thin apiFetch wrapper that attaches the Supabase bearer token - executive "paper & ink" design tokens (Tailwind) replacing defaults - Dockerfile: declare NEXT_PUBLIC_* as build ARGs so Coolify's existing build-time env vars actually get inlined (was previously silently dropped, which would have crashed prerendering)
26 lines
738 B
TypeScript
26 lines
738 B
TypeScript
import type { Metadata } from 'next';
|
|
import { Fraunces, Inter } from 'next/font/google';
|
|
import { Providers } from './providers';
|
|
import './globals.css';
|
|
|
|
const display = Fraunces({
|
|
subsets: ['latin'],
|
|
variable: '--font-display',
|
|
weight: ['500', '600'],
|
|
});
|
|
const sans = Inter({ subsets: ['latin'], variable: '--font-sans' });
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'CEO OS',
|
|
description: 'Personal & Executive Intelligence Operating System',
|
|
};
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="ro" className={`${display.variable} ${sans.variable}`}>
|
|
<body className="font-sans">
|
|
<Providers>{children}</Providers>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|