@tsparticles/template-portfolio 4.3.2 → 4.5.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 (42) hide show
  1. package/CHANGELOG.md +10 -9
  2. package/package.json +12 -3
  3. package/scripts/prebuild.js +4 -11
  4. package/template/angular/package.json +15 -15
  5. package/template/angular/src/app/app.component.ts +3 -1
  6. package/template/angular-confetti/package.json +16 -16
  7. package/template/angular-confetti/src/app/app.component.ts +3 -1
  8. package/template/angular-fireworks/package.json +16 -16
  9. package/template/angular-fireworks/src/app/app.component.ts +3 -1
  10. package/template/astro/package.json +6 -6
  11. package/template/ember/package.json +27 -13
  12. package/template/inferno/package.json +7 -7
  13. package/template/inferno/src/App.tsx +1 -1
  14. package/template/jquery/index.html +70 -0
  15. package/template/jquery/package.json +5 -5
  16. package/template/jquery/src/main.ts +2 -2
  17. package/template/lit/package.json +6 -6
  18. package/template/lit/src/my-app.ts +5 -5
  19. package/template/nextjs/package.json +6 -5
  20. package/template/nextjs/src/app/page.tsx +2 -2
  21. package/template/nextjs/src/app/providers.tsx +9 -14
  22. package/template/nuxt2/package.json +12 -6
  23. package/template/nuxt2/pages/index.vue +6 -7
  24. package/template/nuxt3/package.json +4 -4
  25. package/template/nuxt4/package.json +4 -4
  26. package/template/preact/package.json +5 -5
  27. package/template/preact/src/App.tsx +1 -1
  28. package/template/qwik/package.json +6 -5
  29. package/template/qwik/src/App.tsx +1 -1
  30. package/template/react/package.json +4 -2
  31. package/template/riot/package.json +7 -6
  32. package/template/riot/src/app.riot +0 -1
  33. package/template/solid/package.json +2 -2
  34. package/template/stencil/package.json +4 -4
  35. package/template/stencil/src/components/app-home/app-home.tsx +4 -7
  36. package/template/svelte/package.json +1 -1
  37. package/template/vue2/package.json +6 -6
  38. package/template/vue3/package.json +1 -1
  39. package/template/webcomponents/index.html +69 -0
  40. package/template/webcomponents/package.json +5 -5
  41. package/template/webcomponents/src/main.ts +7 -2
  42. package/template.json +5 -5
package/CHANGELOG.md CHANGED
@@ -3,32 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [4.3.2](https://github.com/tsparticles/tsparticles/compare/v4.3.1...v4.3.2) (2026-07-10)
6
+ # [4.5.0](https://github.com/tsparticles/tsparticles/compare/v4.4.0...v4.5.0) (2026-10-25)
7
7
 
8
8
  **Note:** Version bump only for package @tsparticles/template-portfolio
9
9
 
10
+ # [4.4.0](https://github.com/tsparticles/tsparticles/compare/v4.3.3...v4.4.0) (2026-08-30)
10
11
 
12
+ ### Bug Fixes
11
13
 
14
+ - various fixes for 4.4.0 ([475d06d](https://github.com/tsparticles/tsparticles/commit/475d06da27e1497bb097c0822fcfcb72d7142456))
12
15
 
13
-
14
- ## [4.3.1](https://github.com/tsparticles/tsparticles/compare/v4.3.0...v4.3.1) (2026-07-01)
16
+ ## [4.3.3](https://github.com/tsparticles/tsparticles/compare/v4.3.2...v4.3.3) (2026-07-23)
15
17
 
16
18
  **Note:** Version bump only for package @tsparticles/template-portfolio
17
19
 
20
+ ## [4.3.2](https://github.com/tsparticles/tsparticles/compare/v4.3.1...v4.3.2) (2026-07-10)
18
21
 
22
+ **Note:** Version bump only for package @tsparticles/template-portfolio
19
23
 
24
+ ## [4.3.1](https://github.com/tsparticles/tsparticles/compare/v4.3.0...v4.3.1) (2026-07-01)
20
25
 
26
+ **Note:** Version bump only for package @tsparticles/template-portfolio
21
27
 
22
28
  # [4.3.0](https://github.com/tsparticles/tsparticles/compare/v4.2.1...v4.3.0) (2026-06-27)
23
29
 
24
-
25
30
  ### Bug Fixes
26
31
 
27
- * fixed angular confetti ([6f25a4a](https://github.com/tsparticles/tsparticles/commit/6f25a4a1eaa69c47f2668316e7b396fe55195f84))
28
-
29
-
30
-
31
-
32
+ - fixed angular confetti ([6f25a4a](https://github.com/tsparticles/tsparticles/commit/6f25a4a1eaa69c47f2668316e7b396fe55195f84))
32
33
 
33
34
  ## [4.2.1](https://github.com/tsparticles/tsparticles/compare/v4.2.0...v4.2.1) (2026-06-18)
34
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/template-portfolio",
3
- "version": "4.3.2",
3
+ "version": "4.5.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -14,7 +14,16 @@
14
14
  "prebuild": "node scripts/prebuild.js",
15
15
  "build": "pnpm run prebuild",
16
16
  "build:ci": "pnpm run prebuild",
17
- "version": "pnpm run build && git add template.json"
17
+ "version": "pnpm run build && git add template.json",
18
+ "prepack": "pnpm run build"
18
19
  },
19
- "gitHead": "527bc42f2324fbb9b93262efa3d90a5517532b8b"
20
+ "dependencies": {
21
+ "@tsparticles/configs": "4.5.0",
22
+ "@tsparticles/engine": "4.5.0",
23
+ "@tsparticles/slim": "4.5.0"
24
+ },
25
+ "devDependencies": {
26
+ "fs-extra": "^11.3.4"
27
+ },
28
+ "gitHead": "a637373a03c008ab38edaaecf6524ec4b8e332c0"
20
29
  }
@@ -1,5 +1,6 @@
1
1
  const fs = require("fs-extra");
2
2
 
3
+ const mainPackage = require("../package.json");
3
4
  const libPackage = "./template.json";
4
5
 
5
6
  const workspaceVersions = {
@@ -9,14 +10,7 @@ const workspaceVersions = {
9
10
  };
10
11
 
11
12
  function resolveWorkspaceDependency(name) {
12
- const libObj = JSON.parse(fs.readFileSync(libPackage, "utf-8"));
13
-
14
- const allDeps = {
15
- ...libObj.package.dependencies,
16
- ...libObj.package.devDependencies,
17
- };
18
-
19
- const spec = allDeps[name];
13
+ const spec = mainPackage.dependencies[name];
20
14
 
21
15
  if (!spec?.startsWith("workspace:")) {
22
16
  return spec;
@@ -42,8 +36,7 @@ fs.readFile(libPackage, function (error, data) {
42
36
  throw error;
43
37
  }
44
38
 
45
- const text = data.toString();
46
- const libObj = JSON.parse(text);
39
+ const libObj = JSON.parse(data.toString());
47
40
 
48
41
  for (const dep of Object.keys(libObj.package.dependencies)) {
49
42
  const resolved = resolveWorkspaceDependency(dep);
@@ -59,7 +52,7 @@ fs.readFile(libPackage, function (error, data) {
59
52
  }
60
53
  }
61
54
 
62
- fs.writeFile(libPackage, JSON.stringify(libObj, undefined, 2), "utf-8", function () {
55
+ fs.writeFile(libPackage, `${JSON.stringify(libObj, undefined, 2)}\n`, "utf-8", function () {
63
56
  console.log("template.json dependencies updated successfully");
64
57
  });
65
58
  });
@@ -11,25 +11,25 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "@tsparticles/angular": "^4.1.3",
23
- "@tsparticles/configs": "^4.0.0",
24
- "@tsparticles/slim": "^4.0.0",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
+ "@tsparticles/configs": "^4.4.0",
24
+ "@tsparticles/slim": "^4.4.0",
25
25
  "rxjs": "~7.8.2",
26
26
  "tslib": "^2.8.1",
27
- "zone.js": "~0.16.2"
27
+ "zone.js": "~0.16.3"
28
28
  },
29
29
  "devDependencies": {
30
- "@angular-devkit/build-angular": "~22.0.0",
31
- "@angular/cli": "~22.0.0",
32
- "@angular/compiler-cli": "~22.0.0",
30
+ "@angular-devkit/build-angular": "~22.2.2",
31
+ "@angular/cli": "~22.2.2",
32
+ "@angular/compiler-cli": "~22.2.2",
33
33
  "typescript": "~6.0.3"
34
34
  }
35
35
  }
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
3
3
  import { loadSlim } from "@tsparticles/slim";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
6
+ import type { FormGroup } from "@angular/forms";
6
7
 
7
8
  @Component({
9
+ standalone: false,
8
10
  selector: "app-root",
9
11
  templateUrl: "./app.component.html",
10
12
  styleUrls: ["./app.component.css"],
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
40
42
  });
41
43
  }
42
44
 
43
- onSubmit(form: HTMLFormElement): void {
45
+ onSubmit(form: FormGroup): void {
44
46
  alert("Message sent! (demo)");
45
47
  form.reset();
46
48
  }
@@ -11,26 +11,26 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "@tsparticles/angular": "^4.1.3",
23
- "@tsparticles/engine": "^4.0.0",
24
- "@tsparticles/slim": "^4.0.0",
25
- "@tsparticles/configs": "^4.0.0",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
+ "@tsparticles/engine": "^4.4.0",
24
+ "@tsparticles/slim": "^4.4.0",
25
+ "@tsparticles/configs": "^4.4.0",
26
26
  "rxjs": "~7.8.2",
27
27
  "tslib": "^2.8.1",
28
- "zone.js": "~0.16.2"
28
+ "zone.js": "~0.16.3"
29
29
  },
30
30
  "devDependencies": {
31
- "@angular-devkit/build-angular": "~22.0.0",
32
- "@angular/cli": "~22.0.0",
33
- "@angular/compiler-cli": "~22.0.0",
31
+ "@angular-devkit/build-angular": "~22.2.2",
32
+ "@angular/cli": "~22.2.2",
33
+ "@angular/compiler-cli": "~22.2.2",
34
34
  "typescript": "~6.0.3"
35
35
  }
36
36
  }
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
3
3
  import { loadSlim } from "@tsparticles/slim";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
6
+ import type { FormGroup } from "@angular/forms";
6
7
 
7
8
  @Component({
9
+ standalone: false,
8
10
  selector: "app-root",
9
11
  templateUrl: "./app.component.html",
10
12
  styleUrls: ["./app.component.css"],
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
40
42
  });
41
43
  }
42
44
 
43
- onSubmit(form: HTMLFormElement): void {
45
+ onSubmit(form: FormGroup): void {
44
46
  alert("Message sent! (demo)");
45
47
  form.reset();
46
48
  }
@@ -11,26 +11,26 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "@tsparticles/angular": "^4.1.3",
23
- "@tsparticles/engine": "^4.0.0",
24
- "@tsparticles/slim": "^4.0.0",
25
- "@tsparticles/configs": "^4.0.0",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
+ "@tsparticles/engine": "^4.4.0",
24
+ "@tsparticles/slim": "^4.4.0",
25
+ "@tsparticles/configs": "^4.4.0",
26
26
  "rxjs": "~7.8.2",
27
27
  "tslib": "^2.8.1",
28
- "zone.js": "~0.16.2"
28
+ "zone.js": "~0.16.3"
29
29
  },
30
30
  "devDependencies": {
31
- "@angular-devkit/build-angular": "~22.0.0",
32
- "@angular/cli": "~22.0.0",
33
- "@angular/compiler-cli": "~22.0.0",
31
+ "@angular-devkit/build-angular": "~22.2.2",
32
+ "@angular/cli": "~22.2.2",
33
+ "@angular/compiler-cli": "~22.2.2",
34
34
  "typescript": "~6.0.3"
35
35
  }
36
36
  }
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
3
3
  import { loadSlim } from "@tsparticles/slim";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
6
+ import type { FormGroup } from "@angular/forms";
6
7
 
7
8
  @Component({
9
+ standalone: false,
8
10
  selector: "app-root",
9
11
  templateUrl: "./app.component.html",
10
12
  styleUrls: ["./app.component.css"],
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
40
42
  });
41
43
  }
42
44
 
43
- onSubmit(form: HTMLFormElement): void {
45
+ onSubmit(form: FormGroup): void {
44
46
  alert("Message sent! (demo)");
45
47
  form.reset();
46
48
  }
@@ -9,13 +9,13 @@
9
9
  "preview": "astro preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/astro": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
16
- "astro": "^5.0.0"
12
+ "@tsparticles/astro": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
+ "astro": "^7.3.2"
17
17
  },
18
18
  "devDependencies": {
19
- "typescript": "~5.8.0"
19
+ "typescript": "~6.0.3"
20
20
  }
21
21
  }
@@ -2,24 +2,38 @@
2
2
  "name": "{{packageName}}",
3
3
  "private": true,
4
4
  "version": "{{version}}",
5
- "type": "module",
6
5
  "scripts": {
7
6
  "dev": "ember serve",
8
7
  "build": "ember build",
9
- "preview": "ember serve --proxy http://localhost:4200",
10
- "start": "ember serve"
8
+ "preview": "ember serve"
9
+ },
10
+ "devDependencies": {
11
+ "@ember/optional-features": "^3.0.0",
12
+ "@glimmer/component": "^2.1.1",
13
+ "@glimmer/tracking": "^1.1.2",
14
+ "broccoli-asset-rev": "^3.0.0",
15
+ "ember-auto-import": "^2.13.1",
16
+ "ember-cli": "~6.12.0",
17
+ "ember-cli-babel": "^8.3.1",
18
+ "ember-cli-htmlbars": "^7.0.1",
19
+ "ember-cli-inject-live-reload": "^2.1.0",
20
+ "ember-cli-sri": "^2.1.1",
21
+ "ember-cli-terser": "^4.0.2",
22
+ "ember-load-initializers": "^3.0.1",
23
+ "ember-modifier": "^4.3.0",
24
+ "ember-resolver": "^13.2.0",
25
+ "ember-source": "~6.12.0",
26
+ "loader.js": "^4.7.0",
27
+ "typescript": "^6.0.3",
28
+ "webpack": "^5.106.1"
11
29
  },
12
30
  "dependencies": {
13
- "@tsparticles/ember": "^4.1.3",
14
- "@tsparticles/engine": "^4.0.0",
15
- "@tsparticles/slim": "^4.0.0",
16
- "@tsparticles/configs": "^4.0.0",
17
- "ember-source": "^6.0.0"
31
+ "@tsparticles/configs": "^4.4.0",
32
+ "@tsparticles/ember": "^4.4.0",
33
+ "@tsparticles/engine": "^4.4.0",
34
+ "@tsparticles/slim": "^4.4.0"
18
35
  },
19
- "devDependencies": {
20
- "@ember/optional-features": "^2.1.0",
21
- "@glimmer/component": "^2.0.0",
22
- "@glimmer/tracking": "^2.0.0",
23
- "typescript": "~5.8.0"
36
+ "ember": {
37
+ "edition": "octane"
24
38
  }
25
39
  }
@@ -9,15 +9,15 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/inferno": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
16
- "inferno": "^9.0.0"
12
+ "@tsparticles/inferno": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
+ "inferno": "^9.1.0",
17
+ "inferno-create-element": "^9.1.0"
17
18
  },
18
19
  "devDependencies": {
19
20
  "typescript": "~5.8.0",
20
- "vite": "^7.0.0",
21
- "vite-plugin-inferno": "^1.0.0"
21
+ "vite": "^8.3.1"
22
22
  }
23
23
  }
@@ -1,5 +1,5 @@
1
1
  import { Component } from "inferno";
2
- import Particles, { initParticlesEngine } from "@tsparticles/inferno";
2
+ import { Particles, initParticlesEngine } from "@tsparticles/inferno";
3
3
  import { loadSlim } from "@tsparticles/slim";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
@@ -0,0 +1,70 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>{{projectName}}</title>
7
+ </head>
8
+ <body>
9
+ <nav id="navbar">
10
+ <a href="#hero" class="nav-link">Home</a>
11
+ <a href="#about" class="nav-link">About</a>
12
+ <a href="#projects" class="nav-link">Projects</a>
13
+ <a href="#skills" class="nav-link">Skills</a>
14
+ <a href="#contact" class="nav-link">Contact</a>
15
+ </nav>
16
+ <section id="hero" class="section">
17
+ <div class="hero-content">
18
+ <h1>Hello, I'm <span class="highlight">Your Name</span></h1>
19
+ <p class="subtitle">Full-Stack Developer &amp; Designer</p>
20
+ </div>
21
+ </section>
22
+ <section id="about" class="section content-section">
23
+ <div class="container">
24
+ <h2>About Me</h2>
25
+ <p>A passionate developer who loves building beautiful and performant web applications. Experienced in modern JavaScript frameworks, cloud infrastructure, and UI/UX design.</p>
26
+ </div>
27
+ </section>
28
+ <section id="projects" class="section content-section">
29
+ <div class="container">
30
+ <h2>Projects</h2>
31
+ <div class="project-grid">
32
+ <div class="project-card">
33
+ <h3>Project One</h3>
34
+ <p>A web application built with React and TypeScript.</p>
35
+ </div>
36
+ <div class="project-card">
37
+ <h3>Project Two</h3>
38
+ <p>Real-time dashboard with data visualization.</p>
39
+ </div>
40
+ <div class="project-card">
41
+ <h3>Project Three</h3>
42
+ <p>Mobile-first e-commerce platform.</p>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </section>
47
+ <section id="skills" class="section content-section">
48
+ <div class="container">
49
+ <h2>Skills</h2>
50
+ <div class="skill-bar"><span class="skill-name">TypeScript</span><div class="bar"><div class="fill" style="width: 90%"></div></div></div>
51
+ <div class="skill-bar"><span class="skill-name">React</span><div class="bar"><div class="fill" style="width: 85%"></div></div></div>
52
+ <div class="skill-bar"><span class="skill-name">Node.js</span><div class="bar"><div class="fill" style="width: 80%"></div></div></div>
53
+ <div class="skill-bar"><span class="skill-name">CSS</span><div class="bar"><div class="fill" style="width: 88%"></div></div></div>
54
+ </div>
55
+ </section>
56
+ <section id="contact" class="section content-section">
57
+ <div class="container">
58
+ <h2>Contact</h2>
59
+ <form id="contactForm">
60
+ <input type="text" placeholder="Your Name" required />
61
+ <input type="email" placeholder="Your Email" required />
62
+ <textarea placeholder="Your Message" rows="5" required></textarea>
63
+ <button type="submit">Send Message</button>
64
+ </form>
65
+ </div>
66
+ </section>
67
+ <div id="tsparticles"></div>
68
+ <script type="module" src="/src/main.ts"></script>
69
+ </body>
70
+ </html>
@@ -9,15 +9,15 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/jquery": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/jquery": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "jquery": "^3.7.1"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/jquery": "^3.5.30",
20
20
  "typescript": "~5.8.0",
21
- "vite": "^7.0.0"
21
+ "vite": "^8.3.1"
22
22
  }
23
23
  }
@@ -1,6 +1,6 @@
1
1
  import "./style.css";
2
2
  import $ from "jquery";
3
- import "jquery-particles";
3
+ import "@tsparticles/jquery";
4
4
  import { loadSlim } from "@tsparticles/slim";
5
5
  import configs from "@tsparticles/configs";
6
6
  import { tsParticles } from "@tsparticles/engine";
@@ -11,7 +11,7 @@ import { tsParticles } from "@tsparticles/engine";
11
11
  const keys = Object.keys(configs);
12
12
  const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
13
13
 
14
- $("#tsparticles").particles().ajax({
14
+ $("#tsparticles").particles().load({
15
15
  ...configs[randomKey],
16
16
  fullScreen: { enable: true, zIndex: -1 },
17
17
  });
@@ -9,14 +9,14 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/lit": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
16
- "lit": "^3.4.0"
12
+ "@tsparticles/lit": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
+ "lit": "^3.3.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "typescript": "~5.8.0",
20
- "vite": "^7.0.0"
20
+ "vite": "^8.3.1"
21
21
  }
22
22
  }
@@ -1,10 +1,10 @@
1
- import { LitElement, html } from "lit";
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
2
  import { customElement, state } from "lit/decorators.js";
3
- import { ParticlesBase } from "@tsparticles/lit";
3
+ import { initParticlesEngine } from "@tsparticles/lit";
4
4
  import { loadSlim } from "@tsparticles/slim";
5
5
  import configs from "@tsparticles/configs";
6
6
  import type { ISourceOptions } from "@tsparticles/engine";
7
- import style from "./style.css" with { type: "css" };
7
+ import style from "./style.css?inline";
8
8
 
9
9
  const keys = Object.keys(configs);
10
10
  const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
@@ -15,7 +15,7 @@ const options: ISourceOptions = {
15
15
 
16
16
  @customElement("my-app")
17
17
  export class MyApp extends LitElement {
18
- static styles = [style];
18
+ static styles = [unsafeCSS(style)];
19
19
 
20
20
  @state()
21
21
  private projects = [
@@ -36,7 +36,7 @@ export class MyApp extends LitElement {
36
36
 
37
37
  connectedCallback(): void {
38
38
  super.connectedCallback();
39
- void ParticlesBase.init(async (engine) => {
39
+ void initParticlesEngine(async (engine) => {
40
40
  await loadSlim(engine);
41
41
  });
42
42
  }
@@ -9,17 +9,18 @@
9
9
  "preview": "next start"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/nextjs": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/nextjs": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "next": "^15.0.0",
17
17
  "react": "^19.2.5",
18
18
  "react-dom": "^19.2.5"
19
19
  },
20
20
  "devDependencies": {
21
+ "@types/node": "^24.10.1",
21
22
  "@types/react": "^19.0.0",
22
23
  "@types/react-dom": "^19.0.0",
23
- "typescript": "~5.8.0"
24
+ "typescript": "^6.0.3"
24
25
  }
25
26
  }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import Particles from "@tsparticles/nextjs";
3
+ import { NextParticles } from "@tsparticles/nextjs";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
6
6
  import { ParticlesProvider } from "./providers";
@@ -36,7 +36,7 @@ export default function Home() {
36
36
 
37
37
  return (
38
38
  <ParticlesProvider>
39
- <Particles id="tsparticles" options={options} />
39
+ <NextParticles id="tsparticles" options={options} />
40
40
  <nav id="navbar">
41
41
  {navItems.map((item) => (
42
42
  <a key={item} href={`#${item.toLowerCase()}`} className="nav-link">{item}</a>
@@ -1,20 +1,15 @@
1
1
  "use client";
2
2
 
3
- import { initParticlesEngine } from "@tsparticles/nextjs";
3
+ import { NextParticlesProvider } from "@tsparticles/nextjs";
4
4
  import { loadSlim } from "@tsparticles/slim";
5
- import { useEffect, useRef } from "react";
5
+ import type { Engine } from "@tsparticles/engine";
6
6
 
7
7
  export function ParticlesProvider({ children }: { children: React.ReactNode }) {
8
- const initialized = useRef(false);
9
-
10
- useEffect(() => {
11
- if (!initialized.current) {
12
- initialized.current = true;
13
- void initParticlesEngine(async (engine) => {
14
- await loadSlim(engine);
15
- });
16
- }
17
- }, []);
18
-
19
- return <>{children}</>;
8
+ return (
9
+ <NextParticlesProvider init={async (engine: Engine): Promise<void> => { await loadSlim(engine); }}>
10
+ {children}
11
+ </NextParticlesProvider>
12
+ );
20
13
  }
14
+
15
+ export default ParticlesProvider;
@@ -8,14 +8,20 @@
8
8
  "preview": "nuxt start"
9
9
  },
10
10
  "dependencies": {
11
- "@tsparticles/nuxt2": "^4.1.3",
12
- "@tsparticles/engine": "^4.0.0",
13
- "@tsparticles/slim": "^4.0.0",
14
- "@tsparticles/configs": "^4.0.0",
11
+ "@tsparticles/nuxt2": "^4.4.0",
12
+ "@tsparticles/engine": "^4.4.0",
13
+ "@tsparticles/slim": "^4.4.0",
14
+ "@tsparticles/configs": "^4.4.0",
15
15
  "nuxt": "^2.18.0",
16
16
  "vue": "^2.7.16"
17
17
  },
18
18
  "devDependencies": {
19
- "typescript": "~5.8.0"
20
- }
19
+ "@babel/preset-env": "^7.29.0"
20
+ },
21
+ "browserslist": [
22
+ "chrome 58",
23
+ "edge 16",
24
+ "firefox 57",
25
+ "safari 11"
26
+ ]
21
27
  }
@@ -50,15 +50,14 @@
50
50
  </div>
51
51
  </template>
52
52
 
53
- <script lang="ts">
53
+ <script>
54
54
  import Vue from "vue";
55
55
  import configs from "@tsparticles/configs";
56
- import type { ISourceOptions } from "@tsparticles/engine";
57
56
 
58
57
  const keys = Object.keys(configs);
59
- const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
60
- const options: ISourceOptions = {
61
- ...(configs[randomKey] as ISourceOptions),
58
+ const randomKey = keys[Math.floor(Math.random() * keys.length)];
59
+ const options = {
60
+ ...configs[randomKey],
62
61
  fullScreen: { enable: true, zIndex: -1 },
63
62
  };
64
63
 
@@ -82,10 +81,10 @@ export default Vue.extend({
82
81
  };
83
82
  },
84
83
  methods: {
85
- handleSubmit(e: Event) {
84
+ handleSubmit(e) {
86
85
  e.preventDefault();
87
86
  alert("Message sent! (demo)");
88
- (e.target as HTMLFormElement).reset();
87
+ e.target.reset();
89
88
  },
90
89
  },
91
90
  });
@@ -9,10 +9,10 @@
9
9
  "preview": "nuxt preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/nuxt3": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/nuxt3": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "nuxt": "^3.16.0",
17
17
  "vue": "^3.5.0"
18
18
  },
@@ -9,10 +9,10 @@
9
9
  "preview": "nuxt preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/nuxt4": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/nuxt4": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "nuxt": "^4.0.0",
17
17
  "vue": "^3.5.0"
18
18
  },
@@ -9,14 +9,14 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/preact": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/preact": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "preact": "^10.26.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@preact/preset-vite": "^3.0.0",
19
+ "@preact/preset-vite": "^2.10.1",
20
20
  "typescript": "~5.8.0"
21
21
  }
22
22
  }
@@ -31,7 +31,7 @@ const skills = [
31
31
  { name: "CSS", pct: 88 },
32
32
  ];
33
33
 
34
- export function App() {
34
+ export default function App() {
35
35
  function handleSubmit(e: h.JSX.TargetedEvent<HTMLFormElement>) {
36
36
  e.preventDefault();
37
37
  alert("Message sent! (demo)");
@@ -9,13 +9,14 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/qwik": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/qwik": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "@builder.io/qwik": "^1.12.0"
17
17
  },
18
18
  "devDependencies": {
19
- "typescript": "~5.8.0"
19
+ "typescript": "~5.8.0",
20
+ "vite": "^7.3.6"
20
21
  }
21
22
  }
@@ -1,5 +1,5 @@
1
1
  import { component$, useVisibleTask$, useSignal } from "@builder.io/qwik";
2
- import Particles, { initParticlesEngine } from "@tsparticles/qwik";
2
+ import { Particles, initParticlesEngine } from "@tsparticles/qwik";
3
3
  import { loadSlim } from "@tsparticles/slim";
4
4
  import configs from "@tsparticles/configs";
5
5
  import type { ISourceOptions } from "@tsparticles/engine";
@@ -11,9 +11,11 @@
11
11
  "dependencies": {
12
12
  "react": "^19.2.5",
13
13
  "react-dom": "^19.2.5",
14
- "@tsparticles/react": "^4.1.3"
14
+ "@tsparticles/react": "^4.4.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@vitejs/plugin-react": "^6.0.1"
17
+ "@vitejs/plugin-react": "^6.0.1",
18
+ "@types/react": "^19.2.14",
19
+ "@types/react-dom": "^19.2.3"
18
20
  }
19
21
  }
@@ -9,15 +9,16 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/riot": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
16
- "riot": "^9.5.0"
12
+ "@tsparticles/riot": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
+ "riot": "^10.1.6"
17
17
  },
18
18
  "devDependencies": {
19
19
  "rollup-plugin-riot": "^9.0.0",
20
20
  "typescript": "~5.8.0",
21
- "vite": "^7.0.0"
21
+ "vite": "^8.3.1",
22
+ "@riotjs/compiler": "^10.0.4"
22
23
  }
23
24
  }
@@ -55,7 +55,6 @@
55
55
 
56
56
  <script>
57
57
  import configs from "@tsparticles/configs";
58
- import type { ISourceOptions } from "@tsparticles/engine";
59
58
 
60
59
  const keys = Object.keys(configs);
61
60
  const randomKey = keys[Math.floor(Math.random() * keys.length)];
@@ -10,9 +10,9 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "solid-js": "^1.8.11",
13
- "@tsparticles/solid": "^4.1.3"
13
+ "@tsparticles/solid": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
- "vite-plugin-solid": "^2.8.2"
16
+ "vite-plugin-solid": "^2.11.14"
17
17
  }
18
18
  }
@@ -9,10 +9,10 @@
9
9
  "preview": "stencil build --dev --watch"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/stencil": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0",
12
+ "@tsparticles/stencil": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0",
16
16
  "@stencil/core": "^4.20.0"
17
17
  },
18
18
  "devDependencies": {
@@ -1,8 +1,7 @@
1
1
  import { Component, State, h } from "@stencil/core";
2
- import { ParticlesBase } from "@tsparticles/stencil";
3
2
  import { loadSlim } from "@tsparticles/slim";
3
+ import { tsParticles, type ISourceOptions } from "@tsparticles/engine";
4
4
  import configs from "@tsparticles/configs";
5
- import type { ISourceOptions } from "@tsparticles/engine";
6
5
 
7
6
  const keys = Object.keys(configs);
8
7
  const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
@@ -35,10 +34,8 @@ export class AppHome {
35
34
  { name: "CSS", pct: 88 },
36
35
  ];
37
36
 
38
- connectedCallback(): void {
39
- void ParticlesBase.init(async (engine) => {
40
- await loadSlim(engine);
41
- });
37
+ async componentDidLoad(): Promise<void> {
38
+ await loadSlim(tsParticles);
42
39
  }
43
40
 
44
41
  private handleSubmit(e: Event): void {
@@ -50,7 +47,7 @@ export class AppHome {
50
47
  render() {
51
48
  return (
52
49
  <div>
53
- <ts-particles id="tsparticles" options={options}></ts-particles>
50
+ <stencil-particles id="tsparticles" options={options}></stencil-particles>
54
51
  <nav id="navbar">
55
52
  {this.navItems.map((item) => (
56
53
  <a href={`#${item.toLowerCase()}`} class="nav-link">{item}</a>
@@ -9,7 +9,7 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/svelte": "^4.1.3"
12
+ "@tsparticles/svelte": "^4.4.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
@@ -8,15 +8,15 @@
8
8
  "preview": "vite preview"
9
9
  },
10
10
  "dependencies": {
11
- "@tsparticles/vue2": "^4.1.3",
12
- "@tsparticles/engine": "^4.0.0",
13
- "@tsparticles/slim": "^4.0.0",
14
- "@tsparticles/configs": "^4.0.0",
11
+ "@tsparticles/vue2": "^4.4.0",
12
+ "@tsparticles/engine": "^4.4.0",
13
+ "@tsparticles/slim": "^4.4.0",
14
+ "@tsparticles/configs": "^4.4.0",
15
15
  "vue": "^2.7.16"
16
16
  },
17
17
  "devDependencies": {
18
- "@vitejs/plugin-vue2": "^2.3.0",
18
+ "@vitejs/plugin-vue2": "^2.3.4",
19
19
  "typescript": "~5.8.0",
20
- "vite": "^7.0.0"
20
+ "vite": "^7.3.6"
21
21
  }
22
22
  }
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "vue": "^3.5.32",
13
- "@tsparticles/vue3": "^4.1.3"
13
+ "@tsparticles/vue3": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@vitejs/plugin-vue": "^6.0.5",
@@ -0,0 +1,69 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>{{projectName}}</title>
7
+ </head>
8
+ <body>
9
+ <nav id="navbar">
10
+ <a href="#hero" class="nav-link">Home</a>
11
+ <a href="#about" class="nav-link">About</a>
12
+ <a href="#projects" class="nav-link">Projects</a>
13
+ <a href="#skills" class="nav-link">Skills</a>
14
+ <a href="#contact" class="nav-link">Contact</a>
15
+ </nav>
16
+ <section id="hero" class="section">
17
+ <div class="hero-content">
18
+ <h1>Hello, I'm <span class="highlight">Your Name</span></h1>
19
+ <p class="subtitle">Full-Stack Developer &amp; Designer</p>
20
+ </div>
21
+ </section>
22
+ <section id="about" class="section content-section">
23
+ <div class="container">
24
+ <h2>About Me</h2>
25
+ <p>A passionate developer who loves building beautiful and performant web applications. Experienced in modern JavaScript frameworks, cloud infrastructure, and UI/UX design.</p>
26
+ </div>
27
+ </section>
28
+ <section id="projects" class="section content-section">
29
+ <div class="container">
30
+ <h2>Projects</h2>
31
+ <div class="project-grid">
32
+ <div class="project-card">
33
+ <h3>Project One</h3>
34
+ <p>A web application built with React and TypeScript.</p>
35
+ </div>
36
+ <div class="project-card">
37
+ <h3>Project Two</h3>
38
+ <p>Real-time dashboard with data visualization.</p>
39
+ </div>
40
+ <div class="project-card">
41
+ <h3>Project Three</h3>
42
+ <p>Mobile-first e-commerce platform.</p>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </section>
47
+ <section id="skills" class="section content-section">
48
+ <div class="container">
49
+ <h2>Skills</h2>
50
+ <div class="skill-bar"><span class="skill-name">TypeScript</span><div class="bar"><div class="fill" style="width: 90%"></div></div></div>
51
+ <div class="skill-bar"><span class="skill-name">React</span><div class="bar"><div class="fill" style="width: 85%"></div></div></div>
52
+ <div class="skill-bar"><span class="skill-name">Node.js</span><div class="bar"><div class="fill" style="width: 80%"></div></div></div>
53
+ <div class="skill-bar"><span class="skill-name">CSS</span><div class="bar"><div class="fill" style="width: 88%"></div></div></div>
54
+ </div>
55
+ </section>
56
+ <section id="contact" class="section content-section">
57
+ <div class="container">
58
+ <h2>Contact</h2>
59
+ <form id="contactForm">
60
+ <input type="text" placeholder="Your Name" required />
61
+ <input type="email" placeholder="Your Email" required />
62
+ <textarea placeholder="Your Message" rows="5" required></textarea>
63
+ <button type="submit">Send Message</button>
64
+ </form>
65
+ </div>
66
+ </section>
67
+ <script type="module" src="/src/main.ts"></script>
68
+ </body>
69
+ </html>
@@ -9,13 +9,13 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/webcomponents": "^4.1.3",
13
- "@tsparticles/engine": "^4.0.0",
14
- "@tsparticles/slim": "^4.0.0",
15
- "@tsparticles/configs": "^4.0.0"
12
+ "@tsparticles/webcomponents": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0",
15
+ "@tsparticles/configs": "^4.4.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "typescript": "~5.8.0",
19
- "vite": "^7.0.0"
19
+ "vite": "^8.3.1"
20
20
  }
21
21
  }
@@ -1,14 +1,19 @@
1
1
  import "./style.css";
2
- import { ParticlesBase } from "@tsparticles/webcomponents";
2
+ import { tsParticles } from "@tsparticles/engine";
3
+ import { defineParticlesElement, initParticlesEngine } from "@tsparticles/webcomponents";
3
4
  import { loadSlim } from "@tsparticles/slim";
4
5
  import configs from "@tsparticles/configs";
5
6
  import type { ISourceOptions } from "@tsparticles/engine";
6
7
 
8
+ globalThis.tsParticles = tsParticles;
9
+
7
10
  (async () => {
8
- await ParticlesBase.init(async (engine) => {
11
+ await initParticlesEngine(async (engine) => {
9
12
  await loadSlim(engine);
10
13
  });
11
14
 
15
+ defineParticlesElement();
16
+
12
17
  const keys = Object.keys(configs);
13
18
  const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
14
19
  const options: ISourceOptions = {
package/template.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "package": {
3
3
  "dependencies": {
4
- "@tsparticles/engine": "^4.1.3",
5
- "@tsparticles/slim": "^4.1.3",
6
- "@tsparticles/configs": "^4.1.3"
4
+ "@tsparticles/engine": "^4.5.0",
5
+ "@tsparticles/slim": "^4.5.0",
6
+ "@tsparticles/configs": "^4.5.0"
7
7
  },
8
8
  "devDependencies": {
9
9
  "typescript": "^6.0.3",
10
- "vite": "^8.1.0"
10
+ "vite": "^8.3.1"
11
11
  }
12
12
  }
13
- }
13
+ }