android_generate_navigation_drawer
Create Android navigation drawer components using Jetpack Compose for DHIS2 mobile applications, with options for Navigation Compose integration and Material 3 dynamic colors.
Instructions
Generate Android navigation drawer pattern (Compose)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| componentName | No | Composable name | |
| navCompose | No | Include Navigation Compose sample | |
| dynamicColor | No | Use Material 3 dynamic color in scaffold |
Implementation Reference
- src/index.ts:1118-1121 (handler)MCP tool handler that invokes the navigation drawer generator function with provided arguments and returns the generated code as text content.const aNavArgs = args as any; const aNav = generateAndroidNavigationDrawer(aNavArgs); return { content: [{ type: 'text', text: aNav }] };
- src/webapp-generators.ts:1807-1845 (helper)Core generator function that produces complete Jetpack Compose code for a Material Design Navigation Drawer, including drawer state management, menu items, top app bar with hamburger menu, and scaffold structure.export function generateAndroidNavigationDrawer(args: any): string { const { componentName = 'AppNavigation' } = args; return `# Android Navigation Drawer (Compose): ${componentName} ## Implementation \`\`\`kotlin @OptIn(ExperimentalMaterial3Api::class) @Composable fun ${componentName}() { val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() ModalNavigationDrawer( drawerState = drawerState, drawerContent = { ModalDrawerSheet { NavigationDrawerItem(label = { Text("Dashboard") }, selected = true, onClick = { }) NavigationDrawerItem(label = { Text("Data Entry") }, selected = false, onClick = { }) NavigationDrawerItem(label = { Text("Reports") }, selected = false, onClick = { }) } } ) { Scaffold(topBar = { TopAppBar(title = { Text("My DHIS2 App") }, navigationIcon = { IconButton(onClick = { scope.launch { drawerState.open() } }) { Icon(Icons.Default.Menu, contentDescription = null) } }) }) { padding -> Box(Modifier.padding(padding)) { Text("Content goes here") } } } } \`\`\` `; }
- src/permission-system.ts:174-178 (registration)Tool permissions registration mapping 'android_generate_navigation_drawer' to 'canUseMobileFeatures' permission check for access control.['android_generate_material_form', 'canUseMobileFeatures'], ['android_generate_list_adapter', 'canUseMobileFeatures'], ['android_generate_navigation_drawer', 'canUseMobileFeatures'], ['android_generate_bottom_sheet', 'canUseMobileFeatures'], ]);