# Page Structure

#### .**./src/index.html**

{% code title="index.html" %}

```html
<!doctype html>
<html lang="en">
  <head>
    <title>Able Pro Angular Dashboard Template</title>
    <base href="/" />
    <!-- Meta -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0, minimal-ui" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta
      name="Able Pro Angular Dashboard Template"
      title="Able Pro Angular Dashboard Template"
      content="Able Pro is a modern Angular dashboard template with a responsive design and powerful features to ease the development process."
    />
    <meta
      name="keywords"
      content="Admin templates, Angular Material Admin templates, Angular 21+, Angular Material 21, Dashboard, Dashboard Templates, sass admin templates, html admin templates, Responsive, Angular 21 Admin templates free download, premium Angular 21 Admin templates download"
    />
    <meta name="author" content="PhoenixCoded" />
    <!-- theme style -->
    <link rel="icon" type="image/x-icon" href="favicon.ico" />
    <link rel="preconnect" href="https://fonts.gstatic.com" />
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
    <link rel="stylesheet" href="assets/fonts/inter/inter.css" id="main-font-link" />
    <!-- Buy Now Link script -->
    <script defer src="https://fomo.codedthemes.com/pixel/CDkpF1sQ8Tt5wpMZgqRvKpQiUhpWE3bc"></script>
  </head>
  <body class="mat-typography">
    <app-root></app-root>
  </body>
</html>
```

{% endcode %}

#### **../src/app/app.component.html**

{% code title="app.component.html" %}

```html
<router-outlet>
    <!-- loadChildren from app-routing.module.ts with admin.component.html or auth.component.html -->
</router-outlet>
```

{% endcode %}

#### **../src/app/app-routing.module.ts**

{% code title="app-routing.module.ts" %}

````typescript
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { AdminComponent } from './demo/layout/admin';
import { EmptyComponent } from './demo/layout/empty/empty.component';
import { GuestComponent } from './demo/layout/front/guest.component';
import { AuthGuardChild } from './@theme/helpers/auth.guard';
```

const routes: Routes = [
 {
    path: '',
    component: GuestComponent,
    children: [
     // load children modules with lazy load routing without a common structure, like landing, contact-us, components, etc... 
    ]
  },
  {
    path: '',
    component: AdminComponent,
    canActivateChild: [AuthGuardChild],
    children: [
      // load children modules with lazy load routing for header, side nav common structure, like, dashboard, blank page, widget, etc...
    ]
  },
  {
    path: '',
    component: EmptyComponent,
    children: [
     // load children modules with lazy load routing without a common structure, like login, signup, reset the password, maintenance, etc...
    ]
  },
  {
    path: '**',
    loadComponent: () => import('./demo/pages/maintenance/error/error.component').then((c) => c.ErrorComponent)
  }
];
````

{% endcode %}

#### **../src/app/demo/layout/admin/admin.component.html**

{% code title="admin.component.html" %}

```html
<mat-drawer-container class="example-container" [dir]="direction">
  <mat-drawer #sidebar class="pc-sidebar" [mode]="modeValue" opened>
    <nav>
      <div class="navbar-wrapper">
        <div class="m-header">
          <a>
            <img src="assets/images/logo-dark.svg" />
          </a>
        </div>
        <app-vertical-menu *ngIf="ableProConfig.layout === 'vertical'" [menus]="menus"></app-vertical-menu> <!-- for side nav - vertical.component.html -->
      </div>
    </nav>
  </mat-drawer>
  <app-nav-bar></app-nav-bar>  <!-- for header - toolbar.component.html -->
  <div class="pc-container">
    <div class="coded-wrapper">
      <div class="coded-inner-content">
        <app-breadcrumb [dashboard]="true"></app-breadcrumb> <!-- for common breadcrumb - breadcrumb.component.html -->
        <div class="main-body">
          <div class="page-wrapper">
            <router-outlet>
            <!-- page main body - loadChildren as main page body from src/app/demo/pages/... -->
            </router-outlet>
          </div>
        </div>
      </div>
    </div>
  </div>
  <app-footer></app-footer> <!-- for common footer-->
</mat-drawer-container>
<app-configuration></app-configuration> <!-- for common configuration-->
```

{% endcode %}

#### **../src/app/demo/layout/**&#x65;mpty.component.html

{% code title="empty.component.html" %}

```html
<router-outlet>
    <!-- loadChildren component for guest.component at app-routing.module.ts for authentication blank pages without nav, header, etc. -->
</router-outlet>
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://phoenixcoded.gitbook.io/able-pro/angular/page-structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
