@analogjs/platform 0.2.0-beta.6 → 0.2.0-beta.8

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 (45) hide show
  1. package/package.json +15 -3
  2. package/src/lib/nx-plugin/src/generators/app/files/index-pages/css/src/app/pages/index.page.ts__template__ +355 -0
  3. package/src/lib/nx-plugin/src/generators/app/files/index-pages/css-trpc/src/app/pages/index.page.ts__template__ +585 -0
  4. package/src/lib/nx-plugin/src/generators/app/files/index-pages/tailwind/src/app/pages/index.page.ts__template__ +158 -0
  5. package/src/lib/nx-plugin/src/generators/app/files/index-pages/tailwind-trpc/src/app/pages/index.page.ts__template__ +269 -0
  6. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/note.ts__template__ +5 -0
  7. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/server/routes/trpc/[trpc].ts__template__ +8 -0
  8. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/server/trpc/context.ts__template__ +7 -0
  9. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/server/trpc/routers/index.ts__template__ +8 -0
  10. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/server/trpc/routers/notes.ts__template__ +32 -0
  11. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/server/trpc/trpc.ts__template__ +10 -0
  12. package/src/lib/nx-plugin/src/generators/app/files/tRPC/src/trpc-client.ts__template__ +11 -0
  13. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.ts__template__ +0 -10
  14. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.ts__template__ +9 -2
  15. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/styles.css__template__ +3 -74
  16. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/vite.config.ts__template__ +8 -0
  17. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/app/app.component.ts__template__ +0 -10
  18. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/app.config.server.ts__template__ +9 -0
  19. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/app.config.ts__template__ +16 -0
  20. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/main.server.ts__template__ +4 -16
  21. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/main.ts__template__ +4 -5
  22. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/styles.css__template__ +3 -74
  23. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/vite.config.ts__template__ +8 -0
  24. package/src/lib/nx-plugin/src/generators/app/generator.js +13 -2
  25. package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
  26. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js +1 -0
  27. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js.map +1 -1
  28. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.d.ts +3 -0
  29. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.js +15 -0
  30. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.js.map +1 -0
  31. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.d.ts +3 -0
  32. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js +25 -0
  33. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js.map +1 -0
  34. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js +1 -0
  35. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js.map +1 -1
  36. package/src/lib/nx-plugin/src/generators/app/schema.d.ts +2 -1
  37. package/src/lib/nx-plugin/src/generators/app/schema.json +9 -3
  38. package/src/lib/nx-plugin/src/generators/app/versions.d.ts +18 -6
  39. package/src/lib/nx-plugin/src/generators/app/versions.js +19 -7
  40. package/src/lib/nx-plugin/src/generators/app/versions.js.map +1 -1
  41. package/src/lib/nx-plugin/src/generators/preset/schema.d.ts +3 -1
  42. package/src/lib/nx-plugin/src/generators/preset/schema.json +15 -7
  43. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/pages/index.page.ts__template__ +0 -62
  44. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/app/pages/index.page.ts__template__ +0 -62
  45. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/main.providers.ts__template__ +0 -5
@@ -0,0 +1,158 @@
1
+ import { Component } from '@angular/core';
2
+ import { AsyncPipe, DatePipe, NgFor, NgIf } from '@angular/common';
3
+
4
+ @Component({
5
+ selector: '<%= fileName %>-home',
6
+ standalone: true,
7
+ imports: [AsyncPipe, <% if (addTRPC) { %>FormsModule,<% } %> NgFor, DatePipe, NgIf],
8
+ host: {
9
+ class:
10
+ 'flex min-h-screen flex-col text-zinc-900 bg-zinc-50 px-4 pt-8 pb-32',
11
+ },
12
+ template: `
13
+ <main class="flex-1 mx-auto">
14
+ <section class="space-y-6 pb-8 pt-6 md:pb-12 md:pt-10 lg:py-32">
15
+ <div
16
+ class="container flex max-w-[64rem] flex-col items-center gap-4 text-center"
17
+ >
18
+ <svg
19
+ class="mx-auto h-16 w-16 -mb-4"
20
+ xmlns="http://www.w3.org/2000/svg"
21
+ xmlns:svg="http://www.w3.org/2000/svg"
22
+ width="362.26562"
23
+ zoomAndPan="magnify"
24
+ viewBox="0 0 271.62214 192.65233"
25
+ height="256.86978"
26
+ preserveAspectRatio="xMidYMid meet"
27
+ version="1.0"
28
+ id="svg27"
29
+ >
30
+ <defs id="defs11">
31
+ <clipPath id="id1">
32
+ <path
33
+ d="M 127.29688,75.375 H 347.57031 V 267.52734 H 127.29688 Z m 0,0"
34
+ clip-rule="nonzero"
35
+ id="path2"
36
+ />
37
+ </clipPath>
38
+ <clipPath id="id2">
39
+ <path
40
+ d="M 75.871094,104 H 263.33594 V 268.03125 H 75.871094 Z m 0,0"
41
+ clip-rule="nonzero"
42
+ id="path5"
43
+ />
44
+ </clipPath>
45
+ <clipPath id="id3">
46
+ <path
47
+ d="m 105,169.02344 h 210 v 87.875 H 105 Z m 0,0"
48
+ clip-rule="nonzero"
49
+ id="path8"
50
+ />
51
+ </clipPath>
52
+ </defs>
53
+ <g
54
+ clip-path="url(#id1)"
55
+ id="g15"
56
+ transform="translate(-75.931091,-75.378906)"
57
+ >
58
+ <path
59
+ fill="#c30f2e"
60
+ d="M 237.43359,75.378906 347.57031,267.52734 H 127.29688 L 237.43359,75.378906"
61
+ fill-opacity="1"
62
+ fill-rule="nonzero"
63
+ id="path13"
64
+ />
65
+ </g>
66
+ <g
67
+ clip-path="url(#id2)"
68
+ id="g19"
69
+ transform="translate(-75.931091,-75.378906)"
70
+ >
71
+ <path
72
+ fill="#dd0330"
73
+ d="m 169.60156,104 93.73047,164.03125 H 75.871094 L 169.60156,104"
74
+ fill-opacity="1"
75
+ fill-rule="nonzero"
76
+ id="path17"
77
+ />
78
+ </g>
79
+ <path
80
+ fill="#ffffff"
81
+ d="M 252.96344,143.58984 H 19.221253 v -2.56641 H 252.96344 v 2.56641"
82
+ fill-opacity="1"
83
+ fill-rule="nonzero"
84
+ id="path21"
85
+ />
86
+ <g
87
+ clip-path="url(#id3)"
88
+ id="g25"
89
+ transform="translate(-75.931091,-75.378906)"
90
+ >
91
+ <path
92
+ fill="#ffffff"
93
+ d="m 292.78516,256.51172 c -0.91407,0 -1.77344,-0.37891 -2.49219,-1.09766 -4.29297,-4.3125 -4.48047,-21.84765 -4.27344,-48.10937 0.11719,-14.35157 0.27344,-34.00782 -2.01562,-35.5586 -2.23438,0.92578 -2.45704,17.16407 -2.60157,27.91407 -0.17187,12.50781 -0.34765,25.44921 -2.3789,32.03906 -0.60547,1.95312 -1.38672,3.74219 -2.95703,3.59765 -2.21485,-0.19531 -2.92969,-3.6914 -4.58204,-17.48828 -0.6875,-5.73047 -1.39843,-11.65234 -2.23046,-13.94531 -0.10938,-0.28906 -0.20313,-0.51953 -0.28516,-0.69922 -0.88672,2.00391 -1.91016,7.51172 -2.62109,11.33594 -0.98438,5.28125 -1.91407,10.26953 -3.07813,12.44531 -0.89844,1.67188 -2.32422,3.85156 -4.31641,3.42969 -2.71484,-0.57031 -3.52734,-6.04297 -3.76953,-9.25391 0,-27.01562 -3.53515,-30.16015 -4.24218,-30.51562 l -0.11329,0.0859 -0.17187,-0.0391 c -2.52344,1.10157 -2.66016,9.86328 -2.78906,18.33594 -0.10157,6.21484 -0.21094,13.25781 -1.11719,19.84766 -1.17578,8.54297 -2.59766,10.1914 -4.36719,10.08984 -4.07422,-0.27734 -4.1914,-14.30859 -4.1914,-15.90625 0,-0.5 0.0117,-1.08984 0.0273,-1.74219 0.0781,-3.26562 0.21875,-9.33984 -1.78906,-11.2539 -0.26563,-0.25391 -0.64063,-0.54688 -0.9336,-0.46485 -1.42968,0.35938 -2.91406,5.00391 -3.40625,6.53125 -0.15625,0.48438 -0.28125,0.88282 -0.38672,1.15625 -0.082,0.22657 -0.1875,0.54688 -0.3125,0.9336 -1.08203,3.28515 -2.3125,6.5625 -4.41406,7.37109 -0.77734,0.30078 -1.58984,0.23438 -2.35156,-0.19531 -1.01172,-0.57422 -1.83594,-1.7461 -2.60547,-3.69531 -0.42187,-1.07813 -0.78125,-2.17188 -1.14844,-3.26954 -0.44531,-1.33984 -0.90234,-2.72656 -1.46875,-4.04296 -0.44531,-1.02344 -1.55468,-1.48438 -2.96875,-1.23438 -2.9375,0.52344 -3.42968,3.49219 -3.84375,7.96094 -0.0742,0.77734 -0.14453,1.53906 -0.24218,2.25781 -0.0117,0.21094 -0.53125,6.76953 -0.86329,8.85547 -0.91796,5.71875 -2.125,7.97266 -4.1289,7.80859 -4.94531,-0.42187 -7.21485,-22.11328 -7.09375,-31.27734 0.0937,-6.99609 -1.17188,-9.55078 -1.92969,-9.95703 -0.0781,-0.0352 -0.19922,-0.10156 -0.48828,0.10156 -0.89453,0.60547 -1.69141,2.49219 -1.44531,4.47266 2.72265,21.5664 0.71484,46.26562 -4.20313,51.82812 -1.55078,1.75 -3.66015,1.72656 -5.1289,0.25 -4.29688,-4.3125 -4.47657,-21.84765 -4.27344,-48.10937 0.11719,-14.35157 0.26953,-34.00782 -2.01563,-35.5586 -2.23437,0.92578 -2.45312,17.16407 -2.60156,27.91407 -0.17187,12.50781 -0.34766,25.44921 -2.38281,32.03906 -0.60547,1.95312 -1.38672,3.74219 -2.95313,3.59765 -2.21875,-0.19531 -2.92968,-3.6914 -4.58593,-17.48828 -0.6875,-5.73047 -1.39844,-11.65234 -2.23047,-13.94531 -0.10547,-0.28906 -0.19922,-0.51953 -0.28516,-0.69922 -0.88281,2.00391 -1.90625,7.51172 -2.61719,11.33594 -0.98437,5.28125 -1.91406,10.26953 -3.08203,12.44531 -0.89844,1.67188 -2.32422,3.85156 -4.3125,3.42969 -2.71484,-0.57031 -3.52734,-6.04297 -3.76953,-9.25391 -0.004,-27.01562 -3.53516,-30.16015 -4.24219,-30.51562 l -0.11328,0.0859 -0.17578,-0.0391 c -2.51953,1.10157 -2.65625,9.86328 -2.78906,18.33594 -0.0977,6.21484 -0.20703,13.25781 -1.11328,19.84766 -1.17578,8.54297 -2.58594,10.20703 -4.36328,10.08984 -4.08204,-0.27734 -4.19922,-14.30859 -4.19922,-15.90625 0,-0.5 0.0156,-1.08984 0.0312,-1.74219 0.0781,-3.26562 0.21875,-9.33984 -1.78907,-11.2539 -0.26562,-0.25391 -0.64062,-0.54688 -0.93359,-0.46485 -1.42969,0.35938 -2.91797,5.00391 -3.40234,6.53125 -0.15625,0.48047 -0.28907,0.88282 -0.38672,1.15625 -0.0859,0.22266 -0.19141,0.54297 -0.31641,0.92969 -1.08203,3.28516 -2.3125,6.56641 -4.41015,7.375 -0.78125,0.30078 -1.59766,0.23438 -2.35547,-0.19531 -1.01172,-0.57422 -1.83985,-1.7461 -2.60547,-3.69531 -0.42188,-1.07813 -0.78516,-2.17188 -1.14844,-3.26954 -0.44531,-1.33984 -0.90625,-2.72656 -1.47265,-4.04296 -0.44141,-1.02344 -1.55469,-1.48438 -2.96875,-1.23438 -3.38282,0.60156 -4.1836,4.79688 -4.82813,9.80469 l -0.11328,0.89062 -2.55859,-0.33984 0.12109,-0.875 c 0.55859,-4.39063 1.41016,-11.02734 6.92969,-12.00391 2.59765,-0.46093 4.86718,0.61719 5.78125,2.74219 0.61328,1.42188 1.09375,2.85938 1.55468,4.25391 0.34375,1.05078 0.69532,2.10156 1.10157,3.14062 0.71484,1.8125 1.26953,2.28125 1.47656,2.39453 1.29297,-0.40234 2.61328,-4.42187 3.05078,-5.74609 0.13672,-0.42578 0.25391,-0.77734 0.34766,-1.02734 0.0898,-0.2461 0.20703,-0.60547 0.34765,-1.03907 1.16407,-3.64062 2.625,-7.58203 5.21875,-8.23828 0.79297,-0.20312 2.01953,-0.17578 3.35156,1.09766 2.82813,2.69922 2.67969,9 2.58204,13.17187 -0.0156,0.625 -0.0312,1.19532 -0.0312,1.67969 0,6.65625 0.98828,11.30859 1.74218,12.90625 0.39063,-0.81641 1.0586,-2.79297 1.69532,-7.4375 0.88281,-6.4375 0.99609,-13.39844 1.08984,-19.53906 0.17187,-10.86719 0.29297,-18.7461 4.22656,-20.59766 0.58594,-0.35937 1.5586,-0.55469 2.58594,-0.0352 3.80469,1.91406 5.65234,12.61328 5.65234,32.70703 0.23828,3.10547 1.07422,6.375 1.76172,6.84375 0.004,-0.0703 0.5625,-0.41407 1.48047,-2.13282 0.98047,-1.82421 1.95703,-7.07421 2.81641,-11.70312 1.90234,-10.20313 2.76562,-13.78516 5.01562,-13.97266 1.71485,-0.16797 2.50781,2.01172 2.83985,2.92969 0.9375,2.57031 1.63281,8.37109 2.36718,14.51563 0.57422,4.76562 1.39063,11.57031 2.22266,14.32421 0.0898,-0.24218 0.19141,-0.53125 0.30078,-0.88671 1.92578,-6.23829 2.10156,-18.98438 2.26953,-31.31641 0.23438,-17.12891 0.53516,-27.74219 3.66016,-29.95703 0.69531,-0.49219 1.54297,-0.61328 2.37109,-0.33594 3.66016,1.21484 3.94141,11.94531 3.73438,37.99609 -0.14844,18.89063 -0.33203,42.40235 3.52734,46.27735 0.33594,0.33984 0.57422,0.33984 0.66016,0.33984 0.17968,0 0.4375,-0.17187 0.71093,-0.48047 3.90625,-4.41797 6.37891,-27.61718 3.57813,-49.80468 -0.34766,-2.76172 0.71875,-5.66407 2.53906,-6.91407 1.00391,-0.6914 2.16016,-0.78125 3.16016,-0.24609 2.27734,1.21094 3.38281,5.33203 3.29297,12.25391 -0.16016,12.08593 2.74218,26.23046 4.63672,28.48828 0.30078,-0.5 0.89453,-1.8711 1.46484,-5.46094 0.32031,-1.98438 0.84766,-8.65234 0.85547,-8.71875 0.0937,-0.75391 0.16406,-1.48438 0.23047,-2.22656 0.39062,-4.16407 0.87109,-9.34375 5.95703,-10.2461 2.59375,-0.46093 4.86328,0.61328 5.78125,2.74219 0.61328,1.42188 1.08984,2.85938 1.55078,4.25391 0.35156,1.05078 0.70312,2.10156 1.10937,3.14062 0.71094,1.8125 1.26954,2.28125 1.47266,2.39453 1.29297,-0.40234 2.61719,-4.42187 3.05078,-5.74218 0.14063,-0.42579 0.25781,-0.78125 0.34766,-1.03125 0.0937,-0.24219 0.20703,-0.60547 0.34375,-1.03907 1.16797,-3.64062 2.6289,-7.58203 5.22656,-8.23828 0.78516,-0.20312 2.01563,-0.17578 3.34766,1.09766 2.82812,2.69922 2.67968,9 2.58593,13.17187 -0.0195,0.625 -0.0352,1.19532 -0.0352,1.67969 0,6.65625 0.98828,11.30859 1.74219,12.90625 0.38671,-0.81641 1.05468,-2.79297 1.69921,-7.4375 0.88282,-6.4375 0.98829,-13.39844 1.08985,-19.53906 0.16797,-10.86719 0.28906,-18.7461 4.22265,-20.59766 0.58594,-0.35937 1.5586,-0.55469 2.58985,-0.0352 3.80078,1.91406 5.65234,12.61328 5.65234,32.70703 0.23828,3.10547 1.07422,6.375 1.75781,6.84375 0.008,-0.0703 0.5586,-0.41407 1.48438,-2.13282 0.98047,-1.82421 1.95312,-7.07421 2.81641,-11.70312 1.89453,-10.20313 2.76171,-13.78516 5.01171,-13.97266 1.71875,-0.16797 2.51172,2.01172 2.84375,2.92969 0.9336,2.57031 1.62891,8.37109 2.3711,14.51563 0.5664,4.76562 1.38281,11.57031 2.21875,14.32421 0.0859,-0.24218 0.1875,-0.53125 0.29687,-0.88671 1.92578,-6.23829 2.09766,-18.98438 2.26953,-31.31641 0.23047,-17.12891 0.53516,-27.74219 3.66016,-29.95703 0.69922,-0.49219 1.54297,-0.61328 2.37109,-0.33594 3.66407,1.21484 3.94532,11.94531 3.73438,37.99609 -0.14844,18.89063 -0.33203,42.40235 3.52344,46.27735 0.34375,0.33984 0.57812,0.33984 0.66797,0.33984 0.17578,0 0.43359,-0.17187 0.70312,-0.48047 3.91406,-4.41797 6.38281,-27.61718 3.58203,-49.80468 -0.36328,-2.89063 0.45703,-5.80469 1.95313,-6.92579 0.7539,-0.57031 1.67187,-0.6875 2.51562,-0.33203 2.17969,0.92969 3.65625,4.91407 4.51563,12.1875 0.35937,3.04688 0.67968,6.33985 0.98828,9.58985 0.67969,7.09375 1.60156,16.65234 2.84765,18.7539 0.38282,-0.48828 1.16407,-1.80859 2.32422,-5.34765 l 2.44922,0.80078 c -1.80078,5.47265 -3.21094,7.53515 -5.04687,7.32422 -2.85547,-0.31641 -3.67969,-6.08594 -5.13672,-21.28516 -0.3086,-3.23437 -0.625,-6.50781 -0.98438,-9.53906 -1.09375,-9.27735 -2.95312,-10.11719 -2.97265,-10.125 -0.36328,0.18359 -1.20703,2.11328 -0.89453,4.57422 2.71484,21.5664 0.71484,46.26953 -4.20704,51.82812 -0.79296,0.89453 -1.68359,1.34766 -2.63671,1.34766"
94
+ fill-opacity="1"
95
+ fill-rule="nonzero"
96
+ id="path23"
97
+ />
98
+ </g>
99
+ </svg>
100
+ <a
101
+ class="rounded-2xl bg-zinc-200 px-4 py-1.5 text-sm font-medium"
102
+ target="_blank"
103
+ href="https://twitter.com/analogjs"
104
+ >Follow along on Twitter</a
105
+ >
106
+ <h1
107
+ class="font-heading font-medium text-3xl sm:text-5xl md:text-6xl lg:text-7xl"
108
+ >
109
+ <span class="text-[#DD0031]">Analog.</span> The fullstack Angular meta-framework
110
+ </h1>
111
+ <p
112
+ class="max-w-[42rem] leading-normal text-muted-foreground sm:text-xl sm:leading-8"
113
+ >
114
+ Analog is for building applications and websites with Angular.
115
+ <br />Powered by Vite.
116
+ </p>
117
+ <div class="space-x-4">
118
+ <a
119
+ class="inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background bg-zinc-950 text-zinc-50 hover:bg-zinc-950/90 h-11 px-8 rounded-md"
120
+ href="https://analogjs.org"
121
+ >Read the docs</a
122
+ ><a
123
+ target="_blank"
124
+ rel="noreferrer"
125
+ class="inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background border border-input hover:bg-zinc-50 hover:text-zinc-950 h-11 px-8 rounded-md"
126
+ href="https://github.com/analogjs/analog"
127
+ >GitHub</a
128
+ >
129
+ </div>
130
+ </div>
131
+ </section>
132
+ <section id="counter-demo" class="container py-8 md:py-12 lg:py-24">
133
+ <div
134
+ class="mx-auto flex max-w-[58rem] flex-col items-center justify-center gap-4 text-center"
135
+ >
136
+ <h2 class="text-[#DD0031] font-medium text-3xl leading-[1.1]">Counter</h2>
137
+ <p
138
+ class="max-w-[85%] leading-normal text-muted-foreground sm:text-lg sm:leading-7"
139
+ >
140
+ This is a simple interactive counter. Powered by Angular.
141
+ </p>
142
+ <button
143
+ (click)="increment()"
144
+ class="inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background border border-input hover:bg-zinc-50 hover:text-zinc-950 h-11 px-8 rounded-md"
145
+ >
146
+ Count: <span class="ml-1 font-mono">{{ count }}</span>
147
+ </button>
148
+ </div>
149
+ </section>
150
+ </main>
151
+ `,
152
+ })
153
+ export default class HomeComponent {
154
+ public count = 0;
155
+ public increment() {
156
+ this.count++;
157
+ }
158
+ }
@@ -0,0 +1,269 @@
1
+ import { Component } from '@angular/core';
2
+ import { AsyncPipe, DatePipe, NgFor, NgIf } from '@angular/common';
3
+ import { FormsModule, NgForm } from '@angular/forms';
4
+ import { waitFor } from '@analogjs/trpc';
5
+ import { injectTRPCClient } from '../../trpc-client';
6
+ import { Note } from '../../note';
7
+
8
+ @Component({
9
+ selector: '<%= fileName %>-home',
10
+ standalone: true,
11
+ imports: [AsyncPipe, FormsModule, NgFor, DatePipe, NgIf],
12
+ host: {
13
+ class:
14
+ 'flex min-h-screen flex-col text-zinc-900 bg-zinc-50 px-4 pt-8 pb-32',
15
+ },
16
+ template: `
17
+ <main class="flex-1 mx-auto">
18
+ <section class="space-y-6 pb-8 pt-6 md:pb-12 md:pt-10 lg:py-32">
19
+ <div
20
+ class="container flex max-w-[64rem] flex-col items-center gap-4 text-center"
21
+ >
22
+ <svg
23
+ class="mx-auto h-16 w-16 -mb-4"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ xmlns:svg="http://www.w3.org/2000/svg"
26
+ width="362.26562"
27
+ zoomAndPan="magnify"
28
+ viewBox="0 0 271.62214 192.65233"
29
+ height="256.86978"
30
+ preserveAspectRatio="xMidYMid meet"
31
+ version="1.0"
32
+ id="svg27"
33
+ >
34
+ <defs id="defs11">
35
+ <clipPath id="id1">
36
+ <path
37
+ d="M 127.29688,75.375 H 347.57031 V 267.52734 H 127.29688 Z m 0,0"
38
+ clip-rule="nonzero"
39
+ id="path2"
40
+ />
41
+ </clipPath>
42
+ <clipPath id="id2">
43
+ <path
44
+ d="M 75.871094,104 H 263.33594 V 268.03125 H 75.871094 Z m 0,0"
45
+ clip-rule="nonzero"
46
+ id="path5"
47
+ />
48
+ </clipPath>
49
+ <clipPath id="id3">
50
+ <path
51
+ d="m 105,169.02344 h 210 v 87.875 H 105 Z m 0,0"
52
+ clip-rule="nonzero"
53
+ id="path8"
54
+ />
55
+ </clipPath>
56
+ </defs>
57
+ <g
58
+ clip-path="url(#id1)"
59
+ id="g15"
60
+ transform="translate(-75.931091,-75.378906)"
61
+ >
62
+ <path
63
+ fill="#c30f2e"
64
+ d="M 237.43359,75.378906 347.57031,267.52734 H 127.29688 L 237.43359,75.378906"
65
+ fill-opacity="1"
66
+ fill-rule="nonzero"
67
+ id="path13"
68
+ />
69
+ </g>
70
+ <g
71
+ clip-path="url(#id2)"
72
+ id="g19"
73
+ transform="translate(-75.931091,-75.378906)"
74
+ >
75
+ <path
76
+ fill="#dd0330"
77
+ d="m 169.60156,104 93.73047,164.03125 H 75.871094 L 169.60156,104"
78
+ fill-opacity="1"
79
+ fill-rule="nonzero"
80
+ id="path17"
81
+ />
82
+ </g>
83
+ <path
84
+ fill="#ffffff"
85
+ d="M 252.96344,143.58984 H 19.221253 v -2.56641 H 252.96344 v 2.56641"
86
+ fill-opacity="1"
87
+ fill-rule="nonzero"
88
+ id="path21"
89
+ />
90
+ <g
91
+ clip-path="url(#id3)"
92
+ id="g25"
93
+ transform="translate(-75.931091,-75.378906)"
94
+ >
95
+ <path
96
+ fill="#ffffff"
97
+ d="m 292.78516,256.51172 c -0.91407,0 -1.77344,-0.37891 -2.49219,-1.09766 -4.29297,-4.3125 -4.48047,-21.84765 -4.27344,-48.10937 0.11719,-14.35157 0.27344,-34.00782 -2.01562,-35.5586 -2.23438,0.92578 -2.45704,17.16407 -2.60157,27.91407 -0.17187,12.50781 -0.34765,25.44921 -2.3789,32.03906 -0.60547,1.95312 -1.38672,3.74219 -2.95703,3.59765 -2.21485,-0.19531 -2.92969,-3.6914 -4.58204,-17.48828 -0.6875,-5.73047 -1.39843,-11.65234 -2.23046,-13.94531 -0.10938,-0.28906 -0.20313,-0.51953 -0.28516,-0.69922 -0.88672,2.00391 -1.91016,7.51172 -2.62109,11.33594 -0.98438,5.28125 -1.91407,10.26953 -3.07813,12.44531 -0.89844,1.67188 -2.32422,3.85156 -4.31641,3.42969 -2.71484,-0.57031 -3.52734,-6.04297 -3.76953,-9.25391 0,-27.01562 -3.53515,-30.16015 -4.24218,-30.51562 l -0.11329,0.0859 -0.17187,-0.0391 c -2.52344,1.10157 -2.66016,9.86328 -2.78906,18.33594 -0.10157,6.21484 -0.21094,13.25781 -1.11719,19.84766 -1.17578,8.54297 -2.59766,10.1914 -4.36719,10.08984 -4.07422,-0.27734 -4.1914,-14.30859 -4.1914,-15.90625 0,-0.5 0.0117,-1.08984 0.0273,-1.74219 0.0781,-3.26562 0.21875,-9.33984 -1.78906,-11.2539 -0.26563,-0.25391 -0.64063,-0.54688 -0.9336,-0.46485 -1.42968,0.35938 -2.91406,5.00391 -3.40625,6.53125 -0.15625,0.48438 -0.28125,0.88282 -0.38672,1.15625 -0.082,0.22657 -0.1875,0.54688 -0.3125,0.9336 -1.08203,3.28515 -2.3125,6.5625 -4.41406,7.37109 -0.77734,0.30078 -1.58984,0.23438 -2.35156,-0.19531 -1.01172,-0.57422 -1.83594,-1.7461 -2.60547,-3.69531 -0.42187,-1.07813 -0.78125,-2.17188 -1.14844,-3.26954 -0.44531,-1.33984 -0.90234,-2.72656 -1.46875,-4.04296 -0.44531,-1.02344 -1.55468,-1.48438 -2.96875,-1.23438 -2.9375,0.52344 -3.42968,3.49219 -3.84375,7.96094 -0.0742,0.77734 -0.14453,1.53906 -0.24218,2.25781 -0.0117,0.21094 -0.53125,6.76953 -0.86329,8.85547 -0.91796,5.71875 -2.125,7.97266 -4.1289,7.80859 -4.94531,-0.42187 -7.21485,-22.11328 -7.09375,-31.27734 0.0937,-6.99609 -1.17188,-9.55078 -1.92969,-9.95703 -0.0781,-0.0352 -0.19922,-0.10156 -0.48828,0.10156 -0.89453,0.60547 -1.69141,2.49219 -1.44531,4.47266 2.72265,21.5664 0.71484,46.26562 -4.20313,51.82812 -1.55078,1.75 -3.66015,1.72656 -5.1289,0.25 -4.29688,-4.3125 -4.47657,-21.84765 -4.27344,-48.10937 0.11719,-14.35157 0.26953,-34.00782 -2.01563,-35.5586 -2.23437,0.92578 -2.45312,17.16407 -2.60156,27.91407 -0.17187,12.50781 -0.34766,25.44921 -2.38281,32.03906 -0.60547,1.95312 -1.38672,3.74219 -2.95313,3.59765 -2.21875,-0.19531 -2.92968,-3.6914 -4.58593,-17.48828 -0.6875,-5.73047 -1.39844,-11.65234 -2.23047,-13.94531 -0.10547,-0.28906 -0.19922,-0.51953 -0.28516,-0.69922 -0.88281,2.00391 -1.90625,7.51172 -2.61719,11.33594 -0.98437,5.28125 -1.91406,10.26953 -3.08203,12.44531 -0.89844,1.67188 -2.32422,3.85156 -4.3125,3.42969 -2.71484,-0.57031 -3.52734,-6.04297 -3.76953,-9.25391 -0.004,-27.01562 -3.53516,-30.16015 -4.24219,-30.51562 l -0.11328,0.0859 -0.17578,-0.0391 c -2.51953,1.10157 -2.65625,9.86328 -2.78906,18.33594 -0.0977,6.21484 -0.20703,13.25781 -1.11328,19.84766 -1.17578,8.54297 -2.58594,10.20703 -4.36328,10.08984 -4.08204,-0.27734 -4.19922,-14.30859 -4.19922,-15.90625 0,-0.5 0.0156,-1.08984 0.0312,-1.74219 0.0781,-3.26562 0.21875,-9.33984 -1.78907,-11.2539 -0.26562,-0.25391 -0.64062,-0.54688 -0.93359,-0.46485 -1.42969,0.35938 -2.91797,5.00391 -3.40234,6.53125 -0.15625,0.48047 -0.28907,0.88282 -0.38672,1.15625 -0.0859,0.22266 -0.19141,0.54297 -0.31641,0.92969 -1.08203,3.28516 -2.3125,6.56641 -4.41015,7.375 -0.78125,0.30078 -1.59766,0.23438 -2.35547,-0.19531 -1.01172,-0.57422 -1.83985,-1.7461 -2.60547,-3.69531 -0.42188,-1.07813 -0.78516,-2.17188 -1.14844,-3.26954 -0.44531,-1.33984 -0.90625,-2.72656 -1.47265,-4.04296 -0.44141,-1.02344 -1.55469,-1.48438 -2.96875,-1.23438 -3.38282,0.60156 -4.1836,4.79688 -4.82813,9.80469 l -0.11328,0.89062 -2.55859,-0.33984 0.12109,-0.875 c 0.55859,-4.39063 1.41016,-11.02734 6.92969,-12.00391 2.59765,-0.46093 4.86718,0.61719 5.78125,2.74219 0.61328,1.42188 1.09375,2.85938 1.55468,4.25391 0.34375,1.05078 0.69532,2.10156 1.10157,3.14062 0.71484,1.8125 1.26953,2.28125 1.47656,2.39453 1.29297,-0.40234 2.61328,-4.42187 3.05078,-5.74609 0.13672,-0.42578 0.25391,-0.77734 0.34766,-1.02734 0.0898,-0.2461 0.20703,-0.60547 0.34765,-1.03907 1.16407,-3.64062 2.625,-7.58203 5.21875,-8.23828 0.79297,-0.20312 2.01953,-0.17578 3.35156,1.09766 2.82813,2.69922 2.67969,9 2.58204,13.17187 -0.0156,0.625 -0.0312,1.19532 -0.0312,1.67969 0,6.65625 0.98828,11.30859 1.74218,12.90625 0.39063,-0.81641 1.0586,-2.79297 1.69532,-7.4375 0.88281,-6.4375 0.99609,-13.39844 1.08984,-19.53906 0.17187,-10.86719 0.29297,-18.7461 4.22656,-20.59766 0.58594,-0.35937 1.5586,-0.55469 2.58594,-0.0352 3.80469,1.91406 5.65234,12.61328 5.65234,32.70703 0.23828,3.10547 1.07422,6.375 1.76172,6.84375 0.004,-0.0703 0.5625,-0.41407 1.48047,-2.13282 0.98047,-1.82421 1.95703,-7.07421 2.81641,-11.70312 1.90234,-10.20313 2.76562,-13.78516 5.01562,-13.97266 1.71485,-0.16797 2.50781,2.01172 2.83985,2.92969 0.9375,2.57031 1.63281,8.37109 2.36718,14.51563 0.57422,4.76562 1.39063,11.57031 2.22266,14.32421 0.0898,-0.24218 0.19141,-0.53125 0.30078,-0.88671 1.92578,-6.23829 2.10156,-18.98438 2.26953,-31.31641 0.23438,-17.12891 0.53516,-27.74219 3.66016,-29.95703 0.69531,-0.49219 1.54297,-0.61328 2.37109,-0.33594 3.66016,1.21484 3.94141,11.94531 3.73438,37.99609 -0.14844,18.89063 -0.33203,42.40235 3.52734,46.27735 0.33594,0.33984 0.57422,0.33984 0.66016,0.33984 0.17968,0 0.4375,-0.17187 0.71093,-0.48047 3.90625,-4.41797 6.37891,-27.61718 3.57813,-49.80468 -0.34766,-2.76172 0.71875,-5.66407 2.53906,-6.91407 1.00391,-0.6914 2.16016,-0.78125 3.16016,-0.24609 2.27734,1.21094 3.38281,5.33203 3.29297,12.25391 -0.16016,12.08593 2.74218,26.23046 4.63672,28.48828 0.30078,-0.5 0.89453,-1.8711 1.46484,-5.46094 0.32031,-1.98438 0.84766,-8.65234 0.85547,-8.71875 0.0937,-0.75391 0.16406,-1.48438 0.23047,-2.22656 0.39062,-4.16407 0.87109,-9.34375 5.95703,-10.2461 2.59375,-0.46093 4.86328,0.61328 5.78125,2.74219 0.61328,1.42188 1.08984,2.85938 1.55078,4.25391 0.35156,1.05078 0.70312,2.10156 1.10937,3.14062 0.71094,1.8125 1.26954,2.28125 1.47266,2.39453 1.29297,-0.40234 2.61719,-4.42187 3.05078,-5.74218 0.14063,-0.42579 0.25781,-0.78125 0.34766,-1.03125 0.0937,-0.24219 0.20703,-0.60547 0.34375,-1.03907 1.16797,-3.64062 2.6289,-7.58203 5.22656,-8.23828 0.78516,-0.20312 2.01563,-0.17578 3.34766,1.09766 2.82812,2.69922 2.67968,9 2.58593,13.17187 -0.0195,0.625 -0.0352,1.19532 -0.0352,1.67969 0,6.65625 0.98828,11.30859 1.74219,12.90625 0.38671,-0.81641 1.05468,-2.79297 1.69921,-7.4375 0.88282,-6.4375 0.98829,-13.39844 1.08985,-19.53906 0.16797,-10.86719 0.28906,-18.7461 4.22265,-20.59766 0.58594,-0.35937 1.5586,-0.55469 2.58985,-0.0352 3.80078,1.91406 5.65234,12.61328 5.65234,32.70703 0.23828,3.10547 1.07422,6.375 1.75781,6.84375 0.008,-0.0703 0.5586,-0.41407 1.48438,-2.13282 0.98047,-1.82421 1.95312,-7.07421 2.81641,-11.70312 1.89453,-10.20313 2.76171,-13.78516 5.01171,-13.97266 1.71875,-0.16797 2.51172,2.01172 2.84375,2.92969 0.9336,2.57031 1.62891,8.37109 2.3711,14.51563 0.5664,4.76562 1.38281,11.57031 2.21875,14.32421 0.0859,-0.24218 0.1875,-0.53125 0.29687,-0.88671 1.92578,-6.23829 2.09766,-18.98438 2.26953,-31.31641 0.23047,-17.12891 0.53516,-27.74219 3.66016,-29.95703 0.69922,-0.49219 1.54297,-0.61328 2.37109,-0.33594 3.66407,1.21484 3.94532,11.94531 3.73438,37.99609 -0.14844,18.89063 -0.33203,42.40235 3.52344,46.27735 0.34375,0.33984 0.57812,0.33984 0.66797,0.33984 0.17578,0 0.43359,-0.17187 0.70312,-0.48047 3.91406,-4.41797 6.38281,-27.61718 3.58203,-49.80468 -0.36328,-2.89063 0.45703,-5.80469 1.95313,-6.92579 0.7539,-0.57031 1.67187,-0.6875 2.51562,-0.33203 2.17969,0.92969 3.65625,4.91407 4.51563,12.1875 0.35937,3.04688 0.67968,6.33985 0.98828,9.58985 0.67969,7.09375 1.60156,16.65234 2.84765,18.7539 0.38282,-0.48828 1.16407,-1.80859 2.32422,-5.34765 l 2.44922,0.80078 c -1.80078,5.47265 -3.21094,7.53515 -5.04687,7.32422 -2.85547,-0.31641 -3.67969,-6.08594 -5.13672,-21.28516 -0.3086,-3.23437 -0.625,-6.50781 -0.98438,-9.53906 -1.09375,-9.27735 -2.95312,-10.11719 -2.97265,-10.125 -0.36328,0.18359 -1.20703,2.11328 -0.89453,4.57422 2.71484,21.5664 0.71484,46.26953 -4.20704,51.82812 -0.79296,0.89453 -1.68359,1.34766 -2.63671,1.34766"
98
+ fill-opacity="1"
99
+ fill-rule="nonzero"
100
+ id="path23"
101
+ />
102
+ </g>
103
+ </svg>
104
+ <a
105
+ class="rounded-2xl bg-zinc-200 px-4 py-1.5 text-sm font-medium"
106
+ target="_blank"
107
+ href="https://twitter.com/analogjs"
108
+ >Follow along on Twitter</a
109
+ >
110
+ <h1
111
+ class="font-heading font-medium text-3xl sm:text-5xl md:text-6xl lg:text-7xl"
112
+ >
113
+ <span class="text-[#DD0031]">Analog.</span> The fullstack Angular meta-framework
114
+ </h1>
115
+ <p
116
+ class="max-w-[42rem] leading-normal text-muted-foreground sm:text-xl sm:leading-8"
117
+ >
118
+ Analog is for building applications and websites with Angular.
119
+ <br />Powered by Vite.
120
+ </p>
121
+ <div class="space-x-4">
122
+ <a
123
+ class="inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background bg-zinc-950 text-zinc-50 hover:bg-zinc-950/90 h-11 px-8 rounded-md"
124
+ href="https://analogjs.org"
125
+ >Read the docs</a
126
+ ><a
127
+ target="_blank"
128
+ rel="noreferrer"
129
+ class="inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background border border-input hover:bg-zinc-50 hover:text-zinc-950 h-11 px-8 rounded-md"
130
+ href="https://github.com/analogjs/analog"
131
+ >GitHub</a
132
+ >
133
+ </div>
134
+ </div>
135
+ </section>
136
+ <section id="trpc-demo" class="container py-8 md:py-12 lg:py-24">
137
+ <div
138
+ class="mx-auto flex max-w-[58rem] flex-col items-center justify-center gap-4 text-center"
139
+ >
140
+ <h2 class="text-[#DD0031] font-medium text-3xl leading-[1.1]">Leave a note</h2>
141
+ <p
142
+ class="max-w-[85%] leading-normal text-muted-foreground sm:text-lg sm:leading-7"
143
+ >
144
+ This is an example of how to you can use tRPC to superpower you
145
+ client server interaction.
146
+ </p>
147
+ </div>
148
+ <form
149
+ class="mt-8 pb-2 flex items-center"
150
+ #f="ngForm"
151
+ (ngSubmit)="addPost(f)"
152
+ >
153
+ <label class="sr-only" for="newNote"> Note </label>
154
+ <input
155
+ required
156
+ autocomplete="off"
157
+ data-testid="newNoteInput"
158
+ name="newNote"
159
+ [(ngModel)]="newNote"
160
+ class="flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
161
+ />
162
+ <button
163
+ data-testid="addNoteBtn"
164
+ class="ml-2 inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background border border-input hover:bg-zinc-50 hover:text-zinc-950 px-8 h-10 rounded-md"
165
+ >
166
+ +
167
+ </button>
168
+ </form>
169
+ <div class="mt-4 flex flex-col gap-4">
170
+ <div
171
+ *ngFor="
172
+ let note of notes ?? [];
173
+ trackBy: noteTrackBy;
174
+ let i = index
175
+ "
176
+ class="note relative overflow-hidden rounded-lg border bg-background p-2"
177
+ >
178
+ <button
179
+ [attr.data-testid]="'removeNoteAtIndexBtn' + i"
180
+ class="absolute top-4 right-4 inline-flex items-center justify-center text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background border border-transparent hover:bg-zinc-100 hover:text-zinc-950 h-6 px-2 rounded-md"
181
+ (click)="removePost(note.id)"
182
+ >
183
+ <svg
184
+ xmlns="http://www.w3.org/2000/svg"
185
+ fill="none"
186
+ viewBox="0 0 24 24"
187
+ stroke-width="1.5"
188
+ stroke="currentColor"
189
+ class="w-4 h-4"
190
+ >
191
+ <path
192
+ stroke-linecap="round"
193
+ stroke-linejoin="round"
194
+ d="M6 18L18 6M6 6l12 12"
195
+ />
196
+ </svg>
197
+ </button>
198
+ <div class="flex h-[180px] flex-col justify-between rounded-md p-6">
199
+ <div class="space-y-2">
200
+ <h3 class="font-bold">{{ note.note }}</h3>
201
+ <p class="text-sm text-muted-foreground">
202
+ {{ note.createdAt | date }}
203
+ </p>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ <div
210
+ *ngIf="notes.length === 0"
211
+ class="relative overflow-hidden rounded-lg border bg-background p-2"
212
+ >
213
+ <div class="flex h-[180px] flex-col justify-between rounded-md p-6">
214
+ <div class="space-y-2">
215
+ <h3 class="font-bold">
216
+ {{ loadingPosts ? 'Loading...' : 'No notes yet...' }}
217
+ </h3>
218
+ <p class="text-sm text-muted-foreground">
219
+ {{
220
+ loadingPosts
221
+ ? ''
222
+ : 'Add a new one and see them appear here...'
223
+ }}
224
+ </p>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ </section>
229
+ </main>
230
+ `,
231
+ })
232
+ export default class HomeComponent {
233
+ private _trpc = injectTRPCClient();
234
+ public loadingPosts = false;
235
+ public notes: Note[] = [];
236
+ public newNote = '';
237
+
238
+ constructor() {
239
+ waitFor(this._trpc.note.list.query().then((notes) => (this.notes = notes)));
240
+ }
241
+
242
+ public noteTrackBy = (index: number, note: Note) => {
243
+ return note.id;
244
+ };
245
+
246
+ public addPost(form: NgForm) {
247
+ if (!form.valid) {
248
+ form.form.markAllAsTouched();
249
+ return;
250
+ }
251
+ this._trpc.note.create
252
+ .mutate({ title: this.newNote })
253
+ .then(() => this.fetchPosts());
254
+ this.newNote = '';
255
+ form.form.reset();
256
+ }
257
+
258
+ public removePost(id: number) {
259
+ this._trpc.note.remove.mutate({ id }).then(() => this.fetchPosts());
260
+ }
261
+
262
+ private fetchPosts() {
263
+ this.loadingPosts = true;
264
+ this._trpc.note.list.query().then((notes) => {
265
+ this.loadingPosts = false;
266
+ this.notes = notes;
267
+ });
268
+ }
269
+ }
@@ -0,0 +1,5 @@
1
+ export type Note = {
2
+ id: number;
3
+ note: string;
4
+ createdAt: string;
5
+ };
@@ -0,0 +1,8 @@
1
+ import { appRouter } from '../../trpc/routers';
2
+ import { createContext } from '../../trpc/context';
3
+ import { createTrpcNitroHandler } from '@analogjs/trpc';
4
+ // export API handler
5
+ export default createTrpcNitroHandler({
6
+ router: appRouter,
7
+ createContext,
8
+ });
@@ -0,0 +1,7 @@
1
+ import { inferAsyncReturnType } from '@trpc/server';
2
+ /**
3
+ * Creates context for an incoming request
4
+ * @link https://trpc.io/docs/context
5
+ */
6
+ export const createContext = () => ({});
7
+ export type Context = inferAsyncReturnType<typeof createContext>;
@@ -0,0 +1,8 @@
1
+ import { router } from '../trpc';
2
+ import { noteRouter } from './notes';
3
+
4
+ export const appRouter = router({
5
+ note: noteRouter,
6
+ });
7
+ // export type definition of API
8
+ export type AppRouter = typeof appRouter;
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ import { publicProcedure, router } from '../trpc';
3
+ import { Note } from '../../../note';
4
+
5
+ let noteId = 0;
6
+ const notes: Note[] = [];
7
+ export const noteRouter = router({
8
+ create: publicProcedure
9
+ .input(
10
+ z.object({
11
+ title: z.string(),
12
+ })
13
+ )
14
+ .mutation(({ input }) =>
15
+ notes.push({
16
+ id: noteId++,
17
+ note: input.title,
18
+ createdAt: new Date().toISOString(),
19
+ })
20
+ ),
21
+ list: publicProcedure.query(() => notes),
22
+ remove: publicProcedure
23
+ .input(
24
+ z.object({
25
+ id: z.number(),
26
+ })
27
+ )
28
+ .mutation(({ input }) => {
29
+ const index = notes.findIndex((note) => input.id === note.id);
30
+ notes.splice(index, 1);
31
+ }),
32
+ });
@@ -0,0 +1,10 @@
1
+ import { initTRPC } from '@trpc/server';
2
+ import { Context } from './context';
3
+
4
+ const t = initTRPC.context<Context>().create({});
5
+ /**
6
+ * Unprotected procedure
7
+ **/
8
+ export const publicProcedure = t.procedure;
9
+ export const router = t.router;
10
+ export const middleware = t.middleware;
@@ -0,0 +1,11 @@
1
+ import { AppRouter } from './server/trpc/routers';
2
+ import { createTrpcClient } from '@analogjs/trpc';
3
+ import { inject } from '@angular/core';
4
+
5
+ export const { provideTRPCClient, tRPCClient } = createTrpcClient<AppRouter>({
6
+ url: 'http://127.0.0.1:4200/api/trpc',
7
+ });
8
+
9
+ export function injectTRPCClient() {
10
+ return inject(tRPCClient);
11
+ }
@@ -6,15 +6,5 @@ import { RouterOutlet } from '@angular/router';
6
6
  standalone: true,
7
7
  imports: [RouterOutlet],
8
8
  template: ` <router-outlet></router-outlet> `,
9
- styles: [
10
- `
11
- :host {
12
- max-width: 1280px;
13
- margin: 0 auto;
14
- padding: 2rem;
15
- text-align: center;
16
- }
17
- `,
18
- ],
19
9
  })
20
10
  export class AppComponent {}
@@ -1,10 +1,17 @@
1
1
  import 'zone.js';
2
2
  import { bootstrapApplication } from '@angular/platform-browser';
3
3
  import { provideFileRouter } from '@analogjs/router';
4
-
5
4
  import { AppComponent } from './app/app.component';
6
5
  import { mainProviders } from './main.providers';
6
+ <% if (addTRPC) { %>
7
+ import { provideTRPCClient } from './trpc-client';
8
+ <% } %>
7
9
 
8
10
  bootstrapApplication(AppComponent, {
9
- providers: [provideFileRouter(), ...mainProviders],
11
+ providers: [
12
+ provideFileRouter(),
13
+ <% if (addTRPC) { %>
14
+ provideTRPCClient(),
15
+ <% } %>
16
+ ...mainProviders],
10
17
  });
@@ -1,75 +1,4 @@
1
- /* You can add global styles to this file, and also import other style files */
2
- :root {
3
- font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
4
- font-size: 16px;
5
- line-height: 24px;
6
- font-weight: 400;
7
-
8
- color-scheme: light dark;
9
- color: rgba(255, 255, 255, 0.87);
10
- background-color: #242424;
11
-
12
- font-synthesis: none;
13
- text-rendering: optimizeLegibility;
14
- -webkit-font-smoothing: antialiased;
15
- -moz-osx-font-smoothing: grayscale;
16
- -webkit-text-size-adjust: 100%;
17
- }
18
-
19
- a {
20
- font-weight: 500;
21
- color: #646cff;
22
- text-decoration: inherit;
23
- }
24
- a:hover {
25
- color: #535bf2;
26
- }
27
-
28
- body {
29
- margin: 0;
30
- display: flex;
31
- place-items: center;
32
- min-width: 320px;
33
- min-height: 100vh;
34
- }
35
-
36
- h1 {
37
- font-size: 3.2em;
38
- line-height: 1.1;
39
- }
40
-
41
- button {
42
- border-radius: 8px;
43
- border: 1px solid transparent;
44
- padding: 0.6em 1.2em;
45
- font-size: 1em;
46
- font-weight: 500;
47
- font-family: inherit;
48
- background-color: #1a1a1a;
49
- cursor: pointer;
50
- transition: border-color 0.25s;
51
- }
52
- button:hover {
53
- border-color: #646cff;
54
- }
55
- button:focus,
56
- button:focus-visible {
57
- outline: 4px auto -webkit-focus-ring-color;
58
- }
59
-
60
- .card {
61
- padding: 2em;
62
- }
63
-
64
- @media (prefers-color-scheme: light) {
65
- :root {
66
- color: #213547;
67
- background-color: #ffffff;
68
- }
69
- a:hover {
70
- color: #747bff;
71
- }
72
- button {
73
- background-color: #f9f9f9;
74
- }
1
+ html, body {
2
+ display: block;
3
+ height: 100%;
75
4
  }