@fusion.dev/helix-templates 0.205.2 → 0.207.0

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 (31) hide show
  1. package/README.md +7 -1
  2. package/package.json +2 -1
  3. package/templates/angular/gitignore +8 -0
  4. package/templates/angular/package.json +2 -0
  5. package/templates/angular/src/app/overview.html +1 -1
  6. package/templates/angular/src/app/signup-form.ts +10 -1
  7. package/templates/angular/src/diagnostics.ts +3 -3
  8. package/templates/react-nextjs/app/diagnostics.ts +3 -3
  9. package/templates/react-nextjs/app/overview.tsx +1 -1
  10. package/templates/react-nextjs/app/signup-form.tsx +13 -2
  11. package/templates/react-nextjs/gitignore +10 -0
  12. package/templates/react-nextjs/package.json +2 -0
  13. package/templates/react-vite/gitignore +8 -0
  14. package/templates/react-vite/package.json +2 -0
  15. package/templates/react-vite/src/diagnostics.ts +3 -3
  16. package/templates/react-vite/src/overview.tsx +1 -1
  17. package/templates/react-vite/src/signup-form.tsx +13 -2
  18. package/templates/solid-vite/gitignore +8 -0
  19. package/templates/solid-vite/helix-solid.d.ts +9 -8
  20. package/templates/solid-vite/package.json +2 -0
  21. package/templates/solid-vite/src/diagnostics.ts +3 -3
  22. package/templates/solid-vite/src/overview.tsx +1 -1
  23. package/templates/svelte-vite/gitignore +8 -0
  24. package/templates/svelte-vite/package.json +2 -0
  25. package/templates/svelte-vite/src/Overview.svelte +1 -1
  26. package/templates/svelte-vite/src/diagnostics.ts +3 -3
  27. package/templates/vue-vite/gitignore +8 -0
  28. package/templates/vue-vite/package.json +2 -0
  29. package/templates/vue-vite/src/OverviewPage.vue +1 -1
  30. package/templates/vue-vite/src/diagnostics.ts +3 -3
  31. package/templates.json +1 -61
package/README.md CHANGED
@@ -34,7 +34,9 @@ smoke:scaffold` builds every template and holds what each renders to React on
34
34
  Vite's, in markup and in pictures, so a template that drifts fails CI.
35
35
 
36
36
  Each one starts Helix diagnostics in development, checked against the lint data
37
- of the Helix it installed, and a production build leaves it out.
37
+ of the Helix it installed. A production build never loads them. Every build but
38
+ Angular's leaves them out, and Angular's writes them to a file of their own that
39
+ the page never requests.
38
40
 
39
41
  **There is no build-free HTML template**, and that is a fact about the packages
40
42
  rather than an omission. `@fusion.dev/helix`'s published entry re-exports bare
@@ -56,6 +58,10 @@ own name, and `HELIX_VERSION` becomes this package's version, which is the Helix
56
58
  the templates were published with. The payloads sit under `templates/<id>/` in
57
59
  this package.
58
60
 
61
+ Each template carries its ignore file as `gitignore`, because npm leaves a file
62
+ named `.gitignore` out of a published package. A scaffolder writes it into the
63
+ project as `.gitignore`.
64
+
59
65
  **The named files are named rather than discovered.** Scanning every file for the
60
66
  placeholder would rewrite a template that merely mentions it in prose, and a
61
67
  rename that missed a file would ship rather than fail. The register is held to the
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-templates",
3
3
  "description": "Starter templates for Helix, as data. Read by `helix new` and by `npm create @fusion.dev/helix-app`.",
4
- "version": "0.205.2",
4
+ "version": "0.207.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -17,6 +17,7 @@
17
17
  "types": "./dist/index.d.ts",
18
18
  "default": "./dist/index.js"
19
19
  },
20
+ "./package.json": "./package.json",
20
21
  "./templates.json": "./templates.json"
21
22
  },
22
23
  "files": [
@@ -0,0 +1,8 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by npm run build
5
+ dist
6
+
7
+ # The Angular CLI's build cache
8
+ .angular
@@ -5,6 +5,7 @@
5
5
  "scripts": {
6
6
  "build": "ng build",
7
7
  "dev": "ng serve",
8
+ "diagnostics": "helix diagnostics",
8
9
  "ng": "ng",
9
10
  "start": "ng serve"
10
11
  },
@@ -22,6 +23,7 @@
22
23
  "@angular/build": "^22.2.1",
23
24
  "@angular/cli": "^22.2.1",
24
25
  "@angular/compiler-cli": "^22.2.1",
26
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
25
27
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
26
28
  "typescript": "~6.0.3"
27
29
  }
@@ -48,7 +48,7 @@
48
48
 
49
49
  <!-- The footer is a row across the table: anything you slot goes at the
50
50
  start, and the table's own pagination sits at the end. -->
51
- <helix-text emphasis="subtle" slot="footer" variant="caption">
51
+ <helix-text emphasis="muted" slot="footer" variant="caption">
52
52
  {{ members.length }} people
53
53
  </helix-text>
54
54
  </helix-data-table>
@@ -1,4 +1,4 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, signal } from '@angular/core'
1
+ import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, inject, signal } from '@angular/core'
2
2
  import { teams } from './data'
3
3
  import { DOCS } from './docs'
4
4
 
@@ -31,6 +31,7 @@ export class SignupForm {
31
31
  protected readonly teams = teams
32
32
  protected readonly handle = signal('')
33
33
  protected readonly messages = signal<readonly Message[]>([])
34
+ private readonly view = inject(ChangeDetectorRef)
34
35
 
35
36
  /**
36
37
  * The page takes the submit, so nothing navigates. Remove `preventDefault()`
@@ -51,12 +52,20 @@ export class SignupForm {
51
52
  * with `preventDefault()`, then setting the value you want. Leaving `handle`
52
53
  * as it was does not refuse anything.
53
54
  *
55
+ * **`detectChanges()` puts the cleaned value on the element before the next
56
+ * key arrives.** Without zone.js, Angular renders a signal change in a later
57
+ * task. Keys sent at machine speed, by a barcode scanner, a password manager,
58
+ * or a test, arrive before that task, and each one lands in the text from
59
+ * before the update. Typed by Playwright with no delay, `Ada L!` left the
60
+ * handle empty without `detectChanges()`, and `adal` with it.
61
+ *
54
62
  * No typings ship for Angular, so the event's detail is named here.
55
63
  */
56
64
  protected takeHandle(event: Event): void {
57
65
  event.preventDefault()
58
66
  const { value } = (event as CustomEvent<{ value: string }>).detail
59
67
  this.handle.set(value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ''))
68
+ this.view.detectChanges()
60
69
  }
61
70
 
62
71
  protected dismiss(id: number): void {
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
@@ -86,7 +86,7 @@ export function Overview() {
86
86
 
87
87
  {/* The footer is a row across the table: anything you slot goes at the
88
88
  start, and the table's own pagination sits at the end. */}
89
- <helix-text emphasis="subtle" slot="footer" variant="caption">
89
+ <helix-text emphasis="muted" slot="footer" variant="caption">
90
90
  {members.length} people
91
91
  </helix-text>
92
92
  </helix-data-table>
@@ -8,6 +8,7 @@
8
8
  */
9
9
 
10
10
  import { type FormEvent, useState } from 'react'
11
+ import { flushSync } from 'react-dom'
11
12
  import { teams } from './data'
12
13
  import { DOCS } from './docs'
13
14
 
@@ -83,14 +84,24 @@ export function SignupForm() {
83
84
  So taking the decision means refusing the change with
84
85
  `preventDefault()`, then setting the value you want. Leaving
85
86
  `setHandle` uncalled refuses nothing, and the element keeps the value
86
- you meant to turn down. */}
87
+ you meant to turn down.
88
+
89
+ **`flushSync` puts the cleaned value on the element before the next
90
+ key arrives.** React renders a state update made in a custom
91
+ element's event in a later task. Keys sent at machine speed, by a
92
+ barcode scanner, a password manager, or a test, arrive before that
93
+ task, and each one lands in the text from before the update. Typed
94
+ by Playwright with no delay, `Ada L!` left the handle empty without
95
+ `flushSync`, and `adal` with it. */}
87
96
  <helix-input
88
97
  hint="Lowercase and hyphens, whatever you type."
89
98
  label="Handle"
90
99
  name="handle"
91
100
  onhelix-before-change={(event) => {
92
101
  event.preventDefault()
93
- setHandle(event.detail.value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ''))
102
+ flushSync(() => {
103
+ setHandle(event.detail.value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ''))
104
+ })
94
105
  }}
95
106
  value={handle}
96
107
  />
@@ -0,0 +1,10 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by next dev and next build
5
+ .next
6
+ next-env.d.ts
7
+ *.tsbuildinfo
8
+
9
+ # Environment files for this machine alone, such as .env.local
10
+ .env*.local
@@ -6,6 +6,7 @@
6
6
  "scripts": {
7
7
  "build": "next build",
8
8
  "dev": "next dev",
9
+ "diagnostics": "helix diagnostics",
9
10
  "start": "next start"
10
11
  },
11
12
  "dependencies": {
@@ -16,6 +17,7 @@
16
17
  "react-dom": "^19.2.0"
17
18
  },
18
19
  "devDependencies": {
20
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
19
21
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
20
22
  "@types/node": "^22.10.0",
21
23
  "@types/react": "^19.2.0",
@@ -0,0 +1,8 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by npm run build
5
+ dist
6
+
7
+ # Environment files for this machine alone, such as .env.local
8
+ *.local
@@ -6,6 +6,7 @@
6
6
  "scripts": {
7
7
  "build": "tsc && vite build",
8
8
  "dev": "vite",
9
+ "diagnostics": "helix diagnostics",
9
10
  "preview": "vite preview"
10
11
  },
11
12
  "dependencies": {
@@ -15,6 +16,7 @@
15
16
  "react-dom": "^19.2.0"
16
17
  },
17
18
  "devDependencies": {
19
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
18
20
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
19
21
  "@types/react": "^19.2.0",
20
22
  "@types/react-dom": "^19.2.0",
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
@@ -86,7 +86,7 @@ export function Overview() {
86
86
 
87
87
  {/* The footer is a row across the table: anything you slot goes at the
88
88
  start, and the table's own pagination sits at the end. */}
89
- <helix-text emphasis="subtle" slot="footer" variant="caption">
89
+ <helix-text emphasis="muted" slot="footer" variant="caption">
90
90
  {members.length} people
91
91
  </helix-text>
92
92
  </helix-data-table>
@@ -1,4 +1,5 @@
1
1
  import { type FormEvent, useState } from 'react'
2
+ import { flushSync } from 'react-dom'
2
3
  import { teams } from './data.js'
3
4
  import { DOCS } from './docs.js'
4
5
 
@@ -74,14 +75,24 @@ export function SignupForm() {
74
75
  So taking the decision means refusing the change with
75
76
  `preventDefault()`, then setting the value you want. Leaving
76
77
  `setHandle` uncalled refuses nothing, and the element keeps the value
77
- you meant to turn down. */}
78
+ you meant to turn down.
79
+
80
+ **`flushSync` puts the cleaned value on the element before the next
81
+ key arrives.** React renders a state update made in a custom
82
+ element's event in a later task. Keys sent at machine speed, by a
83
+ barcode scanner, a password manager, or a test, arrive before that
84
+ task, and each one lands in the text from before the update. Typed
85
+ by Playwright with no delay, `Ada L!` left the handle empty without
86
+ `flushSync`, and `adal` with it. */}
78
87
  <helix-input
79
88
  hint="Lowercase and hyphens, whatever you type."
80
89
  label="Handle"
81
90
  name="handle"
82
91
  onhelix-before-change={(event) => {
83
92
  event.preventDefault()
84
- setHandle(event.detail.value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ''))
93
+ flushSync(() => {
94
+ setHandle(event.detail.value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ''))
95
+ })
85
96
  }}
86
97
  value={handle}
87
98
  />
@@ -0,0 +1,8 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by npm run build
5
+ dist
6
+
7
+ # Environment files for this machine alone, such as .env.local
8
+ *.local
@@ -3,12 +3,13 @@
3
3
  *
4
4
  * Generated from the same manifest the API pages read, so a wrong attribute or
5
5
  * a wrong event detail is a compile error. The Solid flavor of the typings adds
6
- * `prop:`, `attr:`, and `on:` to every tag, beside the plain props.
6
+ * `prop:`, `attr:`, and `on:` to every tag, beside the plain props, and types
7
+ * `style` as Solid types it on a `<div>`.
8
+ *
9
+ * **A side-effect import in a `.d.ts`.** The typings augment
10
+ * `solid-js/jsx-runtime`, which is the JSX `jsxImportSource: "solid-js"` reads.
11
+ * An entry in the `types` compiler array resolves as an ambient type package,
12
+ * outside a package's exports map, so naming the subpath there resolves to
13
+ * nothing and every Helix tag comes out untyped.
7
14
  */
8
- import type { CustomElementsSolidJs } from '@fusion.dev/helix/jsx'
9
-
10
- declare module 'solid-js' {
11
- namespace JSX {
12
- interface IntrinsicElements extends CustomElementsSolidJs {}
13
- }
14
- }
15
+ import '@fusion.dev/helix/jsx'
@@ -6,6 +6,7 @@
6
6
  "scripts": {
7
7
  "build": "tsc && vite build",
8
8
  "dev": "vite",
9
+ "diagnostics": "helix diagnostics",
9
10
  "preview": "vite preview"
10
11
  },
11
12
  "dependencies": {
@@ -14,6 +15,7 @@
14
15
  "solid-js": "^1.9.15"
15
16
  },
16
17
  "devDependencies": {
18
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
17
19
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
18
20
  "typescript": "^7.0.2",
19
21
  "vite": "^8.3.0",
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
@@ -77,7 +77,7 @@ export function Overview() {
77
77
 
78
78
  {/* The footer is a row across the table: anything you slot goes at the
79
79
  start, and the table's own pagination sits at the end. */}
80
- <helix-text emphasis="subtle" slot="footer" variant="caption">
80
+ <helix-text emphasis="muted" slot="footer" variant="caption">
81
81
  {members.length} people
82
82
  </helix-text>
83
83
  </helix-data-table>
@@ -0,0 +1,8 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by npm run build
5
+ dist
6
+
7
+ # Environment files for this machine alone, such as .env.local
8
+ *.local
@@ -6,6 +6,7 @@
6
6
  "scripts": {
7
7
  "build": "svelte-check && vite build",
8
8
  "dev": "vite",
9
+ "diagnostics": "helix diagnostics",
9
10
  "preview": "vite preview"
10
11
  },
11
12
  "dependencies": {
@@ -13,6 +14,7 @@
13
14
  "@fusion.dev/helix-styles": "^__HELIX_VERSION__"
14
15
  },
15
16
  "devDependencies": {
17
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
16
18
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
17
19
  "@sveltejs/vite-plugin-svelte": "^7.3.1",
18
20
  "svelte": "^5.57.1",
@@ -65,7 +65,7 @@
65
65
 
66
66
  <!-- The footer is a row across the table: anything you slot goes at the
67
67
  start, and the table's own pagination sits at the end. -->
68
- <helix-text emphasis="subtle" slot="footer" variant="caption">
68
+ <helix-text emphasis="muted" slot="footer" variant="caption">
69
69
  {members.length} people
70
70
  </helix-text>
71
71
  </helix-data-table>
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
@@ -0,0 +1,8 @@
1
+ # Installed by npm install
2
+ node_modules
3
+
4
+ # Written by npm run build
5
+ dist
6
+
7
+ # Environment files for this machine alone, such as .env.local
8
+ *.local
@@ -6,6 +6,7 @@
6
6
  "scripts": {
7
7
  "build": "vue-tsc && vite build",
8
8
  "dev": "vite",
9
+ "diagnostics": "helix diagnostics",
9
10
  "preview": "vite preview"
10
11
  },
11
12
  "dependencies": {
@@ -14,6 +15,7 @@
14
15
  "vue": "^3.5.43"
15
16
  },
16
17
  "devDependencies": {
18
+ "@fusion.dev/helix-cli": "^__HELIX_VERSION__",
17
19
  "@fusion.dev/helix-diagnostics": "^__HELIX_VERSION__",
18
20
  "@vitejs/plugin-vue": "^6.0.9",
19
21
  "typescript": "~6.0.3",
@@ -64,7 +64,7 @@ import { DOCS } from './docs.ts'
64
64
 
65
65
  <!-- The footer is a row across the table: anything you slot goes at the
66
66
  start, and the table's own pagination sits at the end. -->
67
- <helix-text emphasis="subtle" slot="footer" variant="caption">
67
+ <helix-text emphasis="muted" slot="footer" variant="caption">
68
68
  {{ members.length }} people
69
69
  </helix-text>
70
70
  </helix-data-table>
@@ -9,9 +9,9 @@
9
9
  * **Checked against the Helix you installed**, from the lint data it ships, so
10
10
  * nothing is loaded from the network.
11
11
  *
12
- * To print the findings in your terminal as well, run `npx helix diagnostics`
13
- * from `@fusion.dev/helix-cli` beside the dev server, and add
14
- * `sinks: { relay: true }` below.
12
+ * To print the findings in your terminal as well, run `npm run diagnostics`
13
+ * beside the dev server, and add `sinks: { relay: true }` below. The script
14
+ * runs `helix diagnostics` from `@fusion.dev/helix-cli`.
15
15
  */
16
16
  import { initDiagnostics } from '@fusion.dev/helix-diagnostics'
17
17
  import lint from '@fusion.dev/helix/lint.json'
package/templates.json CHANGED
@@ -1,61 +1 @@
1
- {
2
- "placeholder": "__PROJECT_NAME__",
3
- "templates": [
4
- {
5
- "description": "React and TypeScript on Vite. The shortest path to a running app.",
6
- "id": "react-vite",
7
- "named": [
8
- "index.html",
9
- "package.json"
10
- ],
11
- "title": "React (Vite)"
12
- },
13
- {
14
- "description": "React and TypeScript on the Next.js App Router, with the three pages as real routes.",
15
- "id": "react-nextjs",
16
- "named": [
17
- "app/layout.tsx",
18
- "package.json"
19
- ],
20
- "title": "React (Next.js)"
21
- },
22
- {
23
- "description": "Vue and TypeScript on Vite.",
24
- "id": "vue-vite",
25
- "named": [
26
- "index.html",
27
- "package.json"
28
- ],
29
- "title": "Vue (Vite)"
30
- },
31
- {
32
- "description": "Angular and TypeScript on the Angular CLI.",
33
- "id": "angular",
34
- "named": [
35
- "angular.json",
36
- "package.json",
37
- "src/index.html"
38
- ],
39
- "title": "Angular"
40
- },
41
- {
42
- "description": "Svelte and TypeScript on Vite.",
43
- "id": "svelte-vite",
44
- "named": [
45
- "index.html",
46
- "package.json"
47
- ],
48
- "title": "Svelte (Vite)"
49
- },
50
- {
51
- "description": "Solid and TypeScript on Vite.",
52
- "id": "solid-vite",
53
- "named": [
54
- "index.html",
55
- "package.json"
56
- ],
57
- "title": "Solid (Vite)"
58
- }
59
- ],
60
- "version": "__HELIX_VERSION__"
61
- }
1
+ {"placeholder":"__PROJECT_NAME__","templates":[{"description":"React and TypeScript on Vite. The shortest path to a running app.","id":"react-vite","named":["index.html","package.json"],"title":"React (Vite)"},{"description":"React and TypeScript on the Next.js App Router, with the three pages as real routes.","id":"react-nextjs","named":["app/layout.tsx","package.json"],"title":"React (Next.js)"},{"description":"Vue and TypeScript on Vite.","id":"vue-vite","named":["index.html","package.json"],"title":"Vue (Vite)"},{"description":"Angular and TypeScript on the Angular CLI.","id":"angular","named":["angular.json","package.json","src/index.html"],"title":"Angular"},{"description":"Svelte and TypeScript on Vite.","id":"svelte-vite","named":["index.html","package.json"],"title":"Svelte (Vite)"},{"description":"Solid and TypeScript on Vite.","id":"solid-vite","named":["index.html","package.json"],"title":"Solid (Vite)"}],"version":"__HELIX_VERSION__"}