Files
supervisor-ui/app/layout.tsx

59 lines
1.6 KiB
TypeScript
Raw Normal View History

import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import './globals.css';
import { Providers } from '@/components/providers/Providers';
import { AppLayout } from '@/components/layout/AppLayout';
const inter = Inter({
subsets: ['latin'],
variable: '--font-inter',
});
export const metadata: Metadata = {
title: 'Supervisor UI',
description: 'Modern web interface for Supervisor process management',
feat: comprehensive responsive design implementation for mobile devices This commit implements a complete responsive design overhaul making the Supervisor UI fully mobile-friendly and beautiful across all devices (320px phones to 4K displays). ## Phase 1: Mobile Navigation - Add hamburger menu to Navbar with slide-out drawer - Auto-close on navigation with body scroll lock - Responsive logo sizing ## Phase 2: Touch-Friendly Buttons - Increase touch targets to 44px on mobile (36px for small buttons) - Add responsive button layouts in ProcessCard - Flex-wrap prevents cramped button rows ## Phase 3: Responsive Spacing & Typography - Add responsive padding to Card components (p-4 md:p-6) - Scale typography across breakpoints (text-xl md:text-2xl) - Responsive spacing in AppLayout and all pages ## Phase 4: Mobile-Friendly Tables - Dual layout for ConfigTable: table on desktop, cards on mobile - Preserve all data with proper formatting and wrapping - Hide table on mobile, show card-based layout ## Phase 5: Modal Improvements - Add horizontal padding (p-4) to all modals - Prevent edge-touching on mobile devices - Fixed SignalSender, KeyboardShortcutsHelp, StdinInput modals ## Phase 6: Page-Specific Layouts - Processes page: responsive header, controls, and grid spacing - BatchActions bar: full-width on mobile, centered on desktop - Logs page: responsive controls and height calculations - Config page: responsive header and error states ## Phase 7: Polish & Final Touches - Add viewport meta tag to layout - Responsive empty states and loading skeletons - Consistent responsive sizing across all error messages - Mobile-first typography scaling 🎉 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 21:21:22 +01:00
viewport: {
width: 'device-width',
initialScale: 1,
maximumScale: 5,
userScalable: true,
},
};
// Force dynamic rendering
export const dynamic = 'force-dynamic';
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
<head>
<script
dangerouslySetInnerHTML={{
__html: `
(function() {
try {
const theme = localStorage.getItem('theme') || 'system';
const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
const effectiveTheme = theme === 'system' ? systemTheme : theme;
if (effectiveTheme === 'dark') {
document.documentElement.classList.add('dark');
}
} catch (e) {}
})();
`,
}}
/>
</head>
<body className={`${inter.variable} antialiased`}>
<Providers>
<AppLayout>{children}</AppLayout>
</Providers>
</body>
</html>
);
}