import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:iop_console/iop_console.dart'; import 'client_bootstrap.dart'; import 'client_home_page.dart'; import 'control_plane_status_client.dart'; import 'iop_wire/client_wire_client.dart'; import 'src/integrations/nexo/nexo_notification_host_integration.dart'; const iopDefaultCapabilityPack = IopCapabilityPack( capabilities: [ IopCapability( name: 'Edge Control', description: 'Monitor and configure Edge routing groups.', ), IopCapability( name: 'Node Management', description: 'Track node registration and execution lanes.', ), IopCapability( name: 'Runtime Dispatch', description: 'Trigger manual adapter execution sessions.', ), IopCapability( name: 'Execution Tracing', description: 'View live logs and execution metrics stream.', ), IopCapability( name: 'Maintenance Mode', description: 'Trigger node bootstrap or cluster repairs.', ), ], ); Future main() => runIopClient(); Future applyFullscreenMode() async { await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( statusBarColor: Colors.transparent, systemNavigationBarColor: Colors.transparent, systemNavigationBarDividerColor: Colors.transparent, ), ); } class IopClientApp extends StatelessWidget { final ClientWireClient? testClient; final NexoNotificationHostIntegration? notificationHost; final ControlPlaneStatusRepository? statusRepository; const IopClientApp({ super.key, this.testClient, this.notificationHost, this.statusRepository, }); @override Widget build(BuildContext context) { return MaterialApp( title: 'IOP Client', debugShowCheckedModeBanner: false, theme: ThemeData.dark(useMaterial3: true).copyWith( colorScheme: ColorScheme.fromSeed( seedColor: const Color(0xFF6366F1), brightness: Brightness.dark, primary: const Color(0xFF6366F1), secondary: const Color(0xFF10B981), ), scaffoldBackgroundColor: const Color(0xFF0F172A), ), home: ClientHomePage( testClient: testClient, notificationHost: notificationHost, statusRepository: statusRepository, ), ); } }