create-analog 2.0.0-alpha.2 → 2.0.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/files/styles.css +4 -85
  2. package/index.js +25 -93
  3. package/package.json +3 -3
  4. package/template-angular-v17/package.json +8 -8
  5. package/template-angular-v18/package.json +9 -9
  6. package/template-angular-v18/vite.config.ts +1 -1
  7. package/{template-angular-v16 → template-angular-v19}/README.md +1 -1
  8. package/{template-angular-v16 → template-angular-v19}/_gitignore +2 -0
  9. package/{template-angular-v16 → template-angular-v19}/angular.json +1 -1
  10. package/{template-angular-v16 → template-angular-v19}/index.html +1 -1
  11. package/template-angular-v19/package.json +53 -0
  12. package/{template-latest → template-angular-v19}/src/app/app.component.ts +0 -1
  13. package/{template-angular-v16 → template-angular-v19}/src/app/app.config.server.ts +3 -8
  14. package/template-angular-v19/src/app/app.config.ts +20 -0
  15. package/template-angular-v19/src/app/pages/index.page.ts +54 -0
  16. package/template-angular-v19/src/main.server.ts +8 -0
  17. package/{template-angular-v16 → template-angular-v19}/src/main.ts +2 -2
  18. package/{template-angular-v16 → template-angular-v19}/src/styles.css +5 -0
  19. package/{template-angular-v16 → template-angular-v19}/tsconfig.app.json +2 -3
  20. package/{template-angular-v16 → template-angular-v19}/tsconfig.json +3 -6
  21. package/{template-angular-v16 → template-angular-v19}/tsconfig.spec.json +3 -3
  22. package/{template-angular-v16 → template-angular-v19}/vite.config.ts +5 -4
  23. package/template-blog/.vscode/extensions.json +1 -1
  24. package/template-blog/angular.json +1 -1
  25. package/template-blog/package.json +24 -18
  26. package/template-blog/src/app/app.config.ts +8 -3
  27. package/{template-latest/src/app/app.component.spec.ts → template-blog/src/app/app.spec.ts} +1 -1
  28. package/template-blog/src/app/{app.component.ts → app.ts} +0 -1
  29. package/template-blog/src/app/pages/blog/[slug].page.ts +0 -1
  30. package/template-blog/src/app/pages/blog/index.page.ts +0 -1
  31. package/template-blog/src/test-setup.ts +6 -5
  32. package/template-blog/tsconfig.json +5 -3
  33. package/template-blog/vite.config.ts +3 -3
  34. package/template-latest/.vscode/extensions.json +1 -1
  35. package/template-latest/angular.json +1 -1
  36. package/template-latest/package.json +24 -18
  37. package/template-latest/src/app/app.config.ts +8 -3
  38. package/template-latest/src/app/{app-root.spec.ts → app.spec.ts} +4 -4
  39. package/template-latest/src/app/app.ts +17 -0
  40. package/template-latest/src/app/pages/analog-welcome.ts +263 -0
  41. package/template-latest/src/app/pages/index.page.ts +5 -47
  42. package/template-latest/src/styles.css +3 -79
  43. package/template-latest/src/test-setup.ts +6 -5
  44. package/template-latest/tsconfig.json +5 -3
  45. package/template-latest/vite.config.ts +4 -2
  46. package/template-minimal/.vscode/extensions.json +1 -1
  47. package/template-minimal/angular.json +1 -1
  48. package/template-minimal/package.json +24 -18
  49. package/template-minimal/src/app/app.config.ts +8 -3
  50. package/template-minimal/src/app/{app.component.ts → app.ts} +0 -1
  51. package/template-minimal/src/app/pages/index.page.ts +0 -1
  52. package/template-minimal/tsconfig.json +1 -1
  53. package/template-minimal/vite.config.ts +3 -3
  54. package/files/analog-env.d.ts +0 -13
  55. package/files/postcss.config.cjs +0 -6
  56. package/files/tailwind.config.ts +0 -9
  57. package/template-angular-v16/package.json +0 -54
  58. package/template-angular-v16/src/app/app.component.spec.ts +0 -17
  59. package/template-angular-v16/src/app/app.component.ts +0 -20
  60. package/template-angular-v16/src/app/app.config.ts +0 -12
  61. package/template-angular-v16/src/app/pages/index.page.ts +0 -49
  62. package/template-angular-v16/src/main.server.ts +0 -26
  63. package/template-angular-v18/src/app/app-root.ag +0 -16
  64. package/template-angular-v18/src/app/app-root.spec.ts +0 -20
  65. package/template-angular-v18/src/app/pages/index.page.ag +0 -53
  66. package/template-blog/src/app/app-root.ag +0 -25
  67. package/template-blog/src/app/app-root.spec.ts +0 -20
  68. package/template-blog/src/app/pages/blog/[slug].page.ag +0 -24
  69. package/template-blog/src/app/pages/blog/index.page.ag +0 -32
  70. package/template-latest/src/app/app-root.ag +0 -16
  71. package/template-latest/src/app/pages/index.page.ag +0 -53
  72. package/template-minimal/src/app/app-root.ag +0 -7
  73. package/template-minimal/src/app/pages/index.page.ag +0 -32
  74. /package/{template-angular-v16 → template-angular-v19}/.editorconfig +0 -0
  75. /package/{template-angular-v16 → template-angular-v19}/.vscode/extensions.json +0 -0
  76. /package/{template-angular-v16 → template-angular-v19}/.vscode/launch.json +0 -0
  77. /package/{template-angular-v16 → template-angular-v19}/.vscode/tasks.json +0 -0
  78. /package/{template-angular-v16/src/assets → template-angular-v19/public}/.gitkeep +0 -0
  79. /package/{template-angular-v16/src/assets → template-angular-v19/public}/analog.svg +0 -0
  80. /package/{template-angular-v16 → template-angular-v19/public}/favicon.ico +0 -0
  81. /package/{template-angular-v16/src/assets → template-angular-v19/public}/vite.svg +0 -0
  82. /package/{template-blog → template-angular-v19}/src/app/app.component.spec.ts +0 -0
  83. /package/{template-angular-v16/src/server/routes → template-angular-v19/src/server/routes/api}/v1/hello.ts +0 -0
  84. /package/{template-angular-v16/src/test.ts → template-angular-v19/src/test-setup.ts} +0 -0
  85. /package/{template-angular-v16 → template-angular-v19}/src/vite-env.d.ts +0 -0
  86. /package/template-blog/src/server/routes/{v1 → api/v1}/hello.ts +0 -0
  87. /package/template-latest/src/server/routes/{v1 → api/v1}/hello.ts +0 -0
@@ -21,6 +21,7 @@ a {
21
21
  color: #646cff;
22
22
  text-decoration: inherit;
23
23
  }
24
+
24
25
  a:hover {
25
26
  color: #535bf2;
26
27
  }
@@ -49,9 +50,11 @@ button {
49
50
  cursor: pointer;
50
51
  transition: border-color 0.25s;
51
52
  }
53
+
52
54
  button:hover {
53
55
  border-color: #646cff;
54
56
  }
57
+
55
58
  button:focus,
56
59
  button:focus-visible {
57
60
  outline: 4px auto -webkit-focus-ring-color;
@@ -66,9 +69,11 @@ button:focus-visible {
66
69
  color: #213547;
67
70
  background-color: #ffffff;
68
71
  }
72
+
69
73
  a:hover {
70
74
  color: #747bff;
71
75
  }
76
+
72
77
  button {
73
78
  background-color: #f9f9f9;
74
79
  }
@@ -2,14 +2,13 @@
2
2
  {
3
3
  "extends": "./tsconfig.json",
4
4
  "compilerOptions": {
5
- "composite": false,
6
5
  "outDir": "./out-tsc/app",
7
6
  "types": []
8
7
  },
9
8
  "files": ["src/main.ts", "src/main.server.ts"],
10
9
  "include": [
11
10
  "src/**/*.d.ts",
12
- "src/app/routes/**/*.ts",
13
- "src/app/pages/**/*.page.ts"
11
+ "src/app/pages/**/*.page.ts",
12
+ "src/server/middleware/**/*.ts"
14
13
  ]
15
14
  }
@@ -14,7 +14,8 @@
14
14
  "declaration": false,
15
15
  "downlevelIteration": true,
16
16
  "experimentalDecorators": true,
17
- "moduleResolution": "node",
17
+ "moduleResolution": "bundler",
18
+ "isolatedModules": true,
18
19
  "importHelpers": true,
19
20
  "target": "ES2022",
20
21
  "module": "ES2022",
@@ -27,9 +28,5 @@
27
28
  "strictInjectionParameters": true,
28
29
  "strictInputAccessModifiers": true,
29
30
  "strictTemplates": true
30
- },
31
- "references": [
32
- { "path": "tsconfig.app.json" },
33
- { "path": "tsconfig.spec.json" }
34
- ]
31
+ }
35
32
  }
@@ -2,10 +2,10 @@
2
2
  {
3
3
  "extends": "./tsconfig.json",
4
4
  "compilerOptions": {
5
- "composite": false,
6
5
  "outDir": "./out-tsc/spec",
6
+ "target": "es2016",
7
7
  "types": ["node", "vitest/globals"]
8
8
  },
9
- "files": ["src/test.ts"],
10
- "include": ["src/**/*.spec.ts", "src/**/*.ts"]
9
+ "files": ["src/test-setup.ts"],
10
+ "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
11
11
  }
@@ -1,22 +1,23 @@
1
1
  /// <reference types="vitest" />
2
2
 
3
3
  import { defineConfig } from 'vite';
4
- import analog from '@analogjs/platform';
4
+ import analog from '@analogjs/platform';__TAILWIND_IMPORT__
5
5
 
6
6
  // https://vitejs.dev/config/
7
7
  export default defineConfig(({ mode }) => ({
8
- publicDir: 'src/assets',
9
8
  build: {
10
9
  target: ['es2020'],
11
10
  },
12
11
  resolve: {
13
12
  mainFields: ['module'],
14
13
  },
15
- plugins: [analog()],
14
+ plugins: [
15
+ analog(),__TAILWIND_PLUGIN__
16
+ ],
16
17
  test: {
17
18
  globals: true,
18
19
  environment: 'jsdom',
19
- setupFiles: ['src/test.ts'],
20
+ setupFiles: ['src/test-setup.ts'],
20
21
  include: ['**/*.spec.ts'],
21
22
  reporters: ['default'],
22
23
  },
@@ -1,4 +1,4 @@
1
1
  {
2
2
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3
- "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
3
+ "recommendations": ["angular.ng-template", "analogjs.vscode-analog", "vitest.explorer"]
4
4
  }
@@ -5,7 +5,7 @@
5
5
  "projects": {
6
6
  "blog": {
7
7
  "projectType": "application",
8
- "root": "",
8
+ "root": ".",
9
9
  "sourceRoot": "src",
10
10
  "prefix": "blog",
11
11
  "architect": {
@@ -3,20 +3,21 @@
3
3
  "version": "0.0.0",
4
4
  "type": "module",
5
5
  "engines": {
6
- "node": ">=18.19.1"
6
+ "node": ">=20.19.1"
7
7
  },
8
8
  "scripts": {
9
9
  "ng": "ng",
10
- "dev": "ng serve",
11
- "start": "ng serve",
12
- "build": "ng build",
13
- "watch": "ng build --watch --configuration development",
14
- "test": "ng test"
10
+ "dev": "vite",
11
+ "start": "vite",
12
+ "build": "vite build",
13
+ "watch": "vite build --watch",
14
+ "test": "vitest",
15
+ "preview": "node dist/analog/server/index.mjs"
15
16
  },
16
17
  "private": true,
17
18
  "dependencies": {
18
- "@analogjs/content": "^2.0.0-alpha.2",
19
- "@analogjs/router": "^2.0.0-alpha.2",
19
+ "@analogjs/content": "^2.0.0-alpha.20",
20
+ "@analogjs/router": "^2.0.0-alpha.20",
20
21
  "@angular/animations": "^19.0.0",
21
22
  "@angular/common": "^19.0.0",
22
23
  "@angular/compiler": "^19.0.0",
@@ -27,26 +28,31 @@
27
28
  "@angular/platform-server": "^19.0.0",
28
29
  "@angular/router": "^19.0.0",
29
30
  "front-matter": "^4.0.2",
30
- "marked": "^5.0.2",
31
- "marked-gfm-heading-id": "^3.1.0",
32
- "marked-highlight": "^2.0.1",
33
- "marked-mangle": "^1.1.7",
31
+ "marked": "^15.0.7",
32
+ "marked-gfm-heading-id": "^4.1.1",
33
+ "marked-highlight": "^2.2.1",
34
+ "marked-mangle": "^1.1.10",
34
35
  "rxjs": "~7.8.0",
35
36
  "tslib": "^2.3.0",
36
37
  "zone.js": "~0.15.0"
37
38
  },
38
39
  "devDependencies": {
39
- "@analogjs/platform": "^2.0.0-alpha.2",
40
- "@analogjs/vite-plugin-angular": "^2.0.0-alpha.2",
41
- "@analogjs/vitest-angular": "^2.0.0-alpha.2",
40
+ "@analogjs/platform": "^2.0.0-alpha.20",
41
+ "@analogjs/vite-plugin-angular": "^2.0.0-alpha.20",
42
+ "@analogjs/vitest-angular": "^2.0.0-alpha.20",
42
43
  "@angular-devkit/build-angular": "^19.0.0",
43
44
  "@angular/build": "^19.0.0",
44
45
  "@angular/cli": "^19.0.0",
45
46
  "@angular/compiler-cli": "^19.0.0",
46
47
  "jsdom": "^22.0.0",
47
- "typescript": "~5.5.0",
48
- "vite": "^6.0.0",
48
+ "typescript": "~5.8.0",
49
+ "vite": "^7.0.0",
49
50
  "vite-tsconfig-paths": "^4.2.0",
50
- "vitest": "^2.0.0"
51
+ "vitest": "^3.0.0"
52
+ },
53
+ "overrides": {
54
+ "@analogjs/platform": {
55
+ "vite": "$vite"
56
+ }
51
57
  }
52
58
  }
@@ -3,21 +3,26 @@ import {
3
3
  withFetch,
4
4
  withInterceptors,
5
5
  } from '@angular/common/http';
6
- import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
7
- import { provideClientHydration } from '@angular/platform-browser';
6
+ import {
7
+ ApplicationConfig,
8
+ provideBrowserGlobalErrorListeners,
9
+ provideZoneChangeDetection
10
+ } from '@angular/core';
11
+ import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
8
12
  import { provideFileRouter, requestContextInterceptor } from '@analogjs/router';
9
13
  import { provideContent, withMarkdownRenderer } from '@analogjs/content';
10
14
  import { __HIGHLIGHTER__ } from '@analogjs/content/__HIGHLIGHTER_ENTRY_POINT__';
11
15
 
12
16
  export const appConfig: ApplicationConfig = {
13
17
  providers: [
18
+ provideBrowserGlobalErrorListeners(),
14
19
  provideZoneChangeDetection({ eventCoalescing: true }),
15
20
  provideFileRouter(),
16
21
  provideHttpClient(
17
22
  withFetch(),
18
23
  withInterceptors([requestContextInterceptor])
19
24
  ),
20
- provideClientHydration(),
25
+ provideClientHydration(withEventReplay()),
21
26
  provideContent(withMarkdownRenderer(), __HIGHLIGHTER__()),
22
27
  ],
23
28
  };
@@ -2,7 +2,7 @@ import { TestBed } from '@angular/core/testing';
2
2
  import { provideRouter } from '@angular/router';
3
3
  import { provideLocationMocks } from '@angular/common/testing';
4
4
 
5
- import { AppComponent } from './app.component';
5
+ import { AppComponent } from './app';
6
6
 
7
7
  describe('AppComponent', () => {
8
8
  beforeEach(async () => {
@@ -3,7 +3,6 @@ import { RouterLink, RouterOutlet } from '@angular/router';
3
3
 
4
4
  @Component({
5
5
  selector: 'app-root',
6
- standalone: true,
7
6
  imports: [RouterLink, RouterOutlet],
8
7
  template: `
9
8
  <nav>
@@ -6,7 +6,6 @@ import PostAttributes from '../../post-attributes';
6
6
 
7
7
  @Component({
8
8
  selector: 'app-blog-post',
9
- standalone: true,
10
9
  imports: [AsyncPipe, MarkdownComponent],
11
10
  template: `
12
11
  @if (post$ | async; as post) {
@@ -6,7 +6,6 @@ import PostAttributes from '../../post-attributes';
6
6
 
7
7
  @Component({
8
8
  selector: 'app-blog',
9
- standalone: true,
10
9
  imports: [RouterLink],
11
10
  template: `
12
11
  <h1>Blog Archive</h1>
@@ -1,12 +1,13 @@
1
+ import '@angular/compiler';
1
2
  import '@analogjs/vitest-angular/setup-zone';
2
3
 
3
4
  import {
4
- BrowserDynamicTestingModule,
5
- platformBrowserDynamicTesting,
6
- } from '@angular/platform-browser-dynamic/testing';
5
+ BrowserTestingModule,
6
+ platformBrowserTesting,
7
+ } from '@angular/platform-browser/testing';
7
8
  import { getTestBed } from '@angular/core/testing';
8
9
 
9
10
  getTestBed().initTestEnvironment(
10
- BrowserDynamicTestingModule,
11
- platformBrowserDynamicTesting()
11
+ BrowserTestingModule,
12
+ platformBrowserTesting()
12
13
  );
@@ -1,4 +1,3 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
1
  {
3
2
  "compileOnSave": false,
4
3
  "compilerOptions": {
@@ -14,7 +13,7 @@
14
13
  "declaration": false,
15
14
  "downlevelIteration": true,
16
15
  "experimentalDecorators": true,
17
- "moduleResolution": "node",
16
+ "moduleResolution": "bundler",
18
17
  "isolatedModules": true,
19
18
  "importHelpers": true,
20
19
  "target": "ES2022",
@@ -28,5 +27,8 @@
28
27
  "strictInjectionParameters": true,
29
28
  "strictInputAccessModifiers": true,
30
29
  "strictTemplates": true
31
- }
30
+ },
31
+ "references": [
32
+ { "path": "tsconfig.spec.json" }
33
+ ]
32
34
  }
@@ -1,7 +1,7 @@
1
1
  /// <reference types="vitest" />
2
2
 
3
3
  import { defineConfig } from 'vite';
4
- import analog from '@analogjs/platform';
4
+ import analog from '@analogjs/platform';__TAILWIND_IMPORT__
5
5
 
6
6
  // https://vitejs.dev/config/
7
7
  export default defineConfig(({ mode }) => ({
@@ -18,8 +18,8 @@ export default defineConfig(({ mode }) => ({
18
18
  },
19
19
  prerender: {
20
20
  routes: ['/blog', '/blog/2022-12-27-my-first-post'],
21
- },__ANALOG_SFC_CONFIG__
22
- }),
21
+ },
22
+ }),__TAILWIND_PLUGIN__
23
23
  ],
24
24
  test: {
25
25
  globals: true,
@@ -1,4 +1,4 @@
1
1
  {
2
2
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3
- "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
3
+ "recommendations": ["angular.ng-template", "analogjs.vscode-analog", "vitest.explorer"]
4
4
  }
@@ -5,7 +5,7 @@
5
5
  "projects": {
6
6
  "my-app": {
7
7
  "projectType": "application",
8
- "root": "",
8
+ "root": ".",
9
9
  "sourceRoot": "src",
10
10
  "prefix": "app",
11
11
  "architect": {
@@ -3,20 +3,21 @@
3
3
  "version": "0.0.0",
4
4
  "type": "module",
5
5
  "engines": {
6
- "node": ">=18.19.1"
6
+ "node": ">=20.19.1"
7
7
  },
8
8
  "scripts": {
9
9
  "ng": "ng",
10
- "dev": "ng serve",
11
- "start": "ng serve",
12
- "build": "ng build",
13
- "watch": "ng build --watch --configuration development",
14
- "test": "ng test"
10
+ "dev": "vite",
11
+ "start": "vite",
12
+ "build": "vite build",
13
+ "watch": "vite build --watch",
14
+ "test": "vitest",
15
+ "preview": "node dist/analog/server/index.mjs"
15
16
  },
16
17
  "private": true,
17
18
  "dependencies": {
18
- "@analogjs/content": "^2.0.0-alpha.2",
19
- "@analogjs/router": "^2.0.0-alpha.2",
19
+ "@analogjs/content": "^2.0.0-alpha.20",
20
+ "@analogjs/router": "^2.0.0-alpha.20",
20
21
  "@angular/animations": "^19.0.0",
21
22
  "@angular/common": "^19.0.0",
22
23
  "@angular/compiler": "^19.0.0",
@@ -27,27 +28,32 @@
27
28
  "@angular/platform-server": "^19.0.0",
28
29
  "@angular/router": "^19.0.0",
29
30
  "front-matter": "^4.0.2",
30
- "marked": "^5.0.2",
31
- "marked-gfm-heading-id": "^3.1.0",
32
- "marked-highlight": "^2.0.1",
33
- "marked-mangle": "^1.1.7",
31
+ "marked": "^15.0.7",
32
+ "marked-gfm-heading-id": "^4.1.1",
33
+ "marked-highlight": "^2.2.1",
34
+ "marked-mangle": "^1.1.10",
34
35
  "prismjs": "^1.29.0",
35
36
  "rxjs": "~7.8.0",
36
37
  "tslib": "^2.3.0",
37
38
  "zone.js": "~0.15.0"
38
39
  },
39
40
  "devDependencies": {
40
- "@analogjs/platform": "^2.0.0-alpha.2",
41
- "@analogjs/vite-plugin-angular": "^2.0.0-alpha.2",
42
- "@analogjs/vitest-angular": "^2.0.0-alpha.2",
41
+ "@analogjs/platform": "^2.0.0-alpha.20",
42
+ "@analogjs/vite-plugin-angular": "^2.0.0-alpha.20",
43
+ "@analogjs/vitest-angular": "^2.0.0-alpha.20",
43
44
  "@angular-devkit/build-angular": "^19.0.0",
44
45
  "@angular/build": "^19.0.0",
45
46
  "@angular/cli": "^19.0.0",
46
47
  "@angular/compiler-cli": "^19.0.0",
47
48
  "jsdom": "^22.0.0",
48
- "typescript": "~5.5.0",
49
- "vite": "^6.0.0",
49
+ "typescript": "~5.8.0",
50
+ "vite": "^7.0.0",
50
51
  "vite-tsconfig-paths": "^4.2.0",
51
- "vitest": "^2.0.0"
52
+ "vitest": "^3.0.0"
53
+ },
54
+ "overrides": {
55
+ "@analogjs/platform": {
56
+ "vite": "$vite"
57
+ }
52
58
  }
53
59
  }
@@ -3,18 +3,23 @@ import {
3
3
  withFetch,
4
4
  withInterceptors,
5
5
  } from '@angular/common/http';
6
- import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
7
- import { provideClientHydration } from '@angular/platform-browser';
6
+ import {
7
+ ApplicationConfig,
8
+ provideBrowserGlobalErrorListeners,
9
+ provideZoneChangeDetection
10
+ } from '@angular/core';
11
+ import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
8
12
  import { provideFileRouter, requestContextInterceptor } from '@analogjs/router';
9
13
 
10
14
  export const appConfig: ApplicationConfig = {
11
15
  providers: [
16
+ provideBrowserGlobalErrorListeners(),
12
17
  provideZoneChangeDetection({ eventCoalescing: true }),
13
18
  provideFileRouter(),
14
19
  provideHttpClient(
15
20
  withFetch(),
16
21
  withInterceptors([requestContextInterceptor])
17
22
  ),
18
- provideClientHydration(),
23
+ provideClientHydration(withEventReplay()),
19
24
  ],
20
25
  };
@@ -2,18 +2,18 @@ import { TestBed } from '@angular/core/testing';
2
2
  import { provideRouter } from '@angular/router';
3
3
  import { provideLocationMocks } from '@angular/common/testing';
4
4
 
5
- import App from './app-root.ag';
5
+ import { AppComponent } from './app';
6
6
 
7
- describe('App', () => {
7
+ describe('AppComponent', () => {
8
8
  beforeEach(async () => {
9
9
  await TestBed.configureTestingModule({
10
- imports: [App],
10
+ imports: [AppComponent],
11
11
  providers: [provideRouter([]), provideLocationMocks()],
12
12
  }).compileComponents();
13
13
  });
14
14
 
15
15
  it('should create the app', () => {
16
- const fixture = TestBed.createComponent(App);
16
+ const fixture = TestBed.createComponent(AppComponent);
17
17
  const app = fixture.componentInstance;
18
18
  expect(app).toBeTruthy();
19
19
  });
@@ -0,0 +1,17 @@
1
+ import { Component } from '@angular/core';
2
+ import { RouterOutlet } from '@angular/router';
3
+
4
+ @Component({
5
+ selector: 'app-root',
6
+ imports: [RouterOutlet],
7
+ template: `<router-outlet />`,
8
+ styles: `
9
+ :host {
10
+ max-width: 1280px;
11
+ margin: 0 auto;
12
+ padding: 2rem;
13
+ text-align: center;
14
+ }
15
+ `,
16
+ })
17
+ export class AppComponent {}